2012-03-02 89 views
0

我有一個藍牙遠程與我的Linux機箱配對,當處於活動狀態時,此遠程可見於/dev/input/event13處理輸入設備插入/拔出時讀取它

我有一個小C程序,open這個設備,並直接從它讀取,它工作正常。

現在,我的問題是,這個遠程進入睡眠狀態,幾分鐘後不活動,/dev/input/event13消失。只要按遙控器上的按鍵,它就會重新出現。

我把udevadm的輸出放在這裏:https://gist.github.com/9fff2f0d7edef1050060

我使用下面的代碼(我寫的小紅寶石分機),從設備讀取:https://gist.github.com/b403d538eb6a8627e2bd

我想寫一個udev規則,當我的遙控器被添加時啓動我的程序,當它被移除時停止它。我閱讀了udev文檔,但我無法弄清楚如何去做。我接受建議。

+0

如何在/ dev/input上使用inotify來檢查新創建的文件?所以你的程序永遠不會退出,它必須檢查文件是否存在,然後讀取,直到設備文件消失,並使用inotify來知道設備文件是否再次出現。 – 2012-03-02 10:57:23

+0

這可以工作,但問題是設備名稱會不時變化。之前是event13,現在是event4。 – 2012-03-02 11:22:16

回答

1

一些挖掘和很多的挫折後,我做了以下內容:

我投入/etc/udev/rules.d/99-rmote.rules

KERNEL=="event*", SUBSYSTEM=="input", ACTION=="add|remove", ATTRS{name}=="TiVo Keyboard Remote", RUN+="/home/kuon/handleConnect.rb" 

而在handleConnect.rb我檢查ACTION環境變量,我開始/因此停止我的守護進程。非常簡單,最終效果很好。