Я пытаюсь написать собственный «драйвер» для клавиатуры (HID, если это имеет значение) под Windows 7. Конечная цель - подключить к компьютеру две клавиатуры, но сопоставить все клавиши одной изих для специальных (пользовательских) функций.
Моя идея состоит в том, чтобы использовать 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 секунд)
Есть только одна шина, одно устройство, одна конфигурация, один интерфейс и одна конечная точка.Конечная точка имеет bmAttributes = 3
, что означает, что я должен использовать передачу прерываний (верно?)
, так почему я ничего не получаю?Я неправильно использую libusb?Вы знаете способ сделать это без libusb?