From d38501af8e410774c0ec6ca6a43e5ce22e831fb0 Mon Sep 17 00:00:00 2001 From: Kurtis Lew Date: Fri, 17 Jun 2022 20:41:53 -0700 Subject: [PATCH] refactor(behaviors): Update Behaviors' KConfig Preprocessor Functions Updates behaviors to compile only those explicitly used in a keymap, similarly to #1269. --- app/CMakeLists.txt | 30 +++++++++--------- app/Kconfig | 79 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 92 insertions(+), 17 deletions(-) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 4b61fc72..74b06259 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -37,22 +37,22 @@ target_sources(app PRIVATE src/behaviors/behavior_reset.c) target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c) if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL) target_sources(app PRIVATE src/hid.c) - target_sources(app PRIVATE src/behaviors/behavior_key_press.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_KEY_PRESS app PRIVATE src/behaviors/behavior_key_press.c) target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_KEY_TOGGLE app PRIVATE src/behaviors/behavior_key_toggle.c) - target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c) - target_sources(app PRIVATE src/behaviors/behavior_sticky_key.c) - target_sources(app PRIVATE src/behaviors/behavior_caps_word.c) - target_sources(app PRIVATE src/behaviors/behavior_key_repeat.c) - target_sources(app PRIVATE src/behaviors/behavior_macro.c) - target_sources(app PRIVATE src/behaviors/behavior_momentary_layer.c) - target_sources(app PRIVATE src/behaviors/behavior_mod_morph.c) - target_sources(app PRIVATE src/behaviors/behavior_outputs.c) - target_sources(app PRIVATE src/behaviors/behavior_tap_dance.c) - target_sources(app PRIVATE src/behaviors/behavior_toggle_layer.c) - target_sources(app PRIVATE src/behaviors/behavior_to_layer.c) - target_sources(app PRIVATE src/behaviors/behavior_transparent.c) - target_sources(app PRIVATE src/behaviors/behavior_none.c) - target_sources(app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_HOLD_TAP app PRIVATE src/behaviors/behavior_hold_tap.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_STICKY_KEY app PRIVATE src/behaviors/behavior_sticky_key.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_CAPS_WORD app PRIVATE src/behaviors/behavior_caps_word.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_KEY_REPEAT app PRIVATE src/behaviors/behavior_key_repeat.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MACRO app PRIVATE src/behaviors/behavior_macro.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MOMENTARY_LAYER app PRIVATE src/behaviors/behavior_momentary_layer.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MOD_MORPH app PRIVATE src/behaviors/behavior_mod_morph.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_OUTPUTS app PRIVATE src/behaviors/behavior_outputs.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TAP_DANCE app PRIVATE src/behaviors/behavior_tap_dance.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TOGGLE_LAYER app PRIVATE src/behaviors/behavior_toggle_layer.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TO_LAYER app PRIVATE src/behaviors/behavior_to_layer.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TRANSPARENT app PRIVATE src/behaviors/behavior_transparent.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_NONE app PRIVATE src/behaviors/behavior_none.c) + target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE_KEY_PRESS app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c) target_sources(app PRIVATE src/combo.c) target_sources(app PRIVATE src/behavior_queue.c) target_sources(app PRIVATE src/conditional_layer.c) diff --git a/app/Kconfig b/app/Kconfig index 4bcd88b0..3123fbc2 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -330,11 +330,86 @@ config ZMK_BEHAVIORS_QUEUE_SIZE int "Maximum number of behaviors to allow queueing from a macro or other complex behavior" default 64 +DT_COMPAT_ZMK_BEHAVIOR_CAPS_WORD := zmk,behavior-caps-word +DT_COMPAT_ZMK_BEHAVIOR_HOLD_TAP := zmk,behavior-hold-tap +DT_COMPAT_ZMK_BEHAVIOR_KEY_PRESS := zmk,behavior-key-press +DT_COMPAT_ZMK_BEHAVIOR_KEY_REPEAT := zmk,behavior-key-repeat DT_COMPAT_ZMK_BEHAVIOR_KEY_TOGGLE := zmk,behavior-key-toggle +DT_COMPAT_ZMK_BEHAVIOR_MACRO := zmk,behavior-macro +DT_COMPAT_ZMK_BEHAVIOR_MOD_MORPH := zmk,behavior-mod-morph +DT_COMPAT_ZMK_BEHAVIOR_MOMENTARY_LAYER := zmk,behavior-momentary-layer +DT_COMPAT_ZMK_BEHAVIOR_NONE := zmk,behavior-none +DT_COMPAT_ZMK_BEHAVIOR_OUTPUTS := zmk,behavior-outputs +DT_COMPAT_ZMK_BEHAVIOR_SENSOR_ROTATE_KEY_PRESS := zmk,behavior-sensor-rotate-key-press +DT_COMPAT_ZMK_BEHAVIOR_STICKY_KEY := zmk,behavior-sticky-key +DT_COMPAT_ZMK_BEHAVIOR_TAP_DANCE := zmk,behavior-tap-dance +DT_COMPAT_ZMK_BEHAVIOR_TO_LAYER := zmk,behavior-to-layer +DT_COMPAT_ZMK_BEHAVIOR_TOGGLE_LAYER := zmk,behavior-toggle-layer +DT_COMPAT_ZMK_BEHAVIOR_TRANSPARENT := zmk,behavior-transparent + +config ZMK_BEHAVIOR_CAPS_WORD + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_CAPS_WORD)) + +config ZMK_BEHAVIOR_HOLD_TAP + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_HOLD_TAP)) + +config ZMK_BEHAVIOR_KEY_PRESS + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_KEY_PRESS)) + +config ZMK_BEHAVIOR_KEY_REPEAT + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_KEY_REPEAT)) config ZMK_BEHAVIOR_KEY_TOGGLE - bool - default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_KEY_TOGGLE)) + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_KEY_TOGGLE)) + +config ZMK_BEHAVIOR_MACRO + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_MACRO)) + +config ZMK_BEHAVIOR_MOD_MORPH + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_MOD_MORPH)) + +config ZMK_BEHAVIOR_MOMENTARY_LAYER + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_MOMENTARY_LAYER)) + +config ZMK_BEHAVIOR_NONE + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_NONE)) + +config ZMK_BEHAVIOR_OUTPUTS + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_OUTPUTS)) + +config ZMK_BEHAVIOR_SENSOR_ROTATE_KEY_PRESS + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_SENSOR_ROTATE_KEY_PRESS)) + +config ZMK_BEHAVIOR_STICKY_KEY + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_STICKY_KEY)) + +config ZMK_BEHAVIOR_TAP_DANCE + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_TAP_DANCE)) + +config ZMK_BEHAVIOR_TO_LAYER + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_TO_LAYER)) + +config ZMK_BEHAVIOR_TOGGLE_LAYER + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_TOGGLE_LAYER)) + +config ZMK_BEHAVIOR_TRANSPARENT + bool + default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_TRANSPARENT)) endmenu