Я переназначаю раскладку Qwerty на Dvorak с помощью AHK, потому что не могу установить пользовательские раскладки клавиатуры на этом компьютере. Большая часть моего переназначения просто следует простому шаблону, и это хорошо работает:

:*:n::b  ; remap "n" to "b". This automagically also works for "N"-->"B".
:*:,::w  ; remap comma to lowercase "w".
:*:;::W  ; uppercase comma must be specifically coded.

Проблема: в датском макете есть три специальных символа, и они не будут вызывать переназначение. Проблема в (наверное?) то же самое для всех трех клавиш, так что давайте просто посмотрим на одну из них, "кольцо" в верхнем ряду.

Я пробовал несколько вариантов триггера, но проблема, похоже, в том, что AHK в некоторых случаях игнорирует триггер и просто выводит физический ключ. Примечательно, что после этого весь сценарий переназначения кажется приостановленным, но снова начинает работать после того, как я приостановил и возобновил сценарий. Предупреждений и ошибок нет, другие сценарии по-прежнему работают.
(Конечно, я пробую только один из них одновременно, но здесь они все показаны, а не закомментированы.)

:*:å::<             ;-- erroneously still produces "å".
:*:Å::>             ;-- erroneously still produces "Å".
:*C:å::<            ;-- erroneously still produces "å".
:*C:Å::>            ;-- erroneously still produces "Å".

или он будет блокироваться при определении триггера в скрипте:

å::send <           ;-- Ã¥ invalid hotkey.
Å::send >           ;-- Ã…  invalid hotkey.
{ASC 0229}::send <  ;-- ASC 0229} invalid hotkey.
{ASC 0197}::send >  ;-- ASC 0197} invalid hotkey.

Как должен быть сформулирован триггер, чтобы захватить эти ключи?

2 ответа2

1

AHK имеет функцию KeyHistory, которая может раскрыть код сканирования каждого физического ключа. Используя это, я определил, что ключ «a-ring» имеет SC01A который можно ссылаться в AHK:

SC01A::<  ; the "a-ring" key should produce a "<" character. 

Прописные буквы обрабатываются автоматически, так что это действительно все!

Обратите внимание, что коды сканирования AHK могут сильно отличаться от того, что вы увидели бы, если бы вы выполнили поиск в Google Images для диаграмм кодов сканирования клавиатуры, поэтому не полагайтесь на это!

0

код сканирования и код виртуальной клавиши, предоставленные в окне KeyHistory скрипта, можно использовать вместо имени обычного ключа в горячих клавишах, переопределениях и, как я думаю, командах отправки. Чтобы открыть окно KeyHistory, вы можете использовать команду Key History (которая имеет дополнительную функцию, которая позволяет изменять количество ключей, которые запоминает Key History, набрав число до 500 после команды), или вы можете щелкнуть правой кнопкой мыши на Иконка скрипта в трее уведомлений и нажмите на историю. Вы также можете просмотреть его, щелкнув меню просмотра в фоновом окне скрипта. Обратите внимание, что для того, чтобы в истории ключей записывалось что-либо, кроме событий, запускаемых самим сценарием, в сценарии ДОЛЖНА быть установлена клавиатурная зацепка. То, что я делаю для загадочных клавиш - это просто запускаю скрипт, в котором не установлено ничего, кроме хуков клавиатуры, а затем нажимаю клавишу, для которой мне нужно найти код. На самом деле, на моей клавиатуре нет таинственных клавиш, но я не могу создать горячую клавишу для таких вещей, как точка с запятой.

Изменить (крайне поздний ответ на первый комментарий): извините за поздний ответ. Вам нужно использовать директиву #InstallKeybdHook, чтобы установить ее

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