input子系统基础之按键2——input设备应用层编程实践
生活随笔
收集整理的這篇文章主要介紹了
input子系统基础之按键2——input设备应用层编程实践
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
以下內(nèi)容源于朱有鵬《物聯(lián)網(wǎng)大講堂》課程的學(xué)習(xí),如有侵權(quán),請告知刪除。
一、input設(shè)備應(yīng)用層編程實踐1
1、確定設(shè)備文件名
(1)應(yīng)用層操作驅(qū)動有2條路:/dev目錄下的設(shè)備文件,/sys目錄下的屬性文件
(2)input子系統(tǒng)用的/dev目錄下的設(shè)備文件,具體一般都是在 /dev/input/eventn
(3)用cat命令來確認某個設(shè)備文件名對應(yīng)哪個具體設(shè)備。
- 實測的鍵盤是event1,而鼠標(biāo)是event3。
2、標(biāo)準(zhǔn)接口打開并讀取文件
3、解析struct input_event
#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <linux/input.h> #include <string.h>#define DEVICE_KEY "/dev/input/event1" #define DEVICE_MOUSE "/dev/input/event3"int main(void) {int fd = -1, ret = -1;struct input_event ev;// 第1步:打開設(shè)備文件fd = open(DEVICE_KEY, O_RDONLY);if (fd < 0){perror("open");return -1;}while (1){// 第2步:讀取一個event事件包memset(&ev, 0, sizeof(struct input_event));ret = read(fd, &ev, sizeof(struct input_event));if (ret != sizeof(struct input_event)){perror("read");close(fd);return -1;}// 第3步:解析event包,才知道發(fā)生了什么樣的輸入事件printf("%s.\n", (unsigned char *)&ev); }// 第4步:關(guān)閉設(shè)備close(fd);return 0; }二、input設(shè)備應(yīng)用層編程實踐2
1、解析鍵盤事件數(shù)據(jù)、鼠標(biāo)事件數(shù)據(jù)
即更換設(shè)備文件,第三步換成下面代碼,運行查看。
// 第3步:解析event包,才知道發(fā)生了什么樣的輸入事件printf("-------------------------\n");printf("type: %hd\n", ev.type);printf("code: %hd\n", ev.code);printf("value: %d\n", ev.value);printf("\n");
2、事件類型分析(type)
總結(jié)
以上是生活随笔為你收集整理的input子系统基础之按键2——input设备应用层编程实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: layui上传文件请求接口异常_Spri
- 下一篇: 服务器系统server 2008,win