From 7b7701ae90469b920cd78e2ab7aca0c470140b7a Mon Sep 17 00:00:00 2001 From: Okke Formsma Date: Fri, 22 Jan 2021 17:00:19 +0100 Subject: feature(modifiers): add explicit modifiers this makes LS(LEFT_CONTROL) work as if shift and control were both pressed explicitly. Previously, the left shift would have been released as soon as another key was pressed. The implicit behavior is useful in case of LS(NUMBER_1) when rolling over to other keys. Also see #361. --- app/src/hid.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'app/src/hid.c') diff --git a/app/src/hid.c b/app/src/hid.c index 65eabd9..7ab080e 100644 --- a/app/src/hid.c +++ b/app/src/hid.c @@ -51,6 +51,24 @@ int zmk_hid_unregister_mod(zmk_mod_t modifier) { return 0; } +int zmk_hid_register_mods(zmk_mod_flags_t modifiers) { + for (zmk_mod_t i = 0; i < 8; i++) { + if (modifiers & (1 << i)) { + zmk_hid_register_mod(i); + } + } + return 0; +} + +int zmk_hid_unregister_mods(zmk_mod_flags_t modifiers) { + for (zmk_mod_t i = 0; i < 8; i++) { + if (modifiers & (1 << i)) { + zmk_hid_unregister_mod(i); + } + } + return 0; +} + #define TOGGLE_KEYBOARD(match, val) \ for (int idx = 0; idx < ZMK_HID_KEYBOARD_NKRO_SIZE; idx++) { \ if (keyboard_report.body.keys[idx] != match) { \ -- cgit v1.2.3