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

 

时间: 2024-09-20 12:26:26

linux 读取input输入设备demo的相关文章

蓝牙技术-蓝牙连接电子称读取重量的demo

问题描述 蓝牙连接电子称读取重量的demo 您好!您之前在百度问的<现在在研究一个蓝牙连接电子称读取重量的demo.但是研究了很久发现数据总是会有延迟,大概半秒左右.想问问各位大神,能否实现数据实时同步没有延迟的.>不知道您后来怎么解决的,我现在也是需要这么一个功能,您能不能,给我看一看demo..谢谢! 解决方案 延时,你首先要找到延时在哪里产生的?通过 BT 连接,进行数据传输,肯定会有一点延时的.具体时间,可能与你的程序处理,和 BT 模块数据数据延时有关.称重,有必要对时间要求那么严格

Linux SocketCan client server demo hacking

/*********************************************************************** * Linux SocketCan client server demo hacking * 说明: * 本文主要是解读Linux上的SocketCan的基本使用方法,内容和Linux上的 * 网络编程差不多. * * 2016-3-28 深圳 南山平山村 曾剑锋 ********************************************

linux内核input子系统解析【转】

作者:刘洪涛,华清远见嵌入式学院讲师.    转自:http://blog.csdn.net/hongtao_liu/article/details/5679171     Android.X windows.qt等众多应用对于linux系统中键盘.鼠标.触摸屏等输入设备的支持都通过.或越来越倾向于标准的input输入子系统.     因为input子系统已经完成了字符驱动的文件操作接口,所以编写驱动的核心工作是完成input系统留出的接口,工作量不大.但如果你想更灵活的应用它,就需要好好的分析

Linux读取原Windows磁盘分区

一.安装双系统时,必须确保先安装Windows ,然后安装Linux,否则Windows将不可用,由它们的文件系统决定的: 二.安装Linux系统成功后,可能需要读取原Windows系统的磁盘内容,则需要在Linux系统下安装NTFS-3G工具,无需手动挂载磁盘,实验系统(Centos7). 三.安装NTFS-3G:直接使用yum 即可,安装后,则可以在文档目录下看到原磁盘内容,之所以Linux无法查看到原磁盘,主要是不识别NTFS格式,安装工具后,你将发现其他盘作为它的U盘,可以安全移出,在系

NPOI读取Excel官方demo

关键代码: 读: HSSFWorkbook hssfworkbook; void InitializeWorkbook(string path) { //read the template via FileStream, it is suggested to use FileAccess.Read to prevent file lock. //book1.xls is an Excel-2007-generated file, so some new unknown BIFF records

读取input:file的路径并显示本地图片的方法_javascript技巧

复制代码 代码如下: <!doctype html> <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <title>Image preview example</title> <script type="text/javascript"> var

linux下小试redis demo

先启动  redis-server /etc/redis/redis.conf  package com.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.client

linux 读取物理寄存器

#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/mman.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h> int main(int argc, void** argv) { void* base; int fd, reg; fd = open("

关于Linux内核读取磁盘序列号的研究

一向的观点就是"别在内核里面处理字符串"!事实上,确实应该如此! Linux内核的块设备驱动有能力读取磁盘的序列号,这个数据存储在磁盘的控制芯片ROM里面.内核应该以怎样的形式将这个序列号呈现给调用者呢?我们ls一下这个目录: /dev/disk/by-id ll /dev/disk/by-id/ ... lrwxrwxrwx 1 root root 9 10月 17 10:11 scsi-SATA_ST3500413AS_Z2A2AGQA -> ../../sdb 可以看到,一