archlinux按键映射按键自定义

我想把右ALT映射成Super键,也就是mod4键位,折腾了半天没有成功。问AI也没有解决,与是只好自己去看wiki了,发现原来很简单。只是我没有clear。
https://wiki.archlinuxcn.org/wiki/Xmodmap

安装xorg

sudo pacman -S xorg

直接选择全部安装。
基础操作。

xmodmap
#显示按键信息
xmodmap -pke
#生成配置文件
xmodmap -pke > ~/.xmodmap
#编辑配置文件
nvim ~/.xmodmap

实战

我这里实现目标是ALT_R 当作 Super_L使用。

1. 生成配置文件

#生成配置文件
xmodmap -pke > ~/.xmodmap

2. 修饰键

xmodmap也可以用来覆盖修饰键,例如交换Control和Super(即 Windows 键)。

打印当前完整的修饰符表:

itkey@archlinux: ~ $ xmodmap -pm
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),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        ISO_Level5_Shift (0xcb),  Hyper_L (0xcf)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x5c)

3. 重新安排修饰键位

注意:xmodmap是区分大小写的。使用不正确的大小写,如Mode_Switch,(正确的是 Mode_switch)会导致错误。

在重排之前,需要清除修饰键。原来的键和新的键都得清除。例如,如果您打算将Caps_Lock换到A键,将B换成NumLock键,那么Caps_Lock,Num_Lock,A,B四个键都得清除,然后分配键位,最后再把他们加回来。

~/.Xmodmap
[...]
clear lock
clear mod2
keycode  38 = Caps_Lock
keycode  77 = Num_Lock
add lock = Caps_Lock
add mod2 = Num_Lock

我这里是要把Alt_R当作Super_L使用的,所以要先clear mod1和mod4

1 清除原修饰键

文件的开头

clear mod1
clear mod4

2 修改按键的映射

找到ALT_R 的配置,修改成Super_L

! keycode 108 = Alt_R NoSymbol Alt_R
keycode 108 = Super_L NoSymbol Super_L

这里的!是注释

3 加回来修饰键

文档末尾

! 加回修饰键
add mod1 = Alt_L Alt_R
add mod4 = Super_L Super_R

激活自定义映射表

对于GDM、XDM或LightDM,不需要特别激活~/.Xmodmap。对于startx,请使用:

~/.xinitrc
[[ -f ~/.Xmodmap ]] && xmodmap ~/.Xmodmap
也可以编辑全局启动脚本 /etc/X11/xinit/xinitrc。

示例

将 CapsLock 换成 Control

CapsLock 改为 Control 的最简单的例子。

~/.Xmodmap
clear lock
clear control
keycode 66 = Control_L
add control = Control_L Control_R

使配置生效:

xmodmap ~/.xmodmap

总结

不看wiki真容易搞错。我一开始就不清楚要修改的键要clear一下,而且涉及的两个键都要clear,最后在加一下,确实感觉繁琐。

参考

https://wiki.archlinuxcn.org/wiki/Xmodmap

你可能感兴趣的:(archlinux,linux,xmodmap)