gpt4 book ai didi

windows - libusb-win32 - 无法从键盘读取

转载 作者:可可西里 更新时间:2023-11-01 10:00:58 30 4
gpt4 key购买 nike

我正在尝试在 Windows 7 下为键盘(HID,如果重要的话)编写自定义“驱动程序”。最终目标是将两个键盘连接到计算机,但映射其中一个键盘的所有键它们用于特殊(自定义)功能。

我的想法是使用 libusb-win32 作为第二个键盘的驱动程序,并编写一个小程序从键盘读取数据并对其进行操作。我已经成功安装了驱动程序,并且我的程序可以识别设备,但是所有传输都超时,即使我正在按键也是如此。

这是我的代码:

     struct usb_bus *busses;
struct usb_device *dev;
char buf[1024];

usb_init();
usb_find_busses();
usb_find_devices();

busses = usb_get_busses();
dev = busses->devices;

cout << dev->descriptor.idVendor << '\n' << dev->descriptor.idProduct << '\n';

usb_dev_handle *h = usb_open(dev);
cout << usb_set_configuration(h, 1) << '\n';
cout << usb_claim_interface(h, 0) << '\n';
cout << usb_interrupt_read(h, 129, buf, 1024, 5000) << '\n';
cout << usb_strerror();
cout << usb_release_interface(h, 0) << '\n';
cout << usb_close(h) << '\n';

它返回:

  1133
49941
0
0
-116
libusb0-dll:err [_usb_reap_async] timeout error
0
0

(我在那 5 秒内按下了很多键)

只有一种总线、一种设备、一种配置、一种接口(interface)和一种端点。端点有 bmAttributes = 3,这意味着我应该使用中断传输(对吗?)

那为什么我没有得到任何东西?我在滥用 libusb 吗?你知道没有 libusb 的方法吗?

最佳答案

实际上很简单 - 从 USB 设备读取时,您必须完全读取正确的字节数。您可以通过阅读 wMaxPacketSize 了解该数量。

显然,任何其他大小的读取请求只会导致超时。

关于windows - libusb-win32 - 无法从键盘读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8719603/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com