aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tmk_core/common/action.c11
-rw-r--r--tmk_core/common/action.h1
-rw-r--r--tmk_core/common/action_layer.c8
3 files changed, 19 insertions, 1 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index 456d1e25f..b99c2acaa 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -899,9 +899,18 @@ void clear_keyboard(void)
899 */ 899 */
900void clear_keyboard_but_mods(void) 900void clear_keyboard_but_mods(void)
901{ 901{
902 clear_keys();
903 clear_keyboard_but_mods_and_keys();
904}
905
906/** \brief Utilities for actions. (FIXME: Needs better description)
907 *
908 * FIXME: Needs documentation.
909 */
910void clear_keyboard_but_mods_and_keys()
911{
902 clear_weak_mods(); 912 clear_weak_mods();
903 clear_macro_mods(); 913 clear_macro_mods();
904 clear_keys();
905 send_keyboard_report(); 914 send_keyboard_report();
906#ifdef MOUSEKEY_ENABLE 915#ifdef MOUSEKEY_ENABLE
907 mousekey_clear(); 916 mousekey_clear();
diff --git a/tmk_core/common/action.h b/tmk_core/common/action.h
index 5d797fd62..8e47e5339 100644
--- a/tmk_core/common/action.h
+++ b/tmk_core/common/action.h
@@ -94,6 +94,7 @@ void unregister_mods(uint8_t mods);
94//void set_mods(uint8_t mods); 94//void set_mods(uint8_t mods);
95void clear_keyboard(void); 95void clear_keyboard(void);
96void clear_keyboard_but_mods(void); 96void clear_keyboard_but_mods(void);
97void clear_keyboard_but_mods_and_keys(void);
97void layer_switch(uint8_t new_layer); 98void layer_switch(uint8_t new_layer);
98bool is_tap_key(keypos_t key); 99bool is_tap_key(keypos_t key);
99 100
diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c
index b8dcb34f3..120ce3f51 100644
--- a/tmk_core/common/action_layer.c
+++ b/tmk_core/common/action_layer.c
@@ -44,7 +44,11 @@ static void default_layer_state_set(uint32_t state)
44 default_layer_debug(); debug(" to "); 44 default_layer_debug(); debug(" to ");
45 default_layer_state = state; 45 default_layer_state = state;
46 default_layer_debug(); debug("\n"); 46 default_layer_debug(); debug("\n");
47#ifdef STRICT_LAYER_RELEASE
47 clear_keyboard_but_mods(); // To avoid stuck keys 48 clear_keyboard_but_mods(); // To avoid stuck keys
49#else
50 clear_keyboard_but_mods_and_keys(); // Don't reset held keys
51#endif
48} 52}
49 53
50/** \brief Default Layer Print 54/** \brief Default Layer Print
@@ -127,7 +131,11 @@ void layer_state_set(uint32_t state)
127 layer_debug(); dprint(" to "); 131 layer_debug(); dprint(" to ");
128 layer_state = state; 132 layer_state = state;
129 layer_debug(); dprintln(); 133 layer_debug(); dprintln();
134#ifdef STRICT_LAYER_RELEASE
130 clear_keyboard_but_mods(); // To avoid stuck keys 135 clear_keyboard_but_mods(); // To avoid stuck keys
136#else
137 clear_keyboard_but_mods_and_keys(); // Don't reset held keys
138#endif
131} 139}
132 140
133/** \brief Layer clear 141/** \brief Layer clear