Add dynamic keymap config
This commit is contained in:
parent
fc2c3511d2
commit
916a6f87f3
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -125,6 +125,8 @@ static uint8_t kbscan_get_real_keys(int row, uint8_t rowdata) {
|
||||
// Remove any "active" blanks from the matrix.
|
||||
uint8_t realdata = 0;
|
||||
for (uint8_t col = 0; col < KM_IN; col++) {
|
||||
// This tests the default keymap intentionally, to avoid blanks in the
|
||||
// dynamic keymap
|
||||
if (KEYMAP[0][row][col] && (rowdata & (1 << col))) {
|
||||
realdata |= 1 << col;
|
||||
}
|
||||
@ -349,9 +351,7 @@ void kbscan_event(void) {
|
||||
}
|
||||
uint8_t key_layer = kbscan_last_layer[i][j];
|
||||
uint16_t key = 0;
|
||||
if (key_layer < KM_LAY) {;
|
||||
key = KEYMAP[key_layer][i][j];
|
||||
}
|
||||
keymap_get(key_layer, i, j, &key);
|
||||
if (key) {
|
||||
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, key_layer, key, new_b);
|
||||
if(!kbscan_press(key, new_b, &layer)){
|
||||
|
74
src/board/system76/common/keymap.c
Normal file
74
src/board/system76/common/keymap.c
Normal file
@ -0,0 +1,74 @@
|
||||
#include <board/flash.h>
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata DYNAMIC_KEYMAP[KM_LAY][KM_OUT][KM_IN];
|
||||
|
||||
// Config is in the last sector of flash
|
||||
const uint32_t CONFIG_ADDR = 0x1FC00;
|
||||
// Signature is the size of the keymap
|
||||
const uint16_t CONFIG_SIGNATURE = sizeof(DYNAMIC_KEYMAP);
|
||||
|
||||
void keymap_init(void) {
|
||||
if (!keymap_load_config()) {
|
||||
keymap_load_default();
|
||||
}
|
||||
}
|
||||
|
||||
void keymap_load_default(void) {
|
||||
for (int layer = 0; layer < KM_LAY; layer++) {
|
||||
for (int output = 0; output < KM_OUT; output++) {
|
||||
for (int input = 0; input < KM_IN; input++) {
|
||||
DYNAMIC_KEYMAP[layer][output][input] = KEYMAP[layer][output][input];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool keymap_erase_config(void) {
|
||||
// This will erase 1024 bytes
|
||||
flash_erase(CONFIG_ADDR);
|
||||
|
||||
// Verify signature is erased
|
||||
return flash_read_u16(CONFIG_ADDR) == 0xFFFF;
|
||||
}
|
||||
|
||||
bool keymap_load_config(void) {
|
||||
// Check signature
|
||||
if (flash_read_u16(CONFIG_ADDR) != CONFIG_SIGNATURE) return false;
|
||||
|
||||
// Read the keymap if signature is valid
|
||||
flash_read(CONFIG_ADDR + 2, (uint8_t *)DYNAMIC_KEYMAP, sizeof(DYNAMIC_KEYMAP));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool keymap_save_config(void) {
|
||||
// Erase config region
|
||||
if (!keymap_erase_config()) return false;
|
||||
|
||||
// Write the keymap
|
||||
flash_write(CONFIG_ADDR + 2, (uint8_t *)DYNAMIC_KEYMAP, sizeof(DYNAMIC_KEYMAP));
|
||||
|
||||
// Write the length of the keymap, as a signature
|
||||
flash_write_u16(CONFIG_ADDR, CONFIG_SIGNATURE);
|
||||
|
||||
// Verify signature is valid
|
||||
return flash_read_u16(CONFIG_ADDR) == CONFIG_SIGNATURE;
|
||||
}
|
||||
|
||||
bool keymap_get(int layer, int output, int input, uint16_t * value) {
|
||||
if (layer < KM_LAY && output < KM_OUT && input < KM_IN) {
|
||||
*value = DYNAMIC_KEYMAP[layer][output][input];
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool keymap_set(int layer, int output, int input, uint16_t value) {
|
||||
if (layer < KM_LAY && output < KM_OUT && input < KM_IN) {
|
||||
DYNAMIC_KEYMAP[layer][output][input] = value;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
@ -15,6 +15,7 @@
|
||||
#include <board/kbc.h>
|
||||
#include <board/kbled.h>
|
||||
#include <board/kbscan.h>
|
||||
#include <board/keymap.h>
|
||||
#include <board/lid.h>
|
||||
#include <board/peci.h>
|
||||
#include <board/pmc.h>
|
||||
@ -66,6 +67,7 @@ void init(void) {
|
||||
{
|
||||
kbscan_init();
|
||||
}
|
||||
keymap_init();
|
||||
peci_init();
|
||||
pmc_init();
|
||||
pwm_init();
|
||||
|
@ -153,33 +153,35 @@ static enum Result cmd_keymap_get(void) {
|
||||
int layer = smfi_cmd[SMFI_CMD_DATA];
|
||||
int output = smfi_cmd[SMFI_CMD_DATA + 1];
|
||||
int input = smfi_cmd[SMFI_CMD_DATA + 2];
|
||||
|
||||
if (layer < KM_LAY && output < KM_OUT && input < KM_IN) {
|
||||
uint16_t key = KEYMAP[layer][output][input];
|
||||
uint16_t key = 0;
|
||||
if (keymap_get(layer, output, input, &key)) {
|
||||
smfi_cmd[SMFI_CMD_DATA + 3] = (uint8_t)key;
|
||||
smfi_cmd[SMFI_CMD_DATA + 4] = (uint8_t)(key >> 8);
|
||||
return RES_OK;
|
||||
} else {
|
||||
return RES_ERR;
|
||||
}
|
||||
|
||||
// Failed if keyboard mapping not found
|
||||
return RES_ERR;
|
||||
}
|
||||
|
||||
static enum Result cmd_keymap_set(void) {
|
||||
int layer = smfi_cmd[SMFI_CMD_DATA];
|
||||
int output = smfi_cmd[SMFI_CMD_DATA + 1];
|
||||
int input = smfi_cmd[SMFI_CMD_DATA + 2];
|
||||
|
||||
if (layer < KM_LAY && output < KM_OUT && input < KM_IN) {
|
||||
uint16_t key =
|
||||
((uint16_t)smfi_cmd[SMFI_CMD_DATA + 3]) |
|
||||
(((uint16_t)smfi_cmd[SMFI_CMD_DATA + 4]) << 8);
|
||||
KEYMAP[layer][output][input] = key;
|
||||
return RES_OK;
|
||||
uint16_t key =
|
||||
((uint16_t)smfi_cmd[SMFI_CMD_DATA + 3]) |
|
||||
(((uint16_t)smfi_cmd[SMFI_CMD_DATA + 4]) << 8);
|
||||
//TODO: consider only setting if the key has changed
|
||||
if (keymap_set(layer, output, input, key)) {
|
||||
//TODO: should we write config on every change?
|
||||
if (keymap_save_config()) {
|
||||
return RES_OK;
|
||||
} else {
|
||||
//TODO: need a different error code?
|
||||
return RES_ERR;
|
||||
}
|
||||
} else {
|
||||
return RES_ERR;
|
||||
}
|
||||
|
||||
// Failed if keyboard mapping not found
|
||||
return RES_ERR;
|
||||
}
|
||||
#endif // !defined(__SCRATCH__)
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, 0 /* pause */, K_INSERT, K_DEL,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_HOME,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, 0 /* pause */, K_INSERT, K_DEL,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_HOME,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, 0 /* pause */, K_INSERT, K_DEL,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_HOME,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_HOME, K_END, K_PRINT_SCREEN, K_DEL,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP,
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_HOME, K_END, K_INSERT, K_DEL,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_HOME, K_END, K_PRINT_SCREEN, K_DEL,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_HOME, K_END, K_PRINT_SCREEN, K_DEL,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_BRACE_OPEN, K_BRACE_CLOSE, K_BKSP,
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <board/keymap.h>
|
||||
|
||||
uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||
LAYOUT(
|
||||
K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||
K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP, K_NUM_LOCK, K_NUM_SLASH, K_NUM_ASTERISK, K_NUM_MINUS,
|
||||
|
@ -3,10 +3,33 @@
|
||||
#ifndef _COMMON_KEYMAP_H
|
||||
#define _COMMON_KEYMAP_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
// Keymap defined by board
|
||||
#if defined(KM_LAY) && defined(KM_OUT) && defined(KM_IN)
|
||||
extern uint16_t __xdata KEYMAP[KM_LAY][KM_OUT][KM_IN];
|
||||
extern uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN];
|
||||
extern uint16_t __xdata DYNAMIC_KEYMAP[KM_LAY][KM_OUT][KM_IN];
|
||||
#define HAVE_KEYMAP 1
|
||||
#else
|
||||
#define HAVE_KEYMAP 0
|
||||
#endif
|
||||
|
||||
#if HAVE_KEYMAP
|
||||
// Initialize the dynamic keymap
|
||||
void keymap_init(void);
|
||||
// Set the dynamic keymap to the default keymap
|
||||
void keymap_load_default(void);
|
||||
// Erase dynamic keymap in flash
|
||||
bool keymap_erase_config(void);
|
||||
// Load dynamic keymap from flash
|
||||
bool keymap_load_config(void);
|
||||
// Save dynamic keymap to flash
|
||||
bool keymap_save_config(void);
|
||||
// Get a keycode from the dynamic keymap
|
||||
bool keymap_get(int layer, int output, int input, uint16_t * value);
|
||||
// Set a keycode in the dynamic keymap
|
||||
bool keymap_set(int layer, int output, int input, uint16_t value);
|
||||
#endif
|
||||
|
||||
// Translate a keycode from PS/2 set 2 to PS/2 set 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user