Я хочу переназначить свои AltGR + Right_Windows, но я не могу понять, как. Независимо от того, что я пытаюсь, нажатие правой клавиши Windows выдает название keysym, когда правая клавиша alt нажата или нет.
Это содержимое файла xmodmap, который я сейчас тестирую. В моей клавиатуре 38 - это код клавиши для «а», 48 - это код для апортроф / двойная кавычка, а 134 - это код для правой клавиши Windows.
keycode 38 = 1 2 3 4 5 6 7 8
keycode 48 = 1 2 3 4 5 6 7 8
keycode 134 = 1 2 3 4 5 6 7 8
Когда я нажимаю Right_Alt + апостроф, он выдает 5, но Right_Alt + a и Right_Alt + Right_Windows дают 1 (как при нажатии правой клавиши alt, так и когда ее нет), что не то, что я хотел.
Моя текущая раскладка клавиатуры us(alt-intl)
и правый alt явно настроен для работы в качестве AltGr / Iso_Level3_Shift. Вывод xmodmap -pm
следующий:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
xev
и нажать различные комбинации клавиш, чтобы увидеть, получает ли аппаратное обеспечение и вплоть до уровня Xwindows различимые нажатия клавиш для начала.us(cz_sk_de)
раскладку клавиатуры и xmodmap.Ответы:
Использование xmodmap для настройки индивидуальных сопоставлений клавиш
Пришло время записать результаты моего собственного исследования.
Я подумал, что, должно быть, что-то пропустил в xmodmap и что это не очень хорошо задокументировано, и люди в замешательстве. Но оказалось, что дизайн X.Org в отношении XKB и xmodmap просто глуп.
Эпическая ошибка: xmodmap
Вы можете использовать xmodmap для переопределения существующих сопоставлений, если эти сопоставления действительно существуют в исходной раскладке клавиатуры. В случае, описанном в вопросе, вы не можете расширить поведение любых клавиш для использования AltGr. Вы можете изменить только ключи AltGr для тех кодов клавиш, которые уже используют AltGr.
Смотрите также: http://blog.azundris.com/archives/193-X-treme-pain-XKB-vs-XModMap.html
Обходной путь: Mode_switch
Этот обходной путь описан в ответе @ Ned64. Вы можете переназначить
AltGr
изISO_Level3_Shift
вMode_switch
.Я успешно использовал следующую командную строку для переназначения
AltGr
.Недостатком является то, что это нарушит вашу текущую раскладку клавиатуры, но вы можете воссоздать все сопоставления одно за другим, используя
xmodmap
уже упомянутый @ Ned64.Обходной путь: Модифицированная раскладка клавиатуры
Я использую в
us(cz_sk_de)
качестве раскладки клавиатуры и попытался изменить ее, добавив конфигурацию для клавиш, которые я хотел расширить.(В разделе
xkb_symbols "cz_sk_de"
о/usr/share/X11/xkb/symbols/us
)Просто сбросьте раскладку клавиатуры, чтобы использовать измененную версию.
Теперь вы можете (1) типа чешские и английские кавычки и многоточие с использованием комбинаций
,
,.
,Shift
иAltGr
ключи и / или (2) переназначить эти ключи , используяxmodmap
теперь, когда они определены.Основным недостатком является то,
setxkbmap
что кажется, что он не поддерживает произвольные расположения для раскладок клавиатуры, и поэтому вам нужно записывать в конфигурацию системы вместо вашего домашнего каталога.Вывод
Похоже, это пример чрезмерного и плохого дизайна X.Org, где даже такая тривиальная вещь, как отображение кода клавиши и комбинации модификаторов в символ, оказывается проблемой. Похоже, что инструменты не дают разумного способа просто изменить отдельные сочетания клавиш в конфигурации пользователя без каких-либо побочных эффектов.
источник
Шаг первый: Сделайте AltGr пригодным для использования
Я обнаружил, что модифицированные AltGr ключи работают в моей системе, только если я переназначаю AltGr-Key
Mode_switch
, например, так:Если у вас другая клавиатура, вам, возможно, придется заменить ее на
108
свой код, проверьте, набравзатем используйте этот номер. (Ключ обычно вызывается
Alt_R
в системах, которые я знаю.)Альтернативно, это также может работать, если Alt_R еще не назначен чему-то еще:
Ваш модификатор AltGr теперь будет занимать позицию 3 (с Shift: 4) в вашем списке модификаторов.
Шаг второй: назначьте ключи по мере необходимости
Вы можете назначить AltGr-варианты для любой клавиши вашей клавиатуры. Если у вас есть другие ключи, которые сейчас не соответствуют требуемому коду, вам необходимо переназначить их так же, как и другие ваши ключи (те, которые вы тестировали).
Шаг третий: преобразовать это в скрипт
Теперь просто возьмите свои
xmodmap
команды и запишите все (но только) модификации вашей клавиатуры по умолчанию в файл - это быстрее, чем загрузка полной раскладки клавиатуры. Запускайте этот скрипт один раз после каждого входа в систему и всякий раз, когда раскладка клавиатуры сбрасывается каким-либо процессом.Я много лет экспериментировал с этим в Solaris, IRIX и Linux, и, насколько мне известно, это единственное решение для работы AltGr, и оно работало для меня более 20 лет.
источник
xmodmap -pm
иxmodmap -pke | grep -w SOMECHANGEDKEY
в этой ситуации за ключ, который больше не работает.xmodmap
соответствии с вашим выводом)xmodmap -pke | grep Alt_R
не возвращает никаких результатов в моей системе. Моя система - Lenovo ThinkPad X230 со стабильной Gentoo. Я тоже пыталсяgrep -i
безрезультатно.us(cz_sk_de)
меня перестали работать. Поэтому этот ответ не работает для меня и не будет работать для многих других.По-видимому, xmodmap не читает AltGR по умолчанию, как следует, это может быть ограничено определенными раскладками клавиатуры, может быть, это все раскладки за пределами США, так или иначе, настоящая проблема в том, что вы можете заменить раскладку клавиатуры, некоторые люди могут на самом деле не хочу этого делать, так как им нужно использовать специальные символы на раскладке, к которой они привыкли (например, на скандинавских раскладках клавиатуры, в которых есть такие символы, как ðůöáúíóå that и т. д.), что было бы непросто настроить для других раскладок клавиатуры.
Вы можете запустить
Чтобы привязать AltGR к чему-то, с чем может работать xmodmap, и действительно, 3-е назначение keycoad будет выведено, когда вы сейчас нажмете AltGR, однако это полностью нарушит исходную раскладку клавиатуры, поскольку никакие сочетания клавиш AltGR больше не будут работать с клавишей AltGR.
Я нашел два обходных пути, которые не нарушают мою существующую раскладку клавиатуры и не включают переключение раскладок , один - привязать Mode_switch к другой клавише.
Идеальный ключ для этого - Super_R, который находится рядом с AltGR, код ключа для него - 134. Однако не все клавиатуры имеют их, и в моем случае на ноутбуке у меня его тоже нет, поэтому я решил связать его с последним оставшийся ключ, которым я практически никогда не пользуюсь, Right Control.
У меня американская физическая раскладка клавиатуры, но европейская конфигурация раскладки, и клавиша less / great / bar (также известная как ISO_Backslash, хотя это не распознается самим xmodmap), обычно рядом с Z на таких клавиатурах отсутствует. Я связал это с Меню (135), но оно могло бы служить альтернативой R_Ctrl и Super_R
Полагаю, это грязное исправление.
Второй обходной путь занял немного больше времени, чтобы понять. Использование sxhkd (альтернатива xbindkeys)
Если вы добавите это в ~ / .config / sxhkd / sxhkdrc :
Ваш AltGR будет работать в обычном режиме, но при его нажатии Mode_switch будет переключаться (вроде как caps lock, но для Mode_switch), и любые клавиши xmodmap, которые его используют, будут заблокированы в режиме AltGR, пока вы снова не нажмете AltGR, чтобы отменить его. Должно быть легко создать скрипт для автоматического выключения его при отпускании ключа, но мои попытки сделать это были довольно ошибочными, если не сказать больше.
источник