From 0c30b49063c79be2416453f4544795922efad74f Mon Sep 17 00:00:00 2001
From: Okke Formsma <okke@formsma.nl>
Date: Fri, 22 Jan 2021 15:45:51 +0100
Subject: [PATCH] refactor(modifiers): define is_mods function

---
 app/include/zmk/keys.h                |  7 ++++++-
 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 62e3cce8..38777ec8 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 de356337..fcb4c5bd 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;
     }