Root cause: Apple's AXTextStateChange enums start with Unknown=0, shifting all named constants by +1 vs our values. WebKit source (AXObjectCacheMac.mm) confirms: - kAXTextStateChangeTypeEdit = 1 (was 0) - kAXTextStateChangeTypeSelectionMove = 2 (was 1) - kAXTextSelectionDirectionPrevious = 3 (was 2) - kAXTextSelectionDirectionNext = 4 (was 3) - kAXTextSelectionDirectionDiscontiguous = 5 (was 4) - kAXTextSelectionGranularityCharacter = 1 (was 0) - kAXTextSelectionGranularityLine = 3 (was 2) Typing echo worked by coincidence (kAXTextEditTypeTyping=3 unchanged). SelectionMove=1 mapped to Edit, so VoiceOver ignored cursor movement. Completions two-line reading is expected (columnar buffer layout).
33 KiB
33 KiB