Как глобально сопоставить ключ AltGr с ключом Alt? - PullRequest
39 голосов
/ 23 октября 2008

Я хочу, чтобы моя клавиша 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 и Сдвиг к их левым братьям и сестрам был кусок пирога)


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

Ответы [ 7 ]

44 голосов
/ 20 января 2009

Спасибо всем за ответы. Я не смог решить эту проблему с помощью 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 in action

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

7 голосов
/ 29 декабря 2008

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

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

3 голосов
/ 23 октября 2008

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

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

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

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

2 голосов
/ 20 июня 2010

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

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

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

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

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

0 голосов
/ 08 ноября 2014

Редактор реестра 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. Теперь проверьте
0 голосов
/ 07 октября 2012

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

0 голосов
/ 23 октября 2008

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

LControl & RAlt::!

Или

<^>!::!
...