Как глобально сопоставить ключ AltGr с ключом Alt?

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

Я попробовал это:

LControl & RAlt::Alt

И AutoHotkey отображает ошибку о Alt не быть признанным действием.
Затем я попробовал следующий код:

LControl & RAlt::
  Send {Alt down}
  KeyWait LCtrl
  KeyWait Ralt
  Send {Alt up}
return

какой тип работы - я могу использовать клавишу AltGr для доступа к горячим клавишам, но он по-прежнему ведет себя по-другому:
Когда я нажимаю и отпускаю левый Alt, первый пункт меню в текущей программе получает фокус.
Нажатие и отпускание AltGr с этим скриптом ничего не делает.

Есть идеи? Это возможно даже с Autohotkey? (переназначение правых Ctrl и Shift на их левых братьев и сестер было очень просто)


Примечание: я пробовал переключаться Alt в LAlt в коде и это не имеет значения.

7 ответов

Решение

Спасибо всем за ответы. Я не смог решить эту проблему с помощью AutoHotkey - ответ PhilLho был близок, но мне действительно нужно было то же поведение, что и с левой клавишей Alt.

Тем не менее, реестр действительно работал так, как мне нужно.

Сохраните это как файл AltGR_to_LeftAlt.reg и запустите его:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,38,00,38,e0,00,00,00,00

Или есть инструмент с графическим интерфейсом, который делает это за вас - он называется SharpKeys и работает персиково:
SharpKeys в действии

Да, и не забудьте перезагрузить компьютер или выйти из системы - до тех пор это не сработает!

Как указывает PhiLho, Windows предоставляет способ переназначения любого ключа через раздел реестра. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout, Базовый обзор можно найти в Scan Code Mapper для Windows. Лучшее описание, вероятно, " Ответы на сопоставление скан-кода" или "Изменение значений ключа".

Я использую этот подход, чтобы поставить Windows Key на Caps Lockпотому что моя клавиатура не имеет Windows Key и мне не нужно Caps Lock,

Я получил приличное поведение, сочетая две горячие клавиши:

LControl & RAlt::Send {Alt}
RAlt::Alt

Первый предназначен для автономного нажатия клавиш (не удерживайте его нажатым...), второй - для комбинации (Alt + F и т. Д.).
Это не идеально, вы не можете сделать комбинацию вроде Ctrl + Alt + T, но, возможно, этого достаточно для ваших нужд.

Обратите внимание, что вы можете сделать постоянное переназначение, используя реестр. Смотрите этот пост на форуме для примера. Не уверен, что это относится к составным ключам, как этот, но я подумал, что должен упомянуть об этом...

Это сработало для меня:

LControl & *RAlt::Send {LAlt Down}
LControl & *RAlt Up::Send {LAlt Up}

И это для сопоставления его с ключом Windows:

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

Однако изменение реестра с помощью SharpKeys (см. Выше) более надежно (если у вас есть права администратора).

Редактор реестра Windows, версия 5.00

[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Раскладка клавиатуры] "Карта кодов сканирования"= шестнадцатеричный:00,00,00,00,00,00,00,00,02,00,00,00,38,00,38,e0,00,00,00,00

  1. Сохраните приведенный выше код в файле reg
  2. Слить это в реестр
  3. перезагрузите компьютер
  4. сейчас проверь

В AHK, вы можете сделать:

LControl & RAlt::!

Или же

<^>!::!

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

Другие вопросы по тегам