Keyboard optimization to reduce RSI

I've had recurring tendinitis in my right hand for several years, and it has lingered even after several rounds of physical therapy. On reflection, this is because, until recently, I never addressed the specific motions triggering the irritation. Last month I decided to pay closer attention to my body for a few days, and I concluded the irritating motions are

(1) Hitting enter with my right pinky (2) Moving my right hand between the typing position and the arrow keys. (3) Moving my right hand between the typing position and my external mouse.

I addressed (1) by remapping Caps Lock to Enter, allowing me to hit enter with me left pinky. This is much more ergonomic given that the left pinky is adjacent to Cap Lock, whereas the right pinky needs to cross the " key. I used Karabiner Elements to make this change on both the internal laptop keyboard and my external keyboard.

Another low cost improvement was to train myself to hit the space bar with my left thumb instead of my right thumb. The idea was to further reduce overall muscle activation in my right hand.

Motions (2) and (3) were a bit more difficult to address. Indeed programming often requires repeated brief spurts of mousing, typing, and arrowing. To reduce these motions, I have been exploring new ways to work using just the keyboard. So I set up more mappings in Karabiner Elements to use Control+I/J/K/L as UP/LEFT/DOWN/RIGHT. These key combinations pair perfectly with option and/or shift for word jumping or selecting.

To reduce mouse use, I've been taking notes on useful keyboard shortcuts in the apps I use, and customizing where necessary. VS Code has many built in shortcuts (and all are customizable). Jupyter notebooks have many, though I really only need to know how to move between edit mode and command mode, and how to add/delete/run cells. Magnet lets you customize the extensions to move and scale windows to different grid cells.

Chrome was my last mouse-heavy application until I discovered Vimium C, which lets you navigate with the keyboard. Hit f and it shows a two letter code next to (almost) every clickable element on the page. Type the code of the desired link and it will click it. Many websites these days use javascript clickable elements. Sometimes Vimium recognizes them, but sometimes it doesn't. But overall it probably reduces my mouse usage by 75% when browsing the web. (Interestingly, this extension seems to be a fork of Vimium, which doesn't recognize javascript clickable elements at all).

These strategies have really reduced irritation in my right wrist, and improved my programming efficiency. But I recently upped my game with the Ultimate Hacking Keyboard, which I'll discuss later.

Posted by Abraham