Bläddra i källkod

Fix/workaround for Gigabyte keyboard

The gigabyte keyboard has an N key rollover input, that is different than all of our current keyboards.

So this code tells (currently All) keyboards to choose their boot protocol, which gets us back to the standard boot definition.  Which alllows these keyboards to function like others.
main
Kurt Eckhardt 6 år sedan
förälder
incheckning
51eea763d7
1 ändrade filer med 12 tillägg och 1 borttagningar
  1. +12
    -1
      keyboard.cpp

+ 12
- 1
keyboard.cpp Visa fil

@@ -138,13 +138,24 @@ bool KeyboardController::claim(Device_t *dev, int type, const uint8_t *descripto
datapipe = new_Pipe(dev, 3, endpoint, 1, 8, interval);
datapipe->callback_function = callback;
queue_Data_Transfer(datapipe, report, 8, this);
mk_setup(setup, 0x21, 10, 0, 0, 0); // 10=SET_IDLE

mk_setup(setup, 0x21, 11, 0, 0, 0); // 11=SET_PROTOCOL BOOT
queue_Control_Transfer(dev, &setup, NULL, this);
return true;
}

void KeyboardController::control(const Transfer_t *transfer)
{
println("control callback (keyboard)");
print_hexbytes(transfer->buffer, transfer->length);
// To decode hex dump to human readable HID report summary:
// http://eleccelerator.com/usbdescreqparser/
uint32_t mesg = transfer->setup.word1;
println(" mesg = ", mesg, HEX);
if (mesg == 0x001021 && transfer->length == 0) { // SET_PROTOCOL
mk_setup(setup, 0x21, 10, 0, 0, 0); // 10=SET_IDLE
queue_Control_Transfer(device, &setup, NULL, this);
}
}

void KeyboardController::callback(const Transfer_t *transfer)

Laddar…
Avbryt
Spara