Прослушивание клавиши «WIN»
Насколько я понимаю, единственная причина, по которой вы не можете видеть какие-либо события, исходящие от клавиши мыши «WIN», заключается в том, что вы смотрите только на события, связанные с мышью, в то время как там клавиша «WIN» выдает связанное с клавиатурой «Right». -Win ”нажатие клавиши. По сути, эта часть уже обсуждалась в комментариях - переназначение «Right-Win» прекрасно работает.
Неоднократно отправленные события RWin
Я могу подтвердить, что он отправляет события повторно. AFAIK, каждая клавиша клавиатуры работает так - например, «F2». Насколько я могу судить, по крайней мере, следующий трюк AHK показывает одинаково и для «F2», и для «RWin».
#InstallKeybdHook #InstallMouseHook 1::KeyHistory
Преимущество клавиши «WIN» в том, что она механически способна производить одиночные нажатия клавиш. В отличие от наклона колес - довольно сложно получить от них «один щелчок» - даже мой самый короткий щелчок обычно рассматривается как 3-5 отдельных нажатий клавиш.
Прослушивание клавиш наклона руля
«Microsoft Mouse and Keyboard center» (версия 2.7.133.0), похоже, меняет поведение мыши - AHK больше не может слышать события WheelRight / WheelLeft. Самый простой способ исправить это - удалить инструмент Microsoft. Хотя, согласно моим экспериментам, это не влияет на клавишу «WIN».
Тем не менее, все еще должно быть возможно переназначить наклоны колеса, даже не удаляя его. Используя примеры 1 и 2 AHKHID, я смог поймать «данные» 1FFDFF и 1F0300 по наклонам правого и левого колес, используя UsagePage 12, Usage 1 с установленным «Центром мыши и клавиатуры Microsoft» и ничего после того, как я его удалил ,
Неоднократно отправленные события наклона колеса
Лично я закончил тем, что просто ввел задержку, как предложил Боб . Похоже, что самый простой код, основанный на коде в этом вопросе, работает нормально в этом случае (хотя это может быть не оптимально - я не эксперт в AHK). Следующий скрипт AHK позволяет мне переназначить Wheel-tilt-Left на «Ctrl + Alt + leftArrow» и Wheel-tilt-Right на «Ctrl + Alt + rightArrow». Я использую эти горячие клавиши в VirtuaWin для переключения на предыдущий / следующий виртуальный рабочий стол (задача, в которой «один ответ на клик» очень важен), и она отлично работает. (Тем не менее, если я нажимаю и удерживаю «кнопку наклона», я получаю ~ 5 событий в секунду).
WheelRight:: if( not GetKeyState("WheelRight") ) sleep 200 Send, Send, Send, Send, Send, return WheelLeft:: if( not GetKeyState("WheelLeft") ) sleep 200 Send, Send, Send, Send, Send, return RWin:: Send, return
RWin работает нормально, даже без этого трюка.