Created
August 3, 2022 03:20
-
-
Save petejohanson/7086b4b4c2568fcac6f18167d7d92242 to your computer and use it in GitHub Desktop.
Runtime keymap exploration.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright (c) 2020 The ZMK Contributors | |
* | |
* SPDX-License-Identifier: MIT | |
*/ | |
#define DT_DRV_COMPAT zmk_behavior_key_press | |
#include <device.h> | |
#include <drivers/behavior.h> | |
#include <logging/log.h> | |
#include <zmk/event_manager.h> | |
#include <zmk/events/keycode_state_changed.h> | |
#include <zmk/behavior.h> | |
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); | |
static int behavior_key_press_init(const struct device *dev) { return 0; }; | |
static int on_keymap_binding_pressed(struct zmk_behavior_binding *binding, | |
struct zmk_behavior_binding_event event) { | |
LOG_DBG("position %d keycode 0x%02X", event.position, binding->param1); | |
return ZMK_EVENT_RAISE( | |
zmk_keycode_state_changed_from_encoded(binding->param1, true, event.timestamp)); | |
} | |
static int on_keymap_binding_released(struct zmk_behavior_binding *binding, | |
struct zmk_behavior_binding_event event) { | |
LOG_DBG("position %d keycode 0x%02X", event.position, binding->param1); | |
return ZMK_EVENT_RAISE( | |
zmk_keycode_state_changed_from_encoded(binding->param1, false, event.timestamp)); | |
} | |
#if CONFIG_ZMK_RUNTIME_KEYMAPS | |
ZMK_BEHAVIOR_METADATA(key_press, | |
"Key Press", | |
ZMK_BINDING_PARAMS(ZMK_BINDING_PARAM_KEYCODE(), ZMK_BINDING_PARAM_NULL()) | |
) | |
ZMK_BEHAVIOR_PROPS_METADATA(key_press); | |
static int behavior_key_press_metadata(struct zmk_behavior_metadata *metadata, struct zmk_behavior_props_metadata *props, uint32_t *len) { | |
*props = key_press_props_metadata; | |
*len = 0; | |
*metadata = key_press_metadata; | |
} | |
#endif | |
static const struct behavior_driver_api behavior_key_press_driver_api = { | |
.binding_pressed = on_keymap_binding_pressed, .binding_released = on_keymap_binding_released}; | |
#define KP_INST(n) \ | |
ZMK_RUNTIME_METADATA_DEVICE_DT_DEFINE(n, behavior_key_press_metadata); \ | |
DEVICE_DT_INST_DEFINE(n, behavior_key_press_init, NULL, NULL, NULL, APPLICATION, \ | |
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, &behavior_key_press_driver_api); | |
DT_INST_FOREACH_STATUS_OKAY(KP_INST) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment