xmodmap-安装与使用
官方文档
xmodmap 是用于修改 Xorg 中键位图和指针映射的工具.
xmodmap 和 XKB (X keyboard extension) 没有直接关系.
注意, xmodmap 设置会被 setxkbmap 重置.
简介
Xorg 中有两种类型的键盘值: 键码和键符.
- 键码 keycode, 表示按键或鼠标按钮被按下时, 内核收到的表示数字
- 键符 keysym, 是键码所对应的符号表达式, 意思是可以通过按下相应的键符对应的位置向内核发送 keycode. 如
Shift_L
是键符, 表示的是键盘上的具体位置, 50 和 (0x32) 是同一个意思表示键码
keycode 和 keysym 的映射表可以用 xmodmap
查看.
内核对 keycode 的解释是定死了的, 但是按下什么键发送什么 keycode 是我们可以操控的.
安装
xorg-xmodmap
包提供 xmodmap.
xkeycaps
包提供 xmodmap 的图形前端.
键映射表
以表达式格式呈现:
1 |
|
表中的 Key
表示 keycode 对应的按键.
如果要跳过一个 keysym, 将其值设置为 NoSymble
.
多媒体键有预定义的描述性键符, 如 XF86AudioMute
, 可在 /usr/include/X11/XF86keysym.h
中找到.
要永久改变, 可修改 .xprofile
或 .xinitrc
文件.
自定义映射表
创建一个映射列表:
1 |
|
测试更改:
1 |
|
激活
在 ~/.xinitrc
中添加:
1 |
|
临时修改
1 |
|
修饰键
就是 modkey (mod 是 modifier 的意思).
对 xmodmap -pm
的输出的理解:
1 |
|
应该是按右侧的键, 都可以表示左侧的修饰键. 就比如:
1 |
|
表名, 按下左边的 Shift 和按下 右边的 Shift 都会产生 shift 修饰符的作用.
使用 !
作为注释.
Man page
在 Man Page 中有语法讲解以及示例.
xev 程序
这个软件打开后可用来检测 keycode 和 keysym 等信息.
语法: keycode Num = keysymname …
一个 keycode 最多绑定 8 个 keysym.
一个 key 后面跟着的 keysym 的含义:
1 |
|
这个位置有特别的含义, 出现在第一个位置表明 no modifier key is conjunction with this key, 第二个位置表明和 Shift 一起按, 第三个 with Mode_switch key, 第四个 with both Mode_switch and Shift.
keycode
clear MODIFIERNAME
clear
后面可以跟: Shift, Lock, Control, Mod1, Mod2, Mod3, Mod4, Mod5 (modifier name 可以不区分大小写).
参考一个 Tutorial
参考
xmodmap 不能做的事:
- 不能将一个键变成, 按下这个键等于多个键的组合
- 不能执行脚本