New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rotary button on Glorious GMMK Pro keyboard does not work #30
Comments
Can you try, just for test, mapping one of the "ordinary" keys to KEY_MEDIA_VOLUMEUP (KC_VOLU) to try if that makes any difference? Try plugging the keyboard directly to a Linux machine and usbhid-dump --entity=all and then try turning and pressing the knob. None of this was tested with any extended buttons (I have a plain ole keyboard) so functionality can be hit and miss. Will try to improve it :) |
Remapping the key does not make a difference, I mapped mute to F1, and when I attach the keyboard to the deskhop no input is registered at all when pressing the key. Without the deskhop it works. The output of usbhid-dump return this for the volume down, volume up and mute keys: 001:014:002:STREAM 1705308590.890533 001:014:002:STREAM 1705308592.524535 Full output of the usbhid-dump:
Please let me know if you need anything else. |
This is: Usage Page (Consumer), ; Consumer (0Ch) which is something not defined by a generic keyboard descriptor reported to the host computer. I'm curious what is reported to the box directly, I'll try hacking up some debug firmware that dumps raw reports on serial and you can check that perhaps. |
Cool. I also tried another keyboard, a Keychron Q1 Pro with rotary encoder. Below is the output. For input I used: 2x volume down, 2x volume up, 2x mute.
|
Try board_A.zip and then open the new serial port that appears with a serial terminal, press the keys and paste output here. |
I tried the firmware, but when using the rotary button no output is generated in the serial console (I used 'screen /dev/ttyACM0 115200'). Other keys do give output, e.g.
|
When I use 'evtest' I can select the following devices related to my keyboard:
When I select device 14 I can see keypress events, but not from the rotary button. However when I select device 17 ('consumer control') rotary button events are registered:
|
With the Keychron it's exactly the same, also QMK firmware, multiple devices:
where ordinary keypresses are registered via event14 and 'media'-keypresses via event17. I think the Mouse device (event 15 in this case) is created because QMK firmware can emulate a mouse by assigning mouse functions to specific keys (e.g. on another keyboard layer). This is the output from the Keychron Consumer Control device:
|
Yep, that's the culprit - no keys registered as keyboard and it only wants to send them as consumer control with another report ID... something I don't know how to universally support yet. You could theoretically bind the rotary wheel as ordinary keypresses in QMK if it could do it, but doing the rotary wheel absolute position is tricky. You could probably extend the report descriptor for consumer control and pass these events through. |
So is this case for any keyboard with multimedia keys? For example in the supported events list there's also an event named 'KEY_BRIGHTNESS_MIN' which I think is related to screen brightness. |
Not necessarily. If the keyboard sends it as scan codes per USB 1.11 spec, it should work. For example, some of these would be ok:
And yes, I'm also confused with the COFFEE button and tempted to try it. :) |
This might be a very stupid question since I am not very familiar with this topic, but isn't it that report id's point to a single endpoint? So could it be possible to just replicate all the reports? |
All questions are good, and I'm by no means an expert around this ... I was just hacking around to fix my own problem :) Passing reports through should not be too hard, but you'd also need to re-use all (or a subset) of that keyboard's descriptors which can vary greatly, and that's where problems start. I'm first aiming to cover all the basics and then aim for more advanced stuff. |
In my Keyboardio Model 100(not QMK) i have the problem that the multimedia keys don't work (next, pause, etc). evtest also reports for this keyboard:
the multimedia key are on event11 |
See, that's not a keyboard! :) Now seriously, what might be a solution to this is to yank the keyboard descriptor for consumer control, offer that to the PC along with our initial descriptor and pass the reports. Not sure if you'd need to switch to hid report protocol for the keyboard to actually send those or it would not care and just send them. My poor ole keyboard is just a keyboard, so I don't have a way to test. :-| |
I'm curious to see how my Corsair Strafe RGB keyboard will be handled once I built the setup. (especially the RGB leds) Currently I'm running running https://github.com/ckb-next/ckb-next on my Ubuntu, thanks to their work too for it. |
It will probably not work beyond the "you can type on it" and running default rgb animations locally, since your keyboard is not a Corsair as far as the PC is concerned and the driver won't see it as such. I have some ideas how to improve support for fancy keyboards, but the ability to send commands by a computer driver to control something on the keyboard is a potential security risk when bridging two different systems. |
I understand the concern, and I only installed the "fancy" driver on my personnal computer, I did not install the corsair driver on the corporate Windows computer. |
Don't get me wrong, I really dig what's possible today with keyboards and open-source! Efforts like the QMK firmware are amazing and simply did not exist before ... I'd probably get one of those cool keyboards if I didn't love my current one so much :) |
i would love to support you implementing those ideas. i write C/C++ in my day job so even could help you implement. But i don´t know much about the usb stuff and would not know where to begin. |
Try the latest release? Also, there is a beta release with improved support, I'd also appreciate feedback on that one. |
The multimedia keys on my keyboard that previously did not work, do work with this version! |
When attaching a Glorious GMMK keyboard to the deskhop the rotary encoder does not work. The keyboard is configured with Via firmware (https://www.caniusevia.com) which is built upon QMK firmware.
I have mapped the encoder to KC_VOLD (volume down), KC_VOLU (volume up) and KC_MUTE (mute by pressing the encoder). Could it be that media keys are somehow not getting through?
The text was updated successfully, but these errors were encountered: