Custom made keyboard not working
lvntbkdmr opened this issue · 6 comments
Hey, I have a custom made keyboard with ZMK firmware (normally it works as bluetooth keyboard, but I connected it via cable). When I directly connect the keyboard to the host with cable, it works as expected and here is my hid dump
1D50 615E: ZMK Project - Corne
DESCRIPTOR:
05 01 09 06 a1 01 85 01 05 07 19 e0 29 e7 15 00
25 01 75 01 95 08 81 02 05 07 75 08 95 01 81 03
05 07 15 00 26 ff 00 19 00 29 ff 75 08 95 06 81
00 c0 05 0c 09 01 a1 01 85 02 05 0c 15 00 26 ff
0f 19 00 2a ff 0f 75 10 95 06 81 00 c0
(77 bytes)
However, when I connect this to the Deskhop, it does not work. Is there a problem with my hid report? There is a flag which enables USB Boot mode while compiling, I also enabled that flag, but still non functioning.
This looks pretty normal, some keyboards seem to ignore boot mode altogether. Does this work for you? test_fw.zip
This looks pretty normal, some keyboards seem to ignore boot mode altogether. Does this work for you? test_fw.zip
ah yes, it works as expected. What did you do ? :D
Ignored report ID the keyboard sends and it won't switch to boot mode properly. I'll make this autodetectable, feel like this will help folks with stubborn keyboards :)
ah ok I got it, can you provide the diff file or patch etc. so I can apply that workaround to my own fork for now? after you implement that change on this repo, I can rebase to that
ah ok I got it, can you provide the diff file or patch etc. so I can apply that workaround to my own fork for now? after you implement that change on this repo, I can rebase to that
Try adding:
if (length == KBD_REPORT_LENGTH + 1)
keyboard_report = (hid_keyboard_report_t *)(raw_report + 1);
to keyboard.c in process_keyboard_report after the first if block. Let me know if it still works OK and I'll merge it with the master.
ah ok I got it, can you provide the diff file or patch etc. so I can apply that workaround to my own fork for now? after you implement that change on this repo, I can rebase to that
Try adding:
if (length == KBD_REPORT_LENGTH + 1) keyboard_report = (hid_keyboard_report_t *)(raw_report + 1);
to keyboard.c in process_keyboard_report after the first if block. Let me know if it still works OK and I'll merge it with the master.
Tried that, yes it works