Wow that’s rough, I’m sorry.
It looks like the Orca screen reader reads whatever text is drawn on the terminal.
For example whenever the modeline is redrawn, it reads that (doing that on every movement quickly gets annoying so I set an empty modeline).
Orca also reads the completion list and sometimes even info boxes.
Proper Kakoune integration sounds much better though.
A plugin probably wants hooks that have a widget’s text as argument. Luckily, there are only few relevant widget types (I think):
- info boxes
- prompt line (echo/fail or navigating prompt history)
- modeline (though it’s probably better to have shortcuts the individual attributes)
- insert/prompt completer
- menu (not used that much AFAIK)
there are also highlighters like line-flags but I can’t imagine them being necessary.
Somewhat related: here is someone who hacked Emacs to work impressively well with voice input. I found that really inspiring.
Another exciting idea is https://oskars.org/ , a braille keyboard for smartphones.
FWIW I use a (grayscale) eink screen because it’s easier on the eyes. I’ve been using this colorscheme lately:
# Black-on-white colorscheme for minimal distraction & maximal contrast.
# Works well with e-ink screens, also in sunlight.
# For Code
face global value default
face global type default
face global variable default
face global module default
face global function default
face global string default
face global keyword default
face global operator default
face global attribute default
face global comment default
face global documentation comment
face global meta default
face global builtin default
# For markup
face global title default
face global header default
face global mono default
face global block default
face global link default
face global bullet default
face global list default
# builtin faces
face global Default default,default
face global PrimarySelection black,rgb:cccccc+fg
face global SecondarySelection black,rgb:e0e0e0+fg
face global PrimaryCursor default,default+rfg
face global SecondaryCursor white,rgb:777777+fg
face global PrimaryCursorEol black,rgb:777777+fg
face global SecondaryCursorEol black,rgb:777777+fg
face global LineNumbers default,default
face global LineNumberCursor default,default+r
face global MenuForeground white,black
face global MenuBackground black,rgb:dddddd
face global MenuInfo default
face global Information black,white
face global Error white,black
face global DiagnosticError default
face global DiagnosticWarning default
face global StatusLine default,default
face global StatusLineMode default,default
face global StatusLineInfo default,default
face global StatusLineValue default,default
face global StatusCursor default,default+r
face global Prompt default,default+r
face global MatchingChar default,default+b
face global Whitespace default,default+fd
face global BufferPadding default,default