首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Linux 驅動開發:應用層讀取 USB 鼠標 Input 事件

     編輯:程式設計疑難解答

背景

已編寫 USB 鼠標驅動,通過 Input 子系統上報事件,hexdump /dev/input/eventX 驗證正常。現需編寫應用程序讀取該事件流。

讀取方法

Linux 中 Input 事件設備即字符設備文件(/dev/input/event*),應用層可直接 open()、read() 獲取 struct input_event 結構體數組。

關鍵代碼框架

#include <linux/input.h>
#include <fcntl.h>
#include <unistd.h>

int fd = open("/dev/input/event2", O_RDONLY);
struct input_event ev;
while (read(fd, &ev, sizeof(ev)) == sizeof(ev)) {
    if (ev.type == EV_REL) { // 相對移動
        if (ev.code == REL_X) printf("X: %d\n", ev.value);
        if (ev.code == REL_Y) printf("Y: %d\n", ev.value);
    } else if (ev.type == EV_KEY) { // 按鍵
        printf("Btn %d %s\n", ev.code, ev.value ? "down" : "up");
    }
}
close(fd);

注意事項

  • 需確認具備讀取權限(通常需 root 或屬 input 組)。
  • 可用 libevdev 等封裝庫簡化解析。
  • 觸摸屏常用 tslib,鼠標直接讀取 Input 事件即可,無需額外庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved