一、获取/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. 布局常见问题之css实现多行文本溢出显示省略号(…)全攻略

    省略号在ie中可以使用text-overflow:ellipsis了,但有很多的浏览器都需要固定宽度了,同时ff这些浏览器并不支持text-overflow:ellipsis设置了,下文来给各位整理一 ...

  2. form里面的action和method(post和get的方法)使用

    一.form里面的action和method的post使用方法 <%@ Page Language="C#" AutoEventWireup="true" ...

  3. qml 中 使用 shader

    使用绘制工具如Photoshop .Flash已经可以创建许多效果非常绚丽的图像.动画等. Qt/QML 的努力其实是在这些工具发展的后面, 因此很多效果在Qt中无法实现. 不得不佩服Qt小组的才智, ...

  4. ggplot2 scale相关设置2—时间设置

    在scale设置中,常用的日期方面的设置函数包括: scale_x_date(),scale_y_date(),scale_x_datetime(),scale_y_datetime()   接下来, ...

  5. 向openwrt 源码添加ap143支持

    借鉴地址:http://www.pppei.net/blog/post/536 1.向文件 \target\linux\ar71xx\generic\profiles\atheros.mk 中添加ap ...

  6. Linux中如何设置java环境变量

    这里介绍Linux下如何设置java环境变量. 工具/原料 Linux java环境变量 方法/步骤 1 查看java的安装路径   查看java执行路径   配置java环境变量   java的安装 ...

  7. 驱动力—— 通信引擎(上)—— ESFramework 4.0 进阶(03)

    在ESFramework 4.0 进阶(02)-- 核心:消息处理的骨架流程一文中我们详细介绍了ESFramework中消息处理的骨架流程,并且我们已经知道,ESFramework中的所有通信引擎使用 ...

  8. 实现类似QQ自拍头像的功能(demo源码)

    在很多软件系统中,都允许用户设置自己的头像,甚至可以直接使用摄像头照相作为自己的头像,就像QQ的自拍头像功能一样. 这种功能是如何实现的了?最直接的,我们可以使用Windows提供的VFW技术或Dir ...

  9. $each $position $sort $slice

    $push 向数组中添加元素 $each 循环数据(循环添加数据到数组) $sort 对数组进行排序(1:升序:-1:降序.) $slice 对整个collection表进行数据裁减,用的时候一定要当 ...

  10. C - 小Y上学记——认识新同学

    C - 小Y上学记——认识新同学 Time Limit: 4000/2000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others) ...