我有当前的设置:
- 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 事件,因此您可以使用它来绑定来自非核心键盘的事件。这需要编程,但应该相对简单。在这种情况下,请像您已经完成的那样,将一个键盘与核心键盘分离。