/* * Copyright (c) 2020 The ZMK Contributors * * SPDX-License-Identifier: MIT */ #pragma once #include #include #include #include #include struct keycode_state_changed { struct zmk_event_header header; u8_t usage_page; u32_t keycode; u8_t implicit_modifiers; bool state; }; ZMK_EVENT_DECLARE(keycode_state_changed); static inline struct keycode_state_changed *keycode_state_changed_from_encoded(u32_t encoded, bool pressed) { u16_t page = HID_USAGE_PAGE(encoded) & 0xFF; u16_t id = HID_USAGE_ID(encoded); zmk_mod_flags implicit_mods = SELECT_MODS(encoded); if (!page) { page = HID_USAGE_KEY; } struct keycode_state_changed *ev = new_keycode_state_changed(); ev->usage_page = page; ev->keycode = id; ev->implicit_modifiers = implicit_mods; ev->state = pressed; return ev; }