Potential solutions to wrist issues (for programmers)

Note: None of the links on this page are affiliates or endorsements. They’re bookmarks or the first result on Google.

Like all programmers, I have wrist issues. In my case, it’s not an RSI/carpal-tunnel, but some combination of climbing, being stupid, and poorly designed bones. Unlike some people with RSIs, my issue is exclusively in one wrist, which broadens the solution space somewhat.

I spent about two years slowly looking for stopgap solutions (read: what can I buy that will fix this), and ended up with the Microsoft Sculpt and one of those cheap Anker vertical mouses. I worked from home in a rented apartment in Barcelona, with too-cold rooms, too-high tables, a too-small laptop and generally no way to be ergonomic.

Since then I’ve moved to the UK, where I work in a warm, insulated office. I have a table so low you could sit on it, a chair to match, and a big monitor at the correct height. I also got my wrist issue diagnosed (another story) and started doing some serious research into the potential solutions to safeguard against potential future wrist issues, and make sure I’m still able to work in tech in any eventuality.

Spoiler: my wrist is now mostly fine, I’ve gone back to using the MS Sculpt and use a Logitech wireless mouse with my left hand (when I need a mouse at all).

# Keyboards

The obvious place to look. And I went deep. Mechanical and ergonomic keyboard discussions have a similar vibe to audiophiles: it’s hard to tell where exactly the helpful ends and the voodoo starts.

Some of the other usual suspects (apart from whatever Microsoft and Logitech are offering at any given moment):

Also some one-handed options:

I jumped into the deepish end by buying a Moonlander. It is very different from a normal keyboard in at least five ways:

  1. Split: Left and right are physically separate and can be positioned however you like.
  2. Mech: The keys are mechanical, and must be pushed a significant distance.
  3. Grid: The keys are arranged in a perfect columnar grid, rather than a staggered layout.
  4. Small: It has way fewer keys than a normal keyboard (even tenkeyless).
  5. Programmable: It is completely programmable, and any key can be made to do just about anything!

For me, split, small and programmable were huge improvements that I loved. But my fingers could not get used to the Mechanical keys (Cherry MX Brown in my case). And I think the grid layout was also confusing my more hand-muscle memory. I soldiered on for about five months, loving the programmable aspects: using HJKL as arrow keys everywhere, not just in Vim; quick access to all my favourite types of brackets {[()]}; media keys under my fingertips, and so much more; macros to quickly perform some common combinations…

But eventually I gave up. I was so slow, and had started to view my computer has some kind of monster to be avoided at all costs. I subsequently tried the Kinesis Freestyle2, but didn’t like it at all. (Both of these have found new homes on eBay, so no photo of my hoard of keyboards.)

# Mouses (mice?)

I have put a lot of effort over the last 6 years into minimising mouse use. (Neo)vim, vim keybindings for Firefox, vim keybindings in my terminal, vim keybindings in my Jupyter notebooks, Regolith/i3 window manager on my desktop. But sometimes you still need to move a cursor around a screen (although this is possible with a keyboard).

I haven’t explored this very much yet. I used to use an Anker vertical mouse, now I just use a Logitech something-or-other, but in my left hand.

Some other interesting ideas:

For now I’m doing fine on this front, but would probably try both of the above as soon as it became critical again. There are also quite a few ergo keyboards with integrated trackballs, which is very appealing.

# Voice control and eye-tracking

This is a whole different tangent, but one that I put quite a lot of effort into exploring, mostly to feel confident that even without hands it is possible to remain productive on a computer.

The obvious entrypoint here is Talon, which does two connected and very impressive things:

  1. Fully customisable voice control
  2. Use your eyes as a mouse

There’s a nice introductory write-up of both of these here. I didn’t need to do this, but wanted to try it out, so I got some second-hand bits: a nice Rode lavalier microphone and a Tobii eye tracker.

This unsurprisingly has a very steep learning curve, but Talon comes out-of-the-box with some very sensible configurations, and I was able to haltingly browse the internet, write some basic code. The real value is the completely extensible nature, and the vast community of configurations and scripts. Anything you want your voice to do can be coded up and integrated into the system. There’s also a very active and helpful Slack community. Some other useful tools for this on YouTube and some practice resources.

The eye-tracking (with the Tobii) was more of a stretch, and not helped by my ultra-wide monitor and my glasses. It works by tracking your head movements and eye movements to move the cursor, and then you make a pop noise to either zoom in (for fine adjustments) or to click. Word on the street (i.e. word from the developer) is that this will be improving a lot soon. I basically gave up on this, but evidence from the community is that it’s definitely feasible! There’s a useful tool here to practise moving and clicking.