Использование AutoHotKey для временного отключения застрявших клавиш-модификаторов - PullRequest
0 голосов
/ 04 февраля 2019

Я хочу временно отключить все клавиши-модификаторы, если кажется, что одна или несколько из них «зависли» - в основном мне нужна противоположность Windows «StickyKeys».

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

Мне просто нужно несколько секунд, чтобы поспать и отключить систему, поскольку это обычно приводит к тому, что ввод возвращается в порядок- к сожалению, застрявшие клавиши-модификаторы мешают нормальному поведению кнопки сна компьютера.

Сначала я пытаюсь поработать с клавишей ctrl, просто чтобы концепция заработала, а потом протестировать другие модификаторы.

TimerVar := 0
CtrlIsStuck := False

Loop {
CtrlKeyPhysicallyDown := GetKeyState("Ctrl", "P")
If CtrlKeyPhysicallyDown
TimerVar++
Else
TimerVar := 0
If TimerVar > 1 ; TODO: make sane before deploy
{
CtrlIsStuck := True
Break
}

Sleep, 500 ; TODO: make sane before deploy
}

#If CtrlIsStuck

ToolTip, Stuck keys detected; jamming for 15 seconds. Use Sleep button now.

SetTimer, DoReload, 15100

Hotkey, Ctrl, DoNothing
Send, {Ctrl Up}

Sleep 15000

DoReload:
Reload

DoNothing:
Return

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

Логика «проверьте, удержано ли» работает, но как только она проходит эту строку #If, все начинает вести себя так, что после прочтения руководства некоторое времяЯ до сих пор не понимаю.В то время как он определенно выполняется, оператор Hotkey, кажется, не делает ничего полезного, и строка SetTimer эффективно ведет себя избыточно;Я подозреваю, что упускаю что-то очевидное из потока сценариев AutoHotKey, но я не уверен, что.

...