summaryrefslogtreecommitdiff
path: root/app/src/keymap.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/keymap.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/keymap.c')
-rw-r--r--app/src/keymap.c13
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);
}