VMWare and Your Keyboard Mapping

VMWare and Gnome 3.0 may render your keyboard mapping unusable.

To be really productive for my customers I have, over the years, adapted my work setup to my needs. One of the keys of my productivity is the use of wonderful TypeMatrix 2030 keyboard with the Dvorak layout.

The other key is the use of Emacs as text editor. One peculiarity of Emacs is the extensive use of the Ctrl key to run special commands. In a text editor you can save your work with Ctrl+S, copy with Ctrl+C and paste with Ctrl+V, in Emacs can do nearly everything with some Ctrl+key combinations. This requires an easy to access Ctrl key and on the TypeMatrix 2030 keyboard, this means swapping the left shift and the left control keys.

On a modern Linux system with systemd, remapping keys of a USB keyboard is pretty simple, you create a file which simply tell which key code will match which key for which device.

I created the file /etc/udev/hwdb.d/80-typematrix-key.hwdb with the content:

evdev:input:b*v1E54p2030*
  KEYBOARD_KEY_700e0=leftshift  # bind left control to left shift
  KEYBOARD_KEY_700e1=leftctrl   # bind left shift to left ctrl

and run the commands:

sudo udevadm hwdb --update
sudo udevadm trigger

now the two keys are swapped and the changes persist across reboots. If you need, you can learn more about scan codes and key codes. Everything work, I am happy and go back to work. This was just after an upgrade from Ubuntu 14.04 to Ubuntu 16.04 which went without a single glitch. Happy day.

The next day, I run an upgrade of VMWare Workstation as my old version (9) was not compatible with the current Ubuntu version. VMWare Workstation belongs to the software I am happy paying for. They make my work so nice. Because the last thing I want to happen as I work for my customers is the leak of data out of my system as most of the bits I move are covered with non disclosure agreements. This results in a secure by default approach with the rule that I isolate the work for each customer in a dedicated virtual machine.

So, I install the new Workstation, launch a virtual machine, click around and try to go back to work. End of the day for two days. My keyboard went totally fubar, enable to use the Ctrl keys anymore, both on the left and the right. Of course, as the day before I moved from xmodmap to the new udev/systemd approach, I first tried to figure out what was going on on this side of the system. Without any luck and success, I tried to get logs out of systemd and the system messages.

Then by luck, after an afternoon of frustration and a good night, the next day, I found the answer and the issue is coming from the Gnome handling of the capslock key remapping. The solution is extremely simple:

In Gnome Tweak Tool, set "Ctrl key position" to "Caps Lock as Ctrl" and "Caps Lock key behavior" to "Caps Lock is disabled".

Nothing more, nothing less. It works.

Fluid Phase Equilibria, Chemical Properties & Databases
Back to Top