I have shared this app on Reddit about a year ago. Since then, the notable changes would be a major performance buff in webkit/electron, force keyboard layout, and reducing the overwhelming no. of hints to what is just "clickable".
It is open source at https://github.com/dexterleng/vimac/.
Do let me know if you have any questions!
Glad to see more people making tools around the Accessibility API. I've been working on a similar app called Shortcat (https://shortcatapp.com) almost 8 years ago (wow) but haven't had the time to properly work on it. It sounds like you're encountering a lot of the same problems I've had when I was starting out (figuring what's actionable, forcing keyboard layout etc). Let me know if you want to chat about the various problems in that space
Anyway, Shortcat is a freakin brilliant idea and I hope you keep working on it, or help this author with their project. If you think you’re going to have time to work on Shortcat again, though, I’d happily buy a copy (even if I already did before, I can’t remember if I did) and be an active bug reporter.
Was it solved in new versions?
Yes that is fixed.
The reason for slow performance + high cpu usage on electron/webkit apps was just the sheer amount of mach ipc calls (from the many many <div> layers) needed to be made to fetch the entire UI element tree.
This has been fixed two days ago Heres the solution for those interested: https://github.com/dexterleng/vimac/pull/190
I was also using a bunch of async queues instead of just a single NSThread which likely contributed to high cpu usage, and that has also been fixed.
> warning that I am using a screen reader.
Nope, you should get this warning, although it was a one time prompt for me. This is because Accessibility is opt-in for electron apps for performance reasons, and I have to ask for it through setting the AXManualAccessibility attribute (see https://electronjs.org/docs/tutorial/accessibility#assistive...), which I guess triggers the prompt.
Also vimium will always be faster than vimac due to how slow the accessibility API is.
I would recommend using both for now.
The only suggestion I’d make is to have the cursor return to its old position after an action. But it’s a minor nitpick.
> cursor return to its old position after an action
Will do!
My right wrist used to pain a lot because of excessive mouse usage. I had tried out various keyboard-driven apps but I didn't find any app practical enough for my needs, so I made one.
I'd like to share here my "generic" keyboard-driven navigation app for Windows:
How long did it take to familiarize yourself with the trackball?
I didn't really try other pointing devices because I thought that they won't be as good as the mouse, plus I liked the idea of using keyboard-driven navigation software.
In the fallback mode, not all motions are available, because we can't read cursor position or text field value without accessibility support.
some other useful ones are C-h/C-d (backwords/forwards delete), C-o (insert line), and the main Emacs movement keys C-n, C-p, C-b, C-f. Remapping Capslock to be a second Control makes using these regularly much more natural. Karabiner is a good app for easily remapping keys on macOS.
I think the thing which is not wonderful now is: in vim, you enter a mode, in that mode, you can do a series of navigation to get to the final destination. While in vimac, you enter a mode to do just one navigation and you're out of the mode, you have to press the key enter the mode again to do another navigation. This makes me feel not productive at all.
The accessibility API is one thing that I really miss since mostly leaving macOS for Linux. Most apps support it in at least a rudimentary way, and it allows for a bunch of neat tricks.
0: https://reddit.com/r/vim/comments/dc95by/vimac_vimium_for_ma...
For everyone interested in efficient keyboard usage: You might enjoy KeyCombiner - a web app to organize, learn, and practice keyboard shortcuts.