Skip to content


Browse files Browse the repository at this point in the history
Make PREVENT_STUCK_MODIFIERS the default (#3107)
* Remove chording as it is not documented, not used, and needs work.

* Make Leader Key an optional feature.


* Remove `#define PREVENT_STUCK_MODIFIERS` from keymaps.
  • Loading branch information
Talljoe authored and jackhumbert committed Sep 17, 2018
1 parent b65e214 commit 7434494
Show file tree
Hide file tree
Showing 198 changed files with 91 additions and 599 deletions.
11 changes: 7 additions & 4 deletions
Expand Up @@ -221,7 +221,6 @@ ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/

ifeq ($(strip $(HD44780_ENABLE)), yes)
SRC += drivers/avr/hd44780.c
Expand All @@ -232,11 +231,15 @@ ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/dynamic_keymap.c

ifeq ($(strip $(LEADER_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c

$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \

ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
Expand All @@ -251,5 +254,5 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_flags.c \
$(QUANTUM_DIR)/split_common/split_util.c \
$(QUANTUM_DIR)/split_common/i2c.c \
4 changes: 2 additions & 2 deletions docs/
Expand Up @@ -119,8 +119,8 @@ If you define these options you will enable the associated feature, which may in

* `#define FORCE_NKRO`
* NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
* stores the layer a key press came from so the same layer is used when the key is released, regardless of which layers are enabled
* force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)

## Behaviors That Can Be Configured

Expand Down
8 changes: 8 additions & 0 deletions docs/
Expand Up @@ -39,3 +39,11 @@ void matrix_scan_user(void) {
As you can see, you have a few function. You can use `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS`, `SEQ_THREE_KEYS` up to `SEQ_FIVE_KEYS` for longer sequences.

Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously.

## Adding Leader Key Support in the ``

To add support for Leader Key you simply need to add a single line to your keymap's ``:

2 changes: 1 addition & 1 deletion docs/
Expand Up @@ -129,6 +129,7 @@ Comparing against our keymap we can see that the pressed key is KC_NLCK. From he
<!-- FIXME: Magic happens between here and process_record -->

##### Process Record

The `process_record()` function itself is deceptively simple, but hidden within is a gateway to overriding functionality at various levels of QMK. The chain of events is listed below, using cluecard whenever we need to look at the keyboard/keymap level functions. Depending on options set in or elsewhere, only a subset of the functions below will be included in final firmware.

* [`void process_record(keyrecord_t *record)`](
Expand All @@ -146,7 +147,6 @@ The `process_record()` function itself is deceptively simple, but hidden within
* [`bool process_music(uint16_t keycode, keyrecord_t *record)`](
* [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](
* [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](
* [`bool process_chording(uint16_t keycode, keyrecord_t *record)`](
* [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](
* [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](
* [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](
Expand Down
3 changes: 0 additions & 3 deletions keyboards/1upkeyboards/1up60rgb/config.h
Expand Up @@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \

/* prevent stuck modifiers */

#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN