summaryrefslogtreecommitdiff
path: root/app/src/keymap.c
diff options
context:
space:
mode:
authorPete Johanson <peter@peterjohanson.com>2021-01-19 14:21:00 -0500
committerPete Johanson <peter@peterjohanson.com>2021-01-20 07:06:11 -0500
commit3368a81057d4981aa259c5548050d95739d99d51 (patch)
treea2feaed6f49eb25949a64c9c3cafe574f43fe23d /app/src/keymap.c
parent3fe2acc2d191006fa6309191ee99b2e4e249ed08 (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.c18
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;
}