Skip to content

Commit 05bd3b1

Browse files
committed
refactor: Use Kconfig to conditionally compile behaviors
1 parent db9ab30 commit 05bd3b1

22 files changed

+118
-87
lines changed

app/CMakeLists.txt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -29,31 +29,31 @@ target_sources(app PRIVATE src/events/sensor_event.c)
2929
target_sources(app PRIVATE src/events/mouse_button_state_changed.c)
3030
target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/events/wpm_state_changed.c)
3131
target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/events/usb_conn_state_changed.c)
32-
target_sources(app PRIVATE src/behaviors/behavior_reset.c)
33-
target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c)
32+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_RESET app PRIVATE src/behaviors/behavior_reset.c)
33+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c)
3434
if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
3535
target_sources(app PRIVATE src/hid.c)
3636
target_sources_ifdef(CONFIG_ZMK_MOUSE app PRIVATE src/mouse.c)
37-
target_sources(app PRIVATE src/behaviors/behavior_key_press.c)
37+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_KEY_PRESS app PRIVATE src/behaviors/behavior_key_press.c)
3838
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_KEY_TOGGLE app PRIVATE src/behaviors/behavior_key_toggle.c)
39-
target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c)
40-
target_sources(app PRIVATE src/behaviors/behavior_sticky_key.c)
41-
target_sources(app PRIVATE src/behaviors/behavior_caps_word.c)
42-
target_sources(app PRIVATE src/behaviors/behavior_key_repeat.c)
39+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_HOLD_TAP app PRIVATE src/behaviors/behavior_hold_tap.c)
40+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_STICKY_KEY app PRIVATE src/behaviors/behavior_sticky_key.c)
41+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_CAPS_WORD app PRIVATE src/behaviors/behavior_caps_word.c)
42+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_KEY_REPEAT app PRIVATE src/behaviors/behavior_key_repeat.c)
4343
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MACRO app PRIVATE src/behaviors/behavior_macro.c)
44-
target_sources(app PRIVATE src/behaviors/behavior_momentary_layer.c)
45-
target_sources(app PRIVATE src/behaviors/behavior_mod_morph.c)
46-
target_sources(app PRIVATE src/behaviors/behavior_outputs.c)
47-
target_sources(app PRIVATE src/behaviors/behavior_toggle_layer.c)
48-
target_sources(app PRIVATE src/behaviors/behavior_to_layer.c)
49-
target_sources(app PRIVATE src/behaviors/behavior_transparent.c)
50-
target_sources(app PRIVATE src/behaviors/behavior_none.c)
44+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MOMENTARY_LAYER app PRIVATE src/behaviors/behavior_momentary_layer.c)
45+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MOD_MORPH app PRIVATE src/behaviors/behavior_mod_morph.c)
46+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_OUTPUTS app PRIVATE src/behaviors/behavior_outputs.c)
47+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TOGGLE_LAYER app PRIVATE src/behaviors/behavior_toggle_layer.c)
48+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TO_LAYER app PRIVATE src/behaviors/behavior_to_layer.c)
49+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TRANSPARENT app PRIVATE src/behaviors/behavior_transparent.c)
50+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_NONE app PRIVATE src/behaviors/behavior_none.c)
5151
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE app PRIVATE src/behaviors/behavior_sensor_rotate.c)
5252
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR app PRIVATE src/behaviors/behavior_sensor_rotate_var.c)
5353
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON app PRIVATE src/behaviors/behavior_sensor_rotate_common.c)
5454
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_MOUSE_KEY_PRESS app PRIVATE src/behaviors/behavior_mouse_key_press.c)
5555
target_sources(app PRIVATE src/combo.c)
56-
target_sources(app PRIVATE src/behaviors/behavior_tap_dance.c)
56+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_TAP_DANCE app PRIVATE src/behaviors/behavior_tap_dance.c)
5757
target_sources(app PRIVATE src/behavior_queue.c)
5858
target_sources(app PRIVATE src/conditional_layer.c)
5959
target_sources(app PRIVATE src/endpoints.c)
@@ -67,14 +67,14 @@ if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL)
6767

6868
if (CONFIG_ZMK_BLE)
6969
target_sources(app PRIVATE src/events/ble_active_profile_changed.c)
70-
target_sources(app PRIVATE src/behaviors/behavior_bt.c)
70+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_BLUETOOTH app PRIVATE src/behaviors/behavior_bt.c)
7171
target_sources(app PRIVATE src/ble.c)
7272
target_sources(app PRIVATE src/hog.c)
7373
endif()
7474
endif()
7575

76-
target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c)
77-
target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/behaviors/behavior_backlight.c)
76+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c)
77+
target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_BACKLIGHT app PRIVATE src/behaviors/behavior_backlight.c)
7878

7979
target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/events/battery_state_changed.c)
8080
target_sources_ifdef(CONFIG_ZMK_BATTERY_REPORTING app PRIVATE src/battery.c)

app/Kconfig.behaviors

Lines changed: 95 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,90 @@
11
# Copyright (c) 2023 The ZMK Contributors
22
# SPDX-License-Identifier: MIT
33

4+
config ZMK_BEHAVIOR_BACKLIGHT
5+
bool
6+
default y
7+
depends on DT_HAS_ZMK_BEHAVIOR_BACKLIGHT_ENABLED
8+
imply ZMK_BACKLIGHT
9+
10+
config ZMK_BEHAVIOR_BLUETOOTH
11+
bool
12+
default y
13+
depends on DT_HAS_ZMK_BEHAVIOR_BLUETOOTH_ENABLED
14+
15+
config ZMK_BEHAVIOR_CAPS_WORD
16+
bool
17+
default y
18+
depends on DT_HAS_ZMK_BEHAVIOR_CAPS_WORD_ENABLED
19+
20+
config ZMK_BEHAVIOR_EXT_POWER
21+
bool
22+
default y
23+
depends on DT_HAS_ZMK_BEHAVIOR_EXT_POWER_ENABLED
24+
imply ZMK_EXT_POWER
25+
26+
config ZMK_BEHAVIOR_HOLD_TAP
27+
bool
28+
default y
29+
depends on DT_HAS_ZMK_BEHAVIOR_HOLD_TAP_ENABLED
30+
31+
config ZMK_BEHAVIOR_KEY_PRESS
32+
bool
33+
default y
34+
depends on DT_HAS_ZMK_BEHAVIOR_KEY_PRESS_ENABLED
35+
36+
config ZMK_BEHAVIOR_KEY_REPEAT
37+
bool
38+
default y
39+
depends on DT_HAS_ZMK_BEHAVIOR_KEY_REPEAT_ENABLED
40+
441
config ZMK_BEHAVIOR_KEY_TOGGLE
542
bool
643
default y
744
depends on DT_HAS_ZMK_BEHAVIOR_KEY_TOGGLE_ENABLED
845

46+
config ZMK_BEHAVIOR_MACRO
47+
bool
48+
default y
49+
depends on DT_HAS_ZMK_BEHAVIOR_MACRO_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_ONE_PARAM_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_TWO_PARAM_ENABLED
50+
51+
config ZMK_BEHAVIOR_MOD_MORPH
52+
bool
53+
default y
54+
depends on DT_HAS_ZMK_BEHAVIOR_MOD_MORPH_ENABLED
55+
56+
config ZMK_BEHAVIOR_MOMENTARY_LAYER
57+
bool
58+
default y
59+
depends on DT_HAS_ZMK_BEHAVIOR_MOMENTARY_LAYER_ENABLED
60+
961
config ZMK_BEHAVIOR_MOUSE_KEY_PRESS
1062
bool
1163
default y
1264
depends on DT_HAS_ZMK_BEHAVIOR_MOUSE_KEY_PRESS_ENABLED
1365
imply ZMK_MOUSE
1466

67+
config ZMK_BEHAVIOR_NONE
68+
bool
69+
default y
70+
depends on DT_HAS_ZMK_BEHAVIOR_NONE_ENABLED
71+
72+
config ZMK_BEHAVIOR_OUTPUTS
73+
bool
74+
default y
75+
depends on DT_HAS_ZMK_BEHAVIOR_OUTPUTS_ENABLED
76+
77+
config ZMK_BEHAVIOR_RESET
78+
bool
79+
default y
80+
depends on DT_HAS_ZMK_BEHAVIOR_RESET_ENABLED
81+
82+
config ZMK_BEHAVIOR_RGB_UNDERGLOW
83+
bool
84+
default y
85+
depends on DT_HAS_ZMK_BEHAVIOR_RGB_UNDERGLOW_ENABLED
86+
imply ZMK_RGB_UNDERGLOW
87+
1588
config ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
1689
bool
1790
default n
@@ -28,7 +101,27 @@ config ZMK_BEHAVIOR_SENSOR_ROTATE_VAR
28101
depends on DT_HAS_ZMK_BEHAVIOR_SENSOR_ROTATE_VAR_ENABLED
29102
select ZMK_BEHAVIOR_SENSOR_ROTATE_COMMON
30103

31-
config ZMK_BEHAVIOR_MACRO
104+
config ZMK_BEHAVIOR_STICKY_KEY
105+
bool
106+
default y
107+
depends on DT_HAS_ZMK_BEHAVIOR_STICKY_KEY_ENABLED
108+
109+
config ZMK_BEHAVIOR_TAP_DANCE
110+
bool
111+
default y
112+
depends on DT_HAS_ZMK_BEHAVIOR_TAP_DANCE_ENABLED
113+
114+
config ZMK_BEHAVIOR_TO_LAYER
115+
bool
116+
default y
117+
depends on DT_HAS_ZMK_BEHAVIOR_TO_LAYER_ENABLED
118+
119+
config ZMK_BEHAVIOR_TOGGLE_LAYER
120+
bool
121+
default y
122+
depends on DT_HAS_ZMK_BEHAVIOR_TOGGLE_LAYER_ENABLED
123+
124+
config ZMK_BEHAVIOR_TRANSPARENT
32125
bool
33126
default y
34-
depends on DT_HAS_ZMK_BEHAVIOR_MACRO_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_ONE_PARAM_ENABLED || DT_HAS_ZMK_BEHAVIOR_MACRO_TWO_PARAM_ENABLED
127+
depends on DT_HAS_ZMK_BEHAVIOR_TRANSPARENT_ENABLED

app/dts/behaviors/ext_power.dtsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/ {
88
behaviors {
99
// Behavior can be invoked on peripherals, so name must be <= 8 characters.
10-
ext_power: extpower {
10+
/omit-if-no-ref/ ext_power: extpower {
1111
compatible = "zmk,behavior-ext-power";
1212
#binding-cells = <1>;
1313
};

app/dts/behaviors/reset.dtsi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
/ {
1010
behaviors {
1111
// Behavior can be invoked on peripherals, so name must be <= 8 characters.
12-
sys_reset: sysreset {
12+
/omit-if-no-ref/ sys_reset: sysreset {
1313
compatible = "zmk,behavior-reset";
1414
#binding-cells = <0>;
1515
};
1616

1717
// Behavior can be invoked on peripherals, so name must be <= 8 characters.
18-
bootloader: bootload {
18+
/omit-if-no-ref/ bootloader: bootload {
1919
compatible = "zmk,behavior-reset";
2020
type = <RST_UF2>;
2121
#binding-cells = <0>;

app/dts/behaviors/rgb_underglow.dtsi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/ {
88
behaviors {
99
// Behavior can be invoked on peripherals, so name must be <= 8 characters.
10-
rgb_ug: rgb_ug {
10+
/omit-if-no-ref/ rgb_ug: rgb_ug {
1111
compatible = "zmk,behavior-rgb-underglow";
1212
#binding-cells = <2>;
1313
};

app/run-test.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ fi
1616
testcases=$(find $path -name native_posix_64.keymap -exec dirname \{\} \;)
1717
num_cases=$(echo "$testcases" | wc -l)
1818
if [ $num_cases -gt 1 ] || [ "$testcases" != "$path" ]; then
19+
mkdir -p ./build/tests
1920
echo "" > ./build/tests/pass-fail.log
2021
echo "$testcases" | xargs -L 1 -P ${J:-4} ./run-test.sh
2122
err=$?

app/src/behaviors/behavior_backlight.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
1818

19-
#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)
20-
2119
static int behavior_backlight_init(const struct device *dev) { return 0; }
2220

2321
static int
@@ -93,5 +91,3 @@ static const struct behavior_driver_api behavior_backlight_driver_api = {
9391

9492
BEHAVIOR_DT_INST_DEFINE(0, behavior_backlight_init, NULL, NULL, NULL, APPLICATION,
9593
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_backlight_driver_api);
96-
97-
#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */

app/src/behaviors/behavior_bt.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
1818

1919
#include <zmk/ble.h>
2020

21-
#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)
22-
2321
static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding,
2422
struct zmk_behavior_binding_event event) {
2523
switch (binding->param1) {
@@ -58,5 +56,3 @@ static const struct behavior_driver_api behavior_bt_driver_api = {
5856

5957
BEHAVIOR_DT_INST_DEFINE(0, behavior_bt_init, NULL, NULL, NULL, APPLICATION,
6058
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_bt_driver_api);
61-
62-
#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */

app/src/behaviors/behavior_caps_word.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222

2323
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
2424

25-
#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)
26-
2725
struct caps_word_continue_item {
2826
uint16_t page;
2927
uint32_t id;
@@ -186,5 +184,3 @@ static int behavior_caps_word_init(const struct device *dev) {
186184
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_caps_word_driver_api);
187185

188186
DT_INST_FOREACH_STATUS_OKAY(KP_INST)
189-
190-
#endif

app/src/behaviors/behavior_ext_power.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
#include <zephyr/logging/log.h>
1717
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
1818

19-
#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)
20-
2119
static int
2220
on_keymap_binding_convert_central_state_dependent_params(struct zmk_behavior_binding *binding,
2321
struct zmk_behavior_binding_event event) {
@@ -76,5 +74,3 @@ static const struct behavior_driver_api behavior_ext_power_driver_api = {
7674

7775
BEHAVIOR_DT_INST_DEFINE(0, behavior_ext_power_init, NULL, NULL, NULL, APPLICATION,
7876
CONFIG_APPLICATION_INIT_PRIORITY, &behavior_ext_power_driver_api);
79-
80-
#endif /* DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT) */

0 commit comments

Comments
 (0)