键盘绑定

键盘绑定让 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_switchGroup2 的别名。