summaryrefslogtreecommitdiff
path: root/app/src/behaviors/behavior_hid.c
diff options
context:
space:
mode:
authorPete Johanson <peter@peterjohanson.com>2020-06-21 21:43:44 -0400
committerPete Johanson <peter@peterjohanson.com>2020-06-21 21:43:44 -0400
commit223edf05ad08938b066f9187668ebfae43c5e91a (patch)
treee2719b609c701a72b9185b371d3824edf3af8620 /app/src/behaviors/behavior_hid.c
parent7e659851c80bf2819554d93ad9971f56aa5b225b (diff)
Refactor global bindings, implement mod-tap.
* Use extra comptible = "zmk,behavior-global" to add behaviors to global bindings for event notification. * Implement mod-tap, as a keymap binding and global one to skip tap if other keycode pressed while held.
Diffstat (limited to 'app/src/behaviors/behavior_hid.c')
-rw-r--r--app/src/behaviors/behavior_hid.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/app/src/behaviors/behavior_hid.c b/app/src/behaviors/behavior_hid.c
index 2779568..0aeade5 100644
--- a/app/src/behaviors/behavior_hid.c
+++ b/app/src/behaviors/behavior_hid.c
@@ -42,9 +42,27 @@ static int on_keycode_released(struct device *dev, u32_t keycode)
return zmk_endpoints_send_report(changes);
}
+static int on_modifiers_pressed(struct device *dev, zmk_mod_flags modifiers)
+{
+ LOG_DBG("modifiers %d", modifiers);
+
+ zmk_hid_register_mods(modifiers);
+ return zmk_endpoints_send_report(Keypad);
+}
+
+static int on_modifiers_released(struct device *dev, zmk_mod_flags modifiers)
+{
+ LOG_DBG("modifiers %d", modifiers);
+
+ zmk_hid_unregister_mods(modifiers);
+ return zmk_endpoints_send_report(Keypad);
+}
+
static const struct behavior_driver_api behavior_hid_driver_api = {
.keycode_pressed = on_keycode_pressed,
- .keycode_released = on_keycode_released
+ .keycode_released = on_keycode_released,
+ .modifiers_pressed = on_modifiers_pressed,
+ .modifiers_released = on_modifiers_released
};