Thank you Charles for these valuable information, thanks a lot. I have a deeper understanding now. Still need help though.<br><br>> Endpoint Descriptor:<br>> bLength 7<br>> bDescriptorType 5
<br>> bEndpointAddress 0x81 EP 1 IN<br>> bmAttributes 3<br>> Transfer Type Interrupt<br>> Synch Type None<br>> Usage Type Data
<br>> wMaxPacketSize 0x0008 1x 8 bytes<br>> bInterval 10<br>><br>> bInterval suggests that you poll the device every 10 milliseconds.<br>> Sometimes, you need to send a SET_IDLE request to start the data flowing:
<br>> <a href="http://www.ghz.cc/~clepple/libhid/doc/html/hid__exchange_8c.html#">http://www.ghz.cc/~clepple/libhid/doc/html/hid__exchange_8c.html#</a><br>> c96f8781c3ce92199eda3d18c98406e3<br>> Then, you can use hid_interrupt_read() to read reports. Unfortunately, this function does not
<br>> integrate well with the rest of libhid, so you will need to calculate byte offsets by hand<br>> as I have done above.<br><br>What am I supposed to receive from hid_interrupt_read?<br>8 bytes I thought, but then they are always the same one. I tried with 65 bytes, just in case, but I get mostly the same bytes too, mostly zeros.
<br>Can you detail a bit more? What do you mean by calculate byte offset? Is it that I should receive 65 bytes and then interpret it bit per bit to retrieve control keys, padding, leds, keycodes..?<br><br><br>Thanks<br><br>