Ubuntu

來自 bash 腳本的 Ubuntu 鍵盤檢測

  • January 7, 2018

請原諒我對 linux 作業系統/硬體問題的無知…我只是一個程序員 :)

我有一個應用程序呼叫一些 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

引用自:https://serverfault.com/questions/126291