zoukankan      html  css  js  c++  java
  • EVIOCGNAME:Get Device Name

               linux内核提供了一个Input子系统来实现的,Input子系统会在/dev/input/路径下创建我们硬件输入设备的节点,一般情况下在我们的手机中这些节点是以eventXX来命名的,如event0,event1等等,可以利用EVIOCGNAME获取此事件结点名称。这就是android中对于input事件处理数据的来源点


    ---------------


    通过ioctl命令EVIOCGNAME,能获取dev/input/event*对应的Device Name

     

    实例:


    openInput(const char* inputName) {
        int fd = -1;
        const char *dirname = "/dev/input";
        char devname[PATH_MAX];
        char *filename;
        DIR *dir;
        struct dirent *de;
        dir = opendir(dirname);
        if(dir == NULL)
            return -1;
        strcpy(devname, dirname);
        filename = devname + strlen(devname);
        *filename++ = '/';
        while((de = readdir(dir))) {
            if(de->d_name[0] == '.' &&
                    (de->d_name[1] == '' ||
                            (de->d_name[1] == '.' && de->d_name[2] == '')))
                continue;
            strcpy(filename, de->d_name);
            fd = open(devname, O_RDONLY);
            if (fd>=0) {
                char name[80];
                if (ioctl(fd, EVIOCGNAME(sizeof(name) - 1), &name) < 1) {
                    name[0] = '';
                }
                if (!strcmp(name, inputName)) {
                    break;
                } else {
                    close(fd);
                    fd = -1;
                }
            }
        }
        closedir(dir);
        LOGE_IF(fd<0, "couldn't find '%s' input device", inputName);
        LOGI_IF(fd>=0, "Found '%s' input device in %s", inputName, dirname);
        return fd;

    }


    ===========================

    http://blog.csdn.net/andyhuabing/article/details/7006688





  • 相关阅读:
    C陷阱与缺陷学习笔记
    C陷阱与缺陷学习笔记
    Linux Socket编程(不限Linux)
    Linux Socket编程(不限Linux)
    Windows API 教程(九) 网络编程
    Windows API 教程(九) 网络编程
    sockaddr与sockaddr_in的关系
    winsocket入门学习
    09-C语言数组
    08-C语言循环
  • 原文地址:https://www.cnblogs.com/liulaolaiu/p/11744620.html
Copyright © 2011-2022 走看看