Have you thought about remapping the movement keys? Either WSAD/UDLR or even remapping the keys from the keyboard to the OS? For example, you could have the up button ACTUALLY send say control Q instead of up - linux is easier to tweak this but it should be possible in windows too without too much difficulty. That way you can "press' the same physical key but the host OSes respond differently to said keypress. A sort of software remapping of hardware. Very useful for special keys or changing keys around (making a normal qwerty keyboard into a dvorak or international keyboard for example).