From 4d64fd8faa8b1a0ceb9019446ba6915aaf1812ea Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 9 Mar 2013 11:22:27 +0900 Subject: Add bootmagic.c and fix bootloader_jump --- common/bootmagic.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 common/bootmagic.h (limited to 'common/bootmagic.h') diff --git a/common/bootmagic.h b/common/bootmagic.h new file mode 100644 index 000000000..7aa224def --- /dev/null +++ b/common/bootmagic.h @@ -0,0 +1,39 @@ +#ifndef BOOTMAGIC_H +#define BOOTMAGIC_H + + +#ifndef BOOTMAGIC_IS_ENABLE +#define BOOTMAGIC_IS_ENABLE() true +#endif + +/* bootloader */ +#ifndef BOOTMAGIC_BOOTLOADER_KEY +#define BOOTMAGIC_BOOTLOADER_KEY KC_B +#endif +/* debug enable */ +#ifndef BOOTMAGIC_DEBUG_ENABLE_KEY +#define BOOTMAGIC_DEBUG_ENABLE_KEY KC_D +#endif +/* eeprom clear */ +#ifndef BOOTMAGIC_EEPROM_CLEAR_KEY +#define BOOTMAGIC_EEPROM_CLEAR_KEY KC_BSPACE +#endif + +/* change default layer */ +#ifndef BOOTMAGIC_DEFAULT_LAYER_0_KEY +#define BOOTMAGIC_DEFAULT_LAYER_0_KEY KC_0 +#endif +#ifndef BOOTMAGIC_DEFAULT_LAYER_1_KEY +#define BOOTMAGIC_DEFAULT_LAYER_1_KEY KC_1 +#endif +#ifndef BOOTMAGIC_DEFAULT_LAYER_2_KEY +#define BOOTMAGIC_DEFAULT_LAYER_2_KEY KC_2 +#endif +#ifndef BOOTMAGIC_DEFAULT_LAYER_3_KEY +#define BOOTMAGIC_DEFAULT_LAYER_3_KEY KC_3 +#endif + +void bootmagic(void); +bool bootmagic_scan_keycode(uint8_t keycode); + +#endif -- cgit v1.2.3-70-g09d2 From de8ef18a534163b40e307418b3af603142d5d6b0 Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 10 Mar 2013 19:22:54 +0900 Subject: Add KEYCONF to eeconfig.c --- common/bootmagic.c | 22 ++++++++++++++++++++++ common/bootmagic.h | 40 ++++++++++++++++++++++++++++++++++++++-- common/command.c | 4 ++-- common/eeconfig.c | 19 +++++++++---------- common/eeconfig.h | 21 ++++++++++++--------- 5 files changed, 83 insertions(+), 23 deletions(-) (limited to 'common/bootmagic.h') diff --git a/common/bootmagic.c b/common/bootmagic.c index 31b8ae5e6..46fbc180a 100644 --- a/common/bootmagic.c +++ b/common/bootmagic.c @@ -27,6 +27,28 @@ void bootmagic(void) if (bootmagic_scan_keycode(BOOTMAGIC_EEPROM_CLEAR_KEY)) { eeconfig_init(); } + + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_CONTROL_CPASLOCK)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_CONTROL_CAPSLOCK); + } + if (bootmagic_scan_keycode(BOOTMAGIC_CAPSLOCK_TO_CONTROL)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_CAPSLOCK_TO_CONTROL); + } + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_LALT_LGUI)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_LALT_LGUI); + } + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_RALT_RGUI)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_RALT_RGUI); + } + if (bootmagic_scan_keycode(BOOTMAGIC_NO_GUI)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_NO_GUI); + } + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_GRAVE_ESC)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_GRAVE_ESC); + } + if (bootmagic_scan_keycode(BOOTMAGIC_SWAP_BACKSLASH_BACKSPACE)) { + eeconfig_write_keyconf(eeconfig_read_keyconf() ^ EECONFIG_KEYCONF_SWAP_BACKSLASH_BACKSPACE); + } } bool bootmagic_scan_keycode(uint8_t keycode) diff --git a/common/bootmagic.h b/common/bootmagic.h index 7aa224def..d32a5bef8 100644 --- a/common/bootmagic.h +++ b/common/bootmagic.h @@ -6,7 +6,7 @@ #define BOOTMAGIC_IS_ENABLE() true #endif -/* bootloader */ +/* kick up bootloader */ #ifndef BOOTMAGIC_BOOTLOADER_KEY #define BOOTMAGIC_BOOTLOADER_KEY KC_B #endif @@ -19,7 +19,42 @@ #define BOOTMAGIC_EEPROM_CLEAR_KEY KC_BSPACE #endif -/* change default layer */ +/* + * key configure + */ +/* swap control and capslock */ +#ifndef BOOTMAGIC_SWAP_CONTROL_CPASLOCK +#define BOOTMAGIC_SWAP_CONTROL_CPASLOCK KC_LCTRL +#endif +/* capslock to control */ +#ifndef BOOTMAGIC_CAPSLOCK_TO_CONTROL +#define BOOTMAGIC_CAPSLOCK_TO_CONTROL KC_CAPSLOCK +#endif +/* swap alt and gui */ +#ifndef BOOTMAGIC_SWAP_LALT_LGUI +#define BOOTMAGIC_SWAP_LALT_LGUI KC_LALT +#endif +/* swap alt and gui */ +#ifndef BOOTMAGIC_SWAP_RALT_RGUI +#define BOOTMAGIC_SWAP_RALT_RGUI KC_RALT +#endif +/* no gui */ +#ifndef BOOTMAGIC_NO_GUI +#define BOOTMAGIC_NO_GUI KC_LGUI +#endif +/* swap esc and grave */ +#ifndef BOOTMAGIC_SWAP_GRAVE_ESC +#define BOOTMAGIC_SWAP_GRAVE_ESC KC_GRAVE +#endif +/* swap backslash and backspace */ +#ifndef BOOTMAGIC_SWAP_BACKSLASH_BACKSPACE +#define BOOTMAGIC_SWAP_BACKSLASH_BACKSPACE KC_BSLASH +#endif + + +/* + * change default layer + */ #ifndef BOOTMAGIC_DEFAULT_LAYER_0_KEY #define BOOTMAGIC_DEFAULT_LAYER_0_KEY KC_0 #endif @@ -33,6 +68,7 @@ #define BOOTMAGIC_DEFAULT_LAYER_3_KEY KC_3 #endif + void bootmagic(void); bool bootmagic_scan_keycode(uint8_t keycode); diff --git a/common/command.c b/common/command.c index b82d1884c..cf8d969f8 100644 --- a/common/command.c +++ b/common/command.c @@ -133,8 +133,8 @@ static void print_eeprom_config(void) eebyte = eeconfig_read_defalt_layer(); print("defalt_layer: "); print_hex8(eebyte); print("\n"); - eebyte = eeconfig_read_modifier(); - print("modifiers: "); print_hex8(eebyte); print("\n"); + eebyte = eeconfig_read_keyconf(); + print("keyconf: "); print_hex8(eebyte); print("\n"); } static bool command_common(uint8_t code) diff --git a/common/eeconfig.c b/common/eeconfig.c index a5834aa2c..f536dc06c 100644 --- a/common/eeconfig.c +++ b/common/eeconfig.c @@ -6,11 +6,11 @@ void eeconfig_init(void) { - eeprom_write_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); - eeprom_write_byte(EECONFIG_DEBUG, 0); - eeprom_write_byte(EECONFIG_DEFAULT_LAYER, 0); - eeprom_write_byte(EECONFIG_MODIFIER, 0); - eeprom_write_byte(EECONFIG_MOUSEKEY_ACCEL, 0); + eeprom_write_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); + eeprom_write_byte(EECONFIG_DEBUG, 0); + eeprom_write_byte(EECONFIG_DEFAULT_LAYER, 0); + eeprom_write_byte(EECONFIG_KEYCONF, 0); + eeprom_write_byte(EECONFIG_MOUSEKEY_ACCEL, 0); } bool eeconfig_initialized(void) @@ -18,12 +18,11 @@ bool eeconfig_initialized(void) return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); } -uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG); } +uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG); } void eeconfig_write_debug(uint8_t val) { eeprom_write_byte(EECONFIG_DEBUG, val); } -uint8_t eeconfig_read_defalt_layer(void) { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); } +uint8_t eeconfig_read_defalt_layer(void) { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); } void eeconfig_write_defalt_layer(uint8_t val) { eeprom_write_byte(EECONFIG_DEFAULT_LAYER, val); } -uint8_t eeconfig_read_modifier(void) { return eeprom_read_byte(EECONFIG_MODIFIER); } -void eeconfig_write_modifier(uint8_t val) { eeprom_write_byte(EECONFIG_MODIFIER, val); } - +uint8_t eeconfig_read_keyconf(void) { return eeprom_read_byte(EECONFIG_KEYCONF); } +void eeconfig_write_keyconf(uint8_t val) { eeprom_write_byte(EECONFIG_KEYCONF, val); } diff --git a/common/eeconfig.h b/common/eeconfig.h index 088171f57..9cf2ff680 100644 --- a/common/eeconfig.h +++ b/common/eeconfig.h @@ -26,21 +26,24 @@ along with this program. If not, see . #define EECONFIG_MAGIC (uint16_t *)0 #define EECONFIG_DEBUG (uint8_t *)2 #define EECONFIG_DEFAULT_LAYER (uint8_t *)3 -#define EECONFIG_MODIFIER (uint8_t *)4 +#define EECONFIG_KEYCONF (uint8_t *)4 #define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5 -/* config bit */ +/* debug bit */ #define EECONFIG_DEBUG_ENABLE (1<<0) #define EECONFIG_DEBUG_MATRIX (1<<1) #define EECONFIG_DEBUG_KEYBOARD (1<<2) #define EECONFIG_DEBUG_MOUSE (1<<3) -#define EECONFIG_MODIFIER_CONTROL_CAPSLOCK (1<<0) -#define EECONFIG_MODIFIER_ALT_GUI (1<<1) -#define EECONFIG_MODIFIER_ESC_GRAVE (1<<2) -#define EECONFIG_MODIFIER_BACKSPACE_BACKSLASH (1<<3) -#define EECONFIG_MODIFIER_NO_GUI (1<<4) +/* keyconf bit */ +#define EECONFIG_KEYCONF_SWAP_CONTROL_CAPSLOCK (1<<0) +#define EECONFIG_KEYCONF_CAPSLOCK_TO_CONTROL (1<<1) +#define EECONFIG_KEYCONF_SWAP_LALT_LGUI (1<<2) +#define EECONFIG_KEYCONF_SWAP_RALT_RGUI (1<<3) +#define EECONFIG_KEYCONF_NO_GUI (1<<4) +#define EECONFIG_KEYCONF_SWAP_GRAVE_ESC (1<<5) +#define EECONFIG_KEYCONF_SWAP_BACKSLASH_BACKSPACE (1<<6) bool eeconfig_initialized(void); @@ -53,7 +56,7 @@ void eeconfig_write_debug(uint8_t val); uint8_t eeconfig_read_defalt_layer(void); void eeconfig_write_defalt_layer(uint8_t val); -uint8_t eeconfig_read_modifier(void); -void eeconfig_write_modifier(uint8_t val); +uint8_t eeconfig_read_keyconf(void); +void eeconfig_write_keyconf(uint8_t val); #endif -- cgit v1.2.3-70-g09d2 From d055e0633e36e97802d60554f6002e47021ba5fd Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 11 Mar 2013 15:10:56 +0900 Subject: Fix debug parameter setting in eeconfig --- common/bootmagic.c | 4 ++-- common/bootmagic.h | 4 ++-- common/eeconfig.c | 14 ++++++++++++-- common/eeconfig.h | 10 +++++++++- common/keyboard.c | 11 ++++++----- 5 files changed, 31 insertions(+), 12 deletions(-) (limited to 'common/bootmagic.h') diff --git a/common/bootmagic.c b/common/bootmagic.c index 46fbc180a..388099e2e 100644 --- a/common/bootmagic.c +++ b/common/bootmagic.c @@ -10,12 +10,12 @@ void bootmagic(void) { + if (!BOOTMAGIC_IS_ENABLED()) { return; } + /* do scans in case of bounce */ uint8_t scan = 100; while (scan--) { matrix_scan(); _delay_ms(1); } - if (!BOOTMAGIC_IS_ENABLE()) { return; } - if (bootmagic_scan_keycode(BOOTMAGIC_BOOTLOADER_KEY)) { bootloader_jump(); } diff --git a/common/bootmagic.h b/common/bootmagic.h index d32a5bef8..5791b221f 100644 --- a/common/bootmagic.h +++ b/common/bootmagic.h @@ -2,8 +2,8 @@ #define BOOTMAGIC_H -#ifndef BOOTMAGIC_IS_ENABLE -#define BOOTMAGIC_IS_ENABLE() true +#ifndef BOOTMAGIC_IS_ENABLED +#define BOOTMAGIC_IS_ENABLED() true #endif /* kick up bootloader */ diff --git a/common/eeconfig.c b/common/eeconfig.c index f536dc06c..cea3810ee 100644 --- a/common/eeconfig.c +++ b/common/eeconfig.c @@ -13,9 +13,19 @@ void eeconfig_init(void) eeprom_write_byte(EECONFIG_MOUSEKEY_ACCEL, 0); } -bool eeconfig_initialized(void) +void eeconfig_enable(void) { - return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); + eeprom_write_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); +} + +void eeconfig_disable(void) +{ + eeprom_write_word(EECONFIG_MAGIC, 0xFFFF); +} + +bool eeconfig_is_enabled(void) +{ + return EECONFIG_IS_ENABLED() && (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); } uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG); } diff --git a/common/eeconfig.h b/common/eeconfig.h index 2786995a2..3e195478b 100644 --- a/common/eeconfig.h +++ b/common/eeconfig.h @@ -20,6 +20,10 @@ along with this program. If not, see . #include +#ifndef EECONFIG_IS_ENABLED +#define EECONFIG_IS_ENABLED() true +#endif + #define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEED /* eeprom parameteter address */ @@ -61,10 +65,14 @@ typedef union { }; } keyconf; -bool eeconfig_initialized(void); +bool eeconfig_is_enabled(void); void eeconfig_init(void); +void eeconfig_enable(void); + +void eeconfig_disable(void); + uint8_t eeconfig_read_debug(void); void eeconfig_write_debug(uint8_t val); diff --git a/common/keyboard.c b/common/keyboard.c index 0a0bacd43..1acb79861 100644 --- a/common/keyboard.c +++ b/common/keyboard.c @@ -66,13 +66,14 @@ void keyboard_init(void) bootmagic(); - if (eeconfig_initialized()) { + if (eeconfig_is_enabled()) { uint8_t config; config = eeconfig_read_debug(); - debug_enable = (config & EECONFIG_DEBUG_ENABLE); - debug_matrix = (config & EECONFIG_DEBUG_MATRIX); - debug_keyboard = (config & EECONFIG_DEBUG_KEYBOARD); - debug_mouse = (config & EECONFIG_DEBUG_MOUSE); + // ignored if debug is enabled by program before. + if (!debug_enable) debug_enable = (config & EECONFIG_DEBUG_ENABLE); + if (!debug_matrix) debug_matrix = (config & EECONFIG_DEBUG_MATRIX); + if (!debug_keyboard) debug_keyboard = (config & EECONFIG_DEBUG_KEYBOARD); + if (!debug_mouse) debug_mouse = (config & EECONFIG_DEBUG_MOUSE); } else { eeconfig_init(); } -- cgit v1.2.3-70-g09d2