diff options
author | Pete Johanson <peter@peterjohanson.com> | 2020-06-21 21:43:44 -0400 |
---|---|---|
committer | Pete Johanson <peter@peterjohanson.com> | 2020-06-21 21:43:44 -0400 |
commit | 223edf05ad08938b066f9187668ebfae43c5e91a (patch) | |
tree | e2719b609c701a72b9185b371d3824edf3af8620 /app/src/keymap.c | |
parent | 7e659851c80bf2819554d93ad9971f56aa5b225b (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/keymap.c')
-rw-r--r-- | app/src/keymap.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/app/src/keymap.c b/app/src/keymap.c index 6ee61ec..e14626a 100644 --- a/app/src/keymap.c +++ b/app/src/keymap.c @@ -1,11 +1,13 @@ +#include <sys/util.h> #include <logging/log.h> LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); + +#include <zmk/matrix.h> #include <zmk/keymap.h> #include <dt-bindings/zmk/matrix-transform.h> #include <drivers/behavior.h> #include <zmk/behavior.h> -#include <sys/util.h> static u32_t zmk_keymap_layer_state = 0; static u8_t zmk_keymap_layer_default = 0; @@ -88,10 +90,15 @@ int zmk_keymap_position_state_changed(u32_t position, bool pressed) LOG_DBG("position: %d, binding name: %s", position, binding->behavior_dev); behavior = device_get_binding(binding->behavior_dev); + + if (!behavior) { + LOG_DBG("No behavior assigned to %d on layer %d", position, layer); + continue; + } if (pressed) { - ret = behavior_position_pressed(behavior, binding->param1, binding->param2); + ret = behavior_keymap_binding_pressed(behavior, position, binding->param1, binding->param2); } else { - ret = behavior_position_released(behavior, binding->param1, binding->param2); + ret = behavior_keymap_binding_released(behavior, position, binding->param1, binding->param2); } |