Я попытался изменить клавишу mod в Awesome с клавиши Windows на Pause, Scroll Lock и Escape.
Для всех ключей я пробовал менять запись в rc.lua
файле конфигурации; я пробовал использовать xmodmap для снятия блокировок иadd mod4 = ...
Однако, похоже, что независимо от того, что я делаю, клавиши становятся «залипающими» (иногда странным и непоследовательным образом), а именно, если я нажимаю на них один раз, компьютер ведет себя так, как будто они нажаты постоянно.
Есть ли разумный способ изменить такое поведение?
решение1
У меня дома есть файл с этими двумя строками:
clear lock
keysym Caps_Lock = Super_L
Он вызывается из моегоrc.luaтак:
awful.util.spawn("xmodmap /home/username/your_xmodmap.file")
решение2
С опозданием, но для справки:
Проблема, похоже, в том, что xmodmap не идентифицирует ни одну из клавиш, перечисленных вами как клавиши-модификаторы. Поэтому AwesomeWM не позволяет использовать их как клавиши-модификаторы.
Вы можете попробовать добавить клавишу, которую хотите использовать как Mod3 (которая, похоже, не используется ни для чего в большинстве систем, которые я видел), тогда ваш rc.lua может перечислить modkey как "Mod3".
Добавить как клавишу-модификатор
Вы можете увидеть свои клавиши-модификаторы с помощью xmodmap
. По умолчанию вы, вероятно, получите что-то вроде этого:
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)
С помощью xev
вы можете увидеть название любой клавиши, которую вы нажимаете во время ее работы, а для Scroll Lock мое отображается как:
KeyPress event, serial 36, synthetic NO, window 0x2200001,
root 0x225, subw 0x0, time 23086947, (433,729), root:(470,783),
state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x2200001,
root 0x225, subw 0x0, time 23087091, (433,729), root:(470,783),
state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
Вы заметите, что имя keysym — Scroll_Lock
.
Чтобы добавить в Mod3, вам нужно создать или добавить в ~/.Xmodmap
. Добавление этой строки делает Mod3 только клавишей Scroll_Lock:
add Mod3 = Scroll_Lock
Чтобы проверить изменения и увидеть ошибки в файле .Xmodmap, запустите
xmodmap ~/.Xmodmap
Обновление rc.lua
Как вы уже, очевидно, поняли, в верхней части вашего файла rc.lua (который обычно находится в ~/.config/awesome/rc.lua
), есть modkey = "Mod4"
строка. Измените ее на modkey = "Mod3"
.
Предупреждения
Клавиша Esc используется AwesomeWM для ряда сопоставлений клавиш. Я бы посоветовал попробовать Scroll Lock или Pause, так как они менее склонны к серьезным конфликтам. Фактически, AwesomeWM, похоже, предполагает, что Esc зарезервирована для отмены текущей операции.
Scroll Lock, похоже, магическим образом рассматривается как блокирующая клавиша, во многом похожая на Caps Lock. Разница в том, что блокирующее поведение Caps Lock относительно просто отключить, в то время как Scroll Lock, насколько я могу судить, не может отключить это поведение.
Я бы предложил попробовать это с клавишей, например, клавишей 0 на цифровой клавиатуре, или с чем-то, что обычно не предназначено для блокировки состояния, убедиться, что это работает, а затем попробовать переключиться на нужную клавишу.
решение3
Я знаю, что опоздал на 3 года, но если это кому-то поможет, переключитесь
modkey = "Mod4"
с
modkey = "Mod1"