使用AutoHotKey临时禁用卡住的修饰键

时间:2019-02-03 22:21:55

标签: autohotkey

如果它们中的一个或多个似乎已经“卡住了”,我想暂时禁用所有修饰键-基本上,我需要与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脚本流的明显信息,但是我不确定是什么。

0 个答案:

没有答案