我正在玩一些特殊types的键盘的驱动程序代码。 而这个键盘确实有特殊的模式。 根据规范,这些模式只能通过发送和获取function报告来启用。
我使用'hID.c'文件和用户模式来发送HID报告。 但'hID_read'和'hID_get_feature_report'都失败,错误号为-1。
我已经尝试使用libusb从内核驱动程序分离键盘,但是当我这样做时,'hID_open'失败。 我想这是由于HID接口已经由内核使用“input”或某些驱动程序。 所以,我可能不需要解除内核hIDraw驱动程序,而应该尝试解除“hIDraw”驱动程序的键盘(“input”)驱动程序顶部的绑定。 我对么?
任何想法我怎么能做到这一点? 以及如何find哪些驱动程序使用哪个驱动程序和哪个低级驱动程序绑定到哪个驱动程序?
将鼠标光标隐藏在窗口中的特定客户区域上
如何在linux中写入CM108芯片的GPIO引脚?
在linux上接收来自USB HID键盘设备的字符
如何设置文件的隐藏属性
阅读多个HID报告
是否有可能使计算机像蓝牙HID设备一样运行?
I2C到FPGA到PCIE到HID
windows:启动一个隐藏的新进程(无窗口)
如何从http响应头中删除Nginx?
CreatefileA无法在windows中打开HID设备
我自己找到了答案。 答案是挖掘这个项目,发现它隐藏在libusb上的实现。 或者你可以直接收到报告。
int HID_API_EXPORT hID_get_feature_report(hID_device *dev,unsigned char *data,size_t length) { int res = -1; int skipped_report_ID = 0; int report_number = data[0]; if (report_number == 0x0) { /* Offset the return buffer by 1,so that the report ID will remain in byte 0. */ data++; length--; skipped_report_ID = 1; } res = libusb_control_transfer(dev->device_handle,liBUSB_REQUEST_TYPE_CLASS|liBUSB_RECIPIENT_INTERFACE|liBUSB_ENDPOINT_IN,0x01/*HID get_report*/,(3/*HID feature*/ << 8) | report_number,dev->interface,(unsigned char *)data,length,1000/*timeout millis*/); if (res < 0) return -1; if (skipped_report_ID) res++; return res; }
对不起,由于某些法律原因,我无法发布我的实际代码。 不过上面的代码是来自hIDAPI的实现。
所以,即使你使用旧的内核,你仍然有机会让你的驱动程序工作。 这也回答了这个问题: https : //stackoverflow.com/questions/30565999/kernel-version-2-6-32-does-not-support-hidiocgfeature
总结以上是内存溢出为你收集整理的删除绑定到HID接口的input驱动程序全部内容,希望文章能够帮你解决删除绑定到HID接口的input驱动程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)