2012-08-29 19 views
2

我正在使用此代碼在Linux中讀取鼠標輸入事件。動態查找/ dev/input/event中的鼠標事件ID *

 #define MOUSEFILE "/dev/input/event13" 

     if((fd = open(MOUSEFILE, O_RDONLY)) == -1) { 
     perror("opening device"); 
     exit(EXIT_FAILURE); 
     } 

     while(read(fd, &ie, sizeof(struct input_event))) 
     { 

     } 

我手動使用cat /proc/bus/input/devices在終端找到我連鼠標的事件ID,它是不同的每次我重新啓動Linux操作系統。有沒有辦法通過我可以動態地找到我連接的鼠標的事件ID。

+1

正確的方法是編寫一個自定義udev規則。 ...但是!...爲什麼不使用'/ dev/input/mice'? –

+0

這是否與輸入事件的格式相同/ dev/input/event *,因爲我已經寫了一個長代碼並且不想改變它。 – rajat

+0

不,它不共享相同的格式。 –

回答

1

您可以使用自定義udev規則保持相同的設備名稱。例如,請參閱this

Essentally,只是/etc/udev/rule.d下建立一個檔案,這樣的事情:

KERNEL=="event*", SYSFS{manufacturer}=="Microsoft", SYSFS{idProduct}=="0023", NAME="input/mstrackball" 

您可以找到您的sysfs產品ID和其他東西。

+0

哦,很酷。謝謝 。 – rajat