关于筛选输入设备的设备节点
来源:互联网 发布:斗鱼盛典 知乎 编辑:程序博客网 时间:2024/04/30 08:12
对于一些输入设备,尤其是热插拔的USB设备,其会自动生成或者关联设备节点--/dev/input/eventX(X = 0,1,2,...),这时候,我们需要找到我们要操作的目标设备节点,下面是一个示例,可以根据输入设备的name域判断.如下:
/*Function: This Demo Is To Detect What The Input Types Is--Base on The Input-Name.Author: SE7ENDate: 2014-2-14*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#include <dirent.h>#include <fcntl.h>#include <sys/ioctl.h>#include <sys/inotify.h>#include <unistd.h>#include <sys/poll.h>#include <linux/input.h>#include <errno.h>static int open_input_event(const char *inputpath,int flags){ return open(inputpath,flags);}static void close_input_event(int inputfd){ close(inputfd);}static int get_inputevent_name(int inputfd,char *event_name,int len){ int ret = -1; ret = ioctl(inputfd,EVIOCGNAME(len - 1 ),event_name); if(ret < 0) perror("Get Event Name Fail:"); else printf("You Are So Lucky.\n"); return ret;}int main(int argc,char **argv){ char event_name[100] = {'\0'}; int inputfd = -1,ret = -1; if(argc != 2) { printf("Pls Input EventPath,Such As /dev/input/event0/1/2\n"); exit(1);//return -1; } inputfd = open_input_event(argv[1],O_RDONLY); if(inputfd < 0) { perror("Open Input Event Fail:"); exit(1); } ret = get_inputevent_name(inputfd,event_name,sizeof(event_name)); if(ret < 0) exit(1); printf("%s named %s\n",argv[1],event_name); close_input_event(inputfd); return 0;}
可以直接GCC编译,运行如下:
You Are So Lucky./dev/input/event0 named Lid Switch
0 0
- 关于筛选输入设备的设备节点
- 关于设备节点的问题
- 输入设备节点自动生成
- Android 的设备节点
- Android 的设备节点
- Android 的设备节点
- 笔记本的输入设备
- 设备节点
- 设备节点
- 设备节点
- 设备节点的动态建立
- 设备节点的动态建立
- 设备文件节点的生成
- 设备文件节点的生成
- 设备节点的自动创建
- linux设备节点的理解
- 02 关于设备号,设备节点等一些简单概念
- 设备节点和设备堆栈
- Unity3D-深入剖析NGUI的游戏UI架构
- SGLTE and SVLTE
- OpenCV鼠标画图例程,鼠标绘制矩形
- (转)getSharePreference和getDefaultSharePreference的区别
- C#入门讲解(二)
- 关于筛选输入设备的设备节点
- ffmpeg文档学习
- 小结(重新创建新的CRM组织)
- vc 文件版本获取
- 视音频编解码基本术语及解释
- SQL Server中的锁
- jQuery Mobile 页面过渡
- malloc Assertion错误
- 枚举符号链接