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

Пример сценария: в течение 3 секунд, когда клавиша PgDn должна удерживаться для активации (скажем) MsgBox, она не должна вызывать окно браузера и т.д. Чтобы принять ввод PgDn . То есть я не хочу, чтобы моя веб-страница прокручивалась вниз, пока я нажимаю клавишу PgDn .

Это мой код до сих пор.

~PgDn::
If PgDnIsPressed
return

PgDnIsPressed := true
SetTimer, WaitForRelease, 3000
return

~PgDn Up::
SetTimer, WaitForRelease, Off
PgDnIsPressed := false
return

WaitForRelease:
SetTimer, WaitForRelease, Off
msgbox Working
return 

Это работает, но не без прокрутки веб-страницы в любом случае.

РЕДАКТИРОВАТЬ: я также запустил следующий скрипт реестра, чтобы отключить действие ключей PgDn и PgUp :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,49,e0,00,00,51,e0,00,00,00,00

Но теперь кажется, что AHK тоже не будет принимать ключи PgDn и PgUp , даже если Windows не будет.

Идея состоит в том, чтобы позволить AHK получить информацию.

1 ответ1

0

Следующий код позволит вам сделать то, что вы описали:

hotkey, $pgDn, keyDelayer
hotkey, $pgUp, keyDelayer

keyDelayer:
    sleep 3000
    thisHotkey := regExReplace(a_thisHotkey, "[^0-9A-Za-z]")
    while getKeyState(thisHotkey, "p")
        send {%thisHotkey%}
return

Если PgDn или PgUp удерживаются менее трех секунд, ничего не происходит. Как только PgDn или PgUp удерживаются в течение трех секунд, ключ начинает повторно отправлять себя, пока не будет отпущен.

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