Files

45 lines
2.6 KiB
Markdown

# Current-line command
Cthulhu+Shift+Up reads the entire current line. Two presses within 500 ms spell
it; three use phonetics. Both desktop and laptop layouts use the same binding.
It follows NVDA's `script_reportCurrentLine` in `source/globalCommands.py`:
native caret outside browse mode, browse cursor inside it. It does not replay
the previous utterance or use the flat-review position.
Automated checks:
```sh
go test ./internal/input ./internal/review ./internal/app -run 'Test(CurrentLine|CommandRuntimeRoutesFocusPresentationRequests|ReviewMultiPressSequences)' -count=1
python3 tests/native_test_session.py env CTHULHU_NATIVE_CURRENT_LINE=1 go test ./internal/atspi -run '^TestNativeCurrentLine$' -count=1 -v
```
The private GTK fixture checks Unicode, a caret in the middle of a line, the
end of text, empty controls, blank lines, a trailing newline, password exclusion,
non-text control labels and rejection of stale focus. It verifies native caret
offsets after reading. Worker tests check whole browse lines and multiple inline
fragments, preserving the browse position. Existing flat-review and Say All tests
cover the shared line-reading and multi-press helpers.
Live acceptance after a normal rebuild and reload:
1. In a native multiline editor, enter `First line`, `Second café`, an empty line
and `Last line`. Put the caret in the middle of the second line. Press
Cthulhu+Shift+Up: expect the whole second line. Press Left afterward to verify
that the caret did not move. Check the blank line and the end of the last line.
2. Double and triple press to check spelling and phonetics. Pause longer than
500 ms and verify the next press reads normally. Check both keyboard layouts.
3. Move flat review to a different line. The new command should still read the
application caret line; Numpad 8 or Cthulhu+I should retain the review position.
4. In a browser, move into the middle of a line using browse arrows. Check the
whole line, including inline text fragments, and verify the next arrow
continues from the previous position. In a focused editable field, check the
native caret instead. Try another tab or window while a report is pending.
5. Check a FastSMRW table cell and a button. Check that password contents remain
silent and unavailable text gives explicit failure feedback. Cthulhu+Up must
still increase the selected speech setting. Check Say All and Numpad 8's
spelling behavior for regressions.
These automated checks do not establish audible output, physical key routing or
Braille behavior. The native implementation uses AT-SPI; Wine Access does not
currently expose this focused-line operation.