如何使用当前键盘布局作为 i3 中的键盘快捷键?

如何使用当前键盘布局作为 i3 中的键盘快捷键?

我刚刚用默认配置安装了 i3,有一个键盘快捷键存在重大问题:即使我的键盘布局不是 QWERTY,键盘快捷键也会映射到相关的 QWERTY 键。因此,我必须按下WinQWERTY 布局中标记为“F”的键才能全屏显示窗口,即使按下该键会产生“u”字符(在 Dvorak 布局中)。我该如何解决这个问题,以便按Win+f键在任何布局,无需为每个布局进行单独配置?

答案1

简短回答:

如果您想使用默认配置,您只需复制/etc/i3/config~/.config/i3/config(或~/.i3/config;替换已经存在的配置以避免混淆)。

长答案:

i3支持通过以下方式配置键盘快捷键关键符号以及键代码

  • 关键符号是按键发送的字符,取决于键盘布局。它们与关键字绑定bindsym。例如,为了绑定toggle fullscreen到 和 的组合Win键,发送“f”你会使用:

     bindsym Mod4+f fullscreen toggle
    

    此方法适合与助记符一起使用(Fullscreen,重新年代ize 等),您只需查看配置即可立即找到所需的快捷键。但如果您在键盘布局之间切换,按键也可能会移动。此外,如果您在不同的字母之间切换,则并非每个符号都会在两种布局中显示。

  • 密钥代码表示键盘上的物理按键,与键盘布局无关,只与键盘型号有关(例如pc104pc105。为了绑定toggle fullscreen到 和 的组合Win键,被标记为F在美国键盘上(主键盘,左手食指):

     bindcode Mod4+41 fullscreen toggle
    

    此方法可使快捷键在不同键盘布局中保持相同的物理位置。如果您有时在布局之间切换但主要通过肌肉记忆来找到快捷键,则此方法特别有用。另一方面,配置不太易读(f与 相比41)。

根据个人喜好,您可能想要选择其中一种方式。您甚至可以混合使用它们,但必须小心不要同时分配同一个键两次,例如bindsym f …bindcode 41 …

通常,i3软件包会为每种方法提供默认配置。/etc/i3/config对于bindsym/etc/i3/config.keycodes对于bindcode。如果i3未找到用户配置,它会建议使用 创建一个i3-config-wizard。这将采用默认配置,并用当前键盘布局上的等效配置config.keycodes替换所有配置。这可确保所有键都位于同一位置,如bindcodebindsym用户指南同时配置文件也很容易理解。当然,缺点是如果你不使用 QWERTY 或 QWERTZ 布局,它会破坏一些助记符。


我个人的建议是(长时间)观察一下用户手册并且仅使用默认配置作为起点来创建适合您的工作流程和偏好的自己的配置。

相关内容