Skip to content

Commit

Permalink
refactor: Use Kconfig to conditionally compile behaviors
Browse files Browse the repository at this point in the history
  • Loading branch information
bryanforbes committed Jan 9, 2024
1 parent db9ab30 commit 05bd3b1
Show file tree
Hide file tree
Showing 22 changed files with 118 additions and 87 deletions.
36 changes: 18 additions & 18 deletions app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,31 +29,31 @@ target_sources(app PRIVATE src/events/sensor_event.c)
target_sources(app PRIVATE src/events/mouse_button_state_changed.c)
target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/events/wpm_state_changed.c)
target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/events/usb_conn_state_changed.c)
target_sources(app PRIVATE src/behaviors/behavior_reset.c)
target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_RESET app PRIVATE src/behaviors/behavior_reset.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_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_ifdef(CONFIG_ZMK_MOUSE app PRIVATE src/mouse.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_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(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_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_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_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 app PRIVATE src/behaviors/behavior_sensor_rotate.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR app PRIVATE src/behaviors/behavior_sensor_rotate_var.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON app PRIVATE src/behaviors/behavior_sensor_rotate_common.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MOUSE_KEY_PRESS app PRIVATE src/behaviors/behavior_mouse_key_press.c)
target_sources(app PRIVATE src/combo.c)
target_sources(app PRIVATE src/behaviors/behavior_tap_dance.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TAP_DANCE app PRIVATE src/behaviors/behavior_tap_dance.c)
target_sources(app PRIVATE src/behavior_queue.c)
target_sources(app PRIVATE src/conditional_layer.c)
target_sources(app PRIVATE src/endpoints.c)
Expand All @@ -67,14 +67,14 @@ if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)

if (CONFIG_ZMK_BLE)
target_sources(app PRIVATE src/events/ble_active_profile_changed.c)
target_sources(app PRIVATE src/behaviors/behavior_bt.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_BLUETOOTH app PRIVATE src/behaviors/behavior_bt.c)
target_sources(app PRIVATE src/ble.c)
target_sources(app PRIVATE src/hog.c)
endif()
endif()

target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c)
target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/behaviors/behavior_backlight.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c)
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_BACKLIGHT app PRIVATE src/behaviors/behavior_backlight.c)

target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/events/battery_state_changed.c)
target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/battery.c)
Expand Down
97 changes: 95 additions & 2 deletions app/Kconfig.behaviors
Original file line number Diff line number Diff line change
@@ -1,17 +1,90 @@
# Copyright (c) 2023 The ZMK Contributors
# SPDX-License-Identifier: MIT

config ZMK_BEHAVIOR_BACKLIGHT
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_BACKLIGHT_ENABLED
imply ZMK_BACKLIGHT

config ZMK_BEHAVIOR_BLUETOOTH
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_BLUETOOTH_ENABLED

config ZMK_BEHAVIOR_CAPS_WORD
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_CAPS_WORD_ENABLED

config ZMK_BEHAVIOR_EXT_POWER
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_EXT_POWER_ENABLED
imply ZMK_EXT_POWER

config ZMK_BEHAVIOR_HOLD_TAP
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_HOLD_TAP_ENABLED

config ZMK_BEHAVIOR_KEY_PRESS
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_KEY_PRESS_ENABLED

config ZMK_BEHAVIOR_KEY_REPEAT
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_KEY_REPEAT_ENABLED

config ZMK_BEHAVIOR_KEY_TOGGLE
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_KEY_TOGGLE_ENABLED

config ZMK_BEHAVIOR_MACRO
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_MACRO_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_ONE_PARAM_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_TWO_PARAM_ENABLED

config ZMK_BEHAVIOR_MOD_MORPH
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_MOD_MORPH_ENABLED

config ZMK_BEHAVIOR_MOMENTARY_LAYER
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_MOMENTARY_LAYER_ENABLED

config ZMK_BEHAVIOR_MOUSE_KEY_PRESS
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_MOUSE_KEY_PRESS_ENABLED
imply ZMK_MOUSE

