These are registry files and have only been tested on three machines. I very much doubt that they will harm your system but if they do then I'm very sorry, but it's not my fault, OK? If you decide to play around in the registry yourself then be careful - fiddling can make your computer do some funny things.
The Windows key can be a bit of a nightmare whether it's being hit accidentally or your pupil is trying to escape from their program to do something else. In Windows 2000/XP it's possible to disable the key so that it does nothing at all.
If these don't seem to work for you then you might have a slightly different set-up. Instead you can try this file to turn them off and this file to turn them back on again. Remember: these only work in Windows 2000 and XP.
For those that are interested this is a remap of Windows' scancodes that I found out about so that a pupil could use the arrow keys on a BigKeys LX to control the mouse using MouseKeys (The BigKeys does not have a numeric keypad).
It involves a registry entry under HK_LM\SYSTEM\Control\Keyboard Layout\ or HKEY_LM\SYSTEM\ControlSet001\Control\Keyboard Layout\
In here one can add a binary value named "Scancode Map".
The 1st 4 bytes represent the version (0x00000000) (This DWORD is always all zeros).
The 2nd 4 bytes show the flags (0x00000000) (all zeros again)
The 3rd 4 bytes represent the number of mappings (including the null terminator at the end)
Then come the key mappings, four bytes each. You'll need to look up the hexadecimal scan codes for the key you want to change and the key you want to change it to. This follows the format of:
(0x00aa00bb) where (aa == scancode of physical key) and (bb == scancode of replacement key). When you remove the 0x you need to swap the bytes around so, for example, 0xE020 (mute) and 0xE038 (Alt Gr) become 20E0 and 38E0 respectively.
If you want to disable a key rather than swap it then set the destination to Null (00). This is handy for stopping annoying keys such as the Windows Key.
Finally you'll need to put a null terminator on the end (0x00000000)
The computer will need a reboot for the settings to come in effect. To revert the changes simply delete the value.
To clarify, your binary value will end up looking like this (where 'n' is the number of keymappings plus 1 for the null):
00 00 00 00 | 00 00 00 00 | 0n 00 00 00 | bb 00 aa 00 ... 00 00 00 00
I managed to get the arrow keys to send the numeric arrow keys by using the following value:
00000000 00000000 05000000 4B004BE0 4D004DE0 480048E0 500050E0 00000000
I've put a table of key scan codes (in HEX) on this website.
Another good use of this I've found is setting the barely used Alt Gr key (0xE038) to act as a mute key (0xE020). If anyone comes up with any other uses or has any questions then please contact me!
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 License.