diff options
author | Pete Johanson <peter@peterjohanson.com> | 2021-01-19 14:21:00 -0500 |
---|---|---|
committer | Pete Johanson <peter@peterjohanson.com> | 2021-01-20 07:06:11 -0500 |
commit | 3368a81057d4981aa259c5548050d95739d99d51 (patch) | |
tree | a2feaed6f49eb25949a64c9c3cafe574f43fe23d /app/src/keymap.c | |
parent | 3fe2acc2d191006fa6309191ee99b2e4e249ed08 (diff) |
refactor(core): Combine `is_` and `cast_` event functions.
* Use a single `as_foo` generated function to conditionally
return a certain event type from a generic `zmk_event_t*`
pointer.
Diffstat (limited to 'app/src/keymap.c')
-rw-r--r-- | app/src/keymap.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/app/src/keymap.c b/app/src/keymap.c index 169cf9c..31258e0 100644 --- a/app/src/keymap.c +++ b/app/src/keymap.c @@ -247,15 +247,19 @@ int zmk_keymap_sensor_triggered(uint8_t sensor_number, const struct device *sens #endif /* ZMK_KEYMAP_HAS_SENSORS */ int keymap_listener(const zmk_event_t *eh) { - if (is_zmk_position_state_changed(eh)) { - const struct zmk_position_state_changed *ev = cast_zmk_position_state_changed(eh); - return zmk_keymap_position_state_changed(ev->position, ev->state, ev->timestamp); + const struct zmk_position_state_changed *pos_ev; + if ((pos_ev = as_zmk_position_state_changed(eh)) != NULL) { + return zmk_keymap_position_state_changed(pos_ev->position, pos_ev->state, + pos_ev->timestamp); + } + #if ZMK_KEYMAP_HAS_SENSORS - } else if (is_zmk_sensor_event(eh)) { - const struct zmk_sensor_event *ev = cast_zmk_sensor_event(eh); - return zmk_keymap_sensor_triggered(ev->sensor_number, ev->sensor, ev->timestamp); -#endif /* ZMK_KEYMAP_HAS_SENSORS */ + const struct zmk_sensor_event *sensor_ev; + if ((sensor_ev = as_zmk_sensor_event(eh)) != NULL) { + return zmk_keymap_sensor_triggered(sensor_ev->sensor_number, sensor_ev->sensor, + sensor_ev->timestamp); } +#endif /* ZMK_KEYMAP_HAS_SENSORS */ return -ENOTSUP; } |