linux 环境下设置鼠标、键盘按键映射

2020-07-08 11:53:18   最后更新: 2020-07-13 11:01:24   访问数量:102




鼠标上的功能键常常可以让工作效率有很大提升,但在 linux 上,你可能会困惑于厂商并没有提供 linux 环境下鼠标的配置软件,那么,我们鼠标上的那些功能键难道就无法使用了吗?

当然不是,本文我们就来详细介绍一下在 linux 上,鼠标、键盘按键重新映射的方法

 

通过 xev 命令我们可以看到我们要设置的按键的 code 值,有了这个 code 值我们才能进行下一步配置

执行 xev 会弹出一个小窗,点击你要设置的按键,在 shell 里就会出现相应的日志,如下图所示:

 

 

可以看到,对于键盘按键来说,日志中显示的是 keycode,他后面的数字即对应按键的 keycode 值,而鼠标按键则对应显示 button + code 值

 

键盘的按键映射我们可以使用 xmodmap,他的功能非常强大,可以实现下面两个功能:

  1. 修改功能键
  2. 修改常规按键

 

修改功能键

通过命令 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 个参数,他们分别是:

  1. Key
  2. Shift+Key
  3. Mode_switch+Key
  4. Mode_switch+Shift+Key
  5. ISO_Level3_Shift+Key
  6. ISO_Level3_Shift+Shift+Key

 

例如,下面的命令实现了 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 命令

操作指令

xte 是一个功能强大的操作指令,他可以实现下列操作:

  1. key k -- 按下并释放按键 k
  2. keydown k -- 按下按键 k
  3. keyup k -- 放开按键 k
  4. str string -- 输入字符串
  5. mouseclick i -- 点击鼠标按键 i
  6. mousedown i -- 按下鼠标按键 i
  7. mouseup i -- 释放鼠标按键 i
  8. mousemove x y -- 将鼠标移动到坐标 x, y 位置
  9. mousermove x y -- 将鼠标相对移动坐标 x, y
  10. sleep x -- 休眠 x 秒
  11. usleep x -- 唤醒 x 秒

 

常用键盘按键

  1. Home
  2. Left
  3. Up
  4. Right
  5. Down
  6. Page_Up
  7. Page_Down
  8. End
  9. Return(即Enter键)
  10. BackSpace
  11. Tab
  12. Escape
  13. Delete
  14. Shift_L
  15. Shift_R
  16. Control_L
  17. Control_R
  18. Meta_L
  19. Meta_R
  20. Alt_L
  21. Alt_R
  22. Multi_key

 

加载配置文件

同样,通过 xbindkeys -f .xbindkeysrc 即可激活该配置,但与 xmodmap 不同,xbindkeys 只能激活一次

 

欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤

 

 






技术帖      linux      ubuntu      鼠标      键盘      改建      xbindkeys     


京ICP备15018585号