I was a beta tester for VMware
Fusion. Fusion is a quality product,
as I've come to expect from VMware. Unfortunately, the beta is over and a
dialog box popped up when I tried to run it the other day. "The long wait is
over!" Yeah, I've been waiting with bated breath for my beta to stop working
until I fork over $40. You read my mind!
$60 ($40 after the current promotion) is the most affordable virtualization
option for OS X right now, and in my opinion the most technically superior to
boot. But I'm still a cheapskate, so I decided to use VMware
Server on Linux over
NX instead. NX is indistinguishable from magic. It
works great, with one problem: the keyboard mapping in the virtual machine is
completely skewampus.
In googling for the answer, I found a few people who had trouble with a key
here or a key there. No, I had a completely unusable keyboard. e was the
backspace key, backspace was a comma, escape was a letter, and everything else
in between was equally unreasonable.
So I tried it over ssh (btw, it works a lot faster if you use ssh -Y
instead
of ssh -X
), and it worked fine. So the gauntlet was down.
After some stabbing in the dark, reading, more stabbing in the dark, more
reading, finally understanding, and one last stab in the dark, I got it to
work. The theory is in this
article.
In short, VMware tries to map key codes to emulated PC scan codes (v-codes). If
it can't do that, it maps keysym codes to v-codes. The former is apparently
foolproof but isn't always an option. The problem here is that VMware thinks it
will work, but it won't (probably because Apple's X11 isn't XFree86). So we
simply need to put this in ~/.vmware/config
:
xkeymap.nokeycodeMap = true