feat(hid): Add KConfig option for higher NKRO usages
By default the maximum NKRO usage is set to maximise compatibility, but some keys dont work, this adds the ability to use those extended keys, at the cost of compatibiltity
This commit is contained in:
parent
d7d9eed317
commit
2c4d11bfa0
3 changed files with 27 additions and 1 deletions
11
app/Kconfig
11
app/Kconfig
|
@ -53,10 +53,19 @@ config ZMK_HID_REPORT_TYPE_NKRO
|
||||||
help
|
help
|
||||||
Enable full N-Key Roll Over for HID output. This selection will prevent the keyboard
|
Enable full N-Key Roll Over for HID output. This selection will prevent the keyboard
|
||||||
from working with some BIOS/UEFI versions that only support "boot keyboard" support.
|
from working with some BIOS/UEFI versions that only support "boot keyboard" support.
|
||||||
This option also prevents using some infrequently used higher range HID usages.
|
This option also prevents using some infrequently used higher range HID usages (notably F13-F24 and INTL1-9)
|
||||||
|
These usages can be re enabled with ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT.
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
if ZMK_HID_REPORT_TYPE_NKRO
|
||||||
|
|
||||||
|
config ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT
|
||||||
|
bool "Enable extended NKRO reporting"
|
||||||
|
default n
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
if ZMK_HID_REPORT_TYPE_HKRO
|
if ZMK_HID_REPORT_TYPE_HKRO
|
||||||
|
|
||||||
config ZMK_HID_KEYBOARD_REPORT_SIZE
|
config ZMK_HID_KEYBOARD_REPORT_SIZE
|
||||||
|
|
|
@ -17,7 +17,12 @@
|
||||||
#include <dt-bindings/zmk/hid_usage.h>
|
#include <dt-bindings/zmk/hid_usage.h>
|
||||||
#include <dt-bindings/zmk/hid_usage_pages.h>
|
#include <dt-bindings/zmk/hid_usage_pages.h>
|
||||||
|
|
||||||
|
#if IS_ENABLED(CONFIG_ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT)
|
||||||
|
#define ZMK_HID_KEYBOARD_NKRO_MAX_USAGE HID_USAGE_KEY_KEYBOARD_LANG8
|
||||||
|
#else
|
||||||
#define ZMK_HID_KEYBOARD_NKRO_MAX_USAGE HID_USAGE_KEY_KEYPAD_EQUAL
|
#define ZMK_HID_KEYBOARD_NKRO_MAX_USAGE HID_USAGE_KEY_KEYPAD_EQUAL
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ZMK_HID_MOUSE_NUM_BUTTONS 0x05
|
#define ZMK_HID_MOUSE_NUM_BUTTONS 0x05
|
||||||
|
|
||||||
// See https://www.usb.org/sites/default/files/hid1_11.pdf section 6.2.2.4 Main Items
|
// See https://www.usb.org/sites/default/files/hid1_11.pdf section 6.2.2.4 Main Items
|
||||||
|
|
|
@ -33,12 +33,24 @@ Exactly zero or one of the following options may be set to `y`. The first is use
|
||||||
| `CONFIG_ZMK_HID_REPORT_TYPE_HKRO` | Enable `CONFIG_ZMK_HID_KEYBOARD_REPORT_SIZE` key roll over. |
|
| `CONFIG_ZMK_HID_REPORT_TYPE_HKRO` | Enable `CONFIG_ZMK_HID_KEYBOARD_REPORT_SIZE` key roll over. |
|
||||||
| `CONFIG_ZMK_HID_REPORT_TYPE_NKRO` | Enable full N-key roll over. This may prevent the keyboard from working with some BIOS/UEFI versions. |
|
| `CONFIG_ZMK_HID_REPORT_TYPE_NKRO` | Enable full N-key roll over. This may prevent the keyboard from working with some BIOS/UEFI versions. |
|
||||||
|
|
||||||
|
:::note NKRO usages
|
||||||
|
|
||||||
|
By default the NKRO max usage is set so as to maximise compatibility, however certain less frequently used keys (F13-F24 and INTL1-8) will not work. The solution is to set 'CONFIG_ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT=y'. This is known to break compatibility with Android.
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
If `CONFIG_ZMK_HID_REPORT_TYPE_HKRO` is enabled, it may be configured with the following options:
|
If `CONFIG_ZMK_HID_REPORT_TYPE_HKRO` is enabled, it may be configured with the following options:
|
||||||
|
|
||||||
| Config | Type | Description | Default |
|
| Config | Type | Description | Default |
|
||||||
| ------------------------------------- | ---- | ------------------------------------------------- | ------- |
|
| ------------------------------------- | ---- | ------------------------------------------------- | ------- |
|
||||||
| `CONFIG_ZMK_HID_KEYBOARD_REPORT_SIZE` | int | Number of keyboard keys simultaneously reportable | 6 |
|
| `CONFIG_ZMK_HID_KEYBOARD_REPORT_SIZE` | int | Number of keyboard keys simultaneously reportable | 6 |
|
||||||
|
|
||||||
|
If `CONFIG_ZMK_HID_REPORT_TYPE_NKRO` is enabled, it may be configured with the following options:
|
||||||
|
|
||||||
|
| Config | Type | Description | Default |
|
||||||
|
| ---------------------------------------------- | ---- | -------------------------------------------------------------------- | ------- |
|
||||||
|
| `CONFIG_ZMK_HID_KEYBOARD_NKRO_EXTENDED_REPORT` | bool | Enable less frequently used key usages, at the cost of compatibility | n |
|
||||||
|
|
||||||
Exactly zero or one of the following options may be set to `y`. The first is used if none are set.
|
Exactly zero or one of the following options may be set to `y`. The first is used if none are set.
|
||||||
|
|
||||||
| Config | Description |
|
| Config | Description |
|
||||||
|
|
Loading…
Add table
Reference in a new issue