/*******************************************************************
* 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 ;
}

最新文章

  1. php入门part3
  2. /dev/random 和 /dev/urandom的一点备忘
  3. 操作文件方法简单总结(File,Directory,StreamReader,StreamWrite )
  4. English Snippets
  5. Qt之键盘讲解
  6. Nutch相关框架视频教程--说明
  7. Long 陷阱
  8. [置顶] 《算法导论》习题解答搬运&amp;&amp;学习笔记 索引目录
  9. hdu&#160;1162&#160;Eddy&#39;s&#160;picture(最小生成树,基础)
  10. 23讲 URL
  11. string string.h=cstring=str
  12. OC-nonatomic和atomic相关
  13. php解决json_encode输出GB2312中文问题 (数组)
  14. Java经典编程题50道之十七
  15. MyAdapter Andriod
  16. Prime 算法的简述
  17. Linux通过NFS实现文件共享
  18. Linux内核笔记:epoll实现原理(一)
  19. 模拟获取post数据的方式
  20. 使用Visual Studio Team Services敏捷规划和项目组合管理(三)——使用Kanban板

热门文章

  1. FIFO、LRU、OPT这三种置换算法的缺页次数
  2. (转)Qt Model/View 学习笔记 (七)——Delegate类
  3. eclipse里maven项目An error occurred while filtering resources解决办法(转载)
  4. python logging 日志轮转文件不删除问题
  5. Linux 配置Samba
  6. 用火狐打开PDF文件
  7. DB天气app冲刺第九天
  8. Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
  9. linux编程之线性表
  10. 关于Oracle数据库中SQL空值排序的问题