Повторное сопоставление Alt+Key для того же ключа не работает?
Вот моя текущая клавиатура, Logitech K270:
Я хочу переопределить Browser_Home следующим образом:
- Browser_Home >>> Media_Next
- ALT + Browser_Home >>> Browser_Home
В то время как первый переназначение работает, второй нет, и ALT + Browser_Home приводит к отправке Media_Next. Вот соответствующая часть моего сценария:
Browser_Home::Send {Media_Next}
!Browser_Home::Send {Browser_Home} ; this one is ignored
Я не знаю, связано ли это с Logitech, реализацией AHK или с логической ошибкой в моем скрипте AHK (вероятно).
2 ответа
*Browser_Home::
GetKeyState, OutputVar, alt , P
if(OutputVar = "D")
{
;~ MsgBox, alt down %OutputVar%
Send {Browser_Home}
sleep, 250
}
else if(OutputVar = "U")
{
Send {Media_Next}
sleep, 250
}
return
*Browser_Home up::
sleep, 50
return
Я надеюсь, что это поможет (раз до вас) или
Browser_Home::Send, {Media_Next}
Alt & Browser_Home::send, {Browser_Home}
Вы пробовали комбинированный подход горячих клавиш?
; $ = Force keyboard hook such that Send command won't trigger itself
; * = Prefix to allow firing with any other hotkey combination as long as that key is pressed
$*Browser_Home::
If GetKeyState("Alt", "P") ; See if user is holding the Alt key down
Send {Browser_Home}
Else
Send {Media_Next}
Return
Или в сочетании с использованием троичного оператора:
$Browser_Home::Send, % GetKeyState("Alt", "P") ? "{Browser_Home}" : "{Media_Next}"
Я не знаю, работает ли это на самом деле или нет (то есть не проверено), просто что-то попробовать.
Иногда проще отладить, когда что-то идет не так, когда у вас есть комбинированная горячая клавиша, добавив MsgBox
операторы в различных тестовых примерах, чтобы увидеть, какие из них выполняются или нет, а затем, если они выполняются (например, для конкретного оператора send), вы можете просмотреть журнал нажатий клавиш через значок в трее и посмотреть, что на самом деле получил или, возможно, проигнорировал / заблокировал из-за синтаксиса горячих клавиш или чего-то еще (если он настроен непреднамеренно так, что AutoHotkey блокирует то, что вы хотели бы отправить)