linux 读取input输入设备demo
2024-10-06 13:18:51
/*******************************************************************
* linux 读取input输入设备demo
* 说明:
* 本文主要是解读以前同事写的input设备的一个demo程序。
*
* 2016-3-24 深圳 南山平山村 曾剑锋
******************************************************************/ #include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <linux/input.h> int main(int argc, char **argv)
{
int fd;
struct input_event ev; // 判断参数
if (argc < ) {
printf("Usage: %s <input device>\n", argv[]);
return ;
} // 打开设备
fd = open(argv[], O_RDWR);
if (fd < ) {
printf("open %s", argv[]);
fflush(stdout);
perror(" ");
return ;
} // 循环读取
while() {
// 读取数据
read(fd, &ev, sizeof(struct input_event));
// 打印当前触发类型
printf("ev == %x \n",ev.type );
switch(ev.type) {
case EV_SYN:
printf("-------------------------\n");
break; // 按键
case EV_KEY:
printf("key down / up: %d \n",ev.code );
break; // 鼠标
case EV_REL:
printf("mouse: ");
if (ev.code == REL_X) {
printf(" x -- %d\n", ev.value);
} else if (ev.code == REL_Y) {
printf(" y -- %d\n", ev.value);
}
break; // 触摸屏
case EV_ABS:
printf("ts: ");
if(ev.code == ABS_X) {
printf(" x -- %d\n", ev.value);
} else if (ev.code == ABS_Y) {
printf(" y -- %d\n", ev.value);
} else if (ev.code == ABS_PRESSURE) {
printf(" pressure: %d\n", ev.value);
}
break;
}
}
close(fd); return ;
}
最新文章
- php入门part3
- /dev/random 和 /dev/urandom的一点备忘
- 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )
- English Snippets
- Qt之键盘讲解
- Nutch相关框架视频教程--说明
- Long 陷阱
- [置顶] 《算法导论》习题解答搬运&;&;学习笔记 索引目录
- hdu&#160;1162&#160;Eddy&#39;s&#160;picture(最小生成树,基础)
- 23讲 URL
- string string.h=cstring=str
- OC-nonatomic和atomic相关
- php解决json_encode输出GB2312中文问题 (数组)
- Java经典编程题50道之十七
- MyAdapter Andriod
- Prime 算法的简述
- Linux通过NFS实现文件共享
- Linux内核笔记:epoll实现原理(一)
- 模拟获取post数据的方式
- 使用Visual Studio Team Services敏捷规划和项目组合管理(三)——使用Kanban板