Skip to content
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

Core/fix 6kro #14563

Merged
merged 5 commits into from
Sep 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/config_options.md
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,8 @@ Use these to enable or disable building certain features. The more you have enab
* Key combo feature
* `NKRO_ENABLE`
* USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
* `RING_BUFFERED_6KRO_REPORT_ENABLE`
* USB 6-Key Rollover - Instead of stopping any new input once 6 keys are pressed, the oldest key is released and the new key is pressed.
* `AUDIO_ENABLE`
* Enable the audio subsystem.
* `KEY_OVERRIDE_ENABLE`
Expand Down
1 change: 0 additions & 1 deletion keyboards/hotdox/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
USB_6KRO_ENABLE = no # USB 6key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
SWAP_HANDS_ENABLE = no # Disable Onehand
RGBLIGHT_ENABLE = no
Expand Down
1 change: 0 additions & 1 deletion keyboards/ktec/ergodone/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA
USB_6KRO_ENABLE = no # USB 6key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
SWAP_HANDS_ENABLE = no # Disable Onehand
RGBLIGHT_ENABLE = no
Expand Down
4 changes: 1 addition & 3 deletions keyboards/planck/keymaps/not-quite-neo/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,13 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
USB_6KRO_ENABLE = no # 6key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
#VARIABLE_TRACE = no # Debug changes to variable values
UNICODE_ENABLE = no # Unicode (can't be used with unicodemap)
UNICODEMAP_ENABLE = no # Enable extended unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

6 changes: 2 additions & 4 deletions keyboards/planck/keymaps/zach/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Max .hex size is about 28636 bytes

# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
TAP_DANCE_ENABLE = yes # Enable TapDance functionality
Expand All @@ -12,15 +12,13 @@ EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
USB_6KRO_ENABLE = no # 6key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = no # Audio output on port C6
#VARIABLE_TRACE = no # Debug changes to variable values
UNICODE_ENABLE = no # Unicode (can't be used with unicodemap)
UNICODEMAP_ENABLE = yes # Enable extended unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

6 changes: 2 additions & 4 deletions keyboards/preonic/keymaps/zach/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Max .hex size is about 28636 bytes

# Build Options
# change to "no" to disable the options, or define them in the Makefile in
# change to "no" to disable the options, or define them in the Makefile in
# the appropriate keymap folder that will get included automatically
#
TAP_DANCE_ENABLE = yes # Enable TapDance functionality
Expand All @@ -12,15 +12,13 @@ EXTRAKEY_ENABLE = no # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
USB_6KRO_ENABLE = no # 6key Rollover
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
MIDI_ENABLE = no # MIDI controls
AUDIO_ENABLE = yes # Audio output on port C6
#VARIABLE_TRACE = no # Debug changes to variable values
UNICODE_ENABLE = no # Unicode
UNICODEMAP_ENABLE = yes # Enable extended unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

10 changes: 0 additions & 10 deletions quantum/action_util.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,6 @@ static uint8_t weak_override_mods = 0;
static uint8_t suppressed_mods = 0;
#endif

#ifdef USB_6KRO_ENABLE
# define RO_ADD(a, b) ((a + b) % KEYBOARD_REPORT_KEYS)
# define RO_SUB(a, b) ((a - b + KEYBOARD_REPORT_KEYS) % KEYBOARD_REPORT_KEYS)
# define RO_INC(a) RO_ADD(a, 1)
# define RO_DEC(a) RO_SUB(a, 1)
static int8_t cb_head = 0;
static int8_t cb_tail = 0;
static int8_t cb_count = 0;
#endif

// TODO: pointer variable is not needed
// report_keyboard_t keyboard_report = {};
report_keyboard_t *keyboard_report = &(report_keyboard_t){};
Expand Down
2 changes: 1 addition & 1 deletion show_options.mk
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ OTHER_OPTION_NAMES = \
PS2_MOUSE_ENABLE \
RAW_ENABLE \
SWAP_HANDS_ENABLE \
USB_6KRO_ENABLE \
RING_BUFFERED_6KRO_REPORT_ENABLE \
WATCHDOG_ENABLE \
XT_ENABLE \
ERGOINU \
Expand Down
2 changes: 1 addition & 1 deletion tests/test_common/keyboard_report_util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ std::vector<uint8_t> get_keys(const report_keyboard_t& report) {
std::vector<uint8_t> result;
#if defined(NKRO_ENABLE)
# error NKRO support not implemented yet
#elif defined(USB_6KRO_ENABLE)
#elif defined(RING_BUFFERED_6KRO_REPORT_ENABLE)
# error 6KRO support not implemented yet
#else
for (size_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
Expand Down
4 changes: 2 additions & 2 deletions tmk_core/common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ ifeq ($(strip $(NKRO_ENABLE)), yes)
endif
endif

ifeq ($(strip $(USB_6KRO_ENABLE)), yes)
TMK_COMMON_DEFS += -DUSB_6KRO_ENABLE
ifeq ($(strip $(RING_BUFFERED_6KRO_REPORT_ENABLE)), yes)
TMK_COMMON_DEFS += -DRING_BUFFERED_6KRO_REPORT_ENABLE
endif

ifeq ($(strip $(SLEEP_LED_ENABLE)), yes)
Expand Down
16 changes: 13 additions & 3 deletions tmk_core/common/report.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,16 @@
#include "util.h"
#include <string.h>

#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE
# define RO_ADD(a, b) ((a + b) % KEYBOARD_REPORT_KEYS)
# define RO_SUB(a, b) ((a - b + KEYBOARD_REPORT_KEYS) % KEYBOARD_REPORT_KEYS)
# define RO_INC(a) RO_ADD(a, 1)
# define RO_DEC(a) RO_SUB(a, 1)
static int8_t cb_head = 0;
static int8_t cb_tail = 0;
static int8_t cb_count = 0;
#endif

/** \brief has_anykey
*
* FIXME: Needs doc
Expand Down Expand Up @@ -54,7 +64,7 @@ uint8_t get_first_key(report_keyboard_t* keyboard_report) {
return i << 3 | biton(keyboard_report->nkro.bits[i]);
}
#endif
#ifdef USB_6KRO_ENABLE
#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE
uint8_t i = cb_head;
do {
if (keyboard_report->keys[i] != 0) {
Expand Down Expand Up @@ -99,7 +109,7 @@ bool is_key_pressed(report_keyboard_t* keyboard_report, uint8_t key) {
* FIXME: Needs doc
*/
void add_key_byte(report_keyboard_t* keyboard_report, uint8_t code) {
#ifdef USB_6KRO_ENABLE
#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE
int8_t i = cb_head;
int8_t empty = -1;
if (cb_count) {
Expand Down Expand Up @@ -166,7 +176,7 @@ void add_key_byte(report_keyboard_t* keyboard_report, uint8_t code) {
* FIXME: Needs doc
*/
void del_key_byte(report_keyboard_t* keyboard_report, uint8_t code) {
#ifdef USB_6KRO_ENABLE
#ifdef RING_BUFFERED_6KRO_REPORT_ENABLE
uint8_t i = cb_head;
if (cb_count) {
do {
Expand Down