diff --git a/core/keyboard/keymap.cpp b/core/keyboard/keymap.cpp index f01db25..801e0ed 100644 --- a/core/keyboard/keymap.cpp +++ b/core/keyboard/keymap.cpp @@ -55,8 +55,16 @@ void KeyMap::update_current_layer(const KeyboardScanResult& scan_result) const auto code = action->sequence[0].key; if (util::key_is_layer_toggle_modifier(code)) { - const auto layer = util::get_layer_toggle_modifier_layer(code); - current_layer = current_layer == layer ? 0 : layer; + if (!just_toggled_layer) + { + const auto layer = util::get_layer_toggle_modifier_layer(code); + current_layer = current_layer == layer ? 0 : layer; + just_toggled_layer = true; + } + } + else + { + just_toggled_layer = false; } } } diff --git a/core/keyboard/keymap.h b/core/keyboard/keymap.h index 767517c..f6aaa72 100644 --- a/core/keyboard/keymap.h +++ b/core/keyboard/keymap.h @@ -44,6 +44,8 @@ class KeyMap void load_default(); + bool just_toggled_layer = false; + // TODO make this configurable (see issue #1) bool layer_fallback = false;