我尝试将 awesome 中的 mod 键从 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
您会注意到键符的名称是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"
。
警告
AwesomeWM 使用 Esc 键进行了许多键映射。我建议尝试使用 Scroll Lock 或 Pause,因为这样不太可能发生大量冲突。事实上,AwesomeWM 似乎认为 Esc 是为取消当前操作而保留的。Scroll
Lock 似乎被神奇地视为锁定键,就像 Caps Lock 一样。不同之处在于,Caps Lock 的锁定行为相对容易禁用,而据我所知,Scroll Lock 无法禁用此行为。
我建议尝试使用 Numpad 0 键之类的键,或者通常不设计为状态锁定键的键,确认它有效,然后尝试切换到您想要的键。
答案3
我知道我晚了 3 年,但如果这对任何人有帮助,那就换吧
modkey = "Mod4"
和
modkey = "Mod1"