使用 autohotkey 禁用有故障的右箭头键

使用 autohotkey 禁用有故障的右箭头键

我的键盘被水弄脏了,现在有时不用按右箭头键就会激活(例如 PDF 会向前跳一页,YouTube 会跳过 5 秒等)。我使用了在线键盘记录器(http://unixpapa.com/js/testkey.html) 来验证它是否是具有快速 keydown 和 keyup 信号的右箭头键 (keyCode=39)。因此,我尝试使用 Autohotkey 禁用它,如下所示:

Right::return

(下列的此解决方案) 但无济于事。理想情况下,我希望只有当按下时间超过 0.5 秒时,右箭头才会被注册,但在最坏的情况下,我接受完全关闭它(然后我可以重新映射Shift+Left::Right

任何帮助深表感谢!

编辑:目前,我的脚本如下所示:

    #NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
    ; #Warn  ; Enable warnings to assist with detecting common errors.
    SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
    SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

    SC063::Pause
    +BS::Del
    ^BS::run, taskmgr
    Right::return

答案1

我同意使用吹风机的建议(小心一点)。你也可以尝试将其放入一大袋米中过夜,以除去水分。

回报按钮{Enter},如下所示。否则,Return 将被解释为从子程序返回,而不是 Enter 键。

Right::{Enter}
Right::Send {Enter}
Right::SendInput {Enter}

Send语句不是必需的,但如果您需要进行特殊组合,它会派上用场。

为了检查时间,您可以监控按键的上下移动以确定时间差,然后仅当时间大于设定值(500 毫秒 = 半秒)时才发送。

Right::                      
    timedown := A_TickCount
    ; no tilde on hotkey definition and no SendInput {Right} here
    ; means the keystroke down will get discarded
return

Right Up::
    timeUp := A_TickCount

    ; interval between down and up has to be half second or more, otherwise ignore
    if ((timeUp - timeDown) >= 500)     
        SendInput {Right}
return

显然,您可以简化上述内容并摆脱 timeUp,只是为了清楚起见列出......

Right Up::
    if ((A_TickCount - timeDown) >= 500)     
        SendInput {Right}
return

要完全重新分配:

Right::return        ; ignores all right button presses by doing nothing and returning
+Left::Right         ; send right if Shift+Left is detected

或者...

Right::return        ; ignores all right button presses by doing nothing and returning
 +Right::Right        ; send right if Shift+Right is detected

此外,如果您仍然遇到问题,您还可以使用 AutoHotkey 作为键盘记录器,它会告诉您所有击键,包括它可能忽略的击键以及它们的处理顺序。从托盘图标打开正在运行的程序,然后选择查看 > 键盘历史记录。

相关内容