linux 环境下设置鼠标、键盘按键映射
2020-07-08 11:53:18 最后更新: 2020-07-13 11:01:24 访问数量:762
2020-07-08 11:53:18 最后更新: 2020-07-13 11:01:24 访问数量:762
鼠标上的功能键常常可以让工作效率有很大提升,但在 linux 上,你可能会困惑于厂商并没有提供 linux 环境下鼠标的配置软件,那么,我们鼠标上的那些功能键难道就无法使用了吗?
当然不是,本文我们就来详细介绍一下在 linux 上,鼠标、键盘按键重新映射的方法
通过 xev
命令我们可以看到我们要设置的按键的 code 值,有了这个 code 值我们才能进行下一步配置
执行 xev 会弹出一个小窗,点击你要设置的按键,在 shell 里就会出现相应的日志,如下图所示:
可以看到,对于键盘按键来说,日志中显示的是 keycode,他后面的数字即对应按键的 keycode 值,而鼠标按键则对应显示 button + code 值
键盘的按键映射我们可以使用 xmodmap,他的功能非常强大,可以实现下面两个功能:
通过命令 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), 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)
如果你想要修改功能键的映射关系,可以执行:
clear mod1 && add mod1 = Alt_L Meta_L
执行下面命令可以实现将按键 B 绑定到 keycode 为 38 的按键上:
xmodmap -e "keycode 38 = b B NoSymbol B"
等号右边可以写入 0 到 6 个参数,他们分别是:
例如,下面的命令实现了 ESC 键与 Caps_Lock 按键的交换:
xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"
xmodmap -e "keycode 66 = Escape NoSymbol Escape"
如果每次开机都手动执行这些命令设置一遍,显然非常麻烦,而且如果你需要有一些逻辑判断,动态修改按键映射显然更为灵活和方便,这时候,最好的选择就是通过配置文件了
创建配置文件,例如名为 .xmodmaprc:
keycode 9 = Caps_Lock NoSymbol Caps_Lock
keycode 66 = Escape NoSymbol Escape
然后,通过下面命令加载即可:
xmodmap ~/.xmodmaprc
你可以在 .bashrc 中加入:
if [ -f ~/.xmodmaprc ]; then xmodmap ~/.xmodmaprc; fi
当然,你也可以写入更多更复杂的 shell 程序来实现多个配置文件在不同时机的切换和加载
下面是我的配置文件:
keycode 164 = 6 F8 6 F8
keycode 108 = Mode_switch
keycode 96 = F12 F12 F9 F12
keycode 10 = 1 exclam Menu exclam
keycode 13 = 4 dollar asciicircum dollar
鼠标按键修改需要安装下面两个软件:
sudo apt install xbindkeys xautomation
创建配置文件 .xbindkeysrc,写入:
"xte 'key Return'"
b:2
就实现了将 2 号 button 绑定为回车的功能
下面的配置实现了组合键的绑定:
"xte 'keydown Control_L' 'key w' 'keyup Control_L'"
b:9
"xte 'keydown Control_L' 'keydown Shift_L' 'key t' 'keyup Shift_L' 'keyup Control_L'"
b:8
xte 是一个功能强大的操作指令,他可以实现下列操作:
同样,通过 xbindkeys -f .xbindkeysrc
即可激活该配置,但与 xmodmap 不同,xbindkeys 只能激活一次