3

Есть ли способ использовать обычные клавиши в качестве клавиш-модификаторов? Предполагая, что моя клавиатура правильно записывает мои нажатия S и F вместе, есть ли способ использовать комбинацию в качестве сочетания клавиш, например Ctrl+S?

В частности:

  • Как проверить, что моя клавиатура способна распознавать одновременные нажатия клавиш?
  • Как я могу переназначить комбинацию, чтобы она могла использоваться таким приложением, как Emacs?

1 ответ1

3

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

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 вместе с некоторыми полезными ссылками

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