Я хотел поиграть с функцией автоматического переключения передач. То есть, если какая-либо из буквенно-цифровых клавиш нажата дольше, чем какой-либо таймер, автоматически применяется "сдвиг".

Я полагаю, что кто-то уже реализовал эту или очень похожую функциональность на autohotkey. Тем не менее, я новичок с autohotkey, и у меня проблемы с поиском соответствующих примеров. Может ли кто-нибудь указать мне на них или дать несколько советов о том, как начать?

1 ответ1

1
; create an array/object of the keys you want shift:
Keys := ["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"]

; create a hotkey once for each key in this object, using a For-Loop:
For each, key in Keys
    Hotkey, $%key%, Shift_Key ; the $ prefix forces the keyboard hook to be used
return

Shift_Key:
    ThisHotkey := StrReplace(A_ThisHotkey, "$") ; remove the $ prefix 
    KeyWait, %ThisHotkey%, T0.3 ; wait max. 0.3 seconds for the key to be released
    If (ErrorLevel) ; if the command timed out (long press, the key is still pressed after 0.3 seconds)
        SendInput, +%ThisHotkey% ; "shift" it
    else
        SendInput, %ThisHotkey%
    KeyWait, %ThisHotkey% ; don't repeat the action before the key is released
return

https://autohotkey.com/docs/Objects.htm

https://autohotkey.com/docs/commands/For.htm

https://autohotkey.com/docs/commands/Hotkey.htm

https://autohotkey.com/docs/commands/KeyWait.htm

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .