RESET->QK_BOOT for rp2040
This commit is contained in:
parent
3c6a4e5dac
commit
e2baf68401
@ -271,7 +271,7 @@ int dynamic_keymap_set_key_override(uint8_t index, const vial_key_override_entry
|
|||||||
|
|
||||||
void dynamic_keymap_reset(void) {
|
void dynamic_keymap_reset(void) {
|
||||||
#ifdef VIAL_ENABLE
|
#ifdef VIAL_ENABLE
|
||||||
/* temporarily unlock the keyboard so we can set hardcoded RESET keycode */
|
/* temporarily unlock the keyboard so we can set hardcoded QK_BOOT keycode */
|
||||||
int vial_unlocked_prev = vial_unlocked;
|
int vial_unlocked_prev = vial_unlocked;
|
||||||
vial_unlocked = 1;
|
vial_unlocked = 1;
|
||||||
#endif
|
#endif
|
||||||
@ -357,7 +357,7 @@ void dynamic_keymap_set_buffer(uint16_t offset, uint16_t size, uint8_t *data) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
#ifndef VIAL_INSECURE
|
#ifndef VIAL_INSECURE
|
||||||
/* Check whether it is trying to send a RESET keycode; only allow setting these if unlocked */
|
/* Check whether it is trying to send a QK_BOOT keycode; only allow setting these if unlocked */
|
||||||
if (!vial_unlocked) {
|
if (!vial_unlocked) {
|
||||||
/* how much of the input array we'll have to check in the loop */
|
/* how much of the input array we'll have to check in the loop */
|
||||||
uint16_t chk_offset = 0;
|
uint16_t chk_offset = 0;
|
||||||
@ -366,7 +366,7 @@ void dynamic_keymap_set_buffer(uint16_t offset, uint16_t size, uint8_t *data) {
|
|||||||
/* initial byte misaligned -- this means the first keycode will be a combination of existing and new data */
|
/* initial byte misaligned -- this means the first keycode will be a combination of existing and new data */
|
||||||
if (offset % 2 != 0) {
|
if (offset % 2 != 0) {
|
||||||
uint16_t kc = (eeprom_read_byte((uint8_t*)target - 1) << 8) | data[0];
|
uint16_t kc = (eeprom_read_byte((uint8_t*)target - 1) << 8) | data[0];
|
||||||
if (kc == RESET)
|
if (kc == QK_BOOT)
|
||||||
data[0] = 0xFF;
|
data[0] = 0xFF;
|
||||||
|
|
||||||
/* no longer have to check the first byte */
|
/* no longer have to check the first byte */
|
||||||
@ -376,17 +376,17 @@ void dynamic_keymap_set_buffer(uint16_t offset, uint16_t size, uint8_t *data) {
|
|||||||
/* final byte misaligned -- this means the last keycode will be a combination of new and existing data */
|
/* final byte misaligned -- this means the last keycode will be a combination of new and existing data */
|
||||||
if ((offset + size) % 2 != 0) {
|
if ((offset + size) % 2 != 0) {
|
||||||
uint16_t kc = (data[size - 1] << 8) | eeprom_read_byte((uint8_t*)target + size);
|
uint16_t kc = (data[size - 1] << 8) | eeprom_read_byte((uint8_t*)target + size);
|
||||||
if (kc == RESET)
|
if (kc == QK_BOOT)
|
||||||
data[size - 1] = 0xFF;
|
data[size - 1] = 0xFF;
|
||||||
|
|
||||||
/* no longer have to check the last byte */
|
/* no longer have to check the last byte */
|
||||||
chk_sz -= 1;
|
chk_sz -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check the entire array, replace any instances of RESET with invalid keycode 0xFFFF */
|
/* check the entire array, replace any instances of QK_BOOT with invalid keycode 0xFFFF */
|
||||||
for (uint16_t i = chk_offset; i < chk_sz; i += 2) {
|
for (uint16_t i = chk_offset; i < chk_sz; i += 2) {
|
||||||
uint16_t kc = (data[i] << 8) | data[i + 1];
|
uint16_t kc = (data[i] << 8) | data[i + 1];
|
||||||
if (kc == RESET) {
|
if (kc == QK_BOOT) {
|
||||||
data[i] = 0xFF;
|
data[i] = 0xFF;
|
||||||
data[i + 1] = 0xFF;
|
data[i + 1] = 0xFF;
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ void vial_init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((unused)) static uint16_t vial_keycode_firewall(uint16_t in) {
|
__attribute__((unused)) static uint16_t vial_keycode_firewall(uint16_t in) {
|
||||||
if (in == RESET && !vial_unlocked)
|
if (in == QK_BOOT && !vial_unlocked)
|
||||||
return 0;
|
return 0;
|
||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user