Add hooks for dynamic keymap feature
This commit is contained in:
parent
173156f865
commit
348eb69487
2 changed files with 35 additions and 5 deletions
|
@ -125,6 +125,7 @@ void dynamic_keymap_set_keycode(uint8_t layer, uint8_t row, uint8_t column, uint
|
|||
// Big endian, so we can read/write EEPROM directly from host if we want
|
||||
eeprom_update_byte(address, (uint8_t)(keycode >> 8));
|
||||
eeprom_update_byte(address + 1, (uint8_t)(keycode & 0xFF));
|
||||
dynamic_keymap_set_keycode_kb(layer, row, column, keycode);
|
||||
}
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
|
@ -147,6 +148,7 @@ void dynamic_keymap_set_encoder(uint8_t layer, uint8_t encoder_id, bool clockwis
|
|||
// Big endian, so we can read/write EEPROM directly from host if we want
|
||||
eeprom_update_byte(address + (clockwise ? 0 : 2), (uint8_t)(keycode >> 8));
|
||||
eeprom_update_byte(address + (clockwise ? 0 : 2) + 1, (uint8_t)(keycode & 0xFF));
|
||||
dynamic_keymap_set_encoder_kb(layer, encoder_id, !clockwise, keycode);
|
||||
}
|
||||
#endif // ENCODER_MAP_ENABLE
|
||||
|
||||
|
@ -193,6 +195,7 @@ void dynamic_keymap_set_buffer(uint16_t offset, uint16_t size, uint8_t *data) {
|
|||
source++;
|
||||
target++;
|
||||
}
|
||||
dynamic_keymap_set_buffer_kb(offset, size, data);
|
||||
}
|
||||
|
||||
uint16_t keycode_at_keymap_location(uint8_t layer_num, uint8_t row, uint8_t column) {
|
||||
|
@ -298,3 +301,24 @@ void dynamic_keymap_macro_send(uint8_t id) {
|
|||
send_string_eeprom_state_t state = {p};
|
||||
send_string_with_delay_impl(send_string_get_next_eeprom, &state, DYNAMIC_KEYMAP_MACRO_DELAY);
|
||||
}
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
__attribute__((weak)) bool dynamic_keymap_set_encoder_kb(uint8_t layer, uint8_t encoder_id, bool clockwise, uint16_t keycode) {
|
||||
return dynamic_keymap_set_encoder_user(layer, encoder_id, clockwise, keycode);
|
||||
}
|
||||
__attribute__((weak)) bool dynamic_keymap_set_encoder_user(uint8_t layer, uint8_t encoder_id, bool clockwise, uint16_t keycode) {
|
||||
return true;
|
||||
}
|
||||
#endif // ENCODER_MAP_ENABLE
|
||||
__attribute__((weak)) bool dynamic_keymap_set_keycode_kb(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode) {
|
||||
return dynamic_keymap_set_keycode_user(layer, row, column, keycode);
|
||||
}
|
||||
__attribute__((weak)) bool dynamic_keymap_set_keycode_user(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode) {
|
||||
return true;
|
||||
}
|
||||
__attribute__((weak)) bool dynamic_keymap_set_buffer_kb(uint16_t offset, uint16_t size, uint8_t *data) {
|
||||
return dynamic_keymap_set_buffer_user(offset, size, data);
|
||||
}
|
||||
__attribute__((weak)) bool dynamic_keymap_set_buffer_user(uint16_t offset, uint16_t size, uint8_t *data) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -22,9 +22,13 @@ uint8_t dynamic_keymap_get_layer_count(void);
|
|||
void *dynamic_keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column);
|
||||
uint16_t dynamic_keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t column);
|
||||
void dynamic_keymap_set_keycode(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode);
|
||||
bool dynamic_keymap_set_keycode_kb(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode);
|
||||
bool dynamic_keymap_set_keycode_user(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode);
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
uint16_t dynamic_keymap_get_encoder(uint8_t layer, uint8_t encoder_id, bool clockwise);
|
||||
void dynamic_keymap_set_encoder(uint8_t layer, uint8_t encoder_id, bool clockwise, uint16_t keycode);
|
||||
bool dynamic_keymap_set_encoder_kb(uint8_t layer, uint8_t encoder_id, bool clockwise, uint16_t keycode);
|
||||
bool dynamic_keymap_set_encoder_user(uint8_t layer, uint8_t encoder_id, bool clockwise, uint16_t keycode);
|
||||
#endif // ENCODER_MAP_ENABLE
|
||||
void dynamic_keymap_reset(void);
|
||||
// These get/set the keycodes as stored in the EEPROM buffer
|
||||
|
@ -37,6 +41,8 @@ void dynamic_keymap_reset(void);
|
|||
// a factor of 14.
|
||||
void dynamic_keymap_get_buffer(uint16_t offset, uint16_t size, uint8_t *data);
|
||||
void dynamic_keymap_set_buffer(uint16_t offset, uint16_t size, uint8_t *data);
|
||||
bool dynamic_keymap_set_buffer_kb(uint16_t offset, uint16_t size, uint8_t *data);
|
||||
bool dynamic_keymap_set_buffer_user(uint16_t offset, uint16_t size, uint8_t *data);
|
||||
|
||||
// This overrides the one in quantum/keymap_common.c
|
||||
// uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
|
||||
|
|
Loading…
Add table
Reference in a new issue