diff options
Diffstat (limited to 'quantum/dynamic_keymap.h')
-rw-r--r-- | quantum/dynamic_keymap.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/quantum/dynamic_keymap.h b/quantum/dynamic_keymap.h index bd76adae2..63653f6cb 100644 --- a/quantum/dynamic_keymap.h +++ b/quantum/dynamic_keymap.h | |||
@@ -18,11 +18,46 @@ | |||
18 | #include <stdint.h> | 18 | #include <stdint.h> |
19 | #include <stdbool.h> | 19 | #include <stdbool.h> |
20 | 20 | ||
21 | uint8_t dynamic_keymap_get_layer_count(void); | ||
21 | void *dynamic_keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column); | 22 | void *dynamic_keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column); |
22 | uint16_t dynamic_keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t column); | 23 | uint16_t dynamic_keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t column); |
23 | void dynamic_keymap_set_keycode(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode); | 24 | void dynamic_keymap_set_keycode(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode); |
24 | void dynamic_keymap_reset(void); | 25 | void dynamic_keymap_reset(void); |
26 | // These get/set the keycodes as stored in the EEPROM buffer | ||
27 | // Data is big-endian 16-bit values (the keycodes) | ||
28 | // Order is by layer/row/column | ||
29 | // Thus offset 0 = 0,0,0, offset MATRIX_COLS*2 = 0,1,0, offset MATRIX_ROWS*MATRIX_COLS*2 = 1,0,0 | ||
30 | // Note the *2, because offset is in bytes and keycodes are two bytes | ||
31 | // This is only really useful for host applications that want to get a whole keymap fast, | ||
32 | // by reading 14 keycodes (28 bytes) at a time, reducing the number of raw HID transfers by | ||
33 | // a factor of 14. | ||
34 | void dynamic_keymap_get_buffer( uint16_t offset, uint16_t size, uint8_t *data ); | ||
35 | void dynamic_keymap_set_buffer( uint16_t offset, uint16_t size, uint8_t *data ); | ||
25 | 36 | ||
26 | // This overrides the one in quantum/keymap_common.c | 37 | // This overrides the one in quantum/keymap_common.c |
27 | // uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key); | 38 | // uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key); |
28 | 39 | ||
40 | |||
41 | |||
42 | // Note regarding dynamic_keymap_macro_set_buffer(): | ||
43 | // The last byte of the buffer is used as a valid flag, | ||
44 | // so macro sending is disabled during writing a new buffer, | ||
45 | // should it happen during, or after an interrupted transfer. | ||
46 | // | ||
47 | // Users writing to the buffer must first set the last byte of the buffer | ||
48 | // to non-zero (i.e. 0xFF). After (or during) the final write, set the | ||
49 | // last byte of the buffer to zero. | ||
50 | // | ||
51 | // Since the contents of the buffer must be a list of null terminated | ||
52 | // strings, the last byte must be a null when at maximum capacity, | ||
53 | // and it not being null means the buffer can be considered in an | ||
54 | // invalid state. | ||
55 | |||
56 | uint8_t dynamic_keymap_macro_get_count(void); | ||
57 | uint16_t dynamic_keymap_macro_get_buffer_size(void); | ||
58 | void dynamic_keymap_macro_get_buffer( uint16_t offset, uint16_t size, uint8_t *data ); | ||
59 | void dynamic_keymap_macro_set_buffer( uint16_t offset, uint16_t size, uint8_t *data ); | ||
60 | void dynamic_keymap_macro_reset(void); | ||
61 | |||
62 | void dynamic_keymap_macro_send( uint8_t id ); | ||
63 | |||