使用 xmodmap 将键持久设置为修饰符,除非我提供 .xinitrc,否则不会加载

使用 xmodmap 将键持久设置为修饰符,除非我提供 .xinitrc,否则不会加载

因此,我只是想将 Control_R 分配给不同的函数,例如mod3xmodmap为此,我添加了以下行.xinitrc

[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap

之前我已经做过

xmodmap -pke > ~/.Xmodmap

并附加了我需要添加功能的行

clear control
add control = Control_L
add mod3 = Control_R

任何时候我startx如果xmodmap输出都没有改变,但只要我这样做source .xinitrc它就会发生我想要的改变:


shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Control_R (0x69)    ------------------------> 
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

您如何在中实现此功能Debian Buster

答案1

事实证明,至少在我的环境下(使用Debian Buster),要使此操作有效,您需要输入某种命令执行延迟。因此,命令最终会像这样vi ~/.xinitrc

[ -f ~/.Xmodmap ] && { sleep; xmodmap ~/.Xmodmap; } &

这与实际的 Archwiki 页面设置此功能相矛盾(https://wiki.archlinux.org/index.php/Xmodmap)。我不知道 ArchLinux 是否有其自身的特殊性,但如果有人发现同样的错误,请检查上面的行是否能解决它。

相关内容