AutoHotkey (клавиатура ЕС): как переназначить LCtrl, сохранив AltGr

AutoHotkey (клавиатура ЕС): как переназначить LCtrl, сохранив AltGr

Я просмотрел предыдущие вопросы, но не нашел решения для переключения LAltс LCtrl(или CapsLockс LCtrl), полностью сохраняя AltGr, что соответствует Ctrl+ Alt(или, может быть, LCtrl+ RAlt?).

Это наиболее близкий вопрос, но я не могу использовать реестр, у меня ограниченные права. Поменять местами Ctrl и Alt с помощью AutoHotKey, не портя переключатель Alt-Tab?

Также по теме: https://code.google.com/p/uawks/issues/detail?id=2

Я использую один из этих простых скриптов:

LAlt::LCtrl
LCtrl::LAlt

Второй:

LCtrl::CapsLock
CapsLock::LCtrl

Всякий раз, когда я нажимаю AltGrлюбую другую клавишу, что-то застревает, и мне приходится нажимать наугад Alt, Ctrlпока я не смогу снова писать. Если я использую второй сценарий, активируется CapsLock!

У меня швейцарская клавиатура, и на многих клавишах есть третий символ, поэтому мне часто приходится их AltGrпереназначать, но это не будет простым решением.

Обновлять

Я только что узнал, что проблемы AltGrполностью решаются путем добавления следующей строки в конец двух ранее опубликованных скриптов, но я не понимаю, почему это происходит.

<^>!::RAlt

Почему переназначение AltGrALONE RAltвсе равно дает эффект обычного AltGr?

решение1

1) Хотя по своей сути логика этого поста проста, ее трудно понять тем из нас, у кого нет клавиатуры AltGr, чтобы просто протестировать ее. Я говорю за себя, во всяком случае... для понимания, возможно, будет полезно прояснить, о каком двухстрочном скрипте вы говорите, а затем список клавиш, которые вы нажимаете (и в каком порядке), а затем список результатов, которые вы получаете. Затем перечислите следующий скрипт, клавиши и результаты. Или, может быть, другим это не нужно, но мне было немного сложно понять, хотя я считаю, что у вас есть вся важная информация, перечисленная.

2) Вы смотрели на переназначение горячих клавиш в файлах справки? Я заметил две вещи, с которыми вам, возможно, захочется поиграться. Во-первых, это использование * в качестве модификатора. Во-вторых, это использование 'Up' для срабатывания при движении вверх для отправки другого движения вверх (т. е. отправки движения вверх для другого модификатора). Посмотрите на переопределение LWin, указанное в разделе Hotkeys в файле справки:

*LWin::Send {LControl Down}
*LWin Up::Send {LControl Up}

3) Иногда что-то застревает, и когда это происходит, вы иногда можете обойти это, отправляя команды «Вверх», даже если клавиша уже поднята. Технически это может быть не нужно, но иногда это работает (а иногда нет).

4) Может (или не может) помочь просмотр списка истории ключей через меню Вид. Часто вы можете выяснить, почему что-то застревает или почему происходит сбой, посмотрев на порядок обработки ключей (т. е. порядок, в котором они перечислены) и на то, игнорируются ли они из-за различных перечисленных причин.

5) Как показывает пример переопределения LWin, вы можете использовать команду «Отправить» или «ОтправитьВход» для большей гибкости во время устранения неполадок (если она вам не понадобится, конечно, вы можете обойтись без нее и сделать код чище, но это ничему не повредит). Например, использование команды «Отправить» позволяет легко прикрепить другой символ или нажатие клавиши к одному переназначению горячей клавиши, а затем посмотреть порядок срабатывания в списке истории клавиш, чтобы увидеть, что этодумаетбыла нажата и в каком порядке.

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

Я понятия не имею, сработает ли это, но вот пример того, с чего можно начать отладку.

*LAlt::Send {LCtrl Down}
*LAlt Up::Send {LCtrl Up}
*LCtrl Up::Send {LAlt Up}
*LCtrl::
     Send {LAlt Down}
     Pause   ; once the script is paused you can go look at Key History
 Return

Связанный контент