-
Star
(266)
You must be signed in to star a gist -
Fork
(51)
You must be signed in to fork a gist
-
-
Save sedm0784/4443120 to your computer and use it in GitHub Desktop.
| g_LastCtrlKeyDownTime := 0 | |
| g_AbortSendEsc := false | |
| g_ControlRepeatDetected := false | |
| *CapsLock:: | |
| if (g_ControlRepeatDetected) | |
| { | |
| return | |
| } | |
| send,{Ctrl down} | |
| g_LastCtrlKeyDownTime := A_TickCount | |
| g_AbortSendEsc := false | |
| g_ControlRepeatDetected := true | |
| return | |
| *CapsLock Up:: | |
| send,{Ctrl up} | |
| g_ControlRepeatDetected := false | |
| if (g_AbortSendEsc) | |
| { | |
| return | |
| } | |
| current_time := A_TickCount | |
| time_elapsed := current_time - g_LastCtrlKeyDownTime | |
| if (time_elapsed <= 250) | |
| { | |
| SendInput {Esc} | |
| } | |
| return | |
| ~*^a:: | |
| ~*^b:: | |
| ~*^c:: | |
| ~*^d:: | |
| ~*^e:: | |
| ~*^f:: | |
| ~*^g:: | |
| ~*^h:: | |
| ~*^i:: | |
| ~*^j:: | |
| ~*^k:: | |
| ~*^l:: | |
| ~*^m:: | |
| ~*^n:: | |
| ~*^o:: | |
| ~*^p:: | |
| ~*^q:: | |
| ~*^r:: | |
| ~*^s:: | |
| ~*^t:: | |
| ~*^u:: | |
| ~*^v:: | |
| ~*^w:: | |
| ~*^x:: | |
| ~*^y:: | |
| ~*^z:: | |
| ~*^1:: | |
| ~*^2:: | |
| ~*^3:: | |
| ~*^4:: | |
| ~*^5:: | |
| ~*^6:: | |
| ~*^7:: | |
| ~*^8:: | |
| ~*^9:: | |
| ~*^0:: | |
| ~*^Space:: | |
| ~*^Backspace:: | |
| ~*^Delete:: | |
| ~*^Insert:: | |
| ~*^Home:: | |
| ~*^End:: | |
| ~*^PgUp:: | |
| ~*^PgDn:: | |
| ~*^Tab:: | |
| ~*^Return:: | |
| ~*^,:: | |
| ~*^.:: | |
| ~*^/:: | |
| ~*^;:: | |
| ~*^':: | |
| ~*^[:: | |
| ~*^]:: | |
| ~*^\:: | |
| ~*^-:: | |
| ~*^=:: | |
| ~*^`:: | |
| ~*^F1:: | |
| ~*^F2:: | |
| ~*^F3:: | |
| ~*^F4:: | |
| ~*^F5:: | |
| ~*^F6:: | |
| ~*^F7:: | |
| ~*^F8:: | |
| ~*^F9:: | |
| ~*^F10:: | |
| ~*^F11:: | |
| ~*^F12:: | |
| g_AbortSendEsc := true | |
| return |
I did a similar approach to replace the key tab by caps lock without breaking any combination, adding double tab trigger to switch windows in metro context under Windows 8 but it's mandatory, can be commented out.
https://github.com/acccounttest/Sublime-Tab-for-SublimeText-Metro-and-Windows
Fenwar's version, posted above (May 2018) is beautiful code. I like it because it doesn't hook every key on the keyboard. Give it a look.
https://gist.github.com/Rccustevens/e972cb21869b81ba0b5400991de5cd85
Differences:
- Add a rule that maps LCtrl to CapsLock.
Caps to Ctrl+Esc...
If just pressed 1 time is gonna act as ESC
If used with another key is gonna act as CTRL
Allow Shift + Ctrl combinations
#IfWinNotActive,ahk_group WorkIn
*CapsLock::
Send {Blind}{Ctrl Down}
cDown := A_TickCount
Return
*CapsLock up::
If ((A_TickCount-cDown) < 150){
Send {Blind}{Ctrl Up}{Esc}
}
Else {
Send {Blind}{Ctrl Up}
}
Return
#IfWinNotActiveI make a script for autohotkey v2.
https://gist.github.com/ulic-youthlic/c8efd1d8cd5c59559403ded7e5b44833
Caps to Ctrl+Esc... If just pressed 1 time is gonna act as ESC If used with another key is gonna act as CTRL Allow Shift + Ctrl combinations
#IfWinNotActive,ahk_group WorkIn *CapsLock:: Send {Blind}{Ctrl Down} cDown := A_TickCount Return *CapsLock up:: If ((A_TickCount-cDown) < 150){ Send {Blind}{Ctrl Up}{Esc} } Else { Send {Blind}{Ctrl Up} } Return #IfWinNotActive
where do you paste this script?
Caps to Ctrl+Esc... If just pressed 1 time is gonna act as ESC If used with another key is gonna act as CTRL Allow Shift + Ctrl combinations大写为 Ctrl+Esc... 如果只按 1 次将充当 ESC 如果与另一个键一起使用将充当 CTRL 允许 Shift + Ctrl 组合
#IfWinNotActive,ahk_group WorkIn *CapsLock:: Send {Blind}{Ctrl Down} cDown := A_TickCount Return *CapsLock up:: If ((A_TickCount-cDown) < 150){ Send {Blind}{Ctrl Up}{Esc} } Else { Send {Blind}{Ctrl Up} } Return #IfWinNotActivewhere do you paste this script?你把这个脚本粘贴到哪里?
If you want to run this script, you should look into AutoHotKey. in this example, you need to install the correct version of the runtime, save the script as an .auk file, and run it using the runtime.
For authohotkey v2: https://gist.github.com/108anup/ecd891f21dc88ef107ff6c8ab0969700
Working wiki link at head (without needing to login) https://vim.fandom.com/wiki/Map_caps_lock_to_escape_in_Windows
Working wiki link at head (without needing to login) https://vim.fandom.com/wiki/Map_caps_lock_to_escape_in_Windows
Dual Key Remap is awesome.
For authohotkey v2: https://gist.github.com/108anup/ecd891f21dc88ef107ff6c8ab0969700
Thanks for the script but I found a bug that caused my Caps lock to get stuck on "ON". I added a way to toggle Caps Lock using RAlt. Here is the updated script :
#Requires AutoHotkey v2.0
#SingleInstance Force
OnExit(ExitHandler)
ExitHandler(*) {
Send "{Ctrl up}"
}
global g_LastCtrlKeyDownTime := 0
global g_AbortSendEsc := false
global g_CtrlIsDown := false
*CapsLock:: {
global g_LastCtrlKeyDownTime
global g_AbortSendEsc
global g_CtrlIsDown
if (g_CtrlIsDown)
return
g_CtrlIsDown := true
g_AbortSendEsc := false
g_LastCtrlKeyDownTime := A_TickCount
Send "{Ctrl down}"
}
*CapsLock Up:: {
global g_LastCtrlKeyDownTime
global g_AbortSendEsc
global g_CtrlIsDown
if (!g_CtrlIsDown)
return
Send "{Ctrl up}"
g_CtrlIsDown := false
elapsed := A_TickCount - g_LastCtrlKeyDownTime
if (!g_AbortSendEsc && elapsed <= 500)
Send "{Esc}"
}
AbortEsc() {
global g_AbortSendEsc := true
}
~*^a:: AbortEsc()
~*^b:: AbortEsc()
~*^c:: AbortEsc()
~*^d:: AbortEsc()
~*^e:: AbortEsc()
~*^f:: AbortEsc()
~*^g:: AbortEsc()
~*^h:: AbortEsc()
~*^i:: AbortEsc()
~*^j:: AbortEsc()
~*^k:: AbortEsc()
~*^l:: AbortEsc()
~*^m:: AbortEsc()
~*^n:: AbortEsc()
~*^o:: AbortEsc()
~*^p:: AbortEsc()
~*^q:: AbortEsc()
~*^r:: AbortEsc()
~*^s:: AbortEsc()
~*^t:: AbortEsc()
~*^u:: AbortEsc()
~*^v:: AbortEsc()
~*^w:: AbortEsc()
~*^x:: AbortEsc()
~*^y:: AbortEsc()
~*^z:: AbortEsc()
~*^1:: AbortEsc()
~*^2:: AbortEsc()
~*^3:: AbortEsc()
~*^4:: AbortEsc()
~*^5:: AbortEsc()
~*^6:: AbortEsc()
~*^7:: AbortEsc()
~*^8:: AbortEsc()
~*^9:: AbortEsc()
~*^0:: AbortEsc()
~*^Space:: AbortEsc()
~*^Backspace:: AbortEsc()
~*^Delete:: AbortEsc()
~*^Insert:: AbortEsc()
~*^Home:: AbortEsc()
~*^End:: AbortEsc()
~*^PgUp:: AbortEsc()
~*^PgDn:: AbortEsc()
~*^Tab:: AbortEsc()
~*^Enter:: AbortEsc()
~*^,:: AbortEsc()
~*^.:: AbortEsc()
~*^/:: AbortEsc()
~*^;:: AbortEsc()
~*^':: AbortEsc()
~*^[:: AbortEsc()
~*^]:: AbortEsc()
~*^\:: AbortEsc()
~*^-:: AbortEsc()
~*^=:: AbortEsc()
~*^`:: AbortEsc()
~*^F1:: AbortEsc()
~*^F2:: AbortEsc()
~*^F3:: AbortEsc()
~*^F4:: AbortEsc()
~*^F5:: AbortEsc()
~*^F6:: AbortEsc()
~*^F7:: AbortEsc()
~*^F8:: AbortEsc()
~*^F9:: AbortEsc()
~*^F10:: AbortEsc()
~*^F11:: AbortEsc()
~*^F12:: AbortEsc()
; ===============================
; RIGHT ALT → CAPS LOCK OFF
; ===============================
*RAlt:: {
SetCapsLockState "Off"
}
; ===============================
; MANUAL RECOVERY
; ===============================
F12:: {
Send "{Ctrl up}"
global g_CtrlIsDown := false
global g_AbortSendEsc := false
}
thank you for this!