Merge remote-tracking branch 'tmk/master'
This commit is contained in:
commit
c544d100f5
17 changed files with 1489 additions and 1461 deletions
|
|
@ -23,8 +23,8 @@ Use PD2(USART RXD) for 'Keyboard Data' pin and give power with VCC and GND. Othe
|
|||
------------------------
|
||||
PD2 Keyboard Data
|
||||
PD3 Keyboard Command
|
||||
PD4 Mouse Data
|
||||
PD0 BZ
|
||||
PD0 Mouse Data
|
||||
PD1 BZ
|
||||
|
||||
Target microcontroller is Atmel ATMega32U2 by default but porting this project to other 8-bit AVR controllers would be easy.
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
:10018000370A004C45443A20253032580A000A4CC0
|
||||
:100190006F6F702073746172742E0A000A55534297
|
||||
:1001A00020636F6E666967757265642E0A000A5473
|
||||
:1001B0004D4B3A3735666238622F4C5546413A64AA
|
||||
:1001B0004D4B3A6266383266312F4C5546413A64AF
|
||||
:1001C00036613764660A0009025400030100A03258
|
||||
:1001D00009040000010301010009211101000122AD
|
||||
:1001E00040000705810308000A090401000103011A
|
||||
|
|
@ -92,9 +92,9 @@
|
|||
:1005B0005553454B45592045585452414B455920B8
|
||||
:1005C000434F4E534F4C4520434F4D4D414E4420D9
|
||||
:1005D0004B45594D41505F53454354494F4E20348C
|
||||
:1005E0003039360A004255494C443A203735666264
|
||||
:1005F0003862202832333A32393A3535204E6F7618
|
||||
:100600002020372032303233290A005649443A201C
|
||||
:1005E0003039360A004255494C443A206266383266
|
||||
:1005F0006631202831313A35353A3435204E6F7620
|
||||
:100600002020392032303233290A005649443A201A
|
||||
:1006100030784645454428544D4B29205049443AAA
|
||||
:100620002030783530323128534F4E59204E4557BF
|
||||
:1006300053206B6579626F61726420636F6E7665BB
|
||||
|
|
@ -1008,7 +1008,7 @@
|
|||
:103EF000FF91EF919F918F910F900FBE0F901F90A8
|
||||
:103F000018951F920F920FB60F9211248F939F93C3
|
||||
:103F1000AF93BF938091BD019091BE01A091BF016D
|
||||
:103F2000B091C001892B8A2B8B2B69F18BB191E069
|
||||
:103F2000B091C001892B8A2B8B2B69F18BB192E068
|
||||
:103F300089278BB98091BD019091BE01A091BF01ED
|
||||
:103F4000B091C001181619061A061B069CF4809140
|
||||
:103F5000BD019091BE01A091BF01B091C001019738
|
||||
|
|
@ -1016,7 +1016,7 @@
|
|||
:103F7000B093C001BF91AF919F918F910F900FBEF1
|
||||
:103F80000F901F90189580916F008D7F80936F0028
|
||||
:103F900010928000109281008FB7F89410928900DF
|
||||
:103FA000109288008FBF5898E5CF0E94DC1F68945C
|
||||
:103FA000109288008FBF5998E5CF0E94DC1F68945B
|
||||
:103FB000B1110C946B2008950E94502088F09F57F7
|
||||
:103FC00098F0B92F9927B751B0F0E1F0660F771F3D
|
||||
:103FD000881F991F1AF0BA95C9F714C0B13091F033
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ uint8_t matrix_scan(void)
|
|||
// make code
|
||||
if (!matrix_is_on(ROW(code), COL(code))) {
|
||||
matrix[ROW(code)] |= (1<<COL(code));
|
||||
//tone(80, 100);
|
||||
//tone(440, 100);
|
||||
}
|
||||
}
|
||||
return code;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
// Pin for buzzer: PD0
|
||||
#define BZ_PIN_PORT PORTD
|
||||
#define BZ_PIN_DDR DDRD
|
||||
#define BZ_PIN_MASK (1<<0)
|
||||
#define BZ_PIN_MASK (1<<1)
|
||||
|
||||
volatile long toggle_count;
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
|||
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
||||
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||
#SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend
|
||||
#NKRO_ENABLE ?= yes # USB Nkey Rollover
|
||||
NKRO_ENABLE ?= yes # USB Nkey Rollover
|
||||
#ACTIONMAP_ENABLE ?= yes # Use 16bit action codes in keymap instead of 8bit keycodes
|
||||
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,66 +0,0 @@
|
|||
#include "keymap_common.h"
|
||||
|
||||
#ifdef KEYMAP_SECTION_ENABLE
|
||||
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
|
||||
#else
|
||||
const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
|
||||
#endif
|
||||
/* 0: qwerty
|
||||
* ,-----------------------------------------------------------.
|
||||
* |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| #|Bsp|
|
||||
* |-----------------------------------------------------------|
|
||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ |
|
||||
* |-----------------------------------------------------------|
|
||||
* |Caps | A| S| D| F| G| H| J| K| L| ;| '|Enter |
|
||||
* |-----------------------------------------------------------|
|
||||
* |Shft| \| Z| X| C| V| B| N| M| ,| .| /|Shift |Esc|
|
||||
* |-----------------------------------------------------------'
|
||||
* |Ctrl|Gui |Alt | Space |App |Alt |Gui |Ctrl |
|
||||
* `-----------------------------------------------------------'
|
||||
*/
|
||||
KEYMAP( \
|
||||
GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NUHS, BSPC, \
|
||||
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSLS, \
|
||||
CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \
|
||||
LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT,ESC, \
|
||||
LCTL,LGUI,LALT, SPC, APP, RALT,RGUI,RCTL),
|
||||
};
|
||||
|
||||
#ifdef KEYMAP_SECTION_ENABLE
|
||||
const action_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
|
||||
#else
|
||||
const action_t fn_actions[] PROGMEM = {
|
||||
#endif
|
||||
[0] = ACTION_LAYER_MOMENTARY(1),
|
||||
[1] = ACTION_LAYER_MOMENTARY(2),
|
||||
[2] = ACTION_LAYER_MOMENTARY(3),
|
||||
[3] = ACTION_LAYER_MOMENTARY(4),
|
||||
[4] = ACTION_LAYER_MOMENTARY(5),
|
||||
[5] = ACTION_LAYER_MOMENTARY(6),
|
||||
[6] = ACTION_LAYER_MOMENTARY(7),
|
||||
[7] = ACTION_LAYER_TOGGLE(1),
|
||||
[8] = ACTION_LAYER_TOGGLE(2),
|
||||
[9] = ACTION_LAYER_TOGGLE(3),
|
||||
[10] = ACTION_LAYER_TAP_TOGGLE(1),
|
||||
[11] = ACTION_LAYER_TAP_TOGGLE(2),
|
||||
[12] = ACTION_LAYER_TAP_TOGGLE(3),
|
||||
[13] = ACTION_LAYER_TAP_KEY(1, KC_BSLASH),
|
||||
[14] = ACTION_LAYER_TAP_KEY(2, KC_TAB),
|
||||
[15] = ACTION_LAYER_TAP_KEY(3, KC_ENTER),
|
||||
[16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
|
||||
[17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
|
||||
[18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
|
||||
[19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
|
||||
[20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
|
||||
[21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
|
||||
[22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
|
||||
[23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
|
||||
[24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
|
||||
[25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
|
||||
[26] = ACTION_MODS_ONESHOT(MOD_LCTL),
|
||||
[27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
|
||||
[28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
|
||||
[29] = ACTION_MODS_ONESHOT(MOD_LSFT),
|
||||
[30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRAVE),
|
||||
[31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSLASH),
|
||||
};
|
||||
|
|
@ -62,7 +62,7 @@ void matrix_init(void)
|
|||
}
|
||||
|
||||
//debug
|
||||
debug_matrix = true;
|
||||
debug_matrix = false;
|
||||
LED_ON();
|
||||
_delay_ms(500);
|
||||
LED_OFF();
|
||||
|
|
|
|||
82
keyboard/alps64/unimap_hasu.c
Normal file
82
keyboard/alps64/unimap_hasu.c
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
Copyright 2023 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "unimap_trans.h"
|
||||
|
||||
|
||||
#define AC_L1 ACTION_LAYER_MOMENTARY(1)
|
||||
#define AC_L2 ACTION_LAYER_MOMENTARY(2)
|
||||
#define AC_SLS2 ACTION_LAYER_TAP_KEY(2, KC_SLSH)
|
||||
#define AC_SCL3 ACTION_LAYER_TAP_KEY(3, KC_SCLN)
|
||||
#define AC_SPC4 ACTION_LAYER_TAP_KEY(4, KC_SPC)
|
||||
#define AC_BACK ACTION_MODS_KEY(MOD_LALT, KC_LEFT)
|
||||
#define AC_FRWD ACTION_MODS_KEY(MOD_LALT, KC_RIGHT)
|
||||
#define AC_ENT_ ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT)
|
||||
|
||||
|
||||
#ifdef KEYMAP_SECTION_ENABLE
|
||||
const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
|
||||
#else
|
||||
const action_t actionmaps[][UNIMAP_ROWS][UNIMAP_COLS] PROGMEM = {
|
||||
#endif
|
||||
/* 0:
|
||||
* ,-----------------------------------------------------------.
|
||||
* |` | 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ |
|
||||
* |-----------------------------------------------------------|
|
||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Bspc|
|
||||
* |-----------------------------------------------------------|
|
||||
* |Ctrl | A| S| D| F| G| H| J| K| L| ;| '|Enter |
|
||||
* |-----------------------------------------------------------|
|
||||
* |Shft| \| Z| X| C| V| B| N| M| ,| .| /|Shift |
|
||||
* |-----------------------------------------------------------'
|
||||
* |Ctrl|Gui |Alt | Space |Alt |App | L1 |
|
||||
* `-----------------------------------------------------------'
|
||||
*/
|
||||
[0] = UNIMAP_ALPS64( \
|
||||
ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, BSLS,
|
||||
TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSPC,
|
||||
LCTL,A, S, D, F, G, H, J, K, L, SCL3,QUOT, ENT_,
|
||||
LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLS2, RSFT,L1,
|
||||
L2, LGUI,LALT, SPC4, APP, RALT,RGUI,L1),
|
||||
|
||||
[1] = UNIMAP_ALPS64( \
|
||||
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS,GRV,
|
||||
CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP, INS, DEL,
|
||||
TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT, TRNS,
|
||||
TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS, TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
|
||||
|
||||
[2] = UNIMAP_ALPS64(
|
||||
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL,
|
||||
TRNS,HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, TRNS,
|
||||
TRNS,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, TRNS,
|
||||
TRNS,TRNS,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, TRNS, TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
|
||||
|
||||
[3] = UNIMAP_ALPS64(
|
||||
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL,
|
||||
TAB, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,BACK,FRWD, TRNS,
|
||||
TRNS,ACL0,ACL1,ACL2,ACL2,NO, NO, MS_L,MS_D,MS_R,TRNS,NO, TRNS,
|
||||
TRNS,TRNS,NO, NO, NO, NO, BTN3,BTN2,BTN1,BACK,FRWD,NO, TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS, BTN1, TRNS,TRNS,TRNS,TRNS),
|
||||
|
||||
[4] = UNIMAP_ALPS64(
|
||||
GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL,
|
||||
TAB, NO, NO, NO, NO, NO, WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5, TAB,
|
||||
LCTL,VOLD,VOLU,MUTE,NO, NO, NO, MS_L,MS_D,MS_R,BTN1,NO, ENT,
|
||||
LSFT,TRNS,NO, NO, NO, NO, BTN3,BTN2,BTN1,BACK,FRWD,NO, TRNS,TRNS,
|
||||
TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS),
|
||||
};
|
||||
|
|
@ -113,7 +113,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
|||
# Build Options
|
||||
# comment out to disable the options.
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||
#BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
|
|
|
|||
|
|
@ -48,8 +48,7 @@ TMK_DIR = ../../tmk_core
|
|||
TARGET_DIR = .
|
||||
|
||||
# project specific files
|
||||
SRC = keymap_common.c \
|
||||
matrix.c \
|
||||
SRC = matrix.c \
|
||||
led.c
|
||||
|
||||
ifdef KEYMAP
|
||||
|
|
|
|||
|
|
@ -142,6 +142,108 @@ static uint8_t current_layer_for_key(keypos_t key)
|
|||
}
|
||||
|
||||
|
||||
#ifdef BOOTMAGIC_ENABLE
|
||||
#include "keymap.h"
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
static uint8_t config_keymap(uint8_t keycode)
|
||||
{
|
||||
switch (keycode) {
|
||||
case KC_CAPSLOCK:
|
||||
case KC_LOCKING_CAPS:
|
||||
if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
|
||||
return KC_LCTL;
|
||||
}
|
||||
return keycode;
|
||||
case KC_LCTL:
|
||||
if (keymap_config.swap_control_capslock) {
|
||||
return KC_CAPSLOCK;
|
||||
}
|
||||
return KC_LCTL;
|
||||
case KC_LALT:
|
||||
if (keymap_config.swap_lalt_lgui) {
|
||||
if (keymap_config.no_gui) {
|
||||
return KC_NO;
|
||||
}
|
||||
return KC_LGUI;
|
||||
}
|
||||
return KC_LALT;
|
||||
case KC_LGUI:
|
||||
if (keymap_config.swap_lalt_lgui) {
|
||||
return KC_LALT;
|
||||
}
|
||||
if (keymap_config.no_gui) {
|
||||
return KC_NO;
|
||||
}
|
||||
return KC_LGUI;
|
||||
case KC_RALT:
|
||||
if (keymap_config.swap_ralt_rgui) {
|
||||
if (keymap_config.no_gui) {
|
||||
return KC_NO;
|
||||
}
|
||||
return KC_RGUI;
|
||||
}
|
||||
return KC_RALT;
|
||||
case KC_RGUI:
|
||||
if (keymap_config.swap_ralt_rgui) {
|
||||
return KC_RALT;
|
||||
}
|
||||
if (keymap_config.no_gui) {
|
||||
return KC_NO;
|
||||
}
|
||||
return KC_RGUI;
|
||||
case KC_GRAVE:
|
||||
if (keymap_config.swap_grave_esc) {
|
||||
return KC_ESC;
|
||||
}
|
||||
return KC_GRAVE;
|
||||
case KC_ESC:
|
||||
if (keymap_config.swap_grave_esc) {
|
||||
return KC_GRAVE;
|
||||
}
|
||||
return KC_ESC;
|
||||
case KC_BSLASH:
|
||||
if (keymap_config.swap_backslash_backspace) {
|
||||
return KC_BSPACE;
|
||||
}
|
||||
return KC_BSLASH;
|
||||
case KC_BSPACE:
|
||||
if (keymap_config.swap_backslash_backspace) {
|
||||
return KC_BSLASH;
|
||||
}
|
||||
return KC_BSPACE;
|
||||
default:
|
||||
return keycode;
|
||||
}
|
||||
}
|
||||
|
||||
static action_t get_action(uint8_t layer, keypos_t key)
|
||||
{
|
||||
action_t act = action_for_key(layer, key);
|
||||
switch (act.kind.id) {
|
||||
case ACT_LMODS:
|
||||
case ACT_RMODS:
|
||||
case ACT_LMODS_TAP:
|
||||
case ACT_RMODS_TAP:
|
||||
act.key.code = config_keymap(act.key.code);
|
||||
break;
|
||||
case ACT_LAYER_TAP:
|
||||
case ACT_LAYER_TAP_EXT:
|
||||
act.layer_tap.code = config_keymap(act.layer_tap.code);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return act;
|
||||
}
|
||||
#else
|
||||
static action_t get_action(uint8_t layer, keypos_t key)
|
||||
{
|
||||
return action_for_key(layer, key);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef NO_TRACK_KEY_PRESS
|
||||
/* record layer on where key is pressed */
|
||||
static uint8_t layer_pressed[MATRIX_ROWS][MATRIX_COLS] = {};
|
||||
|
|
@ -161,5 +263,5 @@ action_t layer_switch_get_action(keyevent_t event)
|
|||
#else
|
||||
layer = current_layer_for_key(event.key);
|
||||
#endif
|
||||
return action_for_key(layer, event.key);
|
||||
return get_action(layer, event.key);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
#include <stdbool.h>
|
||||
#include <avr/eeprom.h>
|
||||
#include "eeconfig.h"
|
||||
#include "keymap.h"
|
||||
#include "print.h"
|
||||
|
||||
void eeconfig_init(void)
|
||||
{
|
||||
|
|
@ -22,7 +24,12 @@ void eeconfig_enable(void)
|
|||
|
||||
void eeconfig_disable(void)
|
||||
{
|
||||
eeprom_write_word(EECONFIG_MAGIC, 0xFFFF);
|
||||
eeprom_write_word(EECONFIG_MAGIC, 0xFFFF);
|
||||
eeprom_write_byte(EECONFIG_DEBUG, 0xFF);
|
||||
eeprom_write_byte(EECONFIG_DEFAULT_LAYER, 0xFF);
|
||||
eeprom_write_byte(EECONFIG_KEYMAP, 0xFF);
|
||||
eeprom_write_byte(EECONFIG_MOUSEKEY_ACCEL, 0xFF);
|
||||
eeprom_write_byte(EECONFIG_BACKLIGHT, 0xFF);
|
||||
}
|
||||
|
||||
bool eeconfig_is_enabled(void)
|
||||
|
|
@ -43,3 +50,13 @@ void eeconfig_write_keymap(uint8_t val) { eeprom_write_byte(EECONFIG_KEYMAP, val
|
|||
uint8_t eeconfig_read_backlight(void) { return eeprom_read_byte(EECONFIG_BACKLIGHT); }
|
||||
void eeconfig_write_backlight(uint8_t val) { eeprom_write_byte(EECONFIG_BACKLIGHT, val); }
|
||||
#endif
|
||||
|
||||
void eeconfig_debug(void)
|
||||
{
|
||||
xprintf("eeprom:");
|
||||
for (int i = 0; i < 16 /* E2END + 1 */; i++) {
|
||||
if ((i % 16) == 0) { xprintf("\n%04X: ", i); }
|
||||
xprintf("%02X ", eeprom_read_byte((uint8_t *)i));
|
||||
}
|
||||
xprintf("\n");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ void bootmagic(void)
|
|||
|
||||
/* eeconfig clear */
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_EEPROM_CLEAR)) {
|
||||
eeconfig_init();
|
||||
eeconfig_disable();
|
||||
}
|
||||
|
||||
/* bootloader */
|
||||
|
|
@ -45,6 +45,10 @@ void bootmagic(void)
|
|||
/* user-defined checks */
|
||||
hook_bootmagic();
|
||||
|
||||
if (!eeconfig_is_enabled()) {
|
||||
goto WAIT;
|
||||
}
|
||||
|
||||
/* debug enable */
|
||||
debug_config.raw = eeconfig_read_debug();
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_DEBUG_ENABLE)) {
|
||||
|
|
@ -61,35 +65,38 @@ void bootmagic(void)
|
|||
eeconfig_write_debug(debug_config.raw);
|
||||
|
||||
/* keymap config */
|
||||
keymap_config.raw = eeconfig_read_keymap();
|
||||
keymap_config_t kc;
|
||||
kc.raw = eeconfig_read_keymap();
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK)) {
|
||||
keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock;
|
||||
kc.swap_control_capslock = !kc.swap_control_capslock;
|
||||
}
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL)) {
|
||||
keymap_config.capslock_to_control = !keymap_config.capslock_to_control;
|
||||
kc.capslock_to_control = !kc.capslock_to_control;
|
||||
}
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_SWAP_LALT_LGUI)) {
|
||||
keymap_config.swap_lalt_lgui = !keymap_config.swap_lalt_lgui;
|
||||
kc.swap_lalt_lgui = !kc.swap_lalt_lgui;
|
||||
}
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_SWAP_RALT_RGUI)) {
|
||||
keymap_config.swap_ralt_rgui = !keymap_config.swap_ralt_rgui;
|
||||
kc.swap_ralt_rgui = !kc.swap_ralt_rgui;
|
||||
}
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_NO_GUI)) {
|
||||
keymap_config.no_gui = !keymap_config.no_gui;
|
||||
kc.no_gui = !kc.no_gui;
|
||||
}
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_SWAP_GRAVE_ESC)) {
|
||||
keymap_config.swap_grave_esc = !keymap_config.swap_grave_esc;
|
||||
kc.swap_grave_esc = !kc.swap_grave_esc;
|
||||
}
|
||||
if (bootmagic_scan_key(BOOTMAGIC_KEY_SWAP_BACKSLASH_BACKSPACE)) {
|
||||
keymap_config.swap_backslash_backspace = !keymap_config.swap_backslash_backspace;
|
||||
kc.swap_backslash_backspace = !kc.swap_backslash_backspace;
|
||||
}
|
||||
if (bootmagic_scan_key(BOOTMAGIC_HOST_NKRO)) {
|
||||
keymap_config.nkro = !keymap_config.nkro;
|
||||
kc.nkro = !kc.nkro;
|
||||
}
|
||||
eeconfig_write_keymap(keymap_config.raw);
|
||||
eeconfig_write_keymap(kc.raw);
|
||||
|
||||
#if defined(NKRO_ENABLE) || defined(NKRO_6KRO_ENABLE)
|
||||
keyboard_nkro = keymap_config.nkro;
|
||||
if (kc.nkro) {
|
||||
keyboard_nkro = !keyboard_nkro;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* default layer */
|
||||
|
|
@ -109,6 +116,18 @@ void bootmagic(void)
|
|||
default_layer = eeconfig_read_default_layer();
|
||||
default_layer_set((uint32_t)default_layer);
|
||||
}
|
||||
|
||||
keymap_config = kc;
|
||||
|
||||
// wait until all key is released
|
||||
WAIT:
|
||||
matrix_scan();
|
||||
for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
|
||||
if (matrix_get_row(r)) {
|
||||
goto WAIT;
|
||||
wait_ms(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool scan_key(uint16_t code)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include "wait.h"
|
||||
#include "keycode.h"
|
||||
#include "host.h"
|
||||
#include "keymap.h"
|
||||
#include "print.h"
|
||||
#include "debug.h"
|
||||
#include "util.h"
|
||||
|
|
@ -145,6 +144,9 @@ static void command_common_help(void)
|
|||
}
|
||||
|
||||
#ifdef BOOTMAGIC_ENABLE
|
||||
#include "keymap.h"
|
||||
__attribute__ ((weak)) void eeconfig_debug(void) {}
|
||||
|
||||
static void print_eeconfig(void)
|
||||
{
|
||||
print("default_layer: "); print_dec(eeconfig_read_default_layer()); print("\n");
|
||||
|
|
@ -176,6 +178,8 @@ static void print_eeconfig(void)
|
|||
print(".enable: "); print_dec(bc.enable); print("\n");
|
||||
print(".level: "); print_dec(bc.level); print("\n");
|
||||
#endif
|
||||
|
||||
eeconfig_debug();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -72,4 +72,6 @@ uint8_t eeconfig_read_backlight(void);
|
|||
void eeconfig_write_backlight(uint8_t val);
|
||||
#endif
|
||||
|
||||
void eeconfig_debug(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -27,10 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include <avr/pgmspace.h>
|
||||
#endif
|
||||
|
||||
#ifdef BOOTMAGIC_ENABLE
|
||||
extern keymap_config_t keymap_config;
|
||||
#endif
|
||||
|
||||
static action_t keycode_to_action(uint8_t keycode);
|
||||
|
||||
|
||||
|
|
@ -42,71 +38,6 @@ action_t action_for_key(uint8_t layer, keypos_t key)
|
|||
switch (keycode) {
|
||||
case KC_FN0 ... KC_FN31:
|
||||
return keymap_fn_to_action(keycode);
|
||||
#ifdef BOOTMAGIC_ENABLE
|
||||
case KC_CAPSLOCK:
|
||||
case KC_LOCKING_CAPS:
|
||||
if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
|
||||
return keycode_to_action(KC_LCTL);
|
||||
}
|
||||
return keycode_to_action(keycode);
|
||||
case KC_LCTL:
|
||||
if (keymap_config.swap_control_capslock) {
|
||||
return keycode_to_action(KC_CAPSLOCK);
|
||||
}
|
||||
return keycode_to_action(KC_LCTL);
|
||||
case KC_LALT:
|
||||
if (keymap_config.swap_lalt_lgui) {
|
||||
if (keymap_config.no_gui) {
|
||||
return keycode_to_action(KC_NO);
|
||||
}
|
||||
return keycode_to_action(KC_LGUI);
|
||||
}
|
||||
return keycode_to_action(KC_LALT);
|
||||
case KC_LGUI:
|
||||
if (keymap_config.swap_lalt_lgui) {
|
||||
return keycode_to_action(KC_LALT);
|
||||
}
|
||||
if (keymap_config.no_gui) {
|
||||
return keycode_to_action(KC_NO);
|
||||
}
|
||||
return keycode_to_action(KC_LGUI);
|
||||
case KC_RALT:
|
||||
if (keymap_config.swap_ralt_rgui) {
|
||||
if (keymap_config.no_gui) {
|
||||
return keycode_to_action(KC_NO);
|
||||
}
|
||||
return keycode_to_action(KC_RGUI);
|
||||
}
|
||||
return keycode_to_action(KC_RALT);
|
||||
case KC_RGUI:
|
||||
if (keymap_config.swap_ralt_rgui) {
|
||||
return keycode_to_action(KC_RALT);
|
||||
}
|
||||
if (keymap_config.no_gui) {
|
||||
return keycode_to_action(KC_NO);
|
||||
}
|
||||
return keycode_to_action(KC_RGUI);
|
||||
case KC_GRAVE:
|
||||
if (keymap_config.swap_grave_esc) {
|
||||
return keycode_to_action(KC_ESC);
|
||||
}
|
||||
return keycode_to_action(KC_GRAVE);
|
||||
case KC_ESC:
|
||||
if (keymap_config.swap_grave_esc) {
|
||||
return keycode_to_action(KC_GRAVE);
|
||||
}
|
||||
return keycode_to_action(KC_ESC);
|
||||
case KC_BSLASH:
|
||||
if (keymap_config.swap_backslash_backspace) {
|
||||
return keycode_to_action(KC_BSPACE);
|
||||
}
|
||||
return keycode_to_action(KC_BSLASH);
|
||||
case KC_BSPACE:
|
||||
if (keymap_config.swap_backslash_backspace) {
|
||||
return keycode_to_action(KC_BSLASH);
|
||||
}
|
||||
return keycode_to_action(KC_BSPACE);
|
||||
#endif
|
||||
default:
|
||||
return keycode_to_action(keycode);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue