Я использую 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)
(Для данной конкретной машины обходной путь не нужен).