如何获取按下的键盘键的 USB HID ID

如何获取按下的键盘键的 USB HID ID

我想做的是:获得USB HID ID当我按下我的真正符合人体工程学 键盘有能力去重新编程固件键盘。

我知道有这个来自微软的列表具有大量 USB HID ID。

但是,只需键入并查看程序中显示的键 ID 即可更轻松地找到键的 ID。尤其是对于某些媒体键,我在 Microsoft 的列表中找不到这些键。

有这样的程序吗?可能是命令行程序。Linux 是首选,但 Windows 也是一个选择。

PS:我已经看到了,这个问题/dev/usb/hiddev0stackoverflow 上有一个有趣的答案。但我在我的系统 (Fedora 17) 上找不到。

更新

这个问题@Andy Ross 的回答至少帮助我在按下按键时获得了一些输出。我做到了

xxd -c 144 /dev/input/by-path/pci-0000:00:1a.0-usb-0:1.1:1.0-event-kbd

但它仍然不太好读。当我按下相同的键时,结果并不总是相同的。

更新2

这个问题Apython 脚本已链接,它读取输入设备并应打印它。但在工作电脑上,我没有权限使用此 python 脚本访问该设备。

答案1

答案是

su -c "while true; do od --read-bytes=144 --width=144 -x /dev/input/event3 | awk 'NF > 1 { print \$12 }'; done"

说明

使用 tree 命令我发现了这一点

$ tree /dev/input/by-path
/dev/input/by-path/
├── pci-0000:00:1a.0-usb-0:1.1:1.0-event-kbd -> ../event3
├── pci-0000:00:1a.0-usb-0:1.1:1.1-event -> ../event4
├── pci-0000:00:1d.2-usb-0:1:1.0-event-mouse -> ../event2
└── pci-0000:00:1d.2-usb-0:1:1.0-mouse -> ../mouse0

好的,/dev/input/event3也是我的键盘

od命令以八进制和其他格式转储文件。

  • 使用该-x选项,它会转储十六进制。
  • 并且使用该--width=144选项时每按一次键仅转储一行(一行长 144 字节)。
  • 144 字节后选项--read-bytes=144退出。od

awk命令打印整行中的第 12 个字段。仅当字段数NF大于 1 时才会打印,因为每隔一行就有一个换行符。

整个循环while true的原因是,如果我输入一些字母键,它就会中断。我没有得到更多结果,只有0000。但是od命令在 144 字节(一次按键)后停止读取。之后它会重新启动。肯定有更好的解决方案,但这是一个很好的解决方法。

示例输出(我按了几次ReturnRightCtrlBackspace,这样在与此进行比较时就可以得到正确的数字来自微软的文档(PDF)或者此文本文件文档

0028
0028
0028
00e4
00e4
00e4
002a
002a
002a

答案2

xev在 Linux 中将会帮助你。

祝你好运。

相关内容