
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% |
; Functions for holding and repeating keys |
||||
|
; |
||||
; Install hooks to make sure script can get physical state of keys instead of logical state. |
|
||||
#InstallKeybdHook |
Hold(Primary, Secondary) { |
||||
#InstallMouseHook |
Send {%Primary% down} |
||||
|
if ( Secondary.Length() != 0 ) { |
||||
; Settings |
ThisLoop := Func("HoldLoop").bind(Primary,Secondary) |
||||
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. |
SetTimer, %ThisLoop%, 50 |
||||
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 |
HoldLoop(Primary, Secondary) { |
||||
|
if GetKeyState(Primary,"P") { |
||||
; |
SetTimer, , Delete |
||||
; Function definitions |
} |
||||
; |
for index,key in Secondary { |
||||
|
if GetKeyState(key,"P") { |
||||
Hold(Primary, Secondary) { |
Send {%Primary% up} |
||||
Send {%Primary% down} |
SetTimer, , Delete |
||||
if ( Secondary.Length() != 0 ) { |
} |
||||
ThisLoop := Func("HoldLoop").bind(Primary,Secondary) |
} |
||||
SetTimer, %ThisLoop%, 50 |
} |
||||
} |
|
||||
} |
Repeat(Primary, Secondary) { |
||||
|
Send {%Primary% up} |
||||
HoldLoop(Primary, Secondary) { |
Sleep 100 |
||||
if GetKeyState(Primary,"P") { |
RepeatVar := 0 |
||||
SetTimer, , Delete |
Loop { |
||||
} |
if GetKeyState(Primary,"P") { |
||||
for index,key in Secondary { |
return |
||||
if GetKeyState(key,"P") { |
} |
||||
Send {%Primary% up} |
for index,key in Secondary { |
||||
SetTimer, , Delete |
if GetKeyState(key,"P") { |
||||
} |
return |
||||
} |
} |
||||
} |
} |
||||
|
if (RepeatVar == 2) { |
||||
Repeat(Primary, Secondary) { |
SendEvent, {%Primary%} |
||||
Send {%Primary% up} |
RepeatVar := 1 |
||||
Sleep 100 |
} else { |
||||
RepeatVar := 0 |
RepeatVar++ |
||||
Loop { |
} |
||||
if GetKeyState(Primary,"P") { |
Sleep 50 |
||||
return |
} |
||||
} |
} |
||||
for index,key in Secondary { |
|
||||
if GetKeyState(key,"P") { |
; Sets key to hold if single tap, or repeat if double tap |
||||
return |
HoldOrRepeat(Primary, Secondary) { |
||||
} |
Send {%Primary% down} |
||||
} |
KeyWait, %Primary%, D, T0.2 |
||||
if (RepeatVar == 2) { |
if (ErrorLevel = 0) { |
||||
SendEvent, {%Primary%} |
Repeat(Primary,Secondary) |
||||
RepeatVar := 1 |
} else { |
||||
} else { |
Hold(Primary,Secondary) |
||||
RepeatVar++ |
} |
||||
} |
|
||||
Sleep 50 |
|
||||
} |
|
||||
} |
} |
@ -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