SharpKeys 2.0

SharpKeys is a Registry hack that is used to make certain keys on a keyboard act like other keys. For example, if you accidentally hit Caps Lock often, you could use this utility to map Caps Lock to a Shift key or even turn it off completely. The official release includes support for up to 104 mappings, an extensive list of available keys, and a “Type Key” option to help when managing mappings. As it relies on internal support within Windows NT, Windows 2000, Windows XP, Windows Server 2003, or Windows Vista you must be running one of these OS’s for this Registry hack to work.

Version 2.0 includes a newly design UI and it has been recompiled to use the 2.0 release of the .NET Framework. There is no new bug fixes or functionality in this release: it is simply a refresh to move to the newer Framework and update the UI with a new look.

Download SharpKeys 2.0: EXE | MSI | ZIP

Download: .NET Framework version 2.0

Read: SharpKeys FAQ

Screenshots: 1 | 2 | 3

SharpKeys 1.1 is also still available, using the 1.1 version of the .NET Framework – read this post for more information.

43 thoughts on “SharpKeys 2.0”

  1. I’ve already defined some key-mapping rules in the Registry. Will they interfere with this program, or vice versa?

  2. Actually, it should pick them up and show them in the main UI. If you mapped them on Scancode Map under HKCU. I think it’s CU. Might be HKLM. Should be fine to run either way: it won’t save setting until you click “save” and doesn’t do any remapping on it’s own… just a front end for the registry key.

  3. Key E0_2038 is unknown to program.

    ist german keyboard “Alt GR”


    I won’t post email on Public acessible webpage untill it not public seen.

    remove this for all, remeber spamers search web 4 emails.

  4. Thanks for nothing – doesnt work

    Get a “severe” error as “2.0 version of the NET framework must be already installed”.

    Machine freezes and I gotta reboot.

    Wont be using this site again

  5. @Devil: See the above about no product changes being made: just the UI changed and it now supports the newer Framework (so people don’t have to carry 1.1 just to use SharpKeys). The trouble with the E0 keys are that they are triple scan codes and SharpKeys doesn’t “officially” support them… they don’t play nicely when going into the registry…

    @Alan – Well, here’s the first question: do you even have the Framework installed? I hope so. It says so in the post, the FAQ, and at least three different places in the installation. In fact, the EXE version won’t even install without detecting the Framework; I don’t think the MSI version will either. I could ask a bunch of other questions to get you up and running but I consider the following:

    a) You’re acting like an ass – you downloaded a piece of software and are all pissed off because it doesnt work YET you won’t ask for technical support? Did you one return a car to a dealership because you ran outta gas?

    b) This cost you no money to try, so what exactly is getting so tweaked? The lack of technical support that you haven’t paid for? Your “call” is getting a reply within 30 minutes. Better than Dell, who charges money for CSR support.

    c) You said you won’t be using this site again – whatever that means, since it’s simply a blog – so why should I try to help you troubleshoot it? You’re actually saving me cash by reducing my bandwidth, so I should be thanking you!

  6. Randy, ignore “Alan”. He’s probably failing to get laid.

    And he’s dumb.

    Probably also ugly. Poor bastard.

  7. Sir!

    I just installed this SharpKeys and it works GREAT!

    Other than the trouble of having to download and install .NET Framework and fix my settings that it changed, your program has done EXACTLY what I had hoped.. cease that infernal CapsLock key from existence! It wasn’t quite as easy as it is on a Mac.. but in some ways I guess that deserves even more kudos for your accomplishment. Thanks for making it donationware only too.. I’m off to the tip jar right now and pitch in!

  8. Sweet, thanks :)

    FWIW, once your settings are set, you can always uninstall both SharpKeys and the .NET Framework… the settigns themselves are part of Windows and stay in the registry.

  9. great program !

    I am using the apple keyboard on windows XP .I found that there are some keys that failed to map , i sincerely hope that you can include them in your future upgrades so mac keyboard user can make sense of them :



    unknown : 0x0056


    marked :




    unknown : 0x0067






    unknown : 0x0059


    marked: = ( in the num pad)



    sepcial :*(euro)*


    marked : delete rectangle with a cross

    p.s. its still function but failed to re-map


    i wonder if there is any key for this function , it the ” minimize all ” function found in a logitech mouse . i found it a very useful funciton as it minimize all windows down to the start bar.

    thanks again for developing the software,

    keep it up !

  10. Well the values I can update in the list, but the Euro is tricky… because it’s a E0_45 I wonder if it’s a triple coded key, in which case there’s nothing much I can do with it… I can check into it. And the mouse button I know I can’t help with: different sub system. However, you might want to try AutoHotKey.

  11. Hi,

    I have .NET 2.0 installed (just checked). I have tried sharpKeys, but I get:

    CLR 80004005> the program will now terminate.

    Does it sound familiar?

    It might be my installation of .NET?

  12. Not a clue: it’s run OK on the machines I’ve tested it on… you might want to uninstall and reinstall the Framework. Of course, if that fails you can still use the 1.1 release which is based on the 1.1 .NET Framework…

  13. Works great –

    However, I wondered if I could remap CTRL-ALT-DEL to CTRL-ALT-ESC by remapping DEL to ESC (was trying it on my Sony thinking of how it might work on a new Intel Mac).

    Didn’t work – just locked me out after reboot! Fortunately, I was able to Remote Desktop in from another machine and revert.

    Do you know if anyone has been successful at remapping the SAS?

    Thanks, Scotty

  14. Interesting. And I have no idea why it wouldn’t work. Could be that Ctrl-Alt-Del don’t get passed into Windows, so Windows can’t handle the remapping of one of the three – I’ve never tried that, tho.

    Anyway, take a look at AutoHotKey – they do a more active remapping scheme…

  15. Randy,

    Is it feasible that a future release could assign copy and paste functions to a pair of keys?

  16. Thanks, Randy.

    I did a little more research, and I think that the problem happens before Windows really gets started. It appears that the login sequence is handled by a .dll called msgina, which listens for CTRL-ALT-DEL (or something else, like a smart card); it’s probably hard-coded. People can rewrite msgina, but it’s complicated.

    Apparently, the CTRL-ALT-DEL is “listened to” by msgina, but since SharpKeys makes Windows listen for CTRL-ALT-ESC, the sequence is never “heard.”

    If that’s the case, then SharpKeys is doing exactly what it’s supposed to do…

    Thanks again for the tip on AutoHotKey. I also noticed some other tips on this AM for other ways to give XP the three-fingered salute from a new Mac.

    –Cheers, Scotty

  17. @Steven: Nope, not with this remapping stuff. You can check out AutoHotKeys as they support macros and the like.

    @Scotty – No worries: glad you found a work around :)

  18. Thanks. Someone tried to sell the same program for £7, that was at one point, FREE on the cover of the magazine. £7!!! The bloody rip off merchants.

    Cheers randy, you saved EBAY!!!

  19. Thank you very much Randy

    This program is great.

    I will eradicate “insert” or perhaps change it to “caps lock” since these are the two keys that I press by mistake too often. I have also already changed the “Katakana/ Hirgana Key” on my Japanese keyboard to the same as the key to the right of it (effectively removing that function from my keyboard).

    Many of the keys on my Japanese keyboard are listed as unknown, but that is fine since one can type a key.


  20. Yeah: I only have ready access to an English/US keyboard, but the scan codes are still valid – the “Unknown” label is mostly just a placeholder :)

  21. Unknown: 0x0056 (00_56)

    It’s a second \ or | key on this coolermaster USB keyboard (model EAK-USI), between left-alt and space.

    I don’t know why they put it there, since there’s another \ key in the usual spot near enter, but I desperately want to remap it to left alt!

  22. Well, the trick with this one is whether or not it’s the “same” key. The most recent Microsoft keyboards have the regular backspace key but they have another one in the upper right corner. Just has an

  23. Works great for this Mac user to remap my PC keyboard (shared via KVM) so that I can keep the same keystrokes between machines. Thanks, Randy!

  24. Been trying to use this in vista as I loved it under XP. I’ve done my best to install the .net framwork- 1.1 or 2.0, but 1.1 gives an error, and 2.0 says its already installed (even if I try to install under compatablity mode).

    Regardless of the .net, the program gives me an error when I go to actually do the remapping. Everything seems to be working fine till then, I’ve posted the error as well. I apprecaite what you are doing, and at no charge even, but if you could tell me where I am going wrong on this youd make me a happy man.


    See the end of this message for details on invoking

    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************

    System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.

    at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)

    at Microsoft.Win32.RegistryKey.SetValue(String name, Object value, RegistryValueKind valueKind)

    at Microsoft.Win32.RegistryKey.SetValue(String name, Object value)

    at SharpKeys.Dialog_Main.SaveMappingsToRegistry()

    at SharpKeys.Dialog_Main.btnSave_Click(Object sender, EventArgs e)

    at System.Windows.Forms.Control.OnClick(EventArgs e)

    at System.Windows.Forms.Button.OnClick(EventArgs e)

    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

    at System.Windows.Forms.Control.WndProc(Message& m)

    at System.Windows.Forms.ButtonBase.WndProc(Message& m)

    at System.Windows.Forms.Button.WndProc(Message& m)

    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Loaded Assemblies **************


    Assembly Version:

    Win32 Version: 2.0.50727.88 (rtmLHS.050727-8800)

    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll



    Assembly Version:

    Win32 Version:

    CodeBase: file:///C:/Program%20Files/



    Assembly Version:

    Win32 Version: 2.0.50727.88 (rtmLHS.050727-8800)

    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/



    Assembly Version:

    Win32 Version: 2.0.50727.88 (rtmLHS.050727-8800)

    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/



    Assembly Version:

    Win32 Version: 2.0.50727.88 (rtmLHS.050727-8800)

    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/


    ************** JIT Debugging **************

    To enable just-in-time (JIT) debugging, the .config file for this

    application or computer (machine.config) must have the

    jitDebugging value set in the section.

    The application must also be compiled with debugging


    For example:

    When JIT debugging is enabled, any unhandled exception

    will be sent to the JIT debugger registered on the computer

    rather than be handled by this dialog box


  25. Hm. First question is which question of Vista are you using?

    Next problem is that of the Framework: VS2005 shipped with version 50727.42 – this is reporting versoin 50727.88. Should they be upwards compatible? Sure, but then again, I should have been at least 6″ taller than I am, so what we have is what we have.

    Having said that, I can offer a workaround. :) On your XP box, export this key from the registry:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

    In the resulting REG file, clean out everything that isn’t in that first section which includes the Scancode Map values. Bring that over to Vista and import it into your registry there and reboot. It should work…

    I know the remapping stuff is still in Vista as of the last CTP but it’s sound like the front end of SharpKeys is unhappy…

  26. hi, very nice program, have made a couple of changes and have worked, but am stuck on a little detail: i have an english layout keyboard but continuosly type in spanish, i was wondering if i could map the ñ letter to any kay so that i dont have to type Alt-0241 every time or switch to a spanish layout, thanx

  27. Not readily… you’d have to know what the Scancode is for the ñ key on a Spanish keyboard and remap an entire key to it… sorry!

  28. Andy, nice app…. Could you add AltGR (2038) into it next release though please, I used to use the IBM Thinkpad key remaper in XP, but it blows in Vista, and have got used to it being the windows key.

    Cheers, and thanks


  29. I would like to see AltGr key support as well.

    “What’s AltGr”? Replacement for RAlt on non-US keyboards in order to allow more letters (like accented ones etc.). In windows, AltGr is equivalent to CTRL+Alt

  30. This program is great. I use it all the time to remove useless keys (caps and insert) as well as switch the “m” and “n” keys on a friends computer (as a joke, haha)

  31. i have a problem where my f10 key is mapped to alt by default. does anyone else have that issue? and does anyone know how to find out which unknown value f10 is so i can try to remap?

  32. Hola quisiera cambiar la tecla de search y favorites a next y previus como haria eso porque no me deja realizarlo, gracias!

Comments are closed.