获取输入设备的vid和pid
一、获取/dev/input/event16设备的vid和pid
testhid.c
- #include <linux/types.h>
- #include <linux/input.h>
- #include <linux/hidraw.h>
- #include <sys/ioctl.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <poll.h>
- #include <time.h>
- #include <math.h>
- #include <stdio.h>
- #include <stdint.h>
- #include <string.h>
- #include <stdlib.h>
- #include <errno.h>
- int main(){
- char filename[64];
- strcpy(filename,"/dev/input/event16");
- char name[80];
- int fd = open(filename, O_RDWR /*| O_NONBLOCK*/);
- if(fd <= 0) {
- printf("TK----------->>>>open error\n");
- return -1;
- }
- /////////
- struct input_id inputId;
- int rc = ioctl(fd, EVIOCGID, &inputId);
- printf("TK-------->>>>info.vendor is 0x%x\n",inputId.vendor);
- printf("TK-------->>>>info.product is 0x%x\n",inputId.product);
- printf("TK-------->>>>info.bustype is 0x%x\n",inputId.bustype);
- /*
- struct hidraw_devinfo info;
- int rc = ioctl(fd, HIDIOCGRAWINFO, &info);
- printf("TK-------->>>>info.vendor is 0x%x\n",info.vendor);
- printf("TK-------->>>>info.product is 0x%x\n",info.product);
- printf("TK-------->>>>info.bustype is 0x%x\n",info.bustype);
- */
- ///////////
- struct hidraw_report_descriptor descriptor;
- rc = ioctl(fd, HIDIOCGRDESC, &descriptor);
- printf("TK-------->>>>descriptor.size is 0x%04x\n",descriptor.size);
- //////
- int descriptorSize=0;
- rc = ioctl(fd, HIDIOCGRDESCSIZE, &descriptorSize);
- printf("TK-------->>>>descriptorSize is 0x%04x\n",descriptorSize);
- //////
- name[sizeof(name) - 1] = '\0';
- if(ioctl(fd, EVIOCGNAME(sizeof(name) - 1), &name) < 1) {
- name[0] = '\0';
- }
- printf("TK------->>>name is %s\n",name);
- //////
- close(fd);
- return 0;
- }
二、编译
Android.mk
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_SRC_FILES:= \
- testhid.c
- LOCAL_SHARED_LIBRARIES := \
- libutils
- LOCAL_MODULE:= testinput
- LOCAL_MODULE_TAGS := optional
- include $(BUILD_EXECUTABLE)
三、运行
- TK-------->>>>info.vendor is 0x0
- TK-------->>>>info.product is 0x1
- TK-------->>>>info.bustype is 0x19
- TK-------->>>>descriptor.size is 0x0000
- TK-------->>>>descriptorSize is 0x0000
- TK------->>>name is Power Button
获取输入设备的vid和pid的更多相关文章
- 通过串口设备vid,pid自动获得该设备所对应的串口号
用C#做串口通讯很方便,因为dotfx2.0已经集成了Serial Port控件,此控件使用上比MSComm控件更简单,当然它也有一个小bug (RecievedBytesThreshold设置有时候 ...
- 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop
[源码下载] 重新想象 Windows 8 Store Apps (49) - 输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop 作者:weba ...
- USB的VID和PID,以及分类(Class,SubClass,Protocol)
USB(Universal Serial BUS,通用串行总线)协议规定,所有的USB设备都有VID(Vendor ID,供应商识别码)和PID(Product ID,产品识别码).VID由供应商向U ...
- 去确认CP210x UART Bridge的USB的VID和PID
[背景] 之前买的USB口的HART猫: [记录]为USB接口的HART猫ExSaf ESH232U安装对应的USB转RS232驱动 其中内部是USB转RS232. 然后打算去看看之前的自己此处的某个 ...
- 浅谈USB设备的VID和PID
根据USB规范的规定,所有的USB设备都有供应商ID(VID)和产品识别码(PID),主机通过不同的VID和PID来区别不同的设备,VID和PID都是两个字节长,其中,供应商ID(VID)由供应商向U ...
- (转)USB的VID和PID,以及分类(Class,SubClass,Protocol)
USB的VID和PID,以及分类(Class,SubClass,Protocol) 原文地址:http://blog.csdn.net/gaojinshan/article/details/78783 ...
- VID和PID
今天很在一份datasheet上突然看到 VID 和 PID 很奇怪!!还不是很懂!!! 参考:https://blog.csdn.net/gaojinshan/article/details/787 ...
- Linux下查看USB设备的VID、PID命令
Linux下查看PID命令 cat /proc/bus/usb/devices 或 lsusb 方法一:在/etc/init.d/rcS中添加mount -t usbfs none /proc/bus ...
- 获取服务进程server.exe的pid(0号崩溃)
#include "stdafx.h" #include <windows.h> #include <iostream> #include <COMD ...
随机推荐
- 未知的生成错误 因为没有预加载,所以无法解析程序集 GalaSoft.MvvmLight
使用wpf开发时,在ViewModel中引用了DevExpress注册的GalaSoft.MvvmLight命名空间,使用其ViewModelBase,在View界面中绑定事件时出现错误: 错误 13 ...
- phantomjs处理alert、confirm弹窗
一:phantomjs处理alert弹窗 脚本实现功能为:点击click me按钮弹出弹窗消息为cheese,点击确定按钮,弹窗关闭 脚本代码为:注意的是phantomjs处理alert弹窗需要将ph ...
- scrapy 知乎的模拟登陆及抓取用户数据
最近看了python的scrapy 框架并用其抓取了部分知乎用户数据,代码主要是集中在知乎登陆和抓取时候的逻辑处理上. 1. 首先进入知乎登陆页面zhihu.com/#sigin上, 用xpath提取 ...
- emoji图像转码解码 存入数据库
public String emojiConvert1(String str) throws UnsupportedEncodingException { String patternString = ...
- 1.Date对象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- soj 2543 完全二叉树
1000. 完全二叉树 Total: 338 Accepted: 81 Time Limit: 1sec Memory Limit:256MB Descr ...
- Marble 绘制线
#include <QtGui/QApplication> #include <marble/MarbleWidget.h> #include <marble/GeoPa ...
- Excel教程(3) - 函数输入方法
对 Excel 公式而言,函数是其中的主要组成部分,因此公 式输入可以归结为函数输入的问题. "插入函数"对话框 "插入函数"对话框是 Excel 输入公式的重 ...
- SIM卡信息的管理
MTK平台上,所有插入到手机中的SIM卡的信息都会存储在数据库com.android.providers.telephony中. 原始的数据库 图表 1 SimInfo数据表的结构 从上图示中,我们可 ...
- erlang进程与操作系统线程
erlang多进程与多线程: 在erlang开发中,我们面对的最小执行单位是进程,当然这个进程并不是系统层面上的进程,也不是线程.而是基于erlang运行时系统的一个进程.那么erlang的多进程是如 ...