config ZMK_BEHAVIOR_NONE
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_NONE_ENABLED

config ZMK_BEHAVIOR_OUTPUTS
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_OUTPUTS_ENABLED

config ZMK_BEHAVIOR_RESET
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_RESET_ENABLED

config ZMK_BEHAVIOR_RGB_UNDERGLOW
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_RGB_UNDERGLOW_ENABLED
imply ZMK_RGB_UNDERGLOW

config ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
bool
default n
Expand All @@ -28,7 +101,27 @@ config ZMK_BEHAVIOR_SENSOR_ROTATE_VAR
depends on DT_HAS_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR_ENABLED
select ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON

config ZMK_BEHAVIOR_MACRO
config ZMK_BEHAVIOR_STICKY_KEY
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_STICKY_KEY_ENABLED

config ZMK_BEHAVIOR_TAP_DANCE
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_TAP_DANCE_ENABLED

config ZMK_BEHAVIOR_TO_LAYER
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_TO_LAYER_ENABLED

config ZMK_BEHAVIOR_TOGGLE_LAYER
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_TOGGLE_LAYER_ENABLED

config ZMK_BEHAVIOR_TRANSPARENT
bool
default y
depends on DT_HAS_ZMK_BEHAVIOR_MACRO_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_ONE_PARAM_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_TWO_PARAM_ENABLED
depends on DT_HAS_ZMK_BEHAVIOR_TRANSPARENT_ENABLED
2 changes: 1 addition & 1 deletion app/dts/behaviors/ext_power.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
/ {
behaviors {
// Behavior can be invoked on peripherals, so name must be <= 8 characters.
ext_power: extpower {
/omit-if-no-ref/ ext_power: extpower {
compatible = "zmk,behavior-ext-power";
#binding-cells = <1>;
};
Expand Down
4 changes: 2 additions & 2 deletions app/dts/behaviors/reset.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
/ {
behaviors {
// Behavior can be invoked on peripherals, so name must be <= 8 characters.
sys_reset: sysreset {
/omit-if-no-ref/ sys_reset: sysreset {
compatible = "zmk,behavior-reset";
#binding-cells = <0>;
};

// Behavior can be invoked on peripherals, so name must be <= 8 characters.
bootloader: bootload {
/omit-if-no-ref/ bootloader: bootload {
compatible = "zmk,behavior-reset";
type = <RST_UF2>;
#binding-cells = <0>;
Expand Down
2 changes: 1 addition & 1 deletion app/dts/behaviors/rgb_underglow.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
/ {
behaviors {
// Behavior can be invoked on peripherals, so name must be <= 8 characters.
rgb_ug: rgb_ug {
/omit-if-no-ref/ rgb_ug: rgb_ug {
compatible = "zmk,behavior-rgb-underglow";
#binding-cells = <2>;
};
Expand Down
1 change: 1 addition & 0 deletions app/run-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ fi
testcases=$(find $path -name native_posix_64.keymap -exec dirname \{\} \;)
num_cases=$(echo "$testcases" | wc -l)
if [ $num_cases -gt 1 ] || [ "$testcases" != "$path" ]; then
mkdir -p ./build/tests
echo "" > ./build/tests/pass-fail.log
echo "$testcases" | xargs -L 1 -P ${J:-4} ./run-test.sh
err=$?
Expand Down
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_backlight.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@

LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

static int behavior_backlight_init(const struct device *dev) { return 0; }

static int
Expand Down Expand Up @@ -93,5 +91,3 @@ static const struct behavior_driver_api behavior_backlight_driver_api = {

BEHAVIOR_DT_INST_DEFINE(0, behavior_backlight_init, NULL, NULL, NULL, APPLICATION,
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_backlight_driver_api);

#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_bt.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#include <zmk/ble.h>

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding,
struct zmk_behavior_binding_event event) {
switch (binding->param1) {
Expand Down Expand Up @@ -58,5 +56,3 @@ static const struct behavior_driver_api behavior_bt_driver_api = {

BEHAVIOR_DT_INST_DEFINE(0, behavior_bt_init, NULL, NULL, NULL, APPLICATION,
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_bt_driver_api);

#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_caps_word.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@

LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

struct caps_word_continue_item {
uint16_t page;
uint32_t id;
Expand Down Expand Up @@ -186,5 +184,3 @@ static int behavior_caps_word_init(const struct device *dev) {
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_caps_word_driver_api);

DT_INST_FOREACH_STATUS_OKAY(KP_INST)

#endif
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_ext_power.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
#include <zephyr/logging/log.h>
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

static int
on_keymap_binding_convert_central_state_dependent_params(struct zmk_behavior_binding *binding,
struct zmk_behavior_binding_event event) {
Expand Down Expand Up @@ -76,5 +74,3 @@ static const struct behavior_driver_api behavior_ext_power_driver_api = {

BEHAVIOR_DT_INST_DEFINE(0, behavior_ext_power_init, NULL, NULL, NULL, APPLICATION,
CONFIG_APPLICATION_INIT_PRIORITY, &behavior_ext_power_driver_api);

#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_hold_tap.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@

LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

#define ZMK_BHV_HOLD_TAP_MAX_HELD 10
#define ZMK_BHV_HOLD_TAP_MAX_CAPTURED_EVENTS 40

Expand Down Expand Up @@ -720,5 +718,3 @@ static int behavior_hold_tap_init(const struct device *dev) {
&behavior_hold_tap_driver_api);

DT_INST_FOREACH_STATUS_OKAY(KP_INST)

#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_key_repeat.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@

LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

struct behavior_key_repeat_config {
uint8_t index;
uint8_t usage_pages_count;
Expand Down Expand Up @@ -121,5 +119,3 @@ static int behavior_key_repeat_init(const struct device *dev) {
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_key_repeat_driver_api);

DT_INST_FOREACH_STATUS_OKAY(KR_INST)

#endif
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_mod_morph.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@

LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

struct behavior_mod_morph_config {
struct zmk_behavior_binding normal_binding;
struct zmk_behavior_binding morph_binding;
Expand Down Expand Up @@ -102,5 +100,3 @@ static int behavior_mod_morph_init(const struct device *dev) { return 0; }
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_mod_morph_driver_api);

DT_INST_FOREACH_STATUS_OKAY(KP_INST)

#endif
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_none.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@

LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

static int behavior_none_init(const struct device *dev) { return 0; };

static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding,
Expand All @@ -35,5 +33,3 @@ static const struct behavior_driver_api behavior_none_driver_api = {

BEHAVIOR_DT_INST_DEFINE(0, behavior_none_init, NULL, NULL, NULL, APPLICATION,
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_none_driver_api);

#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_outputs.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
#include <zephyr/logging/log.h>
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding,
struct zmk_behavior_binding_event event) {
switch (binding->param1) {
Expand All @@ -44,5 +42,3 @@ static const struct behavior_driver_api behavior_outputs_driver_api = {

BEHAVIOR_DT_INST_DEFINE(0, behavior_out_init, NULL, NULL, NULL, APPLICATION,
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_outputs_driver_api);

#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */
3 changes: 0 additions & 3 deletions app/src/behaviors/behavior_reset.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)
struct behavior_reset_config {
int type;
};
Expand Down Expand Up @@ -48,5 +47,3 @@ static const struct behavior_driver_api behavior_reset_driver_api = {
&behavior_reset_driver_api);

DT_INST_FOREACH_STATUS_OKAY(RST_INST)

#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */
4 changes: 0 additions & 4 deletions app/src/behaviors/behavior_rgb_underglow.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@

LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);

#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)

static int behavior_rgb_underglow_init(const struct device *dev) { return 0; }

static int
Expand Down Expand Up @@ -151,5 +149,3 @@ static const struct behavior_driver_api behavior_rgb_underglow_driver_api = {

BEHAVIOR_DT_INST_DEFINE(0, behavior_rgb_underglow_init, NULL, NULL, NULL, APPLICATION,
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_rgb_underglow_driver_api);

#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */
Loading

0 comments on commit 05bd3b1

Please sign in to comment.