AccTextChangeEvent constructor forces
isFromUserInput to be true when the node is editable or focusable:
// XXX We should use IsFromUserInput here, but that isn't always correct
// when the text change isn't related to content insertion or removal.
mAccessible->State() & (states::FOCUSED | states::EDITABLE);
This makes things like live regions with editable text tough because the AT needs to know the source of the text change.