KeyTweak is a simple utility that allows users to redefine their keyboard input signals. The functionality is made possible by a registry value first documented in Windows 2000, but also present in Windows NT 4.0. and included in XP, Vista and Windows 7. This section lists some of KeyTweak's features and reasons you may want to use KeyTweak. How Does It Work? Simply put, KeyTweak is just a front-end interface for editing a particular registry key. Microsoft did the low-level heavy lifting by creating this registry key. KeyTweak makes the editing of it a little less geeky.

Your keyboard communicates with your computer typically through a PS/2 port or a USB port. The data sent by your keyboard is referred to as Scan Codes. When you press a key, the "make" scan code for that key is received by your computer's i8042 controller chip. When you release a key, the "break" scan code is sent. Prior to Windows 2000, device drivers had to be written to modify scan codes. Happily, Microsoft incorporated this feature into their operating system, thereby allowing fools like you and me to hack our registry and change the values to anything we see fit. The only downside is that the system has to be rebooted to take affect.

The registry key to which I'm referring is HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout and the binary value in that key is titled "Scancode Map". If you forget this, don't worry, just click the Show Me The Raw Map button to see what I'm talking about. Now, I don't recommend registry hacking to anyone - that's why I wrote this utility. If you don't know what I've been talking about in this section, it's probably better left forgotten. Features Simple interface Ability to Teach remapping by pressing the keys to be remapped Easy-to-read lists of all current and pending re-mappings Implementation of Specialty Keys support for certain keyboards Remove all re-mappings with a single button Enable/disable annoying keys Displays what exactly is written to the "Scancode Map" registry value and how to interpret its binary data User warnings help ensure Ctrl-Alt-Delete sequence is maintained

Limitations * Keytweak cannot combine keystrokes. You cannot merge Ctrl+Alt+Del into a single key for example, nor can you map Alt+num key sequences into a single key. The reason for this is because each keystroke generates a scancode and multiple scancodes are typically combined into a single keycode by the keyboard processor. The keycode combinations take place downstream of KeyTweak's functionality. * Keytweak cannot affect the Fn key of most laptops. This because the Fn key itself does not generate a scancode, but rather modifies the scancode of other keys on the keyboard. The scancode modifications take place upstream of KeyTweak's functionality. * The Pause/Break key cannot be remapped. This special key generates a 3-byte scancode, but the Scancode Map registry entry only allows for the remapping of 2-byte scancodes. * KeyTweak edits are global. That is, you can't specify user-specific, application-specific, or keyboard-specific remappings. The remapping affects all users, all applications, and all keyboards and all users on the machine. Note that some games may perform their own keyboard remapping. These could supersede or be applied in addition to KeyTweak remappings. * Rebooting is required. The remapping is read by the operating system upon start up. Any change to the remapping will require a reboot. Why Would I Want to Remap My Keys?

Unless you are one of the few people that make use of every key on your keyboard and are completely happy with your keyboard layout, there is probably something you would like to change on your keyboard. Maybe you have an IBM Thinkpad and you really miss having a Windows Logo key. Maybe you are used to using a different keyboard and you keep hitting the wrong key. Maybe you know that you are going to be doing a lot of numerical data entry and would like to change your Num Pad + key into a Tab key for a little while. How about changing Scroll Lock into a Mute button? There are lots of reasons for why you might remap your keyboard.

I had a Dell Inspiron 3800, a model who was notorious for losing functionality in four keys: 8, I, K, and comma. I remapped 8 to F8, I to Right-Alt, K to Right-Ctrl, and comma to F9. Tada, a semi-working keyboard again. Good enough to use while traveling anyway. My wife uses a Thinkpad and really missed having a Windows key and didn't mind giving up Right-Alt to get it.

Sure you could remap your keys the hard way by wading through scan codes and reversing the hex notation. But why do that when there's a simple app that can do it for you? Getting Started System Requirements KeyTweak supports the following operating systems: Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, and Windows 7. Because KeyTweak performs a write operation to a protected area of the registry, Vista and Windows 7 UAC will request elevated permissions. Installation Notes Installation is made simple with Nullsoft's Software Installation System (NSIS). Just run KeyTweak_install.exe and choose a directory to install KeyTweak. Once installed, you can copy the KeyTweak.exe file onto a floppy and run it right from there. Even though this is a VB6 app, you can use it like a stand-alone executable because the only .dlls used are those that are distributed with Windows. Really, the whole installation bit is for the sake of this manual and to make it easy to clean up your computer if you want to uninstall. To uninstall, simply run the uninstall.exe file that is located in the same directory as KeyTweak.exe - or just use the shortcut from your Start Menu. Using KeyTweak

The goal of this program is to make remapping keys easy and manageable. The main form is laid out into three main areas corresponding roughly to the upper, middle, and bottom third of the screen. These areas are the Informational Area, Key Selection Area, and Keyboard Controls Area. Additionally, there are two "teach" modes that provide alternative means to remapping your keyboard. The File menu supports saving and reloading remappings to/from .ktw files.

Informational area Key Selection Area Keyboard Controls Area Full and Half Teach Mode

Informational Area

