Having a remote desktop is pretty cool, although it can be a bit of a pain to set up. Especially if you're dealing with multiple platforms. So I was pleased to find a free (for non-commercial use) turnkey solution called TeamViewer
. You don't even have to install the client or the host software...it runs straight out of the package, so administrative privileges aren't required.
In a matter of minutes I was controlling my quad-core i7 server from my little netbook. It wasn't blazingly fast even though the data is only carried on the local WiFi network, and I doubt their protocol is all that efficient under the hood. But for free I was happy.
Only problem is that one of my big things to do on the server is run lots of virtual machines, and number keys weren't getting fed properly into VirtualBox machines on the host. I wasn't the first person to hit this, and hk42 on experts-exchange
tried a list of suggestions that didn't resolve the issue. (BTW: I will continue to urge everyone to NOT use ExpertSexChange...popups and login nonsense, the StackExchange network is more elegant by far.)
So I decided to try using the event-monitoring program xev
to see what was going on. It turned out that pressing ordinary number keys on the client generated numeric keypad events inside the virtual machine. Since there were no such problems in ordinary programs on the host, it must be some kind of impedance mismatch between the virtualized keyboard and the remote keyboard. (Neither my client nor my host have a hardware numeric keypad.)
To fix this, I used a little set of xmodmap
commands. I didn't bother making it a permanent thing in an
file, because I don't know if I'm always going to want to do this remapping.
xmodmap -e "keycode 87 = 1"
xmodmap -e "keycode 88 = 2"
xmodmap -e "keycode 89 = 3"
xmodmap -e "keycode 83 = 4"
xmodmap -e "keycode 84 = 5"
xmodmap -e "keycode 85 = 6"
xmodmap -e "keycode 79 = 7"
xmodmap -e "keycode 80 = 8"
xmodmap -e "keycode 81 = 9"
xmodmap -e "keycode 90 = 0"
xmodmap -e "keycode 91 = period"
Hopefully the authors of the products involved will fix this issue in a less hacky way. But for now this works for me!