码迷,mamicode.com
首页 > 系统相关 > 详细

linux 读取input输入设备demo

时间:2016-03-24 13:06:56      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

/*******************************************************************
 *                   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 < 2) {
        printf("Usage: %s <input device>\n", argv[0]);
        return 0;
    }

    // 打开设备
    fd = open(argv[1], O_RDWR);
    if (fd < 0) {
        printf("open %s", argv[1]);
        fflush(stdout);
        perror(" ");
        return 0;
    }

    // 循环读取
    while(1) {
        // 读取数据
        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 0; }

 

linux 读取input输入设备demo

标签:

原文地址:http://www.cnblogs.com/zengjfgit/p/5314984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!