Caps Lock does not seem to work as modifier key (Insert) with NVDA running inside a virtual machine (macOS VMware Fusion)

356 Views Asked by At

I'm running NVDA inside a virtual machine on my macOS using VMware Fusion. I do that since many years, and it's generally a very smooth experience, except that I need to map a keyboard key to Insert. I use Karabiner-Elements to do just that: it maps my right option key to Insert. This runs just fine, but it is quite a complex installation/configuration, and when asking clients to do the same, they are quickly overwhelmed. (Sadly, while VMware Fusion offers a feature to map certain keyboard combos to different ones, it does not allow to just change a single key's [ie. right option to insert] mapping.)

So I tried to go the route of activating the NVDA option to use caps lock as modifier key, too. But this just does not seem to work - or do I do something wrong?

  1. Would I need to keep holding caps lock while hitting (for instance) N (to show the NVDA menus)
  2. Or would pressing and releasing caps lock trigger some special "I am on Insert now" mode, so I could just hit another key like N? And then press and release caps lock again to deactivate the "special mode" again?

Neither option works for me. What I can say though is that the "real" caps lock functionality does not get activated anymore with the option checked, unless I hit it twice in a row quickly. So it at least seems to have some effect...

Am I doing something wrong? Any help is highly appreciated.

2

There are 2 best solutions below

0
Ryan DeBeasi On

You're not doing anything wrong. Unfortunately, I don't think there's a simpler solution than the one you described.

A couple of things are happening here:

VMWare Fusion doesn't send the caps lock key to the host

Via this article:

... the Caps Lock key is not recorded in the software (and thus cannot be read by other programs). It is a hardware-only toggle.

I'm experiencing the same behavior with Remote Desktop on macOS.

NVDA doesn't offer Mac-friendly modifier keys

The only available modifier keys are Insert (not available on most Mac keyboards) and Caps Lock (not sent to VMs).

This issue is tracked as a bug in NVDA but hasn't been prioritized. Via this comment:

The initial description here is a use-case of NVDA running in a virtual machine while on Apple hardware. This is not a primary use-case for NVDA, which is why this issue has not been prioritized. As far as we are aware, the majority of users are served well by the current options.

Workaround

For folks who are looking for details on the Karabiner setup described in the question, check out How to map your Mac's CapsLock key to a NVDA or JAWS key in a Windows virtual machine.

0
Jon Gibbins On

I've recently switched from VMWare Fusion to Parallels and still experiencing this issue. I've been able to get a workaround in place using SharpKeys in Windows running in a Parallels virtual machine. I'm able to use it to successfully map the Right Option/Alt key on my Mac keyboard to the Insert key. Load up SharpKeys, add the key mapping(s) you want, then hit "Write to Registry". SharpKeys should then prompt you to restart Windows for the new mapping(s) to take place.

Note: I've also mapped the § key, which Windows detects as a ` (backtick) key, to Insert.

Screenshot: SharpKeys settings screen mapping two keys to the Insert key

This is the only way I've been able to get the keys to reliably remap every time Windows starts. While I managed to get Windows PowerToys to remap the same keys, there appears to be a bug in PowerToys that causes remapped keys to fail after the app is restarted, so the mappings are only successful if you first remove it in Keyboard Manager and add it back again. Once this bug is fixed, PowerToys may also be worth a try.

Screenshot: Windows PowerToys app Settings, showing the Remap keys dialog in the Keyboard Manager settings that has the backtick key remapped to the Insert key