How to map - remap keyboard buttons?
How about disabling DELETE key or the most often used SPACEBAR?
Sometimes before, I came to know how to remap keyboard, which would allow me to disable & interchange keys, without having to use any software, neither any special keyboard driver etc. I must tell you that this tutorial is making use of regedit it means if you don't know anything about regedit than first read the article Understanding/Backup & Restoring Regedit.
In Windows operating systems, PS/2-compatible scan codes provided by an input device (Keyboard, Joystick, Mouse etc) are converted into virtual keys, which are transferred through the system in the form of Windows messages. Windows 2000 and Windows XP include a new Scan Code Mapper, which provides a method that allows for mapping of scan codes. The scan code mappings for Windows are stored in the following registry key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
NOTE: There is also a Keyboard Layouts key under the Control key, you should not mess up with that key.
To make you understand the concept I will first start from the basic that is disabling key, once you understand the concept you can disable any key or even interchange any key with another. Here I am disabling DELETE key.
Disable CAPS LOCK key
Open Regedit and go to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout.
Be careful not to edit the "Keyboard Layouts" key. If you want the remapping to apply on a user-specific basis, log in as that user (you need to be an administrator in XP Home or have registry editing privileges, usually a power user or administrator, in XP Pro) and use HKEY_CURRENT_USER\Keyboard Layout.

In right-side pane create or modify Binary Value, name it Scancode Map. The content of the key will depend on what kind of mapping – remapping you wants.
| Start offset (in bytes) |
Size (in bytes) |
Data |
| 0 |
4 |
Header: Version Information |
| 4 |
4 |
Header: Flags |
| 8 |
4 |
Header: Number of Mappings |
| 12 |
4 |
Individual Mappings |
| Last 4 bytes |
4 |
Null Terminator (0x00000000) |
The first and second DWORDS store header information and should be set to all zeroes for the current version of the Scan Code Mapper. The third DWORD entry holds a count of the total number of mappings that follow, including the null terminating mapping. The minimum count would therefore be 1 (no mappings specified). The individual mappings follow the header. Each mapping is one DWORD in length.
Scancode Map entries to disable CAPS LOCK
| DWORDs |
Value |
Interpretation |
Entered as |
| DWORD 1 |
0x00000000 |
Header: Version. Set all to zeroes |
00 00 00 00 |
| DWORD 2 |
0x00000000 |
Header: Flags. Set all to zeroes |
00 00 00 00 |
| DWORD 3 |
0x00000002 |
Number of entries in the map, including null terminator (2 entries in this example) |
02 00 00 00 |
| DWORD 4 |
0x003A0000 |
Remove CAPS LOCK (0x3A --> 0x00) |
00 00 3A 00 |
| DWORD 5 |
0x00000000 |
Null Terminator |
00 00 00 00 |
From here you need to take proper care on entering the value, place the first DWORD (i.e. the header of your scancode), so that your scancode map should look like this
Now following the header place the second DWORD value (i.e. The flag of your scancode), now your scancode should look like this
Till here your version and flag is all set, now identify how many mappings you want to do, in this case it is 2 (1st to change CAPS LOCK key to 00 00 00 00 and then placing the Null Terminator, so in any case the minimum mapping should be 1. The no of mapping is also followed by the null key i.e. 4 zeros 00 00
It should now look like this:
Now we have our header, flag, and no’s of mapping all set now its time for real mapping, so for disabling CAPS LOCK key you need to look at the scancode (given below) of it which is 3A. Now in order to disable the key first write the null key i.e. 4 zeros 00 00
If you look at scancode you will see that its scancode is 3A which is a 2 digit number, so if you want to enter it into registry you need to modify it by adding 2 more zeros in the end, so as to make it 3A 00, but even now it is incorrect you need to reverse it (Thanks to MICROSOFT for that more headache) i.e. the correct value will be 00 3A. Till now your scancode should look like below
NOTE: if you want to turn off DELETE key then the code will be 02 00 00 00 00 00 00 E0 53
Finally! This yields three effects. Pressing Caps Lock no longer does -anything-.
To finish it up, add four more bytes of zeros (00 00 00 00) i.e. null terminator and exit and reboot.
Complete Scan Codes
| Special Keys |
Scan Code |
| Application |
5D E0 |
| Backspace |
0E 00 |
| Caps Lock |
3A 00 |
| Delete |
53 E0 |
| End |
4F E0 |
| Enter |
1C 00 |
| Escape |
01 00 |
| HOME |
47 E0 |
| Insert |
52 E0 |
| Left Alt |
38 00 |
| Left Ctrl |
1D 00 |
| Left Shift |
2A 00 |
| Left Windows |
5B E0 |
| Num Lock |
45 00 |
| Page Down |
51 E0 |
| Page Up |
49 E0 |
| Power |
5E E0 |
| PrtSc |
37 E0 |
| Right Alt |
38 E0 |
| Right Ctrl |
1D E0 |
| Right Shift |
36 00 |
| Right Windows |
5C E0 |
| Scroll Lock |
46 00 |
| Sleep |
5F E0 |
| Space |
39 00 |
| Tab |
0F 00 |
| Wake |
63 E0 |
|
|
| Number Pad Keys |
Scan Code |
| 0 |
52 00 |
| 1 |
4F 00 |
| 2 |
50 00 |
| 3 |
51 00 |
| 4 |
4B 00 |
| 5 |
4C 00 |
| 6 |
4D 00 |
| 7 |
47 00 |
| 8 |
48 00 |
| 9 |
49 00 |
| - |
4A 00 |
| * |
37 00 |
| . |
53 00 |
| / |
35 E0 |
| + |
4E 00 |
| Enter |
1C E0 |
|
| Arrow Keys |
Scan Code |
| Down |
50 E0 |
| Left |
4B E0 |
| Right |
4D E0 |
| Up |
48 E0 |
|
|
| Function Keys |
Scan Code |
| F1 |
3B 00 |
| F2 |
3C 00 |
| F3 |
3D 00 |
| F4 |
3E 00 |
| F5 |
3F 00 |
| F6 |
40 00 |
| F7 |
41 00 |
| F8 |
42 00 |
| F9 |
43 00 |
| F10 |
44 00 |
| F11 |
57 00 |
| F12 |
58 00 |
| F13 |
64 00 |
| F14 |
65 00 |
| F15 |
66 00 |
|
| Application
Keys
|
Scan Code |
| Calculator |
21 E0 |
| E-Mail |
6C E0 |
| Media Select |
6D E0 |
| Messenger |
11 E0 |
| My Computer |
6B E0 |
|
|
| QWERTY Keys |
Scan Code |
| ' " |
28 00 |
| - _ |
0C 00 |
| , < |
33 00 |
| . > |
34 00 |
| /? |
35 00 |
| ;: |
27 00 |
| [ { |
1A 00 |
| \ | |
2B 00 |
| ] } |
1B 00 |
| ` ~ |
29 00 |
| = + |
0D 00 |
| 0 ) |
0B 00 |
| 1 ! |
02 00 |
| 2 @ |
03 00 |
| 3 # |
04 00 |
| 4 $ |
05 00 |
| 5% |
06 00 |
| 6 ^ |
07 00 |
| 7 & |
08 00 |
| 8 * |
09 00 |
| 9 ( |
0A 00 |
| A |
1E 00 |
| B |
30 00 |
| C |
2E 00 |
| D |
20 00 |
| E |
12 00 |
| F |
21 00 |
| G |
22 00 |
| H |
23 00 |
| I |
17 00 |
| J |
24 00 |
| K |
25 00 |
| L |
26 00 |
| M |
32 00 |
| N |
31 00 |
| O |
18 00 |
| P |
19 00 |
| Q |
10 00 |
| R |
13 00 |
| S |
1F 00 |
| T |
14 00 |
| U |
16 00 |
| V |
2F 00 |
| W |
11 00 |
| X |
2D 00 |
| Y |
15 00 |
| Z |
2C 00 |
|
|
| F-Lock Keys |
Scan Code |
| Close |
40 E0 |
| Fwd |
42 E0 |
| Help |
3B E0 |
| New |
3E E0 |
| Office Home |
3C E0 |
| Open |
3F E0 |
| Print |
58 E0 |
| Redo |
07 E0 |
| Reply |
41 E0 |
| Save |
57 E0 |
| Send |
43 E0 |
| Spell |
23 E0 |
| Task Pane |
3D E0 |
| Undo |
08 E0 |
|
| Media Keys |
Scan Code |
| Mute |
20 E0 |
| Next Track |
19 E0 |
| Play/Pause |
22 E0 |
| Prev Track |
10 E0 |
| Stop |
24 E0 |
| Volume Down |
2E E0 |
| Volume Up |
30 E0 |
|
| Web Keys |
Scan Code |
| Back |
6A E0 |
| Favorites |
66 E0 |
| Forward |
69 E0 |
| HOME |
32 E0 |
| Refresh |
67 E0 |
| Search |
65 E0 |
| Stop |
68 E0 |
| Disable |
Turn Key Off |
00 00 |
|
|
| Manufacturer |
Special Keys |
Scan Code |
| Dell |
Internet |
01 E0 |
| Dell |
Fn |
No Code |
| Dell |
Decrease Brightness |
40 05 E0 |
| Dell |
Increase Brightness |
40 06 E0 |
| Dell |
CRT/LCD |
No Code |
| Logitech |
iTouch |
13 E0 |
| Logitech |
Shopping |
04 E0 |
| Logitech |
Webcam |
12 E0 |
|
| Non-English (US) Keys |
Scan Code |
| ¥ - |
7D 00 |
| € |
45 E0 |
| International Keyboard |
| Next to Enter |
2B E0 |
| Next to L-Shift |
56 E0 |
| Brazilian Keyboard |
| Next to R-Shift |
73 E0 |
| Far East Keyboard |
| DBE_KATAKANA |
70 E0 |
| DBE_SBCSCHAR |
77 E0 |
| CONVERT |
79 E0 |
| NONCONVERT |
7B E0 |
|
| Microsoft Natural Multimedia Keyboard |
Scan Code |
| My Documents |
|
| My Pictures |
64 E0 |
| My Music |
3C E0 |
| Mute |
20 E0 |
| Play/Pause |
22 E0 |
| Stop |
24 E0 |
| + (Volume up) |
30 E0 |
| - (Volume down) |
2E E0 |
| |<< (Previous) |
10 E0 |
| >>| (Next) |
19 E0 |
| Media |
6D E0 |
| Mail |
6C E0 |
| Web/Home |
32 E0 |
| Messenger |
05 E0 |
| Calculator |
21 E0 |
| Log Off |
16 E0 |
| Sleep |
5F E0 |
| Help (on F1 key) |
3B E0 |
| Undo (on F2 key) |
08 E0 |
| Redo (on F3 key) |
07 E0 |
| New (on F4 key) |
|
| Open (on F5 key) |
|
| Close (on F6 key) |
|
| Replay (on F7 key) |
|
| Fwd (on F8 key) |
42 E0 |
| Send (on F9 key) |
43 E0 |
| Spell (on F10 key) |
23 E0 |
| Save (on F11 key) |
57 E0 |
| Print (on F12 key) |
58 E0 |
|
|
Ready Made meal
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex: 00,00,00,00,00,00,00,00,02,00,00,00,2a,00,3a,00,00,00,00,00
Be sure to include a blank line at the end (an extra carriage return). You can substitute an example from the table for the text after thehex: You can also use it as a boilerplate for creating your own remap sequence.
Save the file and right-click and choose Merge. This will place it into your registry and will take affect on the next boot.