我想要实现的简短版本:我有一个脚踏板(INFINITY-IN-USB-1,如果这有任何兴趣),它被实现为通用HID设备,我希望它在Linux上表现为Ctrl和Alt键。 我正在寻找X级别的解决方案,即不仅仅是单个程序。
更长版本:通过调用DLL函数RegisterRawInputDevices和GetRawInputData并在隐藏窗口中监听输入,在Windows XP中已经设置好了。所有这些都可以通过相当简单的AutoHotkey脚本完成(如果有人感兴趣,我可以在这里发布)。 关键是,没有任何额外的驱动程序等需求; 只需要本机的Windows DLL文件。
我希望在Linux上(更具体地说是Ubuntu下的GNOME,但我偶尔也会使用其他发行版/窗口管理器)使此设置工作。 这个脚踏板不会注册为键盘甚至游戏手柄,而是作为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 或其他东西来映射它们?