当前位置:首页 > 操作系统 > Linux

linux 读取input输入设备demo

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

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

    // 循环读取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 -- %dn", ev.value); } elseif (ev.code == REL_Y) { printf(" y -- %dn", ev.value); } break; // 触摸屏case EV_ABS: printf("ts: "); if(ev.code == ABS_X) { printf(" x -- %dn", ev.value); } elseif (ev.code == ABS_Y) { printf(" y -- %dn", ev.value); } elseif (ev.code == ABS_PRESSURE) { printf(" pressure: %dn", ev.value); } break; } } close(fd); return0; }

 

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


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!