当前位置: 首页>>技术教程>>正文


从bash脚本检测Ubuntu键盘

, ,

问题描述

请原谅我对Linux OS /硬件问题的无知…我只是一个程序员:)

我有一个应用程序,它可以调用某些bash脚本来启动外部应用程序,在本例中为Firefox。该应用程序在具有触摸屏功能的信息亭上运行。启动Firefox时,我还会启动一个虚拟键盘应用程序,该应用程序允许用户进行键盘输入。

但是,信息亭也同时具有PS /2和USB插槽,允许用户插入键盘。如果插入了键盘,那么如果我不必启动虚拟键盘并为Firefox窗口提供更多的屏幕空间,那就太好了。

我有什么方法可以检测bash脚本中是否插入了键盘?它会显示在/dev中吗?如果是,它将显示在一致的位置吗?如果用户使用PS /2或USB键盘,会有所不同吗?

谢谢!

最佳方法

对于USB设备,您可以使用lsusb并搜索具有键盘协议(接口协议1)的人机接口设备(接口类别3),例如

$ lsusb -v
... loads of stuff deleted ...
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
... loads of stuff deleted ...

另外,您可以让udev帮助您。列出/dev/input/by-path/下的设备,键盘设备以-kdb结尾(至少在Ubuntu中,由udev规则指定),例如

$ ls -l /dev/input/by-path/*-kbd
lrwxrwxrwx 1 root root 9 2010-03-25 09:14 /dev/input/by-path/pci-0000:00:1a.2-usb-0:1:1.0-event-kbd -> ../event4

$ ls -l /dev/input/by-path/*-kbd
lrwxrwxrwx 1 root root 9 2009-08-29 09:46 /dev/input/by-path/platform-i8042-serio-0-event-kbd -> ../event1

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10244.html,未经允许,请勿转载。