linux - 如何在 Linux 上捕获原始 HID 输入?

标签 linux hid

我想要完成的简短版本:我有一个作为通用 HID 设备实现的脚踏板(INFINITY-IN-USB-1,如果有兴趣的话),我希望它在 Linux 上表现为 CtrlAlt 键。我正在寻找 X 级别的东西,即不仅仅是单个程序。

加长版:我在 Windows XP 中通过调用 DLL 函数 RegisterRawInputDevicesGetRawInputData 并在隐藏的情况下监听输入来使此设置工作 window 。一切都通过一个相当简单的 AutoHotkey 来完成脚本(如果有人感兴趣,我可以在这里发布)。关键是,不需要任何额外的驱动程序等;只需要 native Windows DLL 文件。

我希望这个设置可以在 Linux 上运行(更具体地说是 GNOME 在 Ubuntu 下,但我偶尔会使用其他发行版/窗口管理器,因此非常感谢 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 或其他东西映射它们?

最佳答案

你会想要 uinput。您将在/dev/usb/hiddev0 上监听,然后创建将在 /dev/input/uinput 上发送的新事件。

这解释了它并提供了一个小教程: Using uinput driver in Linux- 2.6.x to send user input {这是 this 上提到的 EInfochips 的“仪表板”出版物 2007 年 1 月的“本月提示”文章存档页面}。

关于linux - 如何在 Linux 上捕获原始 HID 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/873975/

相关文章:

iphone - Ruby on Rails 是异步通知 iPhone 应用程序更新的解决方案吗?

python - python中的多服务器监视器/自动重启器

linux kallsyms R 符号不显示

linux - 如何在不创建父目录的情况下使用 wget 镜像目录?

javascript - 使用 webusb 声明 HID 设备

c++ - Logitech B100 鼠标的 HidD_GetAttributes 失败

linux - HID 设备的权限。为什么我的 udev 规则被忽略了?