在 Awesome WM 中更改 Mod 键

在 Awesome WM 中更改 Mod 键

我尝试将 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"

相关内容