Add autohotkey Caps rebind
- Add an autohotkey keybind for caps lock. - Caps alone is Esc, Caps with another key in a CTRL modifiermaster
parent
859f93800a
commit
98beb00ec2
@ -0,0 +1,7 @@
|
||||
Autohotkey is the way to rebind keys, and set macros in Windows.
|
||||
|
||||
To make your scripts work on Windows load add them to your startup directory.
|
||||
|
||||
Press `Windows + R`
|
||||
Type `shell:startup` and hit `Enter`
|
||||
Drop your scripts into there
|
||||
@ -0,0 +1,58 @@
|
||||
; Caps press is Escape
|
||||
; Caps held with another key is CTRL
|
||||
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
|
||||
; #Warn ; Enable warnings to assist with detecting common errors.
|
||||
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
|
||||
;SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
|
||||
|
||||
SetCapsLockState Off
|
||||
state:=false
|
||||
Esc::
|
||||
state:= not state
|
||||
if (state) {
|
||||
SetCapsLockState On
|
||||
} else {
|
||||
SetCapsLockState Off
|
||||
}
|
||||
Return
|
||||
|
||||
*CapsLock::
|
||||
Send {LControl down}
|
||||
Return
|
||||
*CapsLock up::
|
||||
Send {LControl Up}
|
||||
if (A_PriorKey=="CapsLock"){
|
||||
if (A_TimeSincePriorHotkey < 1000)
|
||||
Suspend On
|
||||
Send, {Esc}
|
||||
Suspend Off
|
||||
}
|
||||
Return
|
||||
; The next part is only relevant to users of Virtual Box, which interacts weirdly with AutoHotkey. The code below resets ctrl and caps lock when a Virtual Box window is unfocused.
|
||||
InVB()
|
||||
{
|
||||
return WinActive("ahk_exe VirtualBox.exe")
|
||||
}
|
||||
in_vb:=InVB()
|
||||
was_in_vb:=in_vb
|
||||
|
||||
Gui +LastFound
|
||||
hWnd := WinExist()
|
||||
DllCall( "RegisterShellHookWindow", UInt,Hwnd )
|
||||
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
|
||||
OnMessage( MsgNum, "ShellMessage" )
|
||||
|
||||
ShellMessage( wParam,lParam )
|
||||
{
|
||||
global in_vb
|
||||
global was_in_vb
|
||||
was_in_vb:=in_vb
|
||||
in_vb:=InVB()
|
||||
if (was_in_vb and not in_vb)
|
||||
{
|
||||
Suspend On
|
||||
Send {LControl Up}
|
||||
SetCapsLockState Off
|
||||
Suspend Off
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue