forked from kofal.net/zmk
initial implementation for modifiers
https://github.com/zmkfirmware/zmk/issues/86
This commit is contained in:
committed by
Pete Johanson
parent
a9e729b427
commit
4f258efbf1
@@ -3,7 +3,6 @@
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define USAGE_KEYPAD 0x07
|
||||
@@ -144,11 +143,24 @@
|
||||
#define M_VOLU 0xE9
|
||||
#define M_VOLD 0xEA
|
||||
|
||||
#define MOD_LCTL (1 << 0x00)
|
||||
#define MOD_LSFT (1 << 0x01)
|
||||
#define MOD_LALT (1 << 0x02)
|
||||
#define MOD_LGUI (1 << 0x03)
|
||||
#define MOD_RCTL (1 << 0x04)
|
||||
#define MOD_RSFT (1 << 0x05)
|
||||
#define MOD_RALT (1 << 0x06)
|
||||
#define MOD_RGUI (1 << 0x07)
|
||||
#define MOD_LCTL 0x01
|
||||
#define MOD_LSFT 0x02
|
||||
#define MOD_LALT 0x04
|
||||
#define MOD_LGUI 0x08
|
||||
#define MOD_RCTL 0x10
|
||||
#define MOD_RSFT 0x20
|
||||
#define MOD_RALT 0x40
|
||||
#define MOD_RGUI 0x80
|
||||
|
||||
#define SELECT_MODS(keycode) (keycode >> 24)
|
||||
#define STRIP_MODS(keycode) (keycode & ~(0xFF << 24))
|
||||
#define APPLY_MODS(mods, keycode) (mods << 24 | keycode)
|
||||
|
||||
#define LC(keycode) APPLY_MODS(MOD_LCTL, keycode)
|
||||
#define LS(keycode) APPLY_MODS(MOD_LSFT, keycode)
|
||||
#define LA(keycode) APPLY_MODS(MOD_LALT, keycode)
|
||||
#define LG(keycode) APPLY_MODS(MOD_LGUI, keycode)
|
||||
#define RC(keycode) APPLY_MODS(MOD_RCTL, keycode)
|
||||
#define RS(keycode) APPLY_MODS(MOD_RSFT, keycode)
|
||||
#define RA(keycode) APPLY_MODS(MOD_RALT, keycode)
|
||||
#define RG(keycode) APPLY_MODS(MOD_RGUI, keycode)
|
||||
|
||||
@@ -7,22 +7,24 @@
|
||||
#pragma once
|
||||
|
||||
#include <zephyr.h>
|
||||
#include <dt-bindings/zmk/keys.h>
|
||||
#include <zmk/event-manager.h>
|
||||
|
||||
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);
|
||||
|
||||
inline struct keycode_state_changed *create_keycode_state_changed(u8_t usage_page, u32_t keycode,
|
||||
bool state) {
|
||||
static inline struct keycode_state_changed *create_keycode_state_changed(u8_t usage_page, u32_t keycode, bool state) {
|
||||
struct keycode_state_changed *ev = new_keycode_state_changed();
|
||||
ev->usage_page = usage_page;
|
||||
ev->keycode = keycode;
|
||||
ev->keycode = STRIP_MODS(keycode);
|
||||
ev->implicit_modifiers = SELECT_MODS(keycode);
|
||||
ev->state = state;
|
||||
return ev;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,8 +164,8 @@ struct zmk_hid_consumer_report {
|
||||
|
||||
int zmk_hid_register_mod(zmk_mod modifier);
|
||||
int zmk_hid_unregister_mod(zmk_mod modifier);
|
||||
int zmk_hid_register_mods(zmk_mod_flags modifiers);
|
||||
int zmk_hid_unregister_mods(zmk_mod_flags modifiers);
|
||||
int zmk_hid_implicit_modifiers_press(zmk_mod_flags implicit_modifiers);
|
||||
int zmk_hid_implicit_modifiers_release();
|
||||
int zmk_hid_keypad_press(zmk_key key);
|
||||
int zmk_hid_keypad_release(zmk_key key);
|
||||
void zmk_hid_keypad_clear();
|
||||
|
||||
Reference in New Issue
Block a user