• 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>
    ", 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 
    ",ev.type );   
    switch(ev.type) { case EV_SYN: printf("------------------------- "); break; // 按键 case EV_KEY: printf("key down / up: %d ",ev.code ); break; // 鼠标 case EV_REL: printf("mouse: "); if (ev.code == REL_X) { printf(" x -- %d ", ev.value); } else if (ev.code == REL_Y) { printf(" y -- %d ", ev.value); } break; // 触摸屏 case EV_ABS: printf("ts: "); if(ev.code == ABS_X) { printf(" x -- %d ", ev.value); } else if (ev.code == ABS_Y) { printf(" y -- %d ", ev.value); } else if (ev.code == ABS_PRESSURE) { printf(" pressure: %d ", ev.value); } break; } } close(fd); return 0; }
  • 相关阅读:
    启动WCF多个服务方法
    获取本机内存使用信息、DataTable占用内存空间
    分享到微博代码
    EXCEL拼接SQL
    动态调用webservice及WCF服务
    整洁架构
    端口与适配器架构
    清晰架构
    EBI架构 VS. MVC
    查看Oracle加锁情况及解锁方法
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5314984.html
Copyright © 2020-2023  润新知