
3 changed files with 83 additions and 77 deletions
@ -1,60 +1,57 @@ |
|||
; Set default location and name convention for compiled scripts to use |
|||
;@Ahk2Exe-ExeName %A_MyDocuments%\AutoHotkey\bin\AHK-%A_ScriptName% |
|||
|
|||
; Install hooks to make sure script can get physical state of keys instead of logical state. |
|||
#InstallKeybdHook |
|||
#InstallMouseHook |
|||
|
|||
; Settings |
|||
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. |
|||
SendMode Input ; Recommended for new scripts due to its superior speed and reliability. |
|||
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. |
|||
#UseHook ; All hotkeys are implemented through keyboard hook to avoid script activating itself. |
|||
#MenuMaskKey vkFF |
|||
|
|||
; |
|||
; Function definitions |
|||
; |
|||
|
|||
Hold(Primary, Secondary) { |
|||
Send {%Primary% down} |
|||
if ( Secondary.Length() != 0 ) { |
|||
ThisLoop := Func("HoldLoop").bind(Primary,Secondary) |
|||
SetTimer, %ThisLoop%, 50 |
|||
} |
|||
} |
|||
|
|||
HoldLoop(Primary, Secondary) { |
|||
if GetKeyState(Primary,"P") { |
|||
SetTimer, , Delete |
|||
} |
|||
for index,key in Secondary { |
|||
if GetKeyState(key,"P") { |
|||
Send {%Primary% up} |
|||
SetTimer, , Delete |
|||
} |
|||
} |
|||
} |
|||
|
|||
Repeat(Primary, Secondary) { |
|||
Send {%Primary% up} |
|||
Sleep 100 |
|||
RepeatVar := 0 |
|||
Loop { |
|||
if GetKeyState(Primary,"P") { |
|||
return |
|||
} |
|||
for index,key in Secondary { |
|||
if GetKeyState(key,"P") { |
|||
return |
|||
} |
|||
} |
|||
if (RepeatVar == 2) { |
|||
SendEvent, {%Primary%} |
|||
RepeatVar := 1 |
|||
} else { |
|||
RepeatVar++ |
|||
} |
|||
Sleep 50 |
|||
} |
|||
; |
|||
; Functions for holding and repeating keys |
|||
; |
|||
|
|||
Hold(Primary, Secondary) { |
|||
Send {%Primary% down} |
|||
if ( Secondary.Length() != 0 ) { |
|||
ThisLoop := Func("HoldLoop").bind(Primary,Secondary) |
|||
SetTimer, %ThisLoop%, 50 |
|||
} |
|||
} |
|||
|
|||
HoldLoop(Primary, Secondary) { |
|||
if GetKeyState(Primary,"P") { |
|||
SetTimer, , Delete |
|||
} |
|||
for index,key in Secondary { |
|||
if GetKeyState(key,"P") { |
|||
Send {%Primary% up} |
|||
SetTimer, , Delete |
|||
} |
|||
} |
|||
} |
|||
|
|||
Repeat(Primary, Secondary) { |
|||
Send {%Primary% up} |
|||
Sleep 100 |
|||
RepeatVar := 0 |
|||
Loop { |
|||
if GetKeyState(Primary,"P") { |
|||
return |
|||
} |
|||
for index,key in Secondary { |
|||
if GetKeyState(key,"P") { |
|||
return |
|||
} |
|||
} |
|||
if (RepeatVar == 2) { |
|||
SendEvent, {%Primary%} |
|||
RepeatVar := 1 |
|||
} else { |
|||
RepeatVar++ |
|||
} |
|||
Sleep 50 |
|||
} |
|||
} |
|||
|
|||
; Sets key to hold if single tap, or repeat if double tap |
|||
HoldOrRepeat(Primary, Secondary) { |
|||
Send {%Primary% down} |
|||
KeyWait, %Primary%, D, T0.2 |
|||
if (ErrorLevel = 0) { |
|||
Repeat(Primary,Secondary) |
|||
} else { |
|||
Hold(Primary,Secondary) |
|||
} |
|||
} |
@ -0,0 +1,22 @@ |
|||
; |
|||
; General Settings |
|||
; |
|||
|
|||
; Set default location and name convention for compiled scripts to use |
|||
;@Ahk2Exe-ExeName %A_MyDocuments%\AutoHotkey\bin\AHK-%A_ScriptName% |
|||
|
|||
; Install hooks to make sure script can get physical state of keys instead of logical state. |
|||
#InstallKeybdHook |
|||
#InstallMouseHook |
|||
|
|||
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. |
|||
|
|||
SendMode Input ; Recommended for new scripts due to its superior speed and reliability. |
|||
|
|||
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. |
|||
|
|||
; All hotkeys are implemented through keyboard hook to avoid script activating itself. |
|||
#UseHook |
|||
|
|||
; MenuMaskKey is set to a virtual key that is defined by Windows as doing nothing |
|||
#MenuMaskKey vkFF |
Loading…
Reference in new issue