How do you map a solo press of a modifier key to its own function or mapping on Windows?

6

3

Today on hacker news there was a clever article on custom shortcut keys.

The author talks about a technique for remapping a modifier key such as CTRL to ESC if CTRL were pressed without a modifier. This is useful in vim because of how often you need to press ESC.

Another technique he describes is mapping the open parenthesis, ( to the left shift key, and ) to the right shift key.

If another key is pressed when shift is held down, the shift key behaves normally.

The author describes the software he uses on OSX, but is there a way to do this on Windows?

I've heard of AutoHotKey but it seems to only fire macros when simple keys are pressed, rather than the conditional state switch that this would require.

Conrad.Dean

Posted 2012-10-04T00:03:48.403

Reputation: 738

AFAIK AHK should allow you to check if a key is pressed without any modifier, then perform different actions based on the results of the check. – Karan – 2012-10-04T00:20:40.023

Answers

6

AutoHotKey can do that. You can definitely keep track of the key states, but there's another trick. To remap Ctrl pressed alone to Esc but keep the other Ctrl-based shortcuts, just add this in your default script:

Ctrl & AppsKey::Return
Ctrl::Send {Esc}

This will work fine for you unless you use Ctrl+AppsKey (the key that pops up the contextual menu), but this is highly unlikely. If so just change AppsKey to any key that you never use with Ctrl.

The trick is to make Ctrl a prefix by using it in front of & at least once, and then make the release of the key produce the keystroke you want.

m4573r

Posted 2012-10-04T00:03:48.403

Reputation: 5 051

Great trick! Saved me a lot of time, thanks so much! – Plynx – 2012-12-06T17:13:38.280