Привязать alt, но не altgr в i3

Привязать alt, но не altgr в i3

Я использую Mod4 для большинства сочетаний клавиш в i3, но вот для этого я использую Mod1:

bindsym Mod1+a workspace a
bindsym Mod1+b workspace b
bindsym Mod1+c workspace c
bindsym Mod1+d workspace d
...

Однако это связывает и alt, и altgr, что нежелательно, поскольку я использую altgr+<буква> для ввода некоторых символов.

xev говорит, что alt это Alt_L, а altgr это Alt_R, но bindsym Alt_L+aэто не работает

решение1

В конечном итоге это зависит от того, чтоxmodmapпоказывает для mod1. Например, если он показывает, что Alt_Lи Alt_Rнаходятся на одном и том же модификаторе, вам придется переместить последний на другой (из 5 доступных модификаторов), чтобы избежать конфликта.

Вот несколько страниц с примерами:

  • Переназначение Alt_R с помощью xmodmap отключает переключение терминала VCпоказывает пример, откуда пользователь Alt_Rперешелмод1кмод4(и столкнулись с проблемами). Вам следует просмотреть вывод xmodmap перед его изменением.
  • xmodmapна ArchLinux показан подробный пример манипулирования модификаторами.двигатьсяключ, вы должныдобавлятьэто к одному модификатору ипрозрачныйэто от другого.

Одна из ловушек в использовании xmodmapзаключается в том, что он не всегдазнатьправильный код клавиши для символа клавиши (например, Alt_R). Когда я сталкиваюсь с этим, я обычно могу обойти это, посмотрев в вывод из

xmodmap -pk

для ключасимвол, и в скрипте назначить этот keycode. Например, на одной машине xmodmap -pkпоказывает

108         0xffea (Alt_R)  0x0000 (NoSymbol)       0xffea (Alt_R)

и используя этот скрипт

keycode 108 = Alt_R
remove mod1 = Alt_R
add mod3 = Alt_R

изменяет вывод с этого:

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),  Alt_R (0x6c),  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)

к этому:

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        Alt_R (0x6c)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

(Для данной конкретной машины обходной путь не нужен).

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