键盘绑定让 i3 可以在你按下某个特定的键时执行某个命令。 你可以绑定数字码(keycodes)或符号码(keysyms) (可以混用这两者,但是 i3 将不能确保这些绑定不会重复)。
-
符号码(keysym)可以描述一个特定的符号,比如
a
或者b
,但是我们用underscore
表示_
而不是它本身。 你可以用xmodmap(1)
来重新映射这些键。 要获得当前的符号码设置,你可以使用xmodmap -pke
。 如果交互式地要看到某个键对应着什么符号码,你可以使用xev
。 -
数字码(keycodes)不需要分配一个符号(对于某些笔记本或者其他设备的快捷键很有用),即使你(用 xmodmap)换用其他的键盘布局,这些绑定也不会发生变化。
我们的建议是: 如果你经常切换键盘布局,但想要键盘绑定在物理键盘上的位置不发生变化,可以用数字码。如果你并不需要切换键盘布局,并且希望有一个整洁且简单的配置文件,应当使用符号码。
一些工具(比如 import
或者 xdotool
)可能不应当在一个键被按下(KeyPress)时被触发。
对于这种情况,你可以用 --release
选项来配置这个绑定。
这会让指令在这个键被松开(KeyRelease)的时候被执行。
格式:
bindsym [--release] [<组>+][<修饰键>+]<符号码> 指令
bindcode [--release] [<组>+][<修饰键>+]<数字码> 指令
举例:
# 全屏
bindsym $mod+f fullscreen toggle
# 重启 i3wm
bindsym $mod+Shift+r restart
# 笔记本特定的键
bindcode 214 exec --no-startup-id /home/michael/toggle_beamer.sh
# 在按(松开) $mod+x 的时候模拟输入 ctrl+v
bindsym --release $mod+x exec --no-startup-id xdotool key --clearmodifiers ctrl+v
# 在按(松开) $mod+x 的时候截图
bindsym --release $mod+x exec --no-startup-id import /tmp/latest-screenshot.png
可用的修饰键(Modifier)有:
Mod1-Mod5
, Shift
, Control
。
这些是标准的修饰键,你可以参考 xmodmap(1)
对于 Group1, Group2, Group3, Group4
:
当你使用多种键盘布局时(比如使用了 setxkbmap -layout us,ru
),你可以指定在哪一个 XKB 组中这个绑定应该被激活。
默认情况下键盘绑定会被转换到 Group1 中,并且在所有组中都被激活。
如果你需要在某个键盘布局中覆盖绑定,可以指定相应的组。
出于向后兼容性考虑,Mode_switch
是 Group2
的别名。