Как я могу переназначить эти ключи?

384
Torben Gundtofte-Bruun

Я переназначаю раскладку 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. 

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

enter image description here

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

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

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

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

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

0
Если кому-то интересно, вот мой код: http://paste.ubuntu.com/7404307/ Torben Gundtofte-Bruun 9 лет назад 0

2 ответа на вопрос

1
Torben Gundtofte-Bruun

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

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

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

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

0
Twisted Code

the scan code and virtual key code provided in a script's KeyHistory window can be used as a substitute for a normal key's name in hotkeys, re-mappings, and I think Send commands as well. To open the KeyHistory window, you can either use the command Key History (which has the added feature that you can modify how many keys the Key History remembers by typing a number up to 500 after the command) or you can right-click on the script's notification tray icon and click the history. You can also view it by clicking the view menu on a script's background window. Do note that in order for the Key History to record anything except events that are triggered by the script itself, the keyboard hook MUST be installed on the script. What I do for mystery keys is just run a script that has nothing but the keyboard hook installed and then press the key I need to find the code for. Actually, my keyboard doesn't have any mystery keys, but I can't make a hotkey for things like the semicolon.

Edit (extremely late response to the first comment): sorry for the late response. You need to use a directive, #InstallKeybdHook, to install it

Спасибо - не могли бы вы уточнить, что это значит, что клавиатура должна быть установлена ​​"? Это особая команда, которую я мог бы добавить в сценарий? Torben Gundtofte-Bruun 9 лет назад 0