When KeyTweak starts, it reads a certain value from your computer's registry so that it can display what, if any, key remappings are in place. Any remappings found are displayed in the listbox with the caption "Remapped Keys currently in effect". This is probably the first place you should look if you have been using KeyTweak before.

The next button, Restore All Defaults, is sort of a panic button and will immediately revert your keyboard back its default configuration. I know this isn't really an "informational" control, but it seems appropriate to put this button near the area that could cause you to panic. Essentially, this button deletes the Scancode Map registry value, eliminating all remappings.

Below that button is another button called Show Me The Raw Map. This button will pop up a window displaying the raw data in your registry value along with a translation of the hex values. This information is only for the curious and is not needed for normal operation of KeyTweak.

Finally to right side of the Informational Area is a Warning Label. The Warning Label only appears if your keyboard is in a potentially dangerous configuration. That is to say, you have remapped away you Ctrl, Alt, or Delete Key(s) and you may not be able to log into the system correctly. KeyTweak will pop up warning message boxes if you attempt to Apply a dangerous configuration, or if a dangerous configuration is detected upon starting KeyTweak. KeyTweak will eventually let you make such a configuration change, but you do so at your own risk. My recommendation is that if you ever see the Warning Label, you should click the Restore All Defaults panic button and then restart your machine. After reading what key remappings are currently in effect, you may want to add, change, or delete a remapping. There are two ways to do that - through Key Selection Area or through the Teach Mode in the Keyboard Controls Area. Key Selection Area This area of KeyTweak provides a virtual keyboard in which you can select what key you would like to remap. You will notice that the keys in this area only have numbers assigned to them without their normal descriptions. The reason for this is to keep in mind that what you are selecting here is a `key', not what the key represents. If you hover your mouse above any key, a tooltip textbox will appear next your cursor, indicating what the key is currently representing. Due to the nature of this program, I found it too difficult to implement keyboard shortcuts here (for that use Teach Mode), so you'll have to use your mouse to select a key from this area.

The key layout is based upon a 104-key United States keyboard. You may have to do a little searching to find the key you want to change if you have fewer keys on your keyboard. In addition, certain Specialty Keys may be available to your keyboard. These are keys defined in the standard for PS-2 keyboard scan codes. At home, using a Logitech wireless keyboard, I was able to make use of the CD control buttons and the Mute button, but not the Volume controls or the other Specialty buttons. Your mileage may vary.

Finally, due to the mode of implementation, the Pause/Break key cannot be remapped. Keyboard Controls Area

This area of KeyTweak provides the means to remap the key selected in the Key Selection Area, or to enter Teach Mode, in which you will be able to press two keys, `teaching' KeyTweak what to remap.

When a key is clicked in the Key Selection Area, that key's mapping appears in the Keyboard Controls Area. From here you can decide how the key will behave. Basically you have three options: Remap the Key, Restore the Default Behavior to this key, or Enable/Disable this key. To remap a key, first select the new value you want this key to represent. The dropdown box contains all the possible selections for remapping. When you have selected one that you like, click the Remap Key button. This will add an item to the list of Pending Changes.

If you would like to restore the default behavior for your selected key, just click Restore Default. Likewise if you would like to enable or disable the key, click the Disable (Enable) Key button. For these two buttons, you don't need to select anything from the dropdown box. Like the Remap Key button, these buttons will also update the list of Pending Changes.

Once you have at least one pending change, the Apply and Clear All buttons will become enabled appear underneath the list of Pending Changes. If you select a single item from the list of Pending Changes, the Clear button will also become enabled. The Apply button is used to write the list of changes to the registry. The Clear button will remove a change from the list. The Clear All button will remove all changes from the list.

When you press the Apply button, KeyTweak will check to see if any of your submissions could be considered Dangerous as defined above. If so, KeyTweak will force you to confirm your action. Once the registry is written, KeyTweak will ask you if you would like to restart your computer to load the changes. If you choose not to restart, you'll get another suggestion to restart KeyTweak to re-read the registry and refresh the Informational Area. Full Teach Mode As of v2.00, KeyTweak has been enhanced with a new method of teaching remappings. By pressing `Go To Teach Mode' the user will be presented with a new screen. When `Begin Teach Mode' is pressed, KeyTweak will hook the keyboard, and display the scancode of the first button pressed under `Scancode of Key #1'. Then it will display the scancode of the second key pressed and display it uder `Scancode of Key #2'. KeyTweak then unhooks the keyboard. At that point, the user can decide to reteach, remap, or cancel by pressing on one of the three buttons on the screen. If remapping is selected, the new mapping will appear in the Pending Changes listbox on the main screen. The user will then have to press Apply to apply the pending remap.

Half Teach Mode Added to v2.1.1, Half Teach Mode will scan a single keystroke and then allow you to choose its remapping from dropdown list. This can be helpful if you have taken apart your keyboard completely and you require a full remap, or if your keyboard doesn't resemble a standard 104-key layout.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Thank You I very much appreciate the emails I've received over the years describing your experiences with KeyTweak as well as bug fixes and feature requests. It's the first freeware application I've ever written and was surprised that the broad reception it has received. If KeyTweak has increased your productivity or has saved you from buying a new keyboard, donations are happily accepted via PayPal via the link below. https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2351203