forked from mirrors/qmk_firmware
* Keep pressed keys on layer state change * Add doc comment for clear_keyboard_but_mods_and_keys * Keep pressed keys only if PREVENT_STUCK_MODIFIERS is on * Check STRICT_LAYER_RELEASE instead of PREVENT_STUCK_MODIFIERS
This commit is contained in:
parent
fbcbf44926
commit
93b004c943
3 changed files with 19 additions and 1 deletions
|
@ -898,10 +898,19 @@ void clear_keyboard(void)
|
||||||
* FIXME: Needs documentation.
|
* FIXME: Needs documentation.
|
||||||
*/
|
*/
|
||||||
void clear_keyboard_but_mods(void)
|
void clear_keyboard_but_mods(void)
|
||||||
|
{
|
||||||
|
clear_keys();
|
||||||
|
clear_keyboard_but_mods_and_keys();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \brief Utilities for actions. (FIXME: Needs better description)
|
||||||
|
*
|
||||||
|
* FIXME: Needs documentation.
|
||||||
|
*/
|
||||||
|
void clear_keyboard_but_mods_and_keys()
|
||||||
{
|
{
|
||||||
clear_weak_mods();
|
clear_weak_mods();
|
||||||
clear_macro_mods();
|
clear_macro_mods();
|
||||||
clear_keys();
|
|
||||||
send_keyboard_report();
|
send_keyboard_report();
|
||||||
#ifdef MOUSEKEY_ENABLE
|
#ifdef MOUSEKEY_ENABLE
|
||||||
mousekey_clear();
|
mousekey_clear();
|
||||||
|
|
|
@ -94,6 +94,7 @@ void unregister_mods(uint8_t mods);
|
||||||
//void set_mods(uint8_t mods);
|
//void set_mods(uint8_t mods);
|
||||||
void clear_keyboard(void);
|
void clear_keyboard(void);
|
||||||
void clear_keyboard_but_mods(void);
|
void clear_keyboard_but_mods(void);
|
||||||
|
void clear_keyboard_but_mods_and_keys(void);
|
||||||
void layer_switch(uint8_t new_layer);
|
void layer_switch(uint8_t new_layer);
|
||||||
bool is_tap_key(keypos_t key);
|
bool is_tap_key(keypos_t key);
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,11 @@ static void default_layer_state_set(uint32_t state)
|
||||||
default_layer_debug(); debug(" to ");
|
default_layer_debug(); debug(" to ");
|
||||||
default_layer_state = state;
|
default_layer_state = state;
|
||||||
default_layer_debug(); debug("\n");
|
default_layer_debug(); debug("\n");
|
||||||
|
#ifdef STRICT_LAYER_RELEASE
|
||||||
clear_keyboard_but_mods(); // To avoid stuck keys
|
clear_keyboard_but_mods(); // To avoid stuck keys
|
||||||
|
#else
|
||||||
|
clear_keyboard_but_mods_and_keys(); // Don't reset held keys
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \brief Default Layer Print
|
/** \brief Default Layer Print
|
||||||
|
@ -127,7 +131,11 @@ void layer_state_set(uint32_t state)
|
||||||
layer_debug(); dprint(" to ");
|
layer_debug(); dprint(" to ");
|
||||||
layer_state = state;
|
layer_state = state;
|
||||||
layer_debug(); dprintln();
|
layer_debug(); dprintln();
|
||||||
|
#ifdef STRICT_LAYER_RELEASE
|
||||||
clear_keyboard_but_mods(); // To avoid stuck keys
|
clear_keyboard_but_mods(); // To avoid stuck keys
|
||||||
|
#else
|
||||||
|
clear_keyboard_but_mods_and_keys(); // Don't reset held keys
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \brief Layer clear
|
/** \brief Layer clear
|
||||||
|
|
Loading…
Reference in a new issue