在 i3 上绑定小键盘键不起作用

ng.*_*bie 1 x11 i3

我一直试图在 i3 上绑定小键盘数字键失败。这似乎是一件足够简单的事情,但它不起作用。我不明白为什么。

键盘布局:英语美国默认

例如:

bindsym $mod+KP_1 workspace $ws1
Run Code Online (Sandbox Code Playgroud)

什么都不做。

bindcode $mod+$KP_1 workspace $ws1
Run Code Online (Sandbox Code Playgroud)

错误是说我的 i3 配置中有以下错误:

ERROR: Could not parse "$mod+$KP_1" as an input code, ignoring this binding.
Run Code Online (Sandbox Code Playgroud)

$mod$KP_1设置为13387之前运行bindcode。

GitHub 中有评论说不能使用小键盘。真的吗 ?

没有人有绑定之类的$mod + KP_2吗?

ng.*_*bie 5

解决了。他们真的应该将其添加到文档中。感谢 IRC 频道上的人帮助我解决这个问题。

好了,因为KP_0KP_1钥匙在数字键盘,他们将只在当数字方式工作numlock被打开,否则它们KP_ENDKP_HOME等等。现在一个正常的人是这很好,但是这不工作的原因i3是因为i3需要为告诉numlock是在。 靠自己来计算是不够聪明的。

因此需要相应地编写键绑定。所以正确的键绑定是:

bindsym $mod+mod2+KP_1 workspace $ws1
bindsym $mod+mod2+KP_2 workspace $ws2
bindsym $mod+mod2+KP_3 workspace $ws3
bindsym $mod+mod2+KP_4 workspace $ws4
bindsym $mod+mod2+KP_5 workspace $ws5
bindsym $mod+mod2+KP_6 workspace $ws6
bindsym $mod+mod2+KP_7 workspace $ws7
bindsym $mod+mod2+KP_8 workspace $ws8
Run Code Online (Sandbox Code Playgroud)

显而易见的问题是什么是mod2?好吧,只要运行xmodmap,你就会发现。大多数时候它会是NumLock

现在看看这个配置,看起来我正在向我的绑定添加另一个按键,但事实并非如此。因为numlock已经是ON我可以按第一个修饰符和小键盘键。我不必按下mod2因为它“已经按下”,可以这么说

所以我可以按:Super(mod) 和键盘上的 KP_1 将工作区切换为 1。

建议使用类似numlockx始终打开登录的程序。