-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
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
Standardize Keys #21
Comments
Updated usage tables version: https://usb.org/sites/default/files/hut1_2.pdf |
Add scope of #158 to this |
Let's make a concerted effort to nail this down, including @tominabox1's efforts on #161 and taking into account the effects of #86. |
It's RFC time! Feedback, suggestions and discussions welcomed! Everything is still on the table at this point. To facilitate this first pass, we're using Google Sheets as a living document. It contains the proposed names (tags) and descriptions that are used for the RFC: https://docs.google.com/spreadsheets/d/1s6URDIL7pqcMiUvY8s0esWvLIA1dKNmHqp6jEUtrqTw/
Design Considerations (thus far)
|
For those wondering what the code might look like, here's a preview:
We'll RFC the code itself as a PR after the initial sheets RFC is completed. Please hold off comments on style until then. |
I've a couple of general questions to kick off ...
|
Regarding interoperability support for other firmware (i.e. QMK, BlueMicro), I'm considering that a separate issue because it can be handled different ways, such as additional header files or key map conversion scripts. |
I'm particularly interested in suggestions for the consumer keys. |
Do these Consumer keys even do anything on modern systems? |
Thanks!
Honestly I'm not 100% sure without checking them on all OS's. The vast majority that I've listed are documented on Android and Linux though. Plus they could always be intercepted and handled by other services. |
As an experiment, I dropped the
Note: the Linux/Android? codes are not documented in the HID Usage Tables. |
As a second, independent experiment, this time I kept the
Hopefully these experiments illustrate the complexities of finding a neat solution to the namespace dilemma. |
I'm currently leaning on keeping |
Do we have information on how well supported all of these codepages and keycodes are on the various platforms? I think it makes sense to keep the prefixes on anything that's not widely supported and/or crossplatform. |
Everything listed so far is based on research (please see the sources sheet). It's tricky because we rely on documentation. But my understanding is that keyboard/keypad page is generally universal - except the Linux/Android codes |
To follow that up, I'm considering everything on the keyboard/keypad and consumer pages because you have to look at the big picture to identify workable (hopefully future-proof) naming conventions. But I've shortlisted the consumer page codes to those documented by existing platforms (that's what's on the RFC sheet). In terms of testing, we don't currently have the capacity to methodically test the codes across all the various platforms. So for now, I'm going by available documentation on the basis that we'll test/fix and find cross-platform issues later. That said, perhaps we shouldn't document the untested key codes until we empirically compare the platforms? |
This comment has been minimized.
This comment has been minimized.
Aside from the above, I've mostly confirmed that the unofficial keyboard keys (Linux/Android?) are duplicates of HID official keyboard keys. Weird. Perhaps there's OS nuances that we'll encounter later. For now I suggest we just number them, until we understand them better: |
I've added a new column to the RFC sheet called
Legacy codes will still be usable after the merge of this issue, but would not be documented and will eventually be phased out in the future. So if one of the relegations bothers you, please leave a comment on the associated row. |
Documentation for standardized keys. Closes zmkfirmware#218. Fixes zmkfirmware#308. Ref #21.
Documentation for standardized keys. Closes zmkfirmware#218. Fixes zmkfirmware#308. Ref #21.
Create codes documentation for standardized keys. Closes zmkfirmware#218. Fixes zmkfirmware#308. Ref #21.
Create codes documentation for standardized keys. Closes zmkfirmware#218. Fixes zmkfirmware#308. Ref #21.
This is necessary for testing a large number of events (e.g. every key code) within a single build/pass. The u8_t limitation became apparent during end-to-end testing of #21.
Developed from specification: https://usb.org/sites/default/files/hut1_21.pdf Closes zmkfirmware#217. Prerequisite of #21.
Switch from single byte to double byte usages. Allow the entire 0x0C page for future compatibility. Closes zmkfirmware#234. Co-requisite of #21.
Deprecate superseded names with comments. Add standardized key names. Closes #21. Closes zmkfirmware#158. Closes zmkfirmware#161. Closes zmkfirmware#246.
Replace deprecated key names (LCTL, NUM_0, NUM_1). Replace abbreviated names with fully qualified names (LCTL, RGUI, NUM_0, NUM_1). Follow-up to #21.
Replace deprecated key names (LSFT, LCTL, RCTL, M_NEXT). Replace abbreviated names with fully qualified names (LSFT, LCTL, LALT, LGUI, RGUI). Follow-up to #21.
Create codes documentation for standardized keys. Closes zmkfirmware#218. Fixes zmkfirmware#308. Ref #21.
This is necessary for testing a large number of events (e.g. every key code) within a single build/pass. The u8_t limitation became apparent during end-to-end testing of zmkfirmware#21.
Developed from specification: https://usb.org/sites/default/files/hut1_21.pdf Closes zmkfirmware#217. Prerequisite of zmkfirmware#21.
Switch from single byte to double byte usages. Allow the entire 0x0C page for future compatibility. Closes zmkfirmware#234. Co-requisite of zmkfirmware#21.
Deprecate superseded names with comments. Add standardized key names. Closes zmkfirmware#21. Closes zmkfirmware#158. Closes zmkfirmware#161. Closes zmkfirmware#246.
Replace deprecated key names (LCTL, NUM_0, NUM_1). Replace abbreviated names with fully qualified names (LCTL, RGUI, NUM_0, NUM_1). Follow-up to zmkfirmware#21.
Replace deprecated key names (LSFT, LCTL, RCTL, M_NEXT). Replace abbreviated names with fully qualified names (LSFT, LCTL, LALT, LGUI, RGUI). Follow-up to zmkfirmware#21.
Follow-up to zmkfirmware#21.
Create codes documentation for standardized keys. Closes zmkfirmware#218. Fixes zmkfirmware#308. Ref zmkfirmware#21.
dt-bindings/zmk/keys.h
https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
The text was updated successfully, but these errors were encountered: