Before trying the following, you should run <code>regedit.exe</code> and inspect the relevant registry keys, and export them for a backup. Make sure you know how to remove the registry changes if they cause trouble.

Before trying the following, you should run <code>regedit.exe</code> and inspect the relevant registry keys, and export them for a backup. Make sure you know how to remove the registry changes if they cause trouble.

−

For the current user: To map CapsLock to Escape, and ScrollLock to CapsLock, create file (for example) <code>keys.reg</code> containing:

+

For the current user (doesn't work in Windows 7 or 8): To map CapsLock to Escape, and ScrollLock to CapsLock, create file (for example) <code>keys.reg</code> containing:

<pre>

<pre>

REGEDIT4

REGEDIT4

Line 31:

Line 31:

Use Explorer to double-click the file to import the value to the registry. To apply the changes, log off and log on. Then, pressing key Esc will generate Escape as normal, pressing CapsLock will also generate Escape, and pressing ScrollLock will generate CapsLock (and you cannot generate ScrollLock).

Use Explorer to double-click the file to import the value to the registry. To apply the changes, log off and log on. Then, pressing key Esc will generate Escape as normal, pressing CapsLock will also generate Escape, and pressing ScrollLock will generate CapsLock (and you cannot generate ScrollLock).

−

Alternatively, for the change to apply to all users, run the following reg file and reboot:

+

Alternatively, for the change to apply to all users, run the following reg file and reboot (this key still works in Windows 7 and 8):

<pre>

<pre>

REGEDIT4

REGEDIT4

Line 61:

Line 61:

===KeyTweak===

===KeyTweak===

−

This tool is a free keyboard remapper for Windows NT/2000/XP/Vista/Win 7. It automates the registry trick above (it makes use of Microsoft's Scancode Map registry key) to remap your keyboard. This app requires you to reboot before changes take affect.

+

This tool is a free keyboard remapper for Windows NT/2000/XP/Vista/Win 7. It automates the registry trick above (it makes use of Microsoft's Scancode Map registry key) to remap your keyboard. This app requires you to reboot before changes take effect.

−

http://webpages.charter.net/krumsick/

+

http://webpages.charter.net/krumsick/ (dead link)

+

+

http://www.softpedia.com/get/System/OS-Enhancements/KeyTweak.shtml

===SharpKeys===

===SharpKeys===

Line 219:

Line 219:

CapsLock & [::Send ^[

CapsLock & [::Send ^[

CapsLock & ]::Send ^]

CapsLock & ]::Send ^]

+

</pre>

+

+

The following script follows the same idea as the above while helping its shortcomings, and is more concise. It works by checking the last pressed key when the Caps Lock key is released. Hope it helps :)

+

<pre>

+

; Author: fwompner gmail com

+

#InstallKeybdHook

+

SetCapsLockState, alwaysoff

+

Capslock::

+

Send {LControl Down}

+

KeyWait, CapsLock

+

Send {LControl Up}

+

if ( A_PriorKey = "CapsLock" )

+

{

+

Send {Esc}

+

}

+

return

+

</pre>

+

+

Here's an additional solution (which just sends Esc key when Ctrl is pressed alone, but does not modify Caps Lock in any way)

What is the "Explanations" section trying to explain? I didn't look in detail (this is a big article) but it doesn't seem to apply directly to the methods listed above. --[[User:Fritzophrenic|Fritzophrenic]] ([[User talk:Fritzophrenic|talk]]) 19:33, December 15, 2014 (UTC)

+

:It's explaining what the string of bytes in the registry represent in the "Scancode Map" value in some of the ideas. It applies to the first part of the tip. [[User:JohnBeckett|JohnBeckett]] ([[User talk:JohnBeckett|talk]]) 08:40, December 16, 2014 (UTC)

Latest revision as of 12:41, January 4, 2015

This tip shows some methods for mapping keys within the operating system to make life easier in Vim. In particular, it can be convenient to use the CapsLock key for Escape so you don't have to reach for the Esc key. It is also useful to use the CapsLock key for Ctrl and press Ctrl-[ instead of Esc.

Contents

WARNING: Editing your Windows registry may cause unintended side effects that render your system inoperable. Although this tip has worked in the past for some people, there is no guarantee that it will work for you. Use with caution, and at your own risk.

Before trying the following, you should run regedit.exe and inspect the relevant registry keys, and export them for a backup. Make sure you know how to remove the registry changes if they cause trouble.

For the current user (doesn't work in Windows 7 or 8): To map CapsLock to Escape, and ScrollLock to CapsLock, create file (for example) keys.reg containing:

Use Explorer to double-click the file to import the value to the registry. To apply the changes, log off and log on. Then, pressing key Esc will generate Escape as normal, pressing CapsLock will also generate Escape, and pressing ScrollLock will generate CapsLock (and you cannot generate ScrollLock).

Alternatively, for the change to apply to all users, run the following reg file and reboot (this key still works in Windows 7 and 8):

To restore the keyboard, run regedit.exe and delete the "Scancode Map" entry from HKEY_CURRENT_USER (and log off/on), or from HKEY_LOCAL_MACHINE (and reboot), depending on which section of the registry you changed.

Particularly while touch typing, it can be useful to remap the keyboard so that pressing CapsLock is the same as pressing Ctrl. This change makes it easy to press Ctrl-[ as an alternative to pressing Esc.

The following applies to the current user (log off and log on to apply). Alternatively, an administrator can apply the change to all users (reboot to apply) by replacing [HKEY_CURRENT_USER\Keyboard Layout] with [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

As an alternative to changing the registry, there are various utilities that can remap keys. Many of these can be run by a non-administrator, and can apply mappings only when wanted (for example, when running Vim). They do not require log off/on or reboot to apply changes, unless specified otherwise.

This tool is a free keyboard remapper for Windows NT/2000/XP/Vista/Win 7. It automates the registry trick above (it makes use of Microsoft's Scancode Map registry key) to remap your keyboard. This app requires you to reboot before changes take effect.

This tool is a free keyboard mapper, but requires rebooting the machine for the key mapping to take effect. The interface is fairly simple to use, and appears to work on Windows NT/2003 server/2000/XP/Vista/Win 7. By automating the keyboard mapping, this reduces the risk of the user accidentally changing something in the registry.

AutoHotkey is an open source project to automate sending keys and mouse clicks. It can remap keys, and provides a powerful scripting language, and does not require administrator rights. One of the features of this program is that the key mappings are not permanent, but only last as long as the program is running.

To make Capslock work like Escape, add the following to the default script:

Capslock::Esc

The following AutoHotkey script will turn off CapsLock and generate Escape when Esc is pressed:

Esc::
SetCapsLockState, off
Suspend On
Send, {ESC}
Suspend Off
return

The following AutoHotkey script maps CapsLock to Ctrl in PuTTY. In other applications, CapsLock works normally.

The following AutoHotKey script tries to emulate an idea I read about from Steve Losh where he overloaded his "Caps Lock" key to do the following: when pressing it and another key the "Caps Lock" key is equivalent to a "Control", but when just pressing and releasing the "Caps Lock" quickly it sends an "Escape". I believe that this is the best of the both worlds! In his case, since he uses a Macbook, he was using the software "KeyRemap4Macbook", but the equivalent doesn't exist for Windows (that I know of). However, AutoHotkey can emulate this functionality.

The following script follows the same idea as the above while helping its shortcomings, and is more concise. It works by checking the last pressed key when the Caps Lock key is released. Hope it helps :)

HotKeyz (freeware) is useful for assigning keyboard shortcuts to run frequently used applications using the <Win> key. It also allows CapsLock to be remapped to any key sequence, or to run an application.

The only disadvantage compared to the registry method is that the status of CapsLock is still set and is checked by applications, so if you press it letting the status LED of the keyboard turn on and then start an application, for example Notepad, you will start typing in uppercase and can't change it anymore. You have then to exit the application, turn the CapsLock status off and re-open the program. This is still easier than rebooting.

What is the "Explanations" section trying to explain? I didn't look in detail (this is a big article) but it doesn't seem to apply directly to the methods listed above. --Fritzophrenic (talk) 19:33, December 15, 2014 (UTC)

It's explaining what the string of bytes in the registry represent in the "Scancode Map" value in some of the ideas. It applies to the first part of the tip. JohnBeckett (talk) 08:40, December 16, 2014 (UTC)