vial/encoders: use action_exec hack to support any keycode
This commit is contained in:
parent
dcf794eb9f
commit
a9ccf9aa92
@ -177,8 +177,17 @@ void dynamic_keymap_set_buffer(uint16_t offset, uint16_t size, uint8_t *data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef VIAL_ENCODERS_ENABLE
|
||||||
|
extern uint16_t g_vial_magic_keycode_override;
|
||||||
|
#endif
|
||||||
|
|
||||||
// This overrides the one in quantum/keymap_common.c
|
// This overrides the one in quantum/keymap_common.c
|
||||||
uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key) {
|
uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key) {
|
||||||
|
#ifdef VIAL_ENCODERS_ENABLE
|
||||||
|
if (key.row == 254 && key.col == 254)
|
||||||
|
return g_vial_magic_keycode_override;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (layer < DYNAMIC_KEYMAP_LAYER_COUNT && key.row < MATRIX_ROWS && key.col < MATRIX_COLS) {
|
if (layer < DYNAMIC_KEYMAP_LAYER_COUNT && key.row < MATRIX_ROWS && key.col < MATRIX_COLS) {
|
||||||
return dynamic_keymap_get_keycode(layer, key.row, key.col);
|
return dynamic_keymap_get_keycode(layer, key.row, key.col);
|
||||||
} else {
|
} else {
|
||||||
|
@ -112,6 +112,19 @@ void vial_handle_cmd(uint8_t *msg, uint8_t length) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef VIAL_ENCODERS_ENABLE
|
#ifdef VIAL_ENCODERS_ENABLE
|
||||||
|
uint16_t g_vial_magic_keycode_override;
|
||||||
|
|
||||||
|
static void exec_keycode(uint16_t keycode) {
|
||||||
|
g_vial_magic_keycode_override = keycode;
|
||||||
|
|
||||||
|
action_exec((keyevent_t){
|
||||||
|
.key = (keypos_t){.row = 254, .col = 254}, .pressed = 1, .time = (timer_read() | 1) /* time should not be 0 */
|
||||||
|
});
|
||||||
|
action_exec((keyevent_t){
|
||||||
|
.key = (keypos_t){.row = 254, .col = 254}, .pressed = 0, .time = (timer_read() | 1) /* time should not be 0 */
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void vial_encoder_update(uint8_t index, bool clockwise) {
|
void vial_encoder_update(uint8_t index, bool clockwise) {
|
||||||
uint16_t code;
|
uint16_t code;
|
||||||
|
|
||||||
@ -121,13 +134,13 @@ void vial_encoder_update(uint8_t index, bool clockwise) {
|
|||||||
if (layers & (1UL << i)) {
|
if (layers & (1UL << i)) {
|
||||||
code = dynamic_keymap_get_encoder(i, index, clockwise);
|
code = dynamic_keymap_get_encoder(i, index, clockwise);
|
||||||
if (code != KC_TRNS) {
|
if (code != KC_TRNS) {
|
||||||
tap_code16(code);
|
exec_keycode(code);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* fall back to layer 0 */
|
/* fall back to layer 0 */
|
||||||
code = dynamic_keymap_get_encoder(0, index, clockwise);
|
code = dynamic_keymap_get_encoder(0, index, clockwise);
|
||||||
tap_code16(code);
|
exec_keycode(code);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user