vial: implement keycode firewall for dynamic features
This commit is contained in:
parent
8127831f97
commit
c2d388ca06
2 changed files with 13 additions and 6 deletions
|
@ -183,11 +183,6 @@ void dynamic_keymap_set_encoder(uint8_t layer, uint8_t idx, uint8_t dir, uint16_
|
||||||
if (layer >= DYNAMIC_KEYMAP_LAYER_COUNT || idx >= NUMBER_OF_ENCODERS || dir > 1)
|
if (layer >= DYNAMIC_KEYMAP_LAYER_COUNT || idx >= NUMBER_OF_ENCODERS || dir > 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef VIAL_ENABLE
|
|
||||||
if (keycode == RESET && !vial_unlocked)
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void *address = dynamic_keymap_encoder_to_eeprom_address(layer, idx, dir);
|
void *address = dynamic_keymap_encoder_to_eeprom_address(layer, idx, dir);
|
||||||
eeprom_update_byte(address, (uint8_t)(keycode >> 8));
|
eeprom_update_byte(address, (uint8_t)(keycode >> 8));
|
||||||
eeprom_update_byte(address + 1, (uint8_t)(keycode & 0xFF));
|
eeprom_update_byte(address + 1, (uint8_t)(keycode & 0xFF));
|
||||||
|
|
|
@ -74,6 +74,12 @@ void vial_init(void) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__((unused)) static uint16_t vial_keycode_firewall(uint16_t in) {
|
||||||
|
if (in == RESET && !vial_unlocked)
|
||||||
|
return 0;
|
||||||
|
return in;
|
||||||
|
}
|
||||||
|
|
||||||
void vial_handle_cmd(uint8_t *msg, uint8_t length) {
|
void vial_handle_cmd(uint8_t *msg, uint8_t length) {
|
||||||
/* All packets must be fixed 32 bytes */
|
/* All packets must be fixed 32 bytes */
|
||||||
if (length != VIAL_RAW_EPSIZE)
|
if (length != VIAL_RAW_EPSIZE)
|
||||||
|
@ -130,7 +136,7 @@ void vial_handle_cmd(uint8_t *msg, uint8_t length) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case vial_set_encoder: {
|
case vial_set_encoder: {
|
||||||
dynamic_keymap_set_encoder(msg[2], msg[3], msg[4], (msg[5] << 8) | msg[6]);
|
dynamic_keymap_set_encoder(msg[2], msg[3], msg[4], vial_keycode_firewall((msg[5] << 8) | msg[6]));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -236,6 +242,10 @@ void vial_handle_cmd(uint8_t *msg, uint8_t length) {
|
||||||
uint8_t idx = msg[3];
|
uint8_t idx = msg[3];
|
||||||
vial_tap_dance_entry_t td;
|
vial_tap_dance_entry_t td;
|
||||||
memcpy(&td, &msg[4], sizeof(td));
|
memcpy(&td, &msg[4], sizeof(td));
|
||||||
|
td.on_tap = vial_keycode_firewall(td.on_tap);
|
||||||
|
td.on_hold = vial_keycode_firewall(td.on_hold);
|
||||||
|
td.on_double_tap = vial_keycode_firewall(td.on_double_tap);
|
||||||
|
td.on_tap_hold = vial_keycode_firewall(td.on_tap_hold);
|
||||||
msg[0] = dynamic_keymap_set_tap_dance(idx, &td);
|
msg[0] = dynamic_keymap_set_tap_dance(idx, &td);
|
||||||
reload_tap_dance();
|
reload_tap_dance();
|
||||||
break;
|
break;
|
||||||
|
@ -253,6 +263,7 @@ void vial_handle_cmd(uint8_t *msg, uint8_t length) {
|
||||||
uint8_t idx = msg[3];
|
uint8_t idx = msg[3];
|
||||||
vial_combo_entry_t entry;
|
vial_combo_entry_t entry;
|
||||||
memcpy(&entry, &msg[4], sizeof(entry));
|
memcpy(&entry, &msg[4], sizeof(entry));
|
||||||
|
entry.output = vial_keycode_firewall(entry.output);
|
||||||
msg[0] = dynamic_keymap_set_combo(idx, &entry);
|
msg[0] = dynamic_keymap_set_combo(idx, &entry);
|
||||||
reload_combo();
|
reload_combo();
|
||||||
break;
|
break;
|
||||||
|
@ -270,6 +281,7 @@ void vial_handle_cmd(uint8_t *msg, uint8_t length) {
|
||||||
uint8_t idx = msg[3];
|
uint8_t idx = msg[3];
|
||||||
vial_key_override_entry_t entry;
|
vial_key_override_entry_t entry;
|
||||||
memcpy(&entry, &msg[4], sizeof(entry));
|
memcpy(&entry, &msg[4], sizeof(entry));
|
||||||
|
entry.replacement = vial_keycode_firewall(entry.replacement);
|
||||||
msg[0] = dynamic_keymap_set_key_override(idx, &entry);
|
msg[0] = dynamic_keymap_set_key_override(idx, &entry);
|
||||||
reload_key_override();
|
reload_key_override();
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue