forked from kofal.net/zmk
feat(behaviors): Continue on mods in caps word.
* Continue caps word when mods are changed, and
match the continue list on combination of
explicit and implicit modifiers.
This commit is contained in:
committed by
Pete Johanson
parent
d01bc6afc6
commit
b3c9c18fee
@@ -16,6 +16,7 @@
|
||||
#include <zmk/events/position_state_changed.h>
|
||||
#include <zmk/events/keycode_state_changed.h>
|
||||
#include <zmk/events/modifiers_state_changed.h>
|
||||
#include <zmk/keys.h>
|
||||
#include <zmk/hid.h>
|
||||
#include <zmk/keymap.h>
|
||||
|
||||
@@ -92,7 +93,9 @@ static bool caps_word_is_caps_includelist(const struct behavior_caps_word_config
|
||||
continuation->id, continuation->implicit_modifiers);
|
||||
|
||||
if (continuation->page == usage_page && continuation->id == usage_id &&
|
||||
continuation->implicit_modifiers == implicit_modifiers) {
|
||||
(continuation->implicit_modifiers &
|
||||
(implicit_modifiers | zmk_hid_get_explicit_mods())) ==
|
||||
continuation->implicit_modifiers) {
|
||||
LOG_DBG("Continuing capsword, found included usage: 0x%02X - 0x%02X", usage_page,
|
||||
usage_id);
|
||||
return true;
|
||||
@@ -143,6 +146,7 @@ static int caps_word_keycode_state_changed_listener(const zmk_event_t *eh) {
|
||||
caps_word_enhance_usage(config, ev);
|
||||
|
||||
if (!caps_word_is_alpha(ev->keycode) && !caps_word_is_numeric(ev->keycode) &&
|
||||
!is_mod(ev->usage_page, ev->keycode) &&
|
||||
!caps_word_is_caps_includelist(config, ev->usage_page, ev->keycode,
|
||||
ev->implicit_modifiers)) {
|
||||
LOG_DBG("Deactivating caps_word for 0x%02X - 0x%02X", ev->usage_page, ev->keycode);
|
||||
|
||||
Reference in New Issue
Block a user