簡體   English   中英

如何在Ubuntu Jaunty下從HID設備讀取事件?

[英]How do I read events from a HID device under Ubuntu Jaunty?

我有一個Linux USB HID設備( Hama MCE ),我可以通過讀取cat /dev/input/event7cat /dev/input/event8手動讀取它的事件。 每當我按下設備上的某個鍵時,就可以使用上面的某個cat命令讀取幾個字節。 我在機器上默認安裝了Ubuntu Jaunty 64位桌面。

我想我可以編寫一個解析器來解釋設備發出的字節,或者如果它更方便的話我會使用libhid

我的問題是:

  1. 如何防止文本模式虛擬控制台接收設備上的某些按鍵作為普通按鍵? 截至目前,某些設備鍵會產生EnterBackSpacePageUp或數字小鍵盤數字。
  2. 同樣,如何阻止X服務器從此設備接收鍵盤和鼠標事件? 我有幾個USB鍵盤和鼠標連接到計算機。 我希望X服務器接收來自所有這些設備的事件,除了這個設備。
  3. 如何設置每當設備連接到計算機時,命令/usr/local/bin/keydumper /dev/input/event7 /dev/input/event8 (或每個/dev/ path一個命令)將獲得運行,在命令行中替換正確的/dev/ paths?

根據Linux USB HID驅動程序開發人員的回答回答我自己的問題:

問題1和2:做

ioctl(open("/dev/input/event7", O_RDONLY), EVIOCGRAB, 1);

只要此文件句柄處於打開狀態,生成的事件將僅發送到此文件句柄(不會發送到同一設備的其他open()或系統鍵盤或鼠標事件池)。 一次最多只有一個進程可以在HID設備上保存成功的EVIOCGRAB。 Lirc可以配置為執行EVIOCGRAB。

問題3:配置udev以在連接設備后啟動程序。

我沒有足夠的觀點悲傷地評論。

如果您正在尋找EVIOCGRAB的定義,請嘗試

    #include <linux/input.h>

我認為所有問題的解決方案都可以為您的設備編寫自己的過濾設備驅動程序或自定義驅動程序。 我知道Windows上有這樣的東西(過濾設備驅動程序),所以類似的東西可以在Linux上。 在那個過濾設備驅動程序中,你可以阻止你想要阻止的目標設備中的所有不需要的事件,我真的沒有得到3個問題,所以我不知道如何回答這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM