Add printscreen support as a combo
This commit is contained in:
parent
7dde9dd45e
commit
aa6f838f53
@ -28,6 +28,72 @@ void kbscan_init(void) {
|
|||||||
// Debounce time in milliseconds
|
// Debounce time in milliseconds
|
||||||
#define DEBOUNCE_DELAY 20
|
#define DEBOUNCE_DELAY 20
|
||||||
|
|
||||||
|
bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) {
|
||||||
|
switch (key & KT_MASK) {
|
||||||
|
case (KT_NORMAL):
|
||||||
|
if (kbscan_enabled) {
|
||||||
|
kbc_scancode(&KBC, key, pressed);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_FN):
|
||||||
|
if (layer != NULL) {
|
||||||
|
if (pressed) *layer = 1;
|
||||||
|
else *layer = 0;
|
||||||
|
} else {
|
||||||
|
// In the case no layer can be set, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_COMBO):
|
||||||
|
switch (key & 0xFF) {
|
||||||
|
case COMBO_PRINT_SCREEN:
|
||||||
|
if (kbscan_enabled) {
|
||||||
|
if (pressed) {
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x12, pressed);
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x7C, pressed);
|
||||||
|
} else {
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x7C, pressed);
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x12, pressed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_SCI):
|
||||||
|
if (pressed) {
|
||||||
|
uint8_t sci = (uint8_t)(key & 0xFF);
|
||||||
|
|
||||||
|
// HACK FOR HARDWARE HOTKEYS
|
||||||
|
switch (sci) {
|
||||||
|
case SCI_DISPLAY_TOGGLE:
|
||||||
|
gpio_set(&BKL_EN, !gpio_get(&BKL_EN));
|
||||||
|
break;
|
||||||
|
case SCI_CAMERA_TOGGLE:
|
||||||
|
gpio_set(&CCD_EN, !gpio_get(&CCD_EN));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pmc_sci(&PMC_1, sci)) {
|
||||||
|
// In the case of ignored SCI, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_SCI_EXTRA):
|
||||||
|
if (pressed) {
|
||||||
|
uint8_t sci = SCI_EXTRA;
|
||||||
|
sci_extra = (uint8_t)(key & 0xFF);
|
||||||
|
|
||||||
|
if (!pmc_sci(&PMC_1, sci)) {
|
||||||
|
// In the case of ignored SCI, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void kbscan_event(void) {
|
void kbscan_event(void) {
|
||||||
static uint8_t kbscan_layer = 0;
|
static uint8_t kbscan_layer = 0;
|
||||||
uint8_t layer = kbscan_layer;
|
uint8_t layer = kbscan_layer;
|
||||||
@ -86,66 +152,37 @@ void kbscan_event(void) {
|
|||||||
bool new_b = new & (1 << j);
|
bool new_b = new & (1 << j);
|
||||||
bool last_b = last & (1 << j);
|
bool last_b = last & (1 << j);
|
||||||
if (new_b != last_b) {
|
if (new_b != last_b) {
|
||||||
|
bool reset = false;
|
||||||
|
|
||||||
// If debouncing
|
// If debouncing
|
||||||
if (debounce) {
|
if (debounce) {
|
||||||
// Debounce presses and releases
|
// Debounce presses and releases
|
||||||
if (new_b) {
|
reset = true;
|
||||||
// Restore bit, so that this press can be handled later
|
|
||||||
new &= ~(1 << j);
|
|
||||||
} else {
|
|
||||||
// Restore bit, so that this release can be handled later
|
|
||||||
new |= (1 << j);
|
|
||||||
}
|
|
||||||
// Skip processing of press
|
|
||||||
continue;
|
|
||||||
} else {
|
} else {
|
||||||
// Begin debounce
|
// Begin debounce
|
||||||
debounce = true;
|
debounce = true;
|
||||||
debounce_time = time_get();
|
debounce_time = time_get();
|
||||||
|
|
||||||
|
// Handle key press/release
|
||||||
|
uint16_t key = keymap(i, j, kbscan_layer);
|
||||||
|
if (key) {
|
||||||
|
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
||||||
|
if(!kbscan_press(key, new_b, &layer)){
|
||||||
|
// In the case of ignored key press/release, reset bit
|
||||||
|
reset = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t key = keymap(i, j, kbscan_layer);
|
// Reset bit to last state
|
||||||
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
if (reset) {
|
||||||
if (!key) {
|
if (last_b) {
|
||||||
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
new |= (1 << j);
|
||||||
}
|
} else {
|
||||||
switch (key & KT_MASK) {
|
new &= ~(1 << j);
|
||||||
case (KT_FN):
|
}
|
||||||
if (new_b) layer = 1;
|
|
||||||
else layer = 0;
|
|
||||||
break;
|
|
||||||
case (KT_SCI_EXTRA):
|
|
||||||
if (new_b) {
|
|
||||||
uint8_t sci = SCI_EXTRA;
|
|
||||||
sci_extra = (uint8_t)(key & 0xFF);
|
|
||||||
if (!pmc_sci(&PMC_1, sci)) {
|
|
||||||
// In the case of ignored SCI, reset bit
|
|
||||||
new &= ~(1 << j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case (KT_SCI):
|
|
||||||
if (new_b) {
|
|
||||||
uint8_t sci = (uint8_t)(key & 0xFF);
|
|
||||||
|
|
||||||
// HACK FOR HARDWARE HOTKEYS
|
|
||||||
switch (sci) {
|
|
||||||
case SCI_CAMERA_TOGGLE:
|
|
||||||
gpio_set(&CCD_EN, !gpio_get(&CCD_EN));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pmc_sci(&PMC_1, sci)) {
|
|
||||||
// In the case of ignored SCI, reset bit
|
|
||||||
new &= ~(1 << j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case (KT_NORMAL):
|
|
||||||
if (kbscan_enabled && key) {
|
|
||||||
kbc_scancode(&KBC, key, new_b);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,14 +204,27 @@ void kbscan_event(void) {
|
|||||||
bool new_b = new & (1 << j);
|
bool new_b = new & (1 << j);
|
||||||
bool last_b = last & (1 << j);
|
bool last_b = last & (1 << j);
|
||||||
if (new_b != last_b) {
|
if (new_b != last_b) {
|
||||||
|
bool reset = false;
|
||||||
|
|
||||||
|
// Handle key press/release
|
||||||
uint16_t key = keymap(i, j, kbscan_layer);
|
uint16_t key = keymap(i, j, kbscan_layer);
|
||||||
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
if (key) {
|
||||||
switch (key & KT_MASK) {
|
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
||||||
case (KT_NORMAL):
|
if(!kbscan_press(key, new_b, NULL)){
|
||||||
if (kbscan_enabled && key) {
|
// In the case of ignored key press/release, reset bit
|
||||||
kbc_scancode(&KBC, key, new_b);
|
reset = true;
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
|
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset bit to last state
|
||||||
|
if (reset) {
|
||||||
|
if (last_b) {
|
||||||
|
new |= (1 << j);
|
||||||
|
} else {
|
||||||
|
new &= ~(1 << j);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||||
LAYOUT(
|
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, 0 /*prtsc*/, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
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,
|
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,
|
||||||
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_PLUS,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_PLUS,
|
||||||
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_NUM_4, K_NUM_5, K_NUM_6,
|
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_NUM_4, K_NUM_5, K_NUM_6,
|
||||||
@ -12,7 +12,7 @@ LAYOUT(
|
|||||||
K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT, K_NUM_0, K_NUM_PERIOD
|
K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT, K_NUM_0, K_NUM_PERIOD
|
||||||
),
|
),
|
||||||
LAYOUT(
|
LAYOUT(
|
||||||
K_ESC, K_TOUCHPAD, K_F2, K_MUTE, K_F4, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, 0 /*prtsc*/, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, K_F4, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, K_INSERT, K_DEL, K_HOME, K_END, K_PGUP, K_PGDN,
|
||||||
K_PLAY_PAUSE, 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,
|
K_PLAY_PAUSE, 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,
|
||||||
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_PLUS,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_NUM_7, K_NUM_8, K_NUM_9, K_NUM_PLUS,
|
||||||
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_NUM_4, K_NUM_5, K_NUM_6,
|
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_NUM_4, K_NUM_5, K_NUM_6,
|
||||||
|
@ -29,6 +29,79 @@ void kbscan_init(void) {
|
|||||||
// Debounce time in milliseconds
|
// Debounce time in milliseconds
|
||||||
#define DEBOUNCE_DELAY 20
|
#define DEBOUNCE_DELAY 20
|
||||||
|
|
||||||
|
bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) {
|
||||||
|
switch (key & KT_MASK) {
|
||||||
|
case (KT_NORMAL):
|
||||||
|
if (kbscan_enabled) {
|
||||||
|
kbc_scancode(&KBC, key, pressed);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_FN):
|
||||||
|
if (layer != NULL) {
|
||||||
|
if (pressed) *layer = 1;
|
||||||
|
else *layer = 0;
|
||||||
|
} else {
|
||||||
|
// In the case no layer can be set, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_COMBO):
|
||||||
|
switch (key & 0xFF) {
|
||||||
|
case COMBO_PRINT_SCREEN:
|
||||||
|
if (kbscan_enabled) {
|
||||||
|
if (pressed) {
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x12, pressed);
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x7C, pressed);
|
||||||
|
} else {
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x7C, pressed);
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x12, pressed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_SCI):
|
||||||
|
if (pressed) {
|
||||||
|
uint8_t sci = (uint8_t)(key & 0xFF);
|
||||||
|
|
||||||
|
// HACK FOR HARDWARE HOTKEYS
|
||||||
|
switch (sci) {
|
||||||
|
case SCI_DISPLAY_TOGGLE:
|
||||||
|
gpio_set(&BKL_EN, !gpio_get(&BKL_EN));
|
||||||
|
break;
|
||||||
|
case SCI_CAMERA_TOGGLE:
|
||||||
|
gpio_set(&CCD_EN, !gpio_get(&CCD_EN));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pmc_sci(&PMC_1, sci)) {
|
||||||
|
// In the case of ignored SCI, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_SCI_EXTRA):
|
||||||
|
if (pressed) {
|
||||||
|
uint8_t sci = SCI_EXTRA;
|
||||||
|
sci_extra = (uint8_t)(key & 0xFF);
|
||||||
|
|
||||||
|
// HACK FOR HARDWARE HOTKEYS
|
||||||
|
switch (sci_extra) {
|
||||||
|
case SCI_EXTRA_KBD_BKL:
|
||||||
|
kbled_set(kbled_get() + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pmc_sci(&PMC_1, sci)) {
|
||||||
|
// In the case of ignored SCI, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void kbscan_event(void) {
|
void kbscan_event(void) {
|
||||||
static uint8_t kbscan_layer = 0;
|
static uint8_t kbscan_layer = 0;
|
||||||
uint8_t layer = kbscan_layer;
|
uint8_t layer = kbscan_layer;
|
||||||
@ -78,74 +151,37 @@ void kbscan_event(void) {
|
|||||||
bool new_b = new & (1 << j);
|
bool new_b = new & (1 << j);
|
||||||
bool last_b = last & (1 << j);
|
bool last_b = last & (1 << j);
|
||||||
if (new_b != last_b) {
|
if (new_b != last_b) {
|
||||||
|
bool reset = false;
|
||||||
|
|
||||||
// If debouncing
|
// If debouncing
|
||||||
if (debounce) {
|
if (debounce) {
|
||||||
// Debounce presses and releases
|
// Debounce presses and releases
|
||||||
if (new_b) {
|
reset = true;
|
||||||
// Restore bit, so that this press can be handled later
|
|
||||||
new &= ~(1 << j);
|
|
||||||
} else {
|
|
||||||
// Restore bit, so that this release can be handled later
|
|
||||||
new |= (1 << j);
|
|
||||||
}
|
|
||||||
// Skip processing of press
|
|
||||||
continue;
|
|
||||||
} else {
|
} else {
|
||||||
// Begin debounce
|
// Begin debounce
|
||||||
debounce = true;
|
debounce = true;
|
||||||
debounce_time = time_get();
|
debounce_time = time_get();
|
||||||
|
|
||||||
|
// Handle key press/release
|
||||||
|
uint16_t key = keymap(i, j, kbscan_layer);
|
||||||
|
if (key) {
|
||||||
|
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
||||||
|
if(!kbscan_press(key, new_b, &layer)){
|
||||||
|
// In the case of ignored key press/release, reset bit
|
||||||
|
reset = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t key = keymap(i, j, kbscan_layer);
|
// Reset bit to last state
|
||||||
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
if (reset) {
|
||||||
if (!key) {
|
if (last_b) {
|
||||||
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
new |= (1 << j);
|
||||||
}
|
} else {
|
||||||
switch (key & KT_MASK) {
|
new &= ~(1 << j);
|
||||||
case (KT_FN):
|
}
|
||||||
if (new_b) layer = 1;
|
|
||||||
else layer = 0;
|
|
||||||
break;
|
|
||||||
case (KT_SCI_EXTRA):
|
|
||||||
if (new_b) {
|
|
||||||
uint8_t sci = SCI_EXTRA;
|
|
||||||
sci_extra = (uint8_t)(key & 0xFF);
|
|
||||||
|
|
||||||
// HACK FOR HARDWARE HOTKEYS
|
|
||||||
switch (sci_extra) {
|
|
||||||
case SCI_EXTRA_KBD_BKL:
|
|
||||||
kbled_set(kbled_get() + 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pmc_sci(&PMC_1, sci)) {
|
|
||||||
// In the case of ignored SCI, reset bit
|
|
||||||
new &= ~(1 << j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case (KT_SCI):
|
|
||||||
if (new_b) {
|
|
||||||
uint8_t sci = (uint8_t)(key & 0xFF);
|
|
||||||
|
|
||||||
// HACK FOR HARDWARE HOTKEYS
|
|
||||||
switch (sci) {
|
|
||||||
case SCI_CAMERA_TOGGLE:
|
|
||||||
gpio_set(&CCD_EN, !gpio_get(&CCD_EN));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pmc_sci(&PMC_1, sci)) {
|
|
||||||
// In the case of ignored SCI, reset bit
|
|
||||||
new &= ~(1 << j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case (KT_NORMAL):
|
|
||||||
if (kbscan_enabled && key) {
|
|
||||||
kbc_scancode(&KBC, key, new_b);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,14 +203,27 @@ void kbscan_event(void) {
|
|||||||
bool new_b = new & (1 << j);
|
bool new_b = new & (1 << j);
|
||||||
bool last_b = last & (1 << j);
|
bool last_b = last & (1 << j);
|
||||||
if (new_b != last_b) {
|
if (new_b != last_b) {
|
||||||
|
bool reset = false;
|
||||||
|
|
||||||
|
// Handle key press/release
|
||||||
uint16_t key = keymap(i, j, kbscan_layer);
|
uint16_t key = keymap(i, j, kbscan_layer);
|
||||||
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
if (key) {
|
||||||
switch (key & KT_MASK) {
|
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
||||||
case (KT_NORMAL):
|
if(!kbscan_press(key, new_b, NULL)){
|
||||||
if (kbscan_enabled && key) {
|
// In the case of ignored key press/release, reset bit
|
||||||
kbc_scancode(&KBC, key, new_b);
|
reset = true;
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
|
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset bit to last state
|
||||||
|
if (reset) {
|
||||||
|
if (last_b) {
|
||||||
|
new |= (1 << j);
|
||||||
|
} else {
|
||||||
|
new &= ~(1 << j);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||||
LAYOUT(
|
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, 0 /*prtsc*/, 0 /* pause */, K_INSERT, K_DEL,
|
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,
|
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,
|
||||||
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP,
|
||||||
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_PGDN,
|
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_PGDN,
|
||||||
@ -12,7 +12,7 @@ LAYOUT(
|
|||||||
K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT
|
K_LEFT_CTRL, KT_FN, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_APP, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT
|
||||||
),
|
),
|
||||||
LAYOUT(
|
LAYOUT(
|
||||||
K_ESC, K_TOUCHPAD, K_F2, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, 0 /*prtsc*/, 0 /*pause*/, K_INSERT, K_DEL,
|
K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, 0 /*pause*/, K_INSERT, K_DEL,
|
||||||
K_PLAY_PAUSE, 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,
|
K_PLAY_PAUSE, 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,
|
||||||
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP,
|
||||||
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_PGDN,
|
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_PGDN,
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||||
LAYOUT(
|
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, 0 /*prtsc*/, 0 /* pause */, K_INSERT, K_DEL,
|
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,
|
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,
|
||||||
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP,
|
||||||
KT_FN, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_PGDN,
|
KT_FN, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER, K_PGDN,
|
||||||
@ -12,7 +12,7 @@ LAYOUT(
|
|||||||
K_LEFT_CTRL, KT_FN, K_LEFT_ALT, K_LEFT_SUPER, K_SPACE, KT_FN, K_RIGHT_ALT, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT
|
K_LEFT_CTRL, KT_FN, K_LEFT_ALT, K_LEFT_SUPER, K_SPACE, KT_FN, K_RIGHT_ALT, K_RIGHT_CTRL, K_LEFT, K_DOWN, K_RIGHT
|
||||||
),
|
),
|
||||||
LAYOUT(
|
LAYOUT(
|
||||||
K_ESC, K_TOUCHPAD, K_F2, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, 0 /*prtsc*/, 0 /*pause*/, K_INSERT, K_DEL,
|
K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_PRINT_SCREEN, 0 /*pause*/, K_INSERT, K_DEL,
|
||||||
K_PLAY_PAUSE, 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,
|
K_PLAY_PAUSE, 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,
|
||||||
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_PGUP, K_HOME, K_PGDN, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_PGUP, K_HOME, K_PGDN, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH, K_PGUP,
|
||||||
KT_FN, K_A, K_S, K_D, K_F, K_G, K_LEFT, K_DOWN, K_UP, K_RIGHT, K_BKSP, K_DEL, K_ENTER, K_PGDN,
|
KT_FN, K_A, K_S, K_D, K_F, K_G, K_LEFT, K_DOWN, K_UP, K_RIGHT, K_BKSP, K_DEL, K_ENTER, K_PGDN,
|
||||||
|
@ -29,6 +29,79 @@ void kbscan_init(void) {
|
|||||||
// Debounce time in milliseconds
|
// Debounce time in milliseconds
|
||||||
#define DEBOUNCE_DELAY 20
|
#define DEBOUNCE_DELAY 20
|
||||||
|
|
||||||
|
bool kbscan_press(uint16_t key, bool pressed, uint8_t * layer) {
|
||||||
|
switch (key & KT_MASK) {
|
||||||
|
case (KT_NORMAL):
|
||||||
|
if (kbscan_enabled) {
|
||||||
|
kbc_scancode(&KBC, key, pressed);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_FN):
|
||||||
|
if (layer != NULL) {
|
||||||
|
if (pressed) *layer = 1;
|
||||||
|
else *layer = 0;
|
||||||
|
} else {
|
||||||
|
// In the case no layer can be set, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_COMBO):
|
||||||
|
switch (key & 0xFF) {
|
||||||
|
case COMBO_PRINT_SCREEN:
|
||||||
|
if (kbscan_enabled) {
|
||||||
|
if (pressed) {
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x12, pressed);
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x7C, pressed);
|
||||||
|
} else {
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x7C, pressed);
|
||||||
|
kbc_scancode(&KBC, K_E0 | 0x12, pressed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_SCI):
|
||||||
|
if (pressed) {
|
||||||
|
uint8_t sci = (uint8_t)(key & 0xFF);
|
||||||
|
|
||||||
|
// HACK FOR HARDWARE HOTKEYS
|
||||||
|
switch (sci) {
|
||||||
|
case SCI_DISPLAY_TOGGLE:
|
||||||
|
gpio_set(&BKL_EN, !gpio_get(&BKL_EN));
|
||||||
|
break;
|
||||||
|
case SCI_CAMERA_TOGGLE:
|
||||||
|
gpio_set(&CCD_EN, !gpio_get(&CCD_EN));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pmc_sci(&PMC_1, sci)) {
|
||||||
|
// In the case of ignored SCI, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case (KT_SCI_EXTRA):
|
||||||
|
if (pressed) {
|
||||||
|
uint8_t sci = SCI_EXTRA;
|
||||||
|
sci_extra = (uint8_t)(key & 0xFF);
|
||||||
|
|
||||||
|
// HACK FOR HARDWARE HOTKEYS
|
||||||
|
switch (sci_extra) {
|
||||||
|
case SCI_EXTRA_KBD_BKL:
|
||||||
|
kbled_set(kbled_get() + 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pmc_sci(&PMC_1, sci)) {
|
||||||
|
// In the case of ignored SCI, reset bit
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void kbscan_event(void) {
|
void kbscan_event(void) {
|
||||||
static uint8_t kbscan_layer = 0;
|
static uint8_t kbscan_layer = 0;
|
||||||
uint8_t layer = kbscan_layer;
|
uint8_t layer = kbscan_layer;
|
||||||
@ -78,74 +151,37 @@ void kbscan_event(void) {
|
|||||||
bool new_b = new & (1 << j);
|
bool new_b = new & (1 << j);
|
||||||
bool last_b = last & (1 << j);
|
bool last_b = last & (1 << j);
|
||||||
if (new_b != last_b) {
|
if (new_b != last_b) {
|
||||||
|
bool reset = false;
|
||||||
|
|
||||||
// If debouncing
|
// If debouncing
|
||||||
if (debounce) {
|
if (debounce) {
|
||||||
// Debounce presses and releases
|
// Debounce presses and releases
|
||||||
if (new_b) {
|
reset = true;
|
||||||
// Restore bit, so that this press can be handled later
|
|
||||||
new &= ~(1 << j);
|
|
||||||
} else {
|
|
||||||
// Restore bit, so that this release can be handled later
|
|
||||||
new |= (1 << j);
|
|
||||||
}
|
|
||||||
// Skip processing of press
|
|
||||||
continue;
|
|
||||||
} else {
|
} else {
|
||||||
// Begin debounce
|
// Begin debounce
|
||||||
debounce = true;
|
debounce = true;
|
||||||
debounce_time = time_get();
|
debounce_time = time_get();
|
||||||
|
|
||||||
|
// Handle key press/release
|
||||||
|
uint16_t key = keymap(i, j, kbscan_layer);
|
||||||
|
if (key) {
|
||||||
|
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
||||||
|
if(!kbscan_press(key, new_b, &layer)){
|
||||||
|
// In the case of ignored key press/release, reset bit
|
||||||
|
reset = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t key = keymap(i, j, kbscan_layer);
|
// Reset bit to last state
|
||||||
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
if (reset) {
|
||||||
if (!key) {
|
if (last_b) {
|
||||||
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
new |= (1 << j);
|
||||||
}
|
} else {
|
||||||
switch (key & KT_MASK) {
|
new &= ~(1 << j);
|
||||||
case (KT_FN):
|
}
|
||||||
if (new_b) layer = 1;
|
|
||||||
else layer = 0;
|
|
||||||
break;
|
|
||||||
case (KT_SCI_EXTRA):
|
|
||||||
if (new_b) {
|
|
||||||
uint8_t sci = SCI_EXTRA;
|
|
||||||
sci_extra = (uint8_t)(key & 0xFF);
|
|
||||||
|
|
||||||
// HACK FOR HARDWARE HOTKEYS
|
|
||||||
switch (sci_extra) {
|
|
||||||
case SCI_EXTRA_KBD_BKL:
|
|
||||||
kbled_set(kbled_get() + 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pmc_sci(&PMC_1, sci)) {
|
|
||||||
// In the case of ignored SCI, reset bit
|
|
||||||
new &= ~(1 << j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case (KT_SCI):
|
|
||||||
if (new_b) {
|
|
||||||
uint8_t sci = (uint8_t)(key & 0xFF);
|
|
||||||
|
|
||||||
// HACK FOR HARDWARE HOTKEYS
|
|
||||||
switch (sci) {
|
|
||||||
case SCI_CAMERA_TOGGLE:
|
|
||||||
gpio_set(&CCD_EN, !gpio_get(&CCD_EN));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pmc_sci(&PMC_1, sci)) {
|
|
||||||
// In the case of ignored SCI, reset bit
|
|
||||||
new &= ~(1 << j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case (KT_NORMAL):
|
|
||||||
if (kbscan_enabled && key) {
|
|
||||||
kbc_scancode(&KBC, key, new_b);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,14 +203,27 @@ void kbscan_event(void) {
|
|||||||
bool new_b = new & (1 << j);
|
bool new_b = new & (1 << j);
|
||||||
bool last_b = last & (1 << j);
|
bool last_b = last & (1 << j);
|
||||||
if (new_b != last_b) {
|
if (new_b != last_b) {
|
||||||
|
bool reset = false;
|
||||||
|
|
||||||
|
// Handle key press/release
|
||||||
uint16_t key = keymap(i, j, kbscan_layer);
|
uint16_t key = keymap(i, j, kbscan_layer);
|
||||||
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
if (key) {
|
||||||
switch (key & KT_MASK) {
|
DEBUG("KB %d, %d, %d = 0x%04X, %d\n", i, j, kbscan_layer, key, new_b);
|
||||||
case (KT_NORMAL):
|
if(!kbscan_press(key, new_b, NULL)){
|
||||||
if (kbscan_enabled && key) {
|
// In the case of ignored key press/release, reset bit
|
||||||
kbc_scancode(&KBC, key, new_b);
|
reset = true;
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
|
WARN("KB %d, %d, %d missing\n", i, j, kbscan_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset bit to last state
|
||||||
|
if (reset) {
|
||||||
|
if (last_b) {
|
||||||
|
new |= (1 << j);
|
||||||
|
} else {
|
||||||
|
new &= ~(1 << j);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||||
LAYOUT(
|
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, 0 /*prtsc*/, K_DEL,
|
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,
|
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_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
|
||||||
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER,
|
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER,
|
||||||
@ -13,7 +13,7 @@ LAYOUT(
|
|||||||
K_LEFT, K_DOWN, K_RIGHT
|
K_LEFT, K_DOWN, K_RIGHT
|
||||||
),
|
),
|
||||||
LAYOUT(
|
LAYOUT(
|
||||||
K_ESC, K_TOUCHPAD, K_F2, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_HOME, K_END, 0 /*prtsc*/, K_DEL,
|
K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_HOME, K_END, K_PRINT_SCREEN, K_DEL,
|
||||||
K_PLAY_PAUSE, 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_PLAY_PAUSE, 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_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
|
||||||
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER,
|
K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER,
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
|
||||||
LAYOUT(
|
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, 0 /*prtsc*/, K_DEL,
|
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,
|
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_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
|
||||||
KT_FN, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER,
|
KT_FN, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER,
|
||||||
@ -13,7 +13,7 @@ LAYOUT(
|
|||||||
K_LEFT, K_DOWN, K_RIGHT
|
K_LEFT, K_DOWN, K_RIGHT
|
||||||
),
|
),
|
||||||
LAYOUT(
|
LAYOUT(
|
||||||
K_ESC, K_TOUCHPAD, K_F2, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_HOME, K_END, 0 /*prtsc*/, K_DEL,
|
K_ESC, K_TOUCHPAD, KT_SCI | SCI_DISPLAY_TOGGLE, K_MUTE, KT_SCI_EXTRA | SCI_EXTRA_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_F7, KT_SCI | SCI_BRIGHTNESS_DOWN, KT_SCI | SCI_BRIGHTNESS_UP, KT_SCI | SCI_CAMERA_TOGGLE, KT_SCI | SCI_AIRPLANE_MODE, KT_SCI | SCI_SUSPEND, K_HOME, K_END, K_PRINT_SCREEN, K_DEL,
|
||||||
K_PLAY_PAUSE, 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_PLAY_PAUSE, 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_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_PGUP, K_HOME, K_PGDN, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
|
K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_PGUP, K_HOME, K_PGDN, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
|
||||||
KT_FN, K_A, K_S, K_D, K_F, K_G, K_LEFT, K_DOWN, K_UP, K_RIGHT, K_BKSP, K_DEL, K_ENTER,
|
KT_FN, K_A, K_S, K_D, K_F, K_G, K_LEFT, K_DOWN, K_UP, K_RIGHT, K_BKSP, K_DEL, K_ENTER,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user