@@ -179,17 +179,23 @@ int zmk_keymap_apply_position_state(uint8_t source, int layer, uint32_t position
179
179
.timestamp = timestamp ,
180
180
};
181
181
182
- LOG_DBG ("layer: %d position: %d, binding name: %s" , layer , position ,
183
- log_strdup (binding .behavior_dev ));
182
+ return zmk_run_behavior (& binding ,event ,source ,pressed );
183
+ }
184
+
185
+ int zmk_run_behavior (struct zmk_behavior_binding * binding , struct zmk_behavior_binding_event event ,uint8_t source ,bool pressed ){
186
+
187
+ LOG_DBG ("layer: %d position: %d, binding name: %s" , event .layer , event .position ,
188
+ log_strdup (binding -> behavior_dev ));
189
+
184
190
185
- behavior = device_get_binding (binding . behavior_dev );
191
+ const struct device * behavior = device_get_binding (binding -> behavior_dev );
186
192
187
193
if (!behavior ) {
188
- LOG_WRN ("No behavior assigned to %d on layer %d" , position , layer );
194
+ LOG_WRN ("No behavior assigned to %d on layer %d" , event . position , event . layer );
189
195
return 1 ;
190
196
}
191
197
192
- int err = behavior_keymap_binding_convert_central_state_dependent_params (& binding , event );
198
+ int err = behavior_keymap_binding_convert_central_state_dependent_params (binding , event );
193
199
if (err ) {
194
200
LOG_ERR ("Failed to convert relative to absolute behavior binding (err %d)" , err );
195
201
return err ;
@@ -204,24 +210,24 @@ int zmk_keymap_apply_position_state(uint8_t source, int layer, uint32_t position
204
210
205
211
switch (locality ) {
206
212
case BEHAVIOR_LOCALITY_CENTRAL :
207
- return invoke_locally (& binding , event , pressed );
213
+ return invoke_locally (binding , event , pressed );
208
214
case BEHAVIOR_LOCALITY_EVENT_SOURCE :
209
215
#if ZMK_BLE_IS_CENTRAL
210
216
if (source == ZMK_POSITION_STATE_CHANGE_SOURCE_LOCAL ) {
211
- return invoke_locally (& binding , event , pressed );
217
+ return invoke_locally (binding , event , pressed );
212
218
} else {
213
219
return zmk_split_bt_invoke_behavior (source , & binding , event , pressed );
214
220
}
215
221
#else
216
- return invoke_locally (& binding , event , pressed );
222
+ return invoke_locally (binding , event , pressed );
217
223
#endif
218
224
case BEHAVIOR_LOCALITY_GLOBAL :
219
225
#if ZMK_BLE_IS_CENTRAL
220
226
for (int i = 0 ; i < ZMK_BLE_SPLIT_PERIPHERAL_COUNT ; i ++ ) {
221
- zmk_split_bt_invoke_behavior (i , & binding , event , pressed );
227
+ zmk_split_bt_invoke_behavior (i , binding , event , pressed );
222
228
}
223
229
#endif
224
- return invoke_locally (& binding , event , pressed );
230
+ return invoke_locally (binding , event , pressed );
225
231
}
226
232
227
233
return - ENOTSUP ;
0 commit comments