2.6 KiB
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:
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:
- In a native multiline editor, enter
First line,Second café, an empty line andLast 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. - 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.
- 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.
- 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.
- 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.