一、获取/dev/input/event16设备的vid和pid

testhid.c

  1. #include <linux/types.h>
  2. #include <linux/input.h>
  3. #include <linux/hidraw.h>
  4. #include <sys/ioctl.h>
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. #include <fcntl.h>
  8. #include <unistd.h>
  9. #include <poll.h>
  10. #include <time.h>
  11. #include <math.h>
  12. #include <stdio.h>
  13. #include <stdint.h>
  14. #include <string.h>
  15. #include <stdlib.h>
  16. #include <errno.h>
  17. int main(){
  18. char filename[64];
  19. strcpy(filename,"/dev/input/event16");
  20. char name[80];
  21. int fd = open(filename, O_RDWR /*| O_NONBLOCK*/);
  22. if(fd <= 0) {
  23. printf("TK----------->>>>open error\n");
  24. return -1;
  25. }
  26. /////////
  27. struct input_id inputId;
  28. int rc = ioctl(fd, EVIOCGID, &inputId);
  29. printf("TK-------->>>>info.vendor is 0x%x\n",inputId.vendor);
  30. printf("TK-------->>>>info.product is 0x%x\n",inputId.product);
  31. printf("TK-------->>>>info.bustype is 0x%x\n",inputId.bustype);
  32. /*
  33. struct hidraw_devinfo info;
  34. int rc = ioctl(fd, HIDIOCGRAWINFO, &info);
  35. printf("TK-------->>>>info.vendor is 0x%x\n",info.vendor);
  36. printf("TK-------->>>>info.product is 0x%x\n",info.product);
  37. printf("TK-------->>>>info.bustype is 0x%x\n",info.bustype);
  38. */
  39. ///////////
  40. struct hidraw_report_descriptor descriptor;
  41. rc = ioctl(fd, HIDIOCGRDESC, &descriptor);
  42. printf("TK-------->>>>descriptor.size is 0x%04x\n",descriptor.size);
  43. //////
  44. int descriptorSize=0;
  45. rc = ioctl(fd, HIDIOCGRDESCSIZE, &descriptorSize);
  46. printf("TK-------->>>>descriptorSize is 0x%04x\n",descriptorSize);
  47. //////
  48. name[sizeof(name) - 1] = '\0';
  49. if(ioctl(fd, EVIOCGNAME(sizeof(name) - 1), &name) < 1) {
  50. name[0] = '\0';
  51. }
  52. printf("TK------->>>name is %s\n",name);
  53. //////
  54. close(fd);
  55. return 0;
  56. }

二、编译

Android.mk

  1. LOCAL_PATH:= $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_SRC_FILES:= \
  4. testhid.c
  5. LOCAL_SHARED_LIBRARIES := \
  6. libutils
  7. LOCAL_MODULE:= testinput
  8. LOCAL_MODULE_TAGS := optional
  9. include $(BUILD_EXECUTABLE)

三、运行

    1. TK-------->>>>info.vendor is 0x0
    2. TK-------->>>>info.product is 0x1
    3. TK-------->>>>info.bustype is 0x19
    4. TK-------->>>>descriptor.size is 0x0000
    5. TK-------->>>>descriptorSize is 0x0000
    6. TK------->>>name is Power Button

获取输入设备的vid和pid的更多相关文章

  1. 通过串口设备vid,pid自动获得该设备所对应的串口号

    用C#做串口通讯很方便,因为dotfx2.0已经集成了Serial Port控件,此控件使用上比MSComm控件更简单,当然它也有一个小bug (RecievedBytesThreshold设置有时候 ...

  2. 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop

    [源码下载] 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop 作者:weba ...

  3. USB的VID和PID,以及分类(Class,SubClass,Protocol)

    USB(Universal Serial BUS,通用串行总线)协议规定,所有的USB设备都有VID(Vendor ID,供应商识别码)和PID(Product ID,产品识别码).VID由供应商向U ...

  4. 去确认CP210x UART Bridge的USB的VID和PID

    [背景] 之前买的USB口的HART猫: [记录]为USB接口的HART猫ExSaf ESH232U安装对应的USB转RS232驱动 其中内部是USB转RS232. 然后打算去看看之前的自己此处的某个 ...

  5. 浅谈USB设备的VID和PID

    根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备,VID和PID都是两个字节长,其中,供应商ID(VID)由供应商向U ...

  6. (转)USB的VID和PID,以及分类(Class,SubClass,Protocol)

    USB的VID和PID,以及分类(Class,SubClass,Protocol) 原文地址:http://blog.csdn.net/gaojinshan/article/details/78783 ...

  7. VID和PID

    今天很在一份datasheet上突然看到 VID 和 PID 很奇怪!!还不是很懂!!! 参考:https://blog.csdn.net/gaojinshan/article/details/787 ...

  8. Linux下查看USB设备的VID、PID命令

    Linux下查看PID命令 cat /proc/bus/usb/devices 或 lsusb 方法一:在/etc/init.d/rcS中添加mount -t usbfs none /proc/bus ...

  9. 获取服务进程server.exe的pid(0号崩溃)

    #include "stdafx.h" #include <windows.h> #include <iostream> #include <COMD ...

随机推荐

  1. .net技术深入

    程序集(Assembly),可以看做是一堆相关类打一个包,相当于java中的jar包(*).打包的目的:程序中只引用必须的程序集,减小程序的尺寸:一些程序集内部的类不想让其他程序集调用. 我们调用的类 ...

  2. 京东的SSO

    京东的sso流程: 初始访问状态: cookies: http请求: 1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc(可以试试在提交登陆信息前删除该co ...

  3. 实验吧Web-PHP大法

    笔记 字符串比对解析,与大小写无关. eregi()函数 语法: eregi(string pattern, string string, array [regs]); 返回值: 整数/数组 特点:P ...

  4. 第六十九节,css入门基础

    css入门基础 学习要点: 1.使用CSS 2.三种方式 3.层叠和继承 本章主要探讨HTML5中CSS (层叠样式表),它是用来对HTML文档外观的表现形式进行排版和格式化. 一 使用CSS CSS ...

  5. 浙大 pat 1023题解

    1023. Have Fun with Numbers (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  6. web.py 学习(-)Rocket web框架

    Rocket是一个轻量级,多线程,符合WSGI规范的web框架. Rocket使用一个线程监听连接,接收到连接之后放到Queue中,有worker线程进行处理. Rocket含有以下属性: metho ...

  7. ActiveMQ in Action(4) - Security

    关键字: activemq 2.4 Security    ActiveMQ支持可插拔的安全机制,用以在不同的provider之间切换.2.4.1 Simple Authentication Plug ...

  8. 深入理解Java内存模型 - volatile

    volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这 ...

  9. LeetCode OJ 73. Set Matrix Zeroes

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. click ...

  10. Openjudge-计算概论(A)-求满足条件的3位数

    描述: 编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: 1.该数为完全平方数 2.该数至少有2位数字相同 例如,100同时满足上面两个条件. 输入输入一个数n,n的大小不超过实 ...