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.

* Switch from `PREVENT_STUCK_MODIFIERS` to `STRICT_LAYER_RELEASE`

* Remove `#define PREVENT_STUCK_MODIFIERS` from keymaps.
pull/3939/head 0.6.120
Joe Wasson 6 years ago committed by Jack Humbert
parent b65e214375
commit 743449472e

@ -221,7 +221,6 @@ ifeq ($(strip $(USB_HID_ENABLE)), yes)
include $(TMK_DIR)/protocol/usb_hid.mk
endif
ifeq ($(strip $(HD44780_ENABLE)), yes)
SRC += drivers/avr/hd44780.c
OPT_DEFS += -DHD44780_ENABLE
@ -232,11 +231,15 @@ ifeq ($(strip $(DYNAMIC_KEYMAP_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/dynamic_keymap.c
endif
ifeq ($(strip $(LEADER_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_leader.c
OPT_DEFS += -DLEADER_ENABLE
endif
QUANTUM_SRC:= \
$(QUANTUM_DIR)/quantum.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/process_keycode/process_leader.c
$(QUANTUM_DIR)/keycode_config.c
ifndef CUSTOM_MATRIX
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)

@ -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.
* `#define PREVENT_STUCK_MODIFIERS`
* 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
* `#define STRICT_LAYER_RELEASE`
* 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

@ -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 `rules.mk`
To add support for Leader Key you simply need to add a single line to your keymap's `rules.mk`:
```
LEADER_ENABLE = yes
```

@ -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 rule.mk or elsewhere, only a subset of the functions below will be included in final firmware.
* [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/08c682c193f43e5d54df990680ae93fc2e06150a/tmk_core/common/action.c#L172)
@ -146,7 +147,6 @@ The `process_record()` function itself is deceptively simple, but hidden within
* [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/661ca4440cc42f3b60697e98985c44b0571ccfc1/quantum/process_keycode/process_music.c#L114)
* [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/661ca4440cc42f3b60697e98985c44b0571ccfc1/quantum/process_keycode/process_tap_dance.c#L136)
* [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/661ca4440cc42f3b60697e98985c44b0571ccfc1/quantum/process_keycode/process_leader.c#L38)
* [`bool process_chording(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/661ca4440cc42f3b60697e98985c44b0571ccfc1/quantum/process_keycode/process_chording.c#L41)
* [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/661ca4440cc42f3b60697e98985c44b0571ccfc1/quantum/process_keycode/process_combo.c#L115)
* [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/661ca4440cc42f3b60697e98985c44b0571ccfc1/quantum/process_keycode/process_unicode.c#L22)
* [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/661ca4440cc42f3b60697e98985c44b0571ccfc1/quantum/process_keycode/process_ucis.c#L91)

@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN B1
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -41,9 +41,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 20

@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -43,8 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN F4
#ifdef RGB_DI_PIN

@ -59,9 +59,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLED_NUM 16

@ -38,6 +38,3 @@
#define IS_COMMAND() ( \
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS

@ -4,8 +4,6 @@
#include "action_layer.h"
#include "keymap_colemak.h"
#define PREVENT_STUCK_MODIFIERS
// Each layer gets a name for readability, which is then used in the keymap matrix below.
#define ALPH 0
#define NUMS 1

@ -3,8 +3,6 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#endif

@ -30,7 +30,6 @@ the Free Software Foundation, either version 2 of the License, or
#define MOUSEKEY_WHEEL_MAX_SPEED 8
#define MOUSEKEY_WHEEL_TIME_TO_MAX 40
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#define PERMISSIVE_HOLD

@ -1,6 +1,5 @@
#define ONESHOT_TIMEOUT 3000
#define TAPPING_TERM 200
#define PREVENT_STUCK_MODIFIERS
#define FORCE_NKRO
#define LEADER_TIMEOUT 1000

@ -3,3 +3,4 @@ NKRO_ENABLE = true
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
LEADER_ENABLE = yes

@ -37,7 +37,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
#endif

@ -47,9 +47,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
false \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS

@ -47,9 +47,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
false \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS

@ -47,9 +47,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
false \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS

@ -47,9 +47,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
false \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS

@ -47,8 +47,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
false \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D3

@ -46,9 +46,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
false \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN F6
#define RGBLIGHT_ANIMATIONS

@ -52,8 +52,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* These options are also useful to firmware size reduction.
*/
#define PREVENT_STUCK_MODIFIERS
/* disable debug print */
//#define NO_DEBUG

@ -52,8 +52,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* These options are also useful to firmware size reduction.
*/
#define PREVENT_STUCK_MODIFIERS
/* disable debug print */
//#define NO_DEBUG

@ -52,8 +52,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* These options are also useful to firmware size reduction.
*/
#define PREVENT_STUCK_MODIFIERS
/* disable debug print */
//#define NO_DEBUG

@ -40,10 +40,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_HUE_STEP 8

@ -49,9 +49,6 @@
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 6
/* Prevent modifiers from being stuck on after layer changes. */
#define PREVENT_STUCK_MODIFIERS
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
//#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */

@ -3,6 +3,5 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#define DISABLE_SPACE_CADET_ROLLOVER
#endif

@ -52,8 +52,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* These options are also useful to firmware size reduction.
*/
#define PREVENT_STUCK_MODIFIERS
/* disable debug print */
//#define NO_DEBUG

@ -43,10 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -3,7 +3,6 @@
#include "config_common.h"
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_TERM 200
#ifdef AUDIO_ENABLE

@ -40,9 +40,6 @@
false \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D3
#define RGBLIGHT_ANIMATIONS

@ -36,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define USE_SERIAL_PD2
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100

@ -52,8 +52,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* These options are also useful to firmware size reduction.
*/
#define PREVENT_STUCK_MODIFIERS
/* disable debug print */
//#define NO_DEBUG

@ -43,10 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_HUE_STEP 8

@ -41,9 +41,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 16

@ -41,9 +41,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 16

@ -53,8 +53,6 @@
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
#define PREVENT_STUCK_MODIFIERS
#define USB_MAX_POWER_CONSUMPTION 500
/* NKRO */

@ -97,8 +97,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define DEBOUNCE 15
#define PREVENT_STUCK_MODIFIERS
#define USB_MAX_POWER_CONSUMPTION 500
// RGB backlight

@ -13,6 +13,7 @@ AUTOLOG_ENABLE = no
RGBLIGHT_ENABLE = yes
RGBLIGHT_ANIMATION = yes
EXTRAKEY_ENABLE = yes
LEADER_ENABLE = yes
OPT_DEFS += -DUSER_PRINT

@ -9,7 +9,6 @@
#define PRESS(keycode) register_code16(keycode)
#define RELEASE(keycode) unregister_code16(keycode)
#define PREVENT_STUCK_MODIFIERS
uint16_t VIM_QUEUE = KC_NO;

@ -15,8 +15,6 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define PREVENT_STUCK_MODIFIERS
#undef IGNORE_MOD_TAP_INTERRUPT
#define IGNORE_MOD_TAP_INTERRUPT

@ -13,7 +13,6 @@
#define IGNORE_MOD_TAP_INTERRUPT
#define PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
#undef MOUSEKEY_DELAY
#define MOUSEKEY_DELAY 100

@ -1,2 +1,3 @@
BACKLIGHT_ENABLE = yes
UNICODE_ENABLE = yes
LEADER_ENABLE = yes

@ -31,8 +31,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PRODUCT ergoinu
#define DESCRIPTION An (Not Portable But Small) Ergonomic split keyboard
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100

@ -33,9 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_TOGGLE 2
// required if modifiers are defined in layers besided the default one.
#define PREVENT_STUCK_MODIFIERS
#undef RGBLED_NUM
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 12

@ -42,8 +42,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
/* there is no rgb underglow by default. */
#define RGB_DI_PIN

@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E6
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -22,9 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_TERM 100
/* Try to prevent sticky keys */
#define PREVENT_STUCK_MODIFIERS
/* Use I2C or Serial, not both */
#define USE_SERIAL

@ -43,10 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -17,6 +17,7 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
TAP_DANCE_ENABLE = yes
LEADER_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../../Makefile

@ -43,10 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -43,10 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -3,6 +3,4 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#endif

@ -1,7 +1,6 @@
#include "../../config.h"
//GRAVE_ESC override for CTRL+SHIFT+ESC Windows task manager shortcut.
#define GRAVE_ESC_CTRL_OVERRIDE
#define PREVENT_STUCK_MODIFIERS
//Delay matrix scan for tap dance, reduce to activate modifier keys faster.
//#define TAPPING_TERM 200

@ -5,7 +5,6 @@
#define LEADER_TIMEOUT 300
//#define BACKLIGHT_BREATHING
#define PREVENT_STUCK_MODIFIERS
#define USE_I2C
#define SSD1306OLED

@ -5,7 +5,6 @@
#define LEADER_TIMEOUT 300
//#define BACKLIGHT_BREATHING
#define PREVENT_STUCK_MODIFIERS
#define USE_I2C
#define SSD1306OLED

@ -95,6 +95,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#define PREVENT_STUCK_MODIFIERS
#endif

@ -3,8 +3,6 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS

@ -63,8 +63,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 15
#define PREVENT_STUCK_MODIFIERS
#define USB_MAX_POWER_CONSUMPTION 500
#endif

@ -159,8 +159,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION
#define PREVENT_STUCK_MODIFIERS
#undef TAPPING_TOGGLE
#define TAPPING_TOGGLE 2

@ -11,8 +11,6 @@
/* skip bootmagic and eeconfig */
#define BOOTMAGIC_KEY_SKIP KC_SPACE
#define PREVENT_STUCK_MODIFIERS
#define RGBSPS_ENABLE
#define RGBSPS_DEMO_ENABLE

@ -11,8 +11,6 @@
/* skip bootmagic and eeconfig */
#define BOOTMAGIC_KEY_SKIP KC_SPACE
#define PREVENT_STUCK_MODIFIERS
#define RGBSPS_ENABLE
#define RGBSPS_DEMO_ENABLE

@ -49,10 +49,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -28,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DESCRIPTION A split keyboard for the cheap makers
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100

@ -35,7 +35,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define SSD1306OLED
#define PREVENT_STUCK_MODIFIERS
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100

@ -28,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DESCRIPTION A split keyboard for the cheap makers
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100

@ -1,2 +1,3 @@
TAP_DANCE_ENABLE = no
UNICODE_ENABLE = no
LEADER_ENABLE = yes

@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_H
#define CONFIG_H
#define PREVENT_STUCK_MODIFIERS
/* USB Device descriptor parameter */
#define VENDOR_ID 0x1c11
#define PRODUCT_ID 0xb04d

@ -27,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Select hand configuration */
#define PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
#define MASTER_LEFT
// #define MASTER_RIGHT
// #define EE_HANDS

@ -19,9 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_TERM 150
/* Try to prevent sticky keys */
#define PREVENT_STUCK_MODIFIERS
/* Use I2C or Serial, not both */
#define USE_SERIAL

@ -20,8 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
// #define PREVENT_STUCK_MODIFIERS
/* Use I2C or Serial, not both */
#define USE_SERIAL

@ -23,8 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define USE_SERIAL
#define EE_HANDS
#define PREVENT_STUCK_MODIFIERS
#undef PRODUCT
#define PRODUCT Iris Keyboard

@ -1,7 +1,6 @@
#include "../../config.h"
//GRAVE_ESC override for CTRL+SHIFT+ESC Windows task manager shortcut.
#define GRAVE_ESC_CTRL_OVERRIDE
#define PREVENT_STUCK_MODIFIERS
//Delay matrix scan for tap dance, reduce to activate modifier keys faster.
//#define TAPPING_TERM 200

@ -1,8 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#endif

@ -4,6 +4,5 @@
#include "../../config.h"
#define FORCE_NKRO
#define PREVENT_STUCK_MODIFIERS
#endif

@ -3,7 +3,6 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
// #define TAPPING_TERM 300
#endif

@ -3,7 +3,6 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_TERM 200
#endif

@ -3,7 +3,6 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_TERM 300
#endif

@ -3,7 +3,6 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_TERM 300
#endif

@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_H
#define CONFIG_H
#define PREVENT_STUCK_MODIFIERS
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6464

@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_H
#define CONFIG_H
#define PREVENT_STUCK_MODIFIERS
/* USB Device descriptor parameter */
#define VENDOR_ID 0x1c11
#define PRODUCT_ID 0xb04d

@ -111,7 +111,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
)
#define TAPPING_TERM 200
#define PREVENT_STUCK_MODIFIERS
/* control how magic key switches layers */
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true

@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -5,7 +5,6 @@
#include "../../config.h"
// place overrides here
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#define TAPPING_TERM 175
#define TAPPING_TOGGLE 2

@ -38,8 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define SSD1306OLED
//#define OLED_ROTATE180
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100

@ -43,7 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#undef TAPPING_TERM
#define TAPPING_TERM 200 //At 500 some bad logic takes hold
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#define PERMISSIVE_HOLD

@ -25,9 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_TERM 150
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
/* Use I2C or Serial, not both */
#define USE_SERIAL

@ -43,7 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 1
// Typing Options
#define PREVENT_STUCK_MODIFIERS
#define QMK_KEYS_PER_SCAN 4
#endif

@ -12,6 +12,4 @@
// #define MASTER_RIGHT
#define EE_HANDS // We like to have choices I guess
#define PREVENT_STUCK_MODIFIERS // When switching layers, this will release all mods
#endif

@ -37,7 +37,6 @@ the Free Software Foundation, either version 2 of the License, or
#define EE_HANDS
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#define PERMISSIVE_HOLD

@ -1,2 +0,0 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS

@ -62,9 +62,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -36,5 +36,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
#define PREVENT_STUCK_MODIFIERS
#endif

@ -1,8 +1,6 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#endif

@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PRODUCT Mint60
#define DESCRIPTION A row staggered split keyboard
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100

@ -52,8 +52,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* These options are also useful to firmware size reduction.
*/
#define PREVENT_STUCK_MODIFIERS
/* disable debug print */
//#define NO_DEBUG

@ -64,9 +64,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -53,9 +53,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
false \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define BACKLIGHT_LEVELS 10
#define BACKLIGHT_PIN B7

@ -60,9 +60,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
/* ws2812b options */
#define RGB_DI_PIN B5
#ifdef RGB_DI_PIN

@ -71,9 +71,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN F6
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 10

@ -45,10 +45,6 @@
/* force n-key rollover*/
#define FORCE_NKRO
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -110,8 +110,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN D0
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -8,7 +8,4 @@
#undef PRODUCT
#define PRODUCT Pegasus Hoof Citadel
/* necessary option for this keymap, because CAPS is redefined in Layer 0 */
#define PREVENT_STUCK_MODIFIERS
#endif

@ -1,8 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#endif

@ -3,9 +3,6 @@
#include "../../config.h"
// required because lower/raise modifiers are redefined by colemak-dh
#define PREVENT_STUCK_MODIFIERS
// tap dance key press termination interval
#define TAPPING_TERM 250

@ -1,8 +1,5 @@
#pragma once
/* Prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(PLANCK_SOUND)

@ -17,9 +17,6 @@
#define PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
/*
* MIDI options
*/

@ -1,8 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#endif

@ -4,6 +4,5 @@
#define TAPPING_TERM 200
#include "../../config.h"
#define PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
#endif

@ -10,7 +10,6 @@
#define _______ KC_TRNS
#define XXXXXXX KC_NO
#define PREVENT_STUCK_MODIFIERS
#define USB_MAX_POWER_CONSUMPTION 100
#define ONESHOT_TAP_TOGGLE 2

@ -5,7 +5,6 @@
#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
#define PREVENT_STUCK_MODIFIERS
extern keymap_config_t keymap_config;
// Symbolic names for macro IDs.

@ -5,8 +5,6 @@
#define LEADER_TIMEOUT 300
#define BACKLIGHT_BREATHING
#define PREVENT_STUCK_MODIFIERS
/* ws2812 RGB LED */
#define RGB_DI_PIN B1

@ -18,6 +18,7 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
SWAP_HANDS_ENABLE = yes # Enable one-hand typing
STENO_ENABLE = yes # Enable TX Bolt protocol for Stenography, requires VIRTSER and may not work with mouse keys
LEADER_ENABLE = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend

@ -3,9 +3,6 @@
#include "../../config.h"
// required because lower/raise modifiers are redefined by colemak-dh
#define PREVENT_STUCK_MODIFIERS
// tap dance key press termination interval
#define TAPPING_TERM 250

@ -3,9 +3,6 @@
#include "../../config.h"
// required because lower/raise modifiers are redefined by colemak-dh
#define PREVENT_STUCK_MODIFIERS
// tap dance key press termination interval
#define TAPPING_TERM 250

@ -2,7 +2,6 @@
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H
#ifdef AUDIO_ENABLE
// #define STARTUP_SONG SONG(E1M1_DOOM)
@ -24,7 +23,6 @@
#define FORCE_NKRO
#define LEADER_TIMEOUT 300
#define PREVENT_STUCK_MODIFIERS
#undef DEBOUNCE
#define DEBOUNCE 0

@ -19,8 +19,6 @@
#include "config_common.h"
#define PREVENT_STUCK_MODIFIERS
#ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(PLANCK_SOUND)
#endif

@ -1,7 +1,6 @@
// This is the personal keymap of Jeremy Cowgar (@jcowgar). It is written for the programmer.
// Configuration options
#define PREVENT_STUCK_MODIFIERS
#pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example"
#include "planck.h"

@ -1,4 +1,5 @@
UNICODE_ENABLE = yes
LEADER_ENABLE = yes
ifndef QUANTUM_DIR
include ../../../../Makefile

@ -1,8 +0,0 @@
#ifndef LAE3_KEYMAP_H
#define LAE3_KEYMAP_H
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#endif

@ -1,5 +1,4 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
// for the broken board
#undef MATRIX_COL_PINS

@ -20,7 +20,3 @@ rest of the symbols, mostly mapped with the ten key numbers.
The normal right shift key uses the `MT` macro to trigger Enter on tap and right
shift when held.
This keymap sets the `PREVENT_STUCK_MODIFIERS` flag to avoid the occasional WTF
moments when using a modifier keys and accidentally releasing them after moving
to a new layer.

@ -33,7 +33,6 @@
#define IGNORE_MOD_TAP_INTERRUPT
#define PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
#define SUPER_DUPER_SOUND S__NOTE(_B1)

@ -1,8 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#endif

@ -11,8 +11,6 @@
/* skip bootmagic and eeconfig */
#define BOOTMAGIC_KEY_SKIP KC_SPACE
#define PREVENT_STUCK_MODIFIERS
#define UNICODE_TYPE_DELAY 0
#define LAYOUT_DVORAK

@ -3,9 +3,6 @@
#include "../../config.h"
// required because lower/raise modifiers are redefined by colemak-dh
#define PREVENT_STUCK_MODIFIERS
// tap dance key press termination interval
#define TAPPING_TERM 250

@ -15,8 +15,6 @@
#define MUSIC_MASK (keycode != KC_NO)
#define PREVENT_STUCK_MODIFIERS
/*
* MIDI options
*/

@ -3,8 +3,6 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#ifdef AUDIO_ENABLE
// #define STARTUP_SONG SONG(PLANCK_SOUND)
#define STARTUP_SONG SONG(NO_SOUND)

@ -26,9 +26,6 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
/* prevent the modifiers from being stuck, sacrificing some memory */
#define PREVENT_STUCK_MODIFIERS
/* A larger buffer for the dynamic macros as this keymap is not taking
* up that much memory.
*/

@ -1,11 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#endif

@ -55,7 +55,6 @@
//#define NO_ACTION_ONESHOT
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define PREVENT_STUCK_MODIFIERS
//#define DYNAMIC_MACRO_ENABLE // Enable if you need to use the macro functionality
//#define SPACE_CADET // Parenthesis on L/R shift

@ -50,9 +50,6 @@
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 6
/* Prevent modifiers from being stuck on after layer changes. */
#define PREVENT_STUCK_MODIFIERS
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
//#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */

@ -42,8 +42,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN B1
#ifdef RGB_DI_PIN

@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -4,6 +4,5 @@
#include "../../config.h"
#define FORCE_NKRO 1
#define PREVENT_STUCK_MODIFIERS
#endif

@ -4,6 +4,5 @@
#include "../../config.h"
#define FORCE_NKRO 1
#define PREVENT_STUCK_MODIFIERS
#endif

@ -1 +1,2 @@
BACKLIGHT_ENABLE = no
LEADER_ENABLE = yes

@ -1,8 +0,0 @@
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#endif

@ -87,7 +87,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_ONESHOT
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define PREVENT_STUCK_MODIFIERS
//#define DYNAMIC_MACRO_ENABLE // Enable if you need to use the macro functionality
//#define SPACE_CADET // Parenthesis on L/R shift

@ -50,9 +50,6 @@
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 6
/* Prevent modifiers from being stuck on after layer changes. */
#define PREVENT_STUCK_MODIFIERS
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
//#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */

@ -60,10 +60,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -11,7 +11,6 @@
// #define MASTER_RIGHT
#define EE_HANDS
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#define TAPPING_TERM 175
#define TAPPING_TOGGLE 2

@ -105,7 +105,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Space Cadet Rollover - if set, allows to tap opposite shift key to cancel erroneous press
#define DISABLE_SPACE_CADET_ROLLOVER
// Prevent stuck modifiers
#define PREVENT_STUCK_MODIFIERS
#endif

@ -17,9 +17,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN F6
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -49,7 +49,4 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#endif

@ -49,8 +49,4 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#endif

@ -46,10 +46,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -52,8 +52,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* These options are also useful to firmware size reduction.
*/
#define PREVENT_STUCK_MODIFIERS
/* disable debug print */
//#define NO_DEBUG

@ -41,9 +41,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_TERM 200
#define PERMISSIVE_HOLD

@ -3,7 +3,6 @@
#include QMK_KEYBOARD_CONFIG_H
#define PREVENT_STUCK_MODIFIERS
#define SPACE_COUNT 3
#define TEMPLATE( \

@ -47,9 +47,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN F7
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -34,9 +34,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
/* eliminate lag on space cadet mods */
#define PERMISSIVE_HOLD

@ -60,9 +60,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
/* ws2812b options */
#define RGB_DI_PIN F6
#ifdef RGB_DI_PIN

@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NO_MUSIC_MODE
#endif
#undef PREVENT_STUCK_MODIFIERS
#define STRICT_LAYER_RELEASE
#define LAYOUT_ortho_5x7( \
L00, L01, L02, L03, L04, L05, L06, \

@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_H
#define CONFIG_H
#define PREVENT_STUCK_MODIFIERS
/* USB Device descriptor parameter */
#define VENDOR_ID 0x1c11
#define PRODUCT_ID 0xb04d

@ -21,6 +21,5 @@
#define TAPPING_TERM 200
#define PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
#endif

@ -26,7 +26,6 @@
#define TAPPING_TOGGLE 2
//#define PERMISSIVE_HOLD
//#define QMK_KEYS_PER_SCAN 4
#define PREVENT_STUCK_MODIFIERS
#define FORCE_NKRO
#define MOUSEKEY_INTERVAL 16

@ -43,10 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -3,7 +3,6 @@
#include "../../config.h"
#define PREVENT_STUCK_MODIFIERS
#define TAPPING_TERM 300
#endif

@ -39,10 +39,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 0

@ -34,7 +34,3 @@
// Scale brightnes according to BRIGHTNESS_CORRECTION_TABLE in quantum/rgblight.c.
// This allows to mitigate uneven brightness from LED underglow strips.
// #define LED_BRIGHTNESS_CORRECTION
// Prevent modifiers on layer 1 from persisting after we let go
#define PREVENT_STUCK_MODIFIERS

@ -43,9 +43,6 @@
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
)
/* prevent stuck modifiers */
#define PREVENT_STUCK_MODIFIERS
#define RGB_DI_PIN D6
#ifdef RGB_DI_PIN
#define RGBLIGHT_ANIMATIONS

@ -3,7 +3,6 @@
#include QMK_KEYBOARD_CONFIG_H
#define PREVENT_STUCK_MODIFIERS
#define ENABLE_GAME_LAYER
#define TEMPLATE( \

@ -3,7 +3,6 @@
#include QMK_KEYBOARD_CONFIG_H
#define PREVENT_STUCK_MODIFIERS
#define ENABLE_GAME_LAYER
#define TEMPLATE( \

@ -3,7 +3,6 @@
#include QMK_KEYBOARD_CONFIG_H
#define PREVENT_STUCK_MODIFIERS
#define ENABLE_GAME_LAYER
#define TEMPLATE( \

@ -2,5 +2,4 @@
#undef TAPPING_TERM
#define TAPPING_TERM 300 //At 500 some bad logic takes hold
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT

@ -1,3 +1,2 @@
COMMAND_ENABLE = no # Commands for debug and configuration
LEADER_ENABLE = yes

@ -8,6 +8,7 @@ TAP_DANCE_ENABLE = yes
KEYLOGGER_ENABLE ?= yes
UCIS_ENABLE = yes
MOUSEKEY_ENABLE = no
LEADER_ENABLE = yes
AUTOLOG_ENABLE ?= no

@ -4,7 +4,6 @@
#include QMK_KEYBOARD_CONFIG_H
#define FORCE_NKRO
#define PREVENT_STUCK_MODIFIERS
#undef TAPPING_TERM
#undef IGNORE_MOD_TAP_INTERRUPT

@ -1 +1,2 @@
UNICODE_ENABLE = yes
LEADER_ENABLE = yes

@ -3,5 +3,4 @@
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
COMMAND_ENABLE = no # Commands for debug and configuration
LEADER_ENABLE = yes

@ -1 +1,2 @@
TAP_DANCE_ENABLE=yes
LEADER_ENABLE = yes

@ -2,4 +2,4 @@
This keymapping is designed to be reasonably familiar to an ordinary Mac keyboard while taking advantage of the Ergodox EZ's features. Caps lock instead enables a layer which allows a user to use HJKL as arrow keys and to control media. Shift and control have additional mappings on S and D to provide easier access while holding down caps lock.
If you choose to compile this yourself, be sure to compile with `#define PREVENT_STUCK_MODIFIERS` in your `config.h`. Firmware built using [qmk_firmware](https://github.com/qmk/qmk_firmware/).
Firmware built using [qmk_firmware](https://github.com/qmk/qmk_firmware/).

@ -39,7 +39,7 @@ The right arrow key and End key toggle the control layer on the left board. Ther
On the left board you have mouse control with left & right click in the location of the G and B keys.
On the right board you have vim-style arrow keys using hjkl
The left thumb cluster moves shift and alt within easy reach while holding the toggle (end). So far I've found this convient to navigate and skip around text when using the hjkl arrow keys. I found that it was easy to get the alt key stuck on depending on what key you released first so I added the PREVENT_STUCK_MODIFIERS to the config.h to help with that.
The left thumb cluster moves shift and alt within easy reach while holding the toggle (end). So far I've found this convient to navigate and skip around text when using the hjkl arrow keys.
## Changelog

@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
// prevent stuck modifiers
#define PREVENT_STUCK_MODIFIERS
// hold & tapping delay setting
#define TAPPING_TERM 100

@ -3,7 +3,6 @@
#include QMK_KEYBOARD_CONFIG_H
#define PREVENT_STUCK_MODIFIERS
#define ENABLE_GAME_LAYER
#define TEMPLATE_TKL(\

@ -1,76 +0,0 @@
/* Copyright 2016 Jack Humbert
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "process_chording.h"
bool keys_chord(uint8_t keys[]) {
uint8_t keys_size = sizeof(keys)/sizeof(keys[0]);
bool pass = true;
uint8_t in = 0;
for (uint8_t i = 0; i < chord_key_count; i++) {
bool found = false;
for (uint8_t j = 0; j < keys_size; j++) {
if (chord_keys[i] == (keys[j] & 0xFF)) {
in++; // detects key in chord
found = true;
break;
}
}
if (found)
continue;
if (chord_keys[i] != 0) {
pass = false; // makes sure rest are blank
}
}
return (pass && (in == keys_size));
}
bool process_chording(uint16_t keycode, keyrecord_t *record) {
if (keycode >= QK_CHORDING && keycode <= QK_CHORDING_MAX) {
if (record->event.pressed) {
if (!chording) {
chording = true;
for (uint8_t i = 0; i < CHORDING_MAX; i++)
chord_keys[i] = 0;
chord_key_count = 0;
chord_key_down = 0;
}
chord_keys[chord_key_count] = (keycode & 0xFF);
chord_key_count++;
chord_key_down++;
return false;
} else {
if (chording) {
chord_key_down--;
if (chord_key_down == 0) {
chording = false;
// Chord Dictionary
if (keys_chord((uint8_t[]){KC_ENTER, KC_SPACE})) {
register_code(KC_A);
unregister_code(KC_A);
return false;
}
for (uint8_t i = 0; i < chord_key_count; i++) {
register_code(chord_keys[i]);
unregister_code(chord_keys[i]);
return false;
}
}
}
}
}
return true;
}

@ -1,32 +0,0 @@
/* Copyright 2016 Jack Humbert
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PROCESS_CHORDING_H
#define PROCESS_CHORDING_H
#include "quantum.h"
// Chording stuff
#define CHORDING_MAX 4
bool chording = false;
uint8_t chord_keys[CHORDING_MAX] = {0};
uint8_t chord_key_count = 0;
uint8_t chord_key_down = 0;
bool process_chording(uint16_t keycode, keyrecord_t *record);
#endif

@ -14,7 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef DISABLE_LEADER
#ifdef LEADER_ENABLE
#include "process_leader.h"

@ -196,7 +196,7 @@ bool process_record_quantum(keyrecord_t *record) {
keypos_t key = record->event.key;
uint16_t keycode;
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
/* TODO: Use store_or_get_action() or a similar function. */
if (!disable_action_cache) {
uint8_t layer;
@ -251,12 +251,9 @@ bool process_record_quantum(keyrecord_t *record) {
#ifdef TAP_DANCE_ENABLE
process_tap_dance(keycode, record) &&
#endif
#ifndef DISABLE_LEADER
#ifdef LEADER_ENABLE
process_leader(keycode, record) &&
#endif
#ifndef DISABLE_CHORDING
process_chording(keycode, record) &&
#endif
#ifdef COMBO_ENABLE
process_combo(keycode, record) &&
#endif

@ -89,15 +89,10 @@ extern uint32_t default_layer_state;
#include "process_music.h"
#endif
#ifndef DISABLE_LEADER
#ifdef LEADER_ENABLE
#include "process_leader.h"
#endif
#define DISABLE_CHORDING
#ifndef DISABLE_CHORDING
#include "process_chording.h"
#endif
#ifdef UNICODE_ENABLE
#include "process_unicode.h"
#endif

@ -63,10 +63,6 @@ enum quantum_keycodes {
QK_ONE_SHOT_LAYER_MAX = 0x54FF,
QK_ONE_SHOT_MOD = 0x5500,
QK_ONE_SHOT_MOD_MAX = 0x55FF,
#ifndef DISABLE_CHORDING
QK_CHORDING = 0x5600,
QK_CHORDING_MAX = 0x56FF,
#endif
QK_TAP_DANCE = 0x5700,
QK_TAP_DANCE_MAX = 0x57FF,
QK_LAYER_TAP_TOGGLE = 0x5800,
@ -123,7 +119,7 @@ enum quantum_keycodes {
GRAVE_ESC,
// Leader key
#ifndef DISABLE_LEADER
#ifdef LEADER_ENABLE
KC_LEAD,
#endif

@ -120,7 +120,7 @@ void process_hand_swap(keyevent_t *event) {
}
#endif
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
bool disable_action_cache = false;
void process_record_nocache(keyrecord_t *record)

@ -62,7 +62,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt);
bool process_record_quantum(keyrecord_t *record);
/* Utilities for actions. */
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
extern bool disable_action_cache;
#endif

@ -219,7 +219,7 @@ void layer_debug(void)
}
#endif
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {{0}};
void update_source_layers_cache(keypos_t key, uint8_t layer)
@ -263,7 +263,7 @@ uint8_t read_source_layers_cache(keypos_t key)
*/
action_t store_or_get_action(bool pressed, keypos_t key)
{
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
if (disable_action_cache) {
return layer_switch_get_action(key);
}

@ -88,7 +88,7 @@ uint32_t layer_state_set_kb(uint32_t state);
#endif
/* pressed actions cache */
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
/* The number of bits needed to represent the layer number: log2(32). */
#define MAX_LAYER_BITS 5
void update_source_layers_cache(keypos_t key, uint8_t layer);

@ -1,4 +1,3 @@
#pragma once
#define PREVENT_STUCK_MODIFIERS
#define PERMISSIVE_HOLD

@ -10,7 +10,6 @@
// actually sends Ctrl-x. That's bad.)
#define IGNORE_MOD_TAP_INTERRUPT
#undef PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
#ifdef TAPPING_TERM
#undef TAPPING_TERM

@ -43,7 +43,6 @@
// actually sends Ctrl-x. That's bad.)
#define IGNORE_MOD_TAP_INTERRUPT
#undef PERMISSIVE_HOLD
#define PREVENT_STUCK_MODIFIERS
// #define TAPPING_FORCE_HOLD
//#define RETRO_TAPPING
@ -64,8 +63,4 @@
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
#define DISABLE_LEADER
#define MACRO_TIMER 5

@ -15,7 +15,6 @@
//#define LEADER_TIMEOUT 300
//#define BACKLIGHT_BREATHING
#define PREVENT_STUCK_MODIFIERS
//#define PERMISSIVE_HOLD
// #define QMK_KEYS_PER_SCAN 4

@ -6,12 +6,6 @@
// https://docs.qmk.fm/reference/config-options#features-that-can-be-enabled
////////////////////////////////////////////////////////////////////////////////
// Prevent modifiers from sticking when switching layers
// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers
#define PREVENT_STUCK_MODIFIERS
////////////////////////////////////////////////////////////////////////////////
// Behaviors That Can Be Configured
// https://docs.qmk.fm/reference/config-options#behaviors-that-can-be-configured

@ -1,7 +1,6 @@
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H
#define PREVENT_STUCK_MODIFIERS
#define IGNORE_MOD_TAP_INTERRUPT
#define RESET_LAYER 15

@ -1,8 +1,6 @@
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H
#define PREVENT_STUCK_MODIFIERS
//TAPPING_TERM
#ifdef TAP_DANCE_ENABLE
#define TAPPING_TERM 200

@ -11,7 +11,7 @@
// actually sends Ctrl-x. That's bad.)
#define IGNORE_MOD_TAP_INTERRUPT
#undef PERMISSIVE_HOLD
#undef PREVENT_STUCK_MODIFIERS
#define STRICT_LAYER_RELEASE
#define FORCE_NKRO

Loading…
Cancel
Save