@@ -32,6 +32,10 @@ struct caps_word_continue_item {
32
32
33
33
struct behavior_caps_word_config {
34
34
zmk_mod_flags_t mods ;
35
+ int8_t layers ;
36
+ bool ignore_alphas ;
37
+ bool ignore_numbers ;
38
+ bool ignore_modifiers ;
35
39
uint8_t index ;
36
40
uint8_t continuations_count ;
37
41
struct caps_word_continue_item continuations [];
@@ -44,12 +48,22 @@ struct behavior_caps_word_data {
44
48
static void activate_caps_word (const struct device * dev ) {
45
49
struct behavior_caps_word_data * data = dev -> data ;
46
50
51
+ const struct behavior_caps_word_config * config = dev -> config ;
52
+
53
+ if (config -> layers > -1 ) {
54
+ zmk_keymap_layer_activate (config -> layers );
55
+ }
47
56
data -> active = true;
48
57
}
49
58
50
59
static void deactivate_caps_word (const struct device * dev ) {
51
60
struct behavior_caps_word_data * data = dev -> data ;
52
61
62
+ const struct behavior_caps_word_config * config = dev -> config ;
63
+
64
+ if (config -> layers > -1 ) {
65
+ zmk_keymap_layer_deactivate (config -> layers );
66
+ }
53
67
data -> active = false;
54
68
}
55
69
@@ -120,8 +134,10 @@ static void caps_word_enhance_usage(const struct behavior_caps_word_config *conf
120
134
return ;
121
135
}
122
136
123
- LOG_DBG ("Enhancing usage 0x%02X with modifiers: 0x%02X" , ev -> keycode , config -> mods );
124
- ev -> implicit_modifiers |= config -> mods ;
137
+ if (config -> mods != 0 ) {
138
+ LOG_DBG ("Enhancing usage 0x%02X with modifiers: 0x%02X" , ev -> keycode , config -> mods );
139
+ ev -> implicit_modifiers |= config -> mods ;
140
+ }
125
141
}
126
142
127
143
static int caps_word_keycode_state_changed_listener (const zmk_event_t * eh ) {
@@ -145,8 +161,9 @@ static int caps_word_keycode_state_changed_listener(const zmk_event_t *eh) {
145
161
146
162
caps_word_enhance_usage (config , ev );
147
163
148
- if (!caps_word_is_alpha (ev -> keycode ) && !caps_word_is_numeric (ev -> keycode ) &&
149
- !is_mod (ev -> usage_page , ev -> keycode ) &&
164
+ if ((!caps_word_is_alpha (ev -> keycode ) || !config -> ignore_alphas ) &&
165
+ (!caps_word_is_numeric (ev -> keycode ) || !config -> ignore_numbers ) &&
166
+ (!is_mod (ev -> usage_page , ev -> keycode ) || !config -> ignore_modifiers ) &&
150
167
!caps_word_is_caps_includelist (config , ev -> usage_page , ev -> keycode ,
151
168
ev -> implicit_modifiers )) {
152
169
LOG_DBG ("Deactivating caps_word for 0x%02X - 0x%02X" , ev -> usage_page , ev -> keycode );
@@ -176,8 +193,29 @@ static int behavior_caps_word_init(const struct device *dev) {
176
193
static struct behavior_caps_word_data behavior_caps_word_data_##n = {.active = false}; \
177
194
static struct behavior_caps_word_config behavior_caps_word_config_##n = { \
178
195
.index = n, \
196
+ <<<<<<< ours
179
197
.mods = DT_INST_PROP_OR (n , mods , MOD_LSFT ), \
198
+ <<<<<<< ours
199
+ <<<<<<< ours
200
+ <<<<<<< ours
180
201
.continuations = {UTIL_LISTIFY (DT_INST_PROP_LEN (n , continue_list ), BREAK_ITEM , n )}, \
202
+ = == = == =
203
+ == = == = =
204
+ .layers = DT_INST_PROP_OR (n , layers , -1 ), \
205
+ .ignore_alphas = DT_INST_PROP (n , ignore_alphas ), \
206
+ .ignore_numbers = DT_INST_PROP (n , ignore_numbers ), \
207
+ >>>>>>> theirs
208
+ == = == ==
209
+ == = == = =
210
+ .mods = DT_INST_PROP_OR (n , mods , 0 ), \
211
+ >>>>>>> theirs
212
+ .layers = DT_INST_PROP_OR (n , layers , -1 ), \
213
+ .ignore_alphas = DT_INST_PROP (n , ignore_alphas ), \
214
+ .ignore_numbers = DT_INST_PROP (n , ignore_numbers ), \
215
+ >>>>>>> theirs
216
+ .ignore_modifiers = DT_INST_PROP (n , ignore_modifiers ), \
217
+ .continuations = {LISTIFY (DT_INST_PROP_LEN (n , continue_list ), BREAK_ITEM , (, ), n )}, \
218
+ >>>>>>> theirs
181
219
.continuations_count = DT_INST_PROP_LEN (n , continue_list ), \
182
220
}; \
183
221
DEVICE_DT_INST_DEFINE (n , behavior_caps_word_init , NULL , & behavior_caps_word_data_ ##n , \
0 commit comments