我想要完成的简短版本:我有一个作为通用 HID 设备实现的脚踏板(INFINITY-IN-USB-1,如果有兴趣的话),我希望它的行为Ctrl和Alt按键一样Linux。我正在寻找 X 级别的东西,即不仅仅是单个程序。
更长的版本:我通过调用 DLL 函数RegisterRawInputDevices和GetRawInputData并在隐藏窗口中侦听输入,使此设置在 Windows XP 中工作。这一切都是通过一个相当简单的AutoHotkey脚本完成的(如果有人感兴趣,我可以在这里发布)。关键是,不需要任何额外的驱动程序等;只需要本机 Windows DLL 文件。
我希望这个设置可以在 Linux 上运行(更具体地说是 Ubuntu 下的GNOME,但我偶尔会使用其他发行版/窗口管理器,因此感谢 X 级别的解决方案)。此脚踏板不会将自己注册为键盘甚至操纵杆,而是使用 UsagePage 12,Usage 3 注册为 HID 设备。
我注意到最新的 Ubuntu 可以检测和使用Microsoft Natural Keyboard上最喜欢的键,这些键也注册为 HID 设备*。我使用与使用脚踏板相同的方法在 Windows 上使用这些键(即,没有捆绑软件)。所以我假设这个踏板也可以在 Linux 上运行,但问题是如何?
(我对 Linux 上的低级内容不熟悉,所以请在适用时提供介绍或教程的链接。)
* 对于不知情的人,Microsoft Natural Keyboard 注册为常规键盘和通用 HID 设备。如果某些应用程序(例如捆绑应用程序)不知道如何解释 HID 输入,则常规键将起作用,但收藏夹键和特殊功能键无用。
澄清一下,Linux没有将踏板按下视为输入。它确实可以识别 USB 设备,但xev没有为踏板按下提供任何输出。我已经看到有人在Wine下成功使用踏板进行转录软件的报告,但这必须以 Windows 方式工作,并且不能提供我想要的(这使得踏板看起来像所有本地 Linux 应用程序的键盘)。是否需要一些低级 Linux 键盘驱动程序?
这里有一些更多信息:如果我在终端发出这个
cat /dev/usb/hiddev0
(dev/usb/hiddev0
是我的踏板),我得到与我的踏板压力相对应的原始代码。这是一个开始。我知道这些原始代码是什么意思:在二进制中,0001、0010、0100 分别对应于每个踏板,踏板按下的组合发送这些二进制数的组合,并释放仍然按下的任何踏板的踏板触发输入(如果全部踏板抬起,发送 0000)。
我怎样才能让 X 收听dev/usb/hiddev0
原始代码并将其翻译成可能的特殊键码,以便我可以使用 xmodmap 或其他东西映射它们?