В: Как я могу проверить, что моя клавиатура способна обнаруживать одновременные нажатия клавиш?
A: Вы можете использовать KeyCodes для мониторинга того, что Windows видит при нажатии клавиш клавиатуры. На картинке ниже три клавиши нажаты одновременно. OnKeyDown
означает, что он в данный момент нажат, и OnKeyUp
срабатывает при отпускании кнопки.
Q: Как я могу переназначить комбинацию, чтобы она могла использоваться таким приложением, как Emacs?
Одним из возможных способов является использование AutoHotKey. Я рекомендую переносную версию AutoHotKey, чтобы избежать установки дополнительного программного обеспечения
В примере показано, как переназначить ключ A на ключ B
A::SendInput {B}
Также возможно добавить модификаторы, такие как Win(#), Alt(!), Ctrl(^) или Shift(+). Прочитайте раздел руководства AHK HotKeys для получения дополнительной информации
+!A::SendInput {B}
Наша главная проблема заключается в том, что AHK не может связывать более одного базового ключа. Базовые клавиши - это все клавиши клавиатуры, кроме клавиш-модификаторов.
К счастью, есть хитрость. Мы используем S только для запуска небольшого макроса, где мы затем проверяем, нажата ли F. Если да, мы отправляем нашу новую комбинацию клавиш Ctrl+S
~S::
GetKeyState, state, F
if state = D
SendInput ^{s}
Return
~F::
GetKeyState, state, S
if state = D
SendInput ^{s}
Return
- Недостатком является то, что мы должны сделать это и наоборот, где сначала нажимается F , а затем S
- Не забывайте тильду
~
перед клавишей, что означает, что нативная функция не должна быть заблокирована
- Не отправляйте заглавные буквы
^{S}
иначе AHK отправит дополнительное нажатие клавиши Shift . Понятия не имею почему. Тем не менее, ^{s}
в нижнем регистре работает как ожидалось
Вот руководство для начинающих AutoHotKey на Youtube вместе с некоторыми полезными ссылками