如何为 Sway 创建复杂的自定义 XKB 文件?

如何为 Sway 创建复杂的自定义 XKB 文件?

Sway 使用 Wayland,因此任何 XKB 文件都将由 Sway 解析,而不是 X。

  • 我想在键盘上添加一个层(可能使用 Hyper)
  • 我想随机调整一些修饰键

我浏览了很多网站,但我仍然不知道如何实现这一点。 XKB 有很多部分,我不知道哪些部分放在哪里。我想要一个示例文件(或多个文件)和解释。

答案1

假设您的 xkb 配置文件名为 custom-xkb,并存储在~/.config.然后将其包含在 sway 配置文件中:

input "type:keyboard" {           # or input <identifier> 
  xkb_file ~/.config/xkb/custom-xkb
}

您可能已经知道这部分 - 困难的部分是创建文件custom-xkb。我不是专家,但我会这样做:

  1. 我会在网上搜索“xkb 规范”,这会给您带来各种信息,从维基百科到 的x.org完整规范。您可能已经收集了类似的资源。
  2. 然后我会在我的系统中找到默认的键盘配置文件,可能是在\etc\X11\xdg\什么地方(你可能需要四处看看:在我奇怪的发行版中,路径是/nix/store/n1mlvwrkdlm77b4ai9s26kwji89jjb65-xkeyboard-config-2.27/share/X11/xkb/)。
  3. 在该路径中,我会查找两个子目录:symbolstypes。第一个是所有不同语言的键映射所在的位置,以及每个文件中该语言的键映射变体的位置。第二个子目录是定义虚拟键的地方(例如Mod1、Control等)。
  4. 然后我会将这些文件的内容复制到我的文件中~/.config/xkb/custom-xkb并尝试不同的编辑,看看会发生什么。并尝试使用我收集的互联网资源来消除我的疑虑。如果发生任何灾难性的事情,我会按 Control+Alt+F1,然后进行 nox 登录,注释该行xkb_file ~/.config/xkb/custom-xkb并重新启动 X 服务器...
  5. 我不会篡改子目录rulesgeometry和的内容keycodes。但你也需要看看这些。

我实际上什么也没做过,但也许它有效。我认为查看实际的配置文件有助于弄清楚教程和指南实际上在说什么......

好运

答案2

XKB 确实是一个非常复杂的野兽。 (至少根据我的经验。它似乎有一些奇怪的设计决策,我将其归因于它的第一个版本早在 1996 年就发布了,而且在我看来也不是最好的文档。)

通过尝试许多不同的配置,我成功地达到了一定程度的理解,并确定了一个功能子集,我可以可靠地猜测其行为并轻松地创建布局,同时仍然具有足够的灵活性来表达我想要的内容达到。

编写我所学到的综合教程会花费相当多的时间,但是您可以做的是查看我的配置文件,这些文件希望比阅读默认布局更容易理解。

https://github.com/Isti115/dotfiles/tree/master/.config/xkb

(它们包含在我的 Sway 配置中这里.)

我特别推荐Lenovo-L13.xkb我为我的笔记本电脑创建的文件,因为它有多个层。 (我什至将空格键变成了修改器,同时按住evdoublebind.) Vortex Core 布局也是一个不错的布局,但这并不是全部,因为键盘本身也是可编程的。

如果您需要的东西在这里找不到,正如前面的答案已经提到的,那么首先要查看的是内置文件。您可以使用 来了解您的键盘使用了哪些setxkbmap -print。从那时起,您可以在文件所在的任何位置查找导入的定义xkb。 (除非您使用 NixOS,否则它可能位于某个合理的位置,例如/usr/share/X11/xkb在 Arch 下。)

相关内容