Keyboard Remapper

Recently my Microsoft wireless keyboard gave up the ghost; it never worked very well in the first place.  It was an older one I bought perhaps 8 years ago at Costco.  It always had a creaky Ctrl and Shift key that did not always make a good contact leading to frustrations, so good riddance.  So I went to my cache of aging computer hardware and found my old OmniKey Ultra keyboard as a stand-in and I had forgotten how good this thing is.Omnikey Keyboard

It has clickety-clack keys that are just a delight to type on.  I am able to type much faster on it and with less strain.  I also like the way it has the Ctrl key in the right place instead of the dumb place PC keyboards put it.  Anyway I plugged it in and started using it, however, I do miss some of the keys on late model keyboards to bring up the Start menu and such so I decided to remap some of the keys using the Registry value: HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map present in Windows at least since Windows XP.  However, when I looked at the binary value at this location there was a header, length, a list of scan codes assignments and a footer which was hard to visually interpret and besides it is also hard to determine the exact scancodes to use for each key.  Therefore, I quickly wrote a utility to remap keyboard scan codes which you can download here: Download Keyboard Remapper.  Just unzip the file into a folder and run the executable from there (It assumes the .NET 4.0 framework is installed already).

The application has two panes the one on the left shows the current keyboard map (it will not have anything listed when first used until you assign some key codes):

Pane 1

"Key to Alter" is the scancode  of the key you wish to remap and "Altered To" is the scancode that will be output when the key is pressed. In the right pane you can assign key scancodes:

Pane 2

There are instructions on how to assign the keycodes above in this pane not shown here.  Basically, you can either hover the mouse caret over the yellow box and type the key (after first selecting the desired combobox so the little hand icon points to it) or select the key value from the combobox dropdown list.  Click the Submit button to add the scancodes to the map.  Then select "Save to Registry" from the File menu to write the map to the registry but keep in mind you will have to reboot your computer before the changes will take effect. 

Some of the codes listed are from Microsoft Keyboards with extra buttons for bringing up the browser or applications like word and multimedia etc.  I suspect that these will only work if you have the Microsoft IntelliType drivers installed.

This utility will also be useful for developers to determine which keys return a particular scancode.  Notebook computers in particular often have custom keys and you have no clue where to find something like the Pause key etc.

In future I might add the facility to create macros for specific key presses (bribes anyone?)