Я пролил немного воды на клавиатуру, и теперь периодически, когда я нажимаю на нее, периодически нажимается клавиша со стрелкой вправо (например, PDF-файлы переходят на одну страницу вперед, YouTube пропускает 5 секунд и т.д.). Я использовал онлайн-кейлоггер (http://unixpapa.com/js/testkey.html), чтобы убедиться, что это клавиша со стрелкой вправо (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 ответ1

0

Я второе предложение фен (осторожно). Вы также можете попробовать положить его в большой мешок риса на ночь, чтобы удалить влагу.

Кнопка возврата является {Enter} так как в одном из следующих ниже. В противном случае return означает интерпретацию возврата из подпрограммы, а не клавиши ввода.

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 в качестве регистратора ключей, который сообщит вам обо всех нажатиях клавиш, включая те, которые он может игнорировать, и порядке их обработки. Откройте запущенную программу с иконки в трее и выберите View> Key History.

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