Как совместить три клавиши как горячую клавишу с Autohotkey?

14

Я хочу объединить CapsLock Alt kключи в одну горячую клавишу, такую ​​как эта:

CapsLock & !k:: Send !{Up}

Это не работает, потому что Autohotkey не позволяет сочетать более двух клавиш, кроме клавиш-модификаторов.

В поисках решения я обнаружил, что использование кодов сканирования в левой части может быть обходным путем, например:

SC035 & !k:: Send !{Up}

Я тоже протестировал это решение, но оно также не работает должным образом. В этом случае нажатие CapsLock+kвызывает горячую клавишу.

Мерт Нухоглу
источник
(В AutoHotkey Ctrl есть ^, Alt есть !. Вы можете уточнить, какой из них вы хотите.)
Bavi_H
Я исправил ошибку.
Мерт Нухоглу

Ответы:

13

Как насчет этого?

Capslock & k:: 
GetKeyState, state, Alt
if state = D
SendInput !{Up}
Return 
snitzr
источник
Спасибо. Это работает на самом деле. Но теперь есть небольшая задержка при использовании CapsLock в сочетании с ключом, таким как «CapsLock & a :: =». Эта задержка, вероятно, из-за функции GetKeyState, не так ли?
Мерт Нухоглу
Я проверил, но не смог воссоздать эту задержку. Скрипт должен быть автономным и не влиять на производительность других скриптов. Скрипты, в которых GetKeyState добавляет третью горячую клавишу (как у меня выше), не будет вести себя точно так же, как скрипты с обычными настройками горячих клавиш, и может препятствовать повторению скрипта так же быстро, как обычно. Надеюсь, это поможет.
snitzr
3
Я предпочитаю этот более краткий синтаксис и решил поделиться им с вами: если не GetKeyState ("Alt", "P") ... Изменить в соответствии с вашими потребностями. Приветствия.
Марио Авад