:thumbup: If you are like me and someone asked you what the most useless key on your keyboard is, you would reply in two words... CAPS LOCK. On my old keyboard I had it easy, I just tore off the caps lock key and threw it in the trash. I am not however suggesting that you take that approach or even worse that you might take cannon fodders approach and throw all the keys away lol. On my new keyboard at a cost of $130.00 I am tearing no keys off and so instead I asked a good friend of mine, "Google", how to best resolve this dilemma and was successful in procuring a resolution! There is a long (if you don't know anything about registry and hexadecimal) very complicated article that explains how to do this. Yeah I know that is bad news huh? I mean you may have to do some work to get rid of that key without tearing it off, no? NO! There is a very easy way to do this simply by downloading and double clicking a .reg file and then rebooting your pc. When I say rebooting your pc I do not mean pulling the plug or holding the power button down till it powers down. I instead mean to properly shut the pc down by going to "Shut Down" or "Reboot" in the start menu.
CLICK HERE TO DOWNLOAD THE FOLLOWING REGISTRY TWEAKS IN 1 TINY ZIP FILE
That link contains no virus or exploit of any kind!
ChangeCapsToControl.reg Changes Caps Lock to be a Control key
ChangeCapsToShift.reg Changes Caps Lock to be a Shift key
SwitchCapsToScrollLock.reg Disables Caps Lock and swaps Scroll lock to be Caps Lock
KillCapsLock.reg Disables Caps Lock
DisableKeyboardRemap Uninstalls the preference by deleting the key
You can also get "The Microsoft Keyboard Layout Creator" HERE and use it to remap any key to any other key or function.
And for the long version of how it is done and how it works, the following it a an archived article from msdn.microsoft.com
Archive: Scan Code Mapper for Windows
Updated: December 4, 2001
In Microsoft Windows operating systems, PS/2-compatible scan codes provided by an input device are converted into virtual keys, which are propagated through the system in the form of Windows messages. If a device produces an incorrect scan code for a certain key, the wrong virtual key message will be sent. This can be fixed by writing a filter driver that analyzes the scan codes generated by firmware and modifies the incorrect scan code to one understood by the system. However, this is a tedious process and can sometimes lead to severe problems, if errors exist in the kernel-level filter driver.
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
IMPORTANT: There is also a Keyboard Layouts key (notice the plural form) under the Control key, but that key should not be modified.
In the Keyboard Layout key, the Scancode Map value must be added. This value is of type REG_BINARY and has the data format specified in the following table.
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 and is divided into two WORD length fields. Each WORD field stores the scan code for a key to be mapped.
Once the map is stored in the registry, the system must be rebooted for the mappings to take effect. Note that if the mapping of a scan code is necessary on a keypress, the step is performed in user mode just before the scan code is converted to a virtual key. Doing this conversion in user mode can present certain limitations, such as mapping not working correctly when running under Terminal Services.
The following presents an example. To swap the left CTRL key with the CAPS LOCK key, use a registry editor (preferably Regedt32.exe) to modify the registry key described earlier. The following value is stored in the Scancode Map key:
00000000 00000000 03000000 3A001D00 1D003A00 00000000
It is important to remember that entries stored in the registry are always in little Endian format. The following table contains these entries broken into DWORD fields and the bytes swapped.
Value Interpretation
0x00000000
Header: Version. Set to all zeroes.
0x00000000
Header: Flags. Set to all zeroes.
0x00000003
Three entries in the map (including null entry).
0x001D003A
Left CTRL key --> CAPS LOCK (0x1D --> 0x3A).
0x003A001D
CAPS LOCK --> Left CTRL key (0x3A --> 0x1D).
0x00000000
Null terminator.
To remove these mappings, the following registry value must be deleted and then the system must be rebooted:HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map
It is also possible to add a key not generally available on a keyboard or to remove a key that is never used. The following example shows the value stored in Scancode Map to remove the right CTRL key and change the functionality of the right ALT key to work as a mute key:
00000000 00000000 03000000 00001DE0 20E038E0 00000000
Value Interpretation
0x00000000 Header: Version. Set to all zeroes.
0x00000000 Header: Flags. Set to all zeroes.
0x00000003 Three entries in the map (including null entry).
0xE01D0000 Remove the right CTRL key (0xE01D --> 0x00).
0xE038E020 Right ALT key --> Mute key (0xE038 --> 0xE020).
0x00000000 Null terminator.
After the necessary data is generated, it can be inserted into the registry in several ways.
A .reg file can be generated that can be easily incorporated into the system registry using a registry editor such as Regedit.exe.
An .ini file can be created that contains the necessary information to be added to the registry using Regini.exe.
An .inf file can also be created with an [AddReg] section that contains the registry information to be added.
Regedt32.exe can be used to manually add the information to the registry.
The Scan Code Mapper has several advantages and disadvantages. The advantages include:
The Mapper can be used as an easy fix to correct firmware errors.
Frequently used keys can be added to the keyboard by modifying the map in registry. Keys that aren't often used (for example, right CTRL key) can be mapped to null (removed) or exchanged for other keys.
Key locations can be altered easily. Users can easily customize the location of frequently used keys for their benefit.
The following disadvantages are recognized:
Once the map is stored in the registry, a system reboot is required to activate it.
The mappings stored in the registry work at system level and apply to all users. These mappings cannot be set to work differently depending on the current user.
The current implementation restricts the functionality of the map such that mappings always apply to all keyboards connected to the system. It is not currently possible to create a map on a per-keyboard basis.
CLICK HERE TO DOWNLOAD THE FOLLOWING REGISTRY TWEAKS IN 1 TINY ZIP FILE
That link contains no virus or exploit of any kind!
ChangeCapsToControl.reg Changes Caps Lock to be a Control key
ChangeCapsToShift.reg Changes Caps Lock to be a Shift key
SwitchCapsToScrollLock.reg Disables Caps Lock and swaps Scroll lock to be Caps Lock
KillCapsLock.reg Disables Caps Lock
DisableKeyboardRemap Uninstalls the preference by deleting the key
You can also get "The Microsoft Keyboard Layout Creator" HERE and use it to remap any key to any other key or function.
And for the long version of how it is done and how it works, the following it a an archived article from msdn.microsoft.com
Archive: Scan Code Mapper for Windows
Updated: December 4, 2001
In Microsoft Windows operating systems, PS/2-compatible scan codes provided by an input device are converted into virtual keys, which are propagated through the system in the form of Windows messages. If a device produces an incorrect scan code for a certain key, the wrong virtual key message will be sent. This can be fixed by writing a filter driver that analyzes the scan codes generated by firmware and modifies the incorrect scan code to one understood by the system. However, this is a tedious process and can sometimes lead to severe problems, if errors exist in the kernel-level filter driver.
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
IMPORTANT: There is also a Keyboard Layouts key (notice the plural form) under the Control key, but that key should not be modified.
In the Keyboard Layout key, the Scancode Map value must be added. This value is of type REG_BINARY and has the data format specified in the following table.
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 and is divided into two WORD length fields. Each WORD field stores the scan code for a key to be mapped.
Once the map is stored in the registry, the system must be rebooted for the mappings to take effect. Note that if the mapping of a scan code is necessary on a keypress, the step is performed in user mode just before the scan code is converted to a virtual key. Doing this conversion in user mode can present certain limitations, such as mapping not working correctly when running under Terminal Services.
The following presents an example. To swap the left CTRL key with the CAPS LOCK key, use a registry editor (preferably Regedt32.exe) to modify the registry key described earlier. The following value is stored in the Scancode Map key:
00000000 00000000 03000000 3A001D00 1D003A00 00000000
It is important to remember that entries stored in the registry are always in little Endian format. The following table contains these entries broken into DWORD fields and the bytes swapped.
Value Interpretation
0x00000000
Header: Version. Set to all zeroes.
0x00000000
Header: Flags. Set to all zeroes.
0x00000003
Three entries in the map (including null entry).
0x001D003A
Left CTRL key --> CAPS LOCK (0x1D --> 0x3A).
0x003A001D
CAPS LOCK --> Left CTRL key (0x3A --> 0x1D).
0x00000000
Null terminator.
To remove these mappings, the following registry value must be deleted and then the system must be rebooted:HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map
It is also possible to add a key not generally available on a keyboard or to remove a key that is never used. The following example shows the value stored in Scancode Map to remove the right CTRL key and change the functionality of the right ALT key to work as a mute key:
00000000 00000000 03000000 00001DE0 20E038E0 00000000
Value Interpretation
0x00000000 Header: Version. Set to all zeroes.
0x00000000 Header: Flags. Set to all zeroes.
0x00000003 Three entries in the map (including null entry).
0xE01D0000 Remove the right CTRL key (0xE01D --> 0x00).
0xE038E020 Right ALT key --> Mute key (0xE038 --> 0xE020).
0x00000000 Null terminator.
After the necessary data is generated, it can be inserted into the registry in several ways.
A .reg file can be generated that can be easily incorporated into the system registry using a registry editor such as Regedit.exe.
An .ini file can be created that contains the necessary information to be added to the registry using Regini.exe.
An .inf file can also be created with an [AddReg] section that contains the registry information to be added.
Regedt32.exe can be used to manually add the information to the registry.
The Scan Code Mapper has several advantages and disadvantages. The advantages include:
The Mapper can be used as an easy fix to correct firmware errors.
Frequently used keys can be added to the keyboard by modifying the map in registry. Keys that aren't often used (for example, right CTRL key) can be mapped to null (removed) or exchanged for other keys.
Key locations can be altered easily. Users can easily customize the location of frequently used keys for their benefit.
The following disadvantages are recognized:
Once the map is stored in the registry, a system reboot is required to activate it.
The mappings stored in the registry work at system level and apply to all users. These mappings cannot be set to work differently depending on the current user.
The current implementation restricts the functionality of the map such that mappings always apply to all keyboards connected to the system. It is not currently possible to create a map on a per-keyboard basis.


























