xbindkeys 在一个键盘上?

xbindkeys 在一个键盘上?

我有当前的设置:

  • PS2 键盘 1 个
  • 1个USB键盘

然后我用这个:

xinput --create-master SecondKeyboard

xinput --reattach "Keyboard Id" "Master Id"

将他们分开。

我以为我可以创建一个自定义布局,瞧,一个键盘用于书写,另一个键盘用于快捷键,然后我发现 xkb 不允许创建单击多个键的布局(如按下capslock并执行ctrl+ alt+ f4)。

所以我的想法是,让 xbindkeys 只在其中一个键盘上运行,因为它们有不同的 id。我能让这件事发生吗?

答案1

所涉及的各个级别的快速总结:

您的键盘会生成扫描码。这些由内核输入层映射到 上的键码事件/dev/input/eventX。 Xevdev驱动程序获取这些事件,并将它们转换为键符号。然后,XInput 扩展使来自虚拟核心键盘从属的所有事件可用作普通 X 事件,而其他事件仅可用作 XInput 事件。

所以你有以下选择:

1) 设置自定义扫描码到键码映射。这些映射是针对每个设备的,因此这实际上是可能的,但这是通过 IOCTL 完成的,并且除了哈瓦德数据库udev。然后您可以在 中使用新的 keycides xkb。两个键盘都保留为核心键盘。

2) 扩展xbindkeys以理解 XInput 事件,因此您可以使用它来绑定来自非核心键盘的事件。这需要编程,但应该相对简单。在这种情况下,请像您已经完成的那样,将一个键盘与核心键盘分离。

相关内容