diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/include/zmk/keys.h | 7 | ||||
-rw-r--r-- | app/src/behaviors/behavior_hold_tap.c | 10 |
2 files changed, 8 insertions, 9 deletions
diff --git a/app/include/zmk/keys.h b/app/include/zmk/keys.h index 62e3cce..38777ec 100644 --- a/app/include/zmk/keys.h +++ b/app/include/zmk/keys.h @@ -18,4 +18,9 @@ struct zmk_key_event { uint32_t row; zmk_key_t key; bool pressed; -};
\ No newline at end of file +}; + +static inline bool is_mod(uint8_t usage_page, uint32_t keycode) { + return (keycode >= HID_USAGE_KEY_KEYBOARD_LEFTCONTROL && + keycode <= HID_USAGE_KEY_KEYBOARD_RIGHT_GUI && usage_page == HID_USAGE_KEY); +}
\ No newline at end of file diff --git a/app/src/behaviors/behavior_hold_tap.c b/app/src/behaviors/behavior_hold_tap.c index de35633..fcb4c5b 100644 --- a/app/src/behaviors/behavior_hold_tap.c +++ b/app/src/behaviors/behavior_hold_tap.c @@ -8,8 +8,8 @@ #include <device.h> #include <drivers/behavior.h> +#include <zmk/keys.h> #include <dt-bindings/zmk/keys.h> -#include <dt-bindings/zmk/hid_usage_pages.h> #include <logging/log.h> #include <zmk/behavior.h> #include <zmk/matrix.h> @@ -17,7 +17,6 @@ #include <zmk/event_manager.h> #include <zmk/events/position_state_changed.h> #include <zmk/events/keycode_state_changed.h> -#include <zmk/events/modifiers_state_changed.h> #include <zmk/behavior.h> LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); @@ -428,11 +427,6 @@ static int position_state_changed_listener(const zmk_event_t *eh) { return ZMK_EV_EVENT_CAPTURED; } -static inline bool only_mods(struct zmk_keycode_state_changed *ev) { - return ev->usage_page == HID_USAGE_KEY && ev->keycode >= HID_USAGE_KEY_KEYBOARD_LEFTCONTROL && - ev->keycode <= HID_USAGE_KEY_KEYBOARD_RIGHT_GUI; -} - static int keycode_state_changed_listener(const zmk_event_t *eh) { // we want to catch layer-up events too... how? struct zmk_keycode_state_changed *ev = as_zmk_keycode_state_changed(eh); @@ -442,7 +436,7 @@ static int keycode_state_changed_listener(const zmk_event_t *eh) { return ZMK_EV_EVENT_BUBBLE; } - if (!only_mods(ev)) { + if (!is_mod(ev->usage_page, ev->keycode)) { // LOG_DBG("0x%02X bubble (not a mod)", ev->keycode); return ZMK_EV_EVENT_BUBBLE; } |