如何访问嵌入式设备中的键盘

如何访问嵌入式设备中的键盘

我正在使用带有触摸屏显示屏的嵌入式设备,但到目前为止,还没有键盘。有一个可通过用户无法访问的连接器访问的控制台。该设备还有一个 USB 端口,我已将条形码扫描仪连接到该端口,该扫描仪枚举为 CDC/ACM 类设备,创建 /dev/ttyACM0。在控制台上,我可以“cat ttyACM0”,扫描条形码,然后查看控制台上打印的结果。当然,实际的应用程序代码要复杂一些,但本质是相同的:打开/dev/ttyACM0,读取它,将数据传递给UI。

现在我有一个磁卡读卡器,它可以非常成功地枚举为 USB HID 键盘。如果插入 Windows,我可以打开记事本,刷卡,然后看到显示的数据,就像我在键盘上输入的一样。但到目前为止,我一直无法找到一种像条形码扫描仪一样简单的方法来查看键盘数据。

当读卡器枚举时,我确实看到 /dev/input/event1 出现。如果我抓住它(实际上是 od -x 它),我会看到我期望的事件并且可以写一个解释器。 drivers/tty/vt/keyboard.c 代码也可以看到这些事件,因为我能够编写一个执行 register_keyboard_notifier() 的模块。我的回调被调用,并向我提供了 KBD_KEYSYM 消息,其中处理 SHIFT 键,扫描码已被解释并转换为 ASCII 字符。我可以进一步增强我的模块来创建我自己的“/dev/keyboard”条目等。但我一直觉得我不应该做任何这些工作,并且我可以在我的用户态代码中做一些简单直接的事情查看这些 ASCII 击键的方式与我的用户区代码打开然后从 /dev/ttyACM0 读取以查看条形码扫描仪输出的方式相同。

更新:“时间不等人。”,我的项目经理也不等人。本质上,其他几个论坛上的其他人也问过同样的问题,但没有答案,所以也许没有答案?无论如何,我只是继续编写了一个驱动程序,所以现在有一个我可以很好地读取的/dev/magcard。

相关内容