From 359b68d35f0763ab0cafa2fb800e0a3497291f95 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 7 Mar 2013 03:30:08 +0900 Subject: Add eeconfig.c - eeprom stored paramerters --- keyboard/gh60/config.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'keyboard') diff --git a/keyboard/gh60/config.h b/keyboard/gh60/config.h index ef0c9a173..3a7a3f97f 100644 --- a/keyboard/gh60/config.h +++ b/keyboard/gh60/config.h @@ -56,10 +56,13 @@ along with this program. If not, see . /* key position on matrix(ROW:COL) */ #define KEY_FN 0x4A #define KEY_D 0x23 +#define KEY_ESC 0x00 #define KEY_IS_ON(key) matrix_is_on((key)>>4, (key)&0xF) /* kick up bootloader */ #define IS_BOOTMAGIC_BOOTLOADER() KEY_IS_ON(KEY_FN) /* debug on */ #define IS_BOOTMAGIC_DEBUG() KEY_IS_ON(KEY_D) +/* eeprom clear */ +#define IS_BOOTMAGIC_EEPROM_CLEAR() KEY_IS_ON(KEY_ESC) #endif -- cgit v1.3.1 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.mk | 1 + common/bootloader.c | 100 +++++++++++++++++++++++++++++++++++++------------ common/bootmagic.c | 45 ++++++++++++++++++++++ common/bootmagic.h | 39 +++++++++++++++++++ common/command.c | 4 +- common/keyboard.c | 25 +------------ keyboard/gh60/keymap.c | 6 ++- protocol/lufa.mk | 4 +- protocol/pjrc.mk | 8 +++- 9 files changed, 178 insertions(+), 54 deletions(-) create mode 100644 common/bootmagic.c create mode 100644 common/bootmagic.h (limited to 'keyboard') diff --git a/common.mk b/common.mk index a99e335ee..2735f5bec 100644 --- a/common.mk +++ b/common.mk @@ -10,6 +10,7 @@ SRC += $(COMMON_DIR)/host.c \ $(COMMON_DIR)/print.c \ $(COMMON_DIR)/debug.c \ $(COMMON_DIR)/bootloader.c \ + $(COMMON_DIR)/bootmagic.c \ $(COMMON_DIR)/eeconfig.c \ $(COMMON_DIR)/util.c diff --git a/common/bootloader.c b/common/bootloader.c index 6e04efbbd..77fa1b30a 100644 --- a/common/bootloader.c +++ b/common/bootloader.c @@ -1,15 +1,16 @@ +#include +#include #include #include +#include #include #include "bootloader.h" -/* Start Bootloader from Application - * See - * http://www.pjrc.com/teensy/jump_to_bootloader.html - * http://www.fourwalledcubicle.com/files/LUFA/Doc/120219/html/_page__software_bootloader_start.html - */ +#ifdef PROTOCOL_LUFA +#include +#endif + -// TODO: support usbasp /* Boot Section Size in bytes * Teensy halfKay 512 * Atmel DFU loader 4096 @@ -18,28 +19,82 @@ #ifndef BOOT_SIZE #define BOOT_SIZE 512 #endif - #define FLASH_SIZE (FLASHEND + 1) -#define BOOTLOADER_START (FLASHEND - BOOT_SIZE) +#define BOOTLOADER_START (FLASH_SIZE - BOOT_SIZE) + +/* + * Entering the Bootloader via Software + * http://www.fourwalledcubicle.com/files/LUFA/Doc/120730/html/_page__software_bootloader_start.html + */ +#define BOOTLOADER_RESET_KEY 0xB007B007 +uint32_t reset_key __attribute__ ((section (".noinit"))); + +/* initialize MCU status by watchdog reset */ void bootloader_jump(void) { +#ifdef PROTOCOL_LUFA + USB_Disable(); cli(); + _delay_ms(2000); +#endif - // - //Teensy - // -#if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__) - // disable watchdog, if enabled - // disable all peripherals +#ifdef PROTOCOL_PJRC + cli(); UDCON = 1; - USBCON = (1< +#include +#include +#include "matrix.h" +#include "keymap.h" +#include "eeconfig.h" +#include "bootloader.h" +#include "bootmagic.h" + + +void bootmagic(void) +{ + /* 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(); + } + + if (bootmagic_scan_keycode(BOOTMAGIC_DEBUG_ENABLE_KEY)) { + eeconfig_write_debug(eeconfig_read_debug() ^ EECONFIG_DEBUG_ENABLE); + } + + if (bootmagic_scan_keycode(BOOTMAGIC_EEPROM_CLEAR_KEY)) { + eeconfig_init(); + } +} + +bool bootmagic_scan_keycode(uint8_t keycode) +{ + for (uint8_t r = 0; r < MATRIX_ROWS; r++) { + matrix_row_t matrix_row = matrix_get_row(r); + for (uint8_t c = 0; c < MATRIX_COLS; c++) { + if (matrix_row & ((matrix_row_t)1<. #include "command.h" #include "util.h" #include "sendchar.h" -#include "bootloader.h" +#include "bootmagic.h" #ifdef MOUSEKEY_ENABLE #include "mousekey.h" #endif @@ -64,27 +64,7 @@ void keyboard_init(void) ps2_mouse_init(); #endif - /* matrix scan for boot magic keys */ -#ifdef DEBOUNCE - uint8_t scan = DEBOUNCE * 2; - while (scan--) { matrix_scan(); _delay_ms(1); } -#else - matrix_scan(); -#endif - - /* boot magic keys */ -#ifdef IS_BOOTMAGIC_BOOTLOADER - /* kick up bootloader */ - if (IS_BOOTMAGIC_BOOTLOADER()) bootloader_jump(); -#endif -#ifdef IS_BOOTMAGIC_DEBUG - if (IS_BOOTMAGIC_DEBUG()) { - eeconfig_write_debug(eeconfig_read_debug() ^ EECONFIG_DEBUG_ENABLE); - } -#endif -#ifdef IS_BOOTMAGIC_EEPROM_CLEAR - if (IS_BOOTMAGIC_EEPROM_CLEAR()) eeconfig_init(); -#endif + bootmagic(); if (eeconfig_initialized()) { uint8_t config; @@ -96,7 +76,6 @@ void keyboard_init(void) } else { eeconfig_init(); } - } /* diff --git a/keyboard/gh60/keymap.c b/keyboard/gh60/keymap.c index 1f5344d4c..d6af16961 100644 --- a/keyboard/gh60/keymap.c +++ b/keyboard/gh60/keymap.c @@ -231,7 +231,8 @@ uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) if (layer < OVERLAYS_SIZE) { return pgm_read_byte(&overlays[(layer)][(key.row)][(key.col)]); } else { - debug("key_to_keycode: overlay "); debug_dec(layer); debug(" is invalid.\n"); + // XXX: this may cuaes bootlaoder_jump incositent fail. + //debug("key_to_keycode: overlay "); debug_dec(layer); debug(" is invalid.\n"); return KC_TRANSPARENT; } } @@ -240,8 +241,9 @@ uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) if (layer < KEYMAPS_SIZE) { return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); } else { + // XXX: this may cuaes bootlaoder_jump incositent fail. + //debug("key_to_keycode: base "); debug_dec(layer); debug(" is invalid.\n"); // fall back to layer 0 - debug("key_to_keycode: base "); debug_dec(layer); debug(" is invalid.\n"); return pgm_read_byte(&keymaps[0][(key.row)][(key.col)]); } } diff --git a/protocol/lufa.mk b/protocol/lufa.mk index 443b85344..8ea071afb 100644 --- a/protocol/lufa.mk +++ b/protocol/lufa.mk @@ -39,4 +39,6 @@ LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENAB OPT_DEFS += -DF_USB=$(F_USB)UL OPT_DEFS += -DARCH=ARCH_$(ARCH) OPT_DEFS += $(LUFA_OPTS) -OPT_DEFS += -DHOST_LUFA + +# This indicates using LUFA stack +OPT_DEFS += -DPROTOCOL_LUFA diff --git a/protocol/pjrc.mk b/protocol/pjrc.mk index cccdf6204..f5693ba99 100644 --- a/protocol/pjrc.mk +++ b/protocol/pjrc.mk @@ -1,7 +1,5 @@ PJRC_DIR = protocol/pjrc -OPT_DEFS += -DHOST_PJRC - SRC += $(PJRC_DIR)/main.c \ $(PJRC_DIR)/pjrc.c \ $(PJRC_DIR)/usb_keyboard.c \ @@ -19,3 +17,9 @@ endif # Search Path VPATH += $(TOP_DIR)/$(PJRC_DIR) + +# This indicates using LUFA stack +# TODO: remove HOST_PJRC +OPT_DEFS += -DHOST_PJRC +OPT_DEFS += -DPROTOCOL_PJRC + -- cgit v1.3.1 From 1385058fc21f80347c7afd2b818e38795ce9d55a Mon Sep 17 00:00:00 2001 From: tmk Date: Sat, 9 Mar 2013 22:23:32 +0900 Subject: Fix gh60/matrix.c and Makefile --- keyboard/gh60/Makefile.lufa | 9 ++++++--- keyboard/gh60/Makefile.pjrc | 13 +++++++++---- keyboard/gh60/matrix.c | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) (limited to 'keyboard') diff --git a/keyboard/gh60/Makefile.lufa b/keyboard/gh60/Makefile.lufa index 7a8303296..65b6240ef 100644 --- a/keyboard/gh60/Makefile.lufa +++ b/keyboard/gh60/Makefile.lufa @@ -93,13 +93,16 @@ ARCH = AVR8 # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. F_USB = $(F_CPU) +# Interrupt driven control endpoint task(+60) +#OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + # Build Options # comment out to disable the options. # -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = yes # Console for debug(+400) #NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support diff --git a/keyboard/gh60/Makefile.pjrc b/keyboard/gh60/Makefile.pjrc index af6ef63ec..2538c0c6b 100644 --- a/keyboard/gh60/Makefile.pjrc +++ b/keyboard/gh60/Makefile.pjrc @@ -70,15 +70,20 @@ MCU = atmega32u4 # Teensy 2.0 # examples use this variable to calculate timings. Do not add a "UL" here. F_CPU = 16000000 +# Boot Section Size in bytes +# Teensy halfKay 512 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +OPT_DEFS += -DBOOT_SIZE=4096 # Build Options # comment out to disable the options. # -MOUSEKEY_ENABLE = yes # Mouse keys -#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support -EXTRAKEY_ENABLE = yes # Audio control and System control -NKRO_ENABLE = yes # USB Nkey Rollover +MOUSEKEY_ENABLE = yes # Mouse keys(+5000) +EXTRAKEY_ENABLE = yes # Audio control and System control(+600) +NKRO_ENABLE = yes # USB Nkey Rollover(+500) CONSOLE_ENABLE = yes # Console for debug +#PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support # Search Path diff --git a/keyboard/gh60/matrix.c b/keyboard/gh60/matrix.c index 85e58fe36..09a051aa6 100644 --- a/keyboard/gh60/matrix.c +++ b/keyboard/gh60/matrix.c @@ -120,7 +120,7 @@ bool matrix_has_ghost(void) inline bool matrix_is_on(uint8_t row, uint8_t col) { - return (matrix[row] & (1< Date: Sun, 10 Mar 2013 15:05:28 +0900 Subject: Fix watchdog in bootloader jump - disable watchdog after watchdog reset - clear WDRF after watchdog reset --- common/bootloader.c | 23 +++++++++++++---------- keyboard/hhkb/Makefile.iwrap | 9 +++++++++ keyboard/hhkb/Makefile.lufa | 11 ++++++----- 3 files changed, 28 insertions(+), 15 deletions(-) (limited to 'keyboard') diff --git a/common/bootloader.c b/common/bootloader.c index 77fa1b30a..023220414 100644 --- a/common/bootloader.c +++ b/common/bootloader.c @@ -11,15 +11,16 @@ #endif -/* Boot Section Size in bytes - * Teensy halfKay 512 - * Atmel DFU loader 4096 - * LUFA bootloader 4096 +/* Boot Section Size in *BYTEs* + * Teensy halfKay 512 + * Teensy++ halfKay 1024 + * Atmel DFU loader 4096 + * LUFA bootloader 4096 */ #ifndef BOOT_SIZE #define BOOT_SIZE 512 #endif -#define FLASH_SIZE (FLASHEND + 1) +#define FLASH_SIZE (FLASHEND + 1L) #define BOOTLOADER_START (FLASH_SIZE - BOOT_SIZE) @@ -58,13 +59,15 @@ void bootloader_jump_after_watchdog_reset(void) __attribute__ ((used, naked, sec void bootloader_jump_after_watchdog_reset(void) { if ((MCUSR & (1< Date: Sun, 10 Mar 2013 15:36:07 +0900 Subject: Add BOOTLOADER_SIZE and remove BOOT_SIZE - define BOOTLOADER_SIZE in config.h instead of Makefile --- common/bootloader.c | 16 +++++++++------- keyboard/gh60/Makefile.lufa | 7 ------- keyboard/gh60/config.h | 12 ++++++++++-- keyboard/hhkb/Makefile.iwrap | 9 --------- keyboard/hhkb/Makefile.lufa | 8 -------- keyboard/hhkb/config.h | 10 +++++++++- keyboard/hhkb/config_iwrap.h | 10 ++++++++++ 7 files changed, 38 insertions(+), 34 deletions(-) (limited to 'keyboard') diff --git a/common/bootloader.c b/common/bootloader.c index 023220414..f9802d36c 100644 --- a/common/bootloader.c +++ b/common/bootloader.c @@ -12,16 +12,18 @@ /* Boot Section Size in *BYTEs* - * Teensy halfKay 512 - * Teensy++ halfKay 1024 - * Atmel DFU loader 4096 - * LUFA bootloader 4096 + * Teensy halfKay 512 + * Teensy++ halfKay 1024 + * Atmel DFU loader 4096 + * LUFA bootloader 4096 + * USBaspLoader 2048 */ -#ifndef BOOT_SIZE -#define BOOT_SIZE 512 +#ifndef BOOTLOADER_SIZE +#warn To use bootloader_jump() you need to define BOOTLOADER_SIZE in config.h. #endif + #define FLASH_SIZE (FLASHEND + 1L) -#define BOOTLOADER_START (FLASH_SIZE - BOOT_SIZE) +#define BOOTLOADER_START (FLASH_SIZE - BOOTLOADER_SIZE) /* diff --git a/keyboard/gh60/Makefile.lufa b/keyboard/gh60/Makefile.lufa index 65b6240ef..2076c919c 100644 --- a/keyboard/gh60/Makefile.lufa +++ b/keyboard/gh60/Makefile.lufa @@ -107,13 +107,6 @@ CONSOLE_ENABLE = yes # Console for debug(+400) #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support -# Boot Section Size in bytes -# Teensy halfKay 512 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -OPT_DEFS += -DBOOT_SIZE=4096 - - # Search Path VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) diff --git a/keyboard/gh60/config.h b/keyboard/gh60/config.h index 3a7a3f97f..be4d72384 100644 --- a/keyboard/gh60/config.h +++ b/keyboard/gh60/config.h @@ -25,12 +25,20 @@ along with this program. If not, see . #define DEVICE_VER 0x0001 #define MANUFACTURER geekhack #define PRODUCT GH60 - - /* message strings */ #define DESCRIPTION t.m.k. keyboard firmware for GH60 +/* Boot Section Size in *BYTEs* + * Teensy halfKay 512 + * Teensy++ halfKay 1024 + * Atmel DFU loader 4096 + * LUFA bootloader 4096 + * USBaspLoader 2048 + */ +#define BOOTLOADER_SIZE 4096 + + /* matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 14 diff --git a/keyboard/hhkb/Makefile.iwrap b/keyboard/hhkb/Makefile.iwrap index 3ec1a3164..f87df0d2b 100644 --- a/keyboard/hhkb/Makefile.iwrap +++ b/keyboard/hhkb/Makefile.iwrap @@ -49,15 +49,6 @@ EXTRAKEY_ENABLE = yes # Audio control and System control #NKRO_ENABLE = yes # USB Nkey Rollover -# Boot Section Size in *BYTEs* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOT_SIZE=2048 - - #---------------- Programming Options -------------------------- AVRDUDE = avrdude diff --git a/keyboard/hhkb/Makefile.lufa b/keyboard/hhkb/Makefile.lufa index 75c0310d6..e8b2414d3 100644 --- a/keyboard/hhkb/Makefile.lufa +++ b/keyboard/hhkb/Makefile.lufa @@ -107,14 +107,6 @@ CONSOLE_ENABLE = yes # Console for debug #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support -# Boot Section Size in *BYTEs* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -OPT_DEFS += -DBOOT_SIZE=1024 - - # Search Path VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) diff --git a/keyboard/hhkb/config.h b/keyboard/hhkb/config.h index 72e4d26e9..3bfeb45ed 100644 --- a/keyboard/hhkb/config.h +++ b/keyboard/hhkb/config.h @@ -27,9 +27,17 @@ along with this program. If not, see . #define DEVICE_VER 0x0103 #define MANUFACTURER t.m.k. #define PRODUCT HHKB mod +#define DESCRIPTION t.m.k. keyboard firmware for HHKB mod -#define DESCRIPTION t.m.k. keyboard firmware for HHKB mod +/* Boot Section Size in *BYTEs* + * Teensy halfKay 512 + * Teensy++ halfKay 1024 + * Atmel DFU loader 4096 + * LUFA bootloader 4096 + * USBaspLoader 2048 + */ +#define BOOTLOADER_SIZE 1024 /* matrix size */ diff --git a/keyboard/hhkb/config_iwrap.h b/keyboard/hhkb/config_iwrap.h index d50b704d7..2c18cd817 100644 --- a/keyboard/hhkb/config_iwrap.h +++ b/keyboard/hhkb/config_iwrap.h @@ -27,6 +27,16 @@ along with this program. If not, see . #define DESCRIPTION t.m.k. keyboard firmware for HHKB mod +/* Boot Section Size in *BYTEs* + * Teensy halfKay 512 + * Teensy++ halfKay 1024 + * Atmel DFU loader 4096 + * LUFA bootloader 4096 + * USBaspLoader 2048 + */ +#define BOOTLOADER_SIZE 2048 + + /* matrix size */ #define MATRIX_ROWS 8 #define MATRIX_COLS 8 -- cgit v1.3.1 From db024b6b1803eb752070422e7240b1ffe52d39f6 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 11 Mar 2013 00:05:35 +0900 Subject: Add --relax for size optimization to gh60 --- keyboard/gh60/Makefile.lufa | 3 +++ 1 file changed, 3 insertions(+) (limited to 'keyboard') diff --git a/keyboard/gh60/Makefile.lufa b/keyboard/gh60/Makefile.lufa index 2076c919c..b885b7dfa 100644 --- a/keyboard/gh60/Makefile.lufa +++ b/keyboard/gh60/Makefile.lufa @@ -107,6 +107,9 @@ CONSOLE_ENABLE = yes # Console for debug(+400) #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support +# Optimize size but this may cause error "relocation truncated to fit" +EXTRALDFLAGS = -Wl,--relax + # Search Path VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) -- cgit v1.3.1 From 1d5bbb55f28eb2e9eff0543753b8cb85f3b94282 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 11 Mar 2013 14:39:06 +0900 Subject: Fix legacy keymap support - need to define USE_LEGACY_KEYMAP to use legacy keymap --- common/keymap.c | 86 ++++++++++++++++++++++++-------------------- common/keymap.h | 21 ++++++----- converter/pc98_usb/config.h | 3 -- converter/sun_usb/config.h | 14 ++++++-- keyboard/gh60/config.h | 24 +++++-------- keyboard/hhkb/config.h | 3 -- keyboard/hhkb/config_iwrap.h | 3 -- 7 files changed, 82 insertions(+), 72 deletions(-) (limited to 'keyboard') diff --git a/common/keymap.c b/common/keymap.c index aa8d944a7..ace3f49b6 100644 --- a/common/keymap.c +++ b/common/keymap.c @@ -26,7 +26,7 @@ along with this program. If not, see . static action_t keycode_to_action(uint8_t keycode); -#ifdef USE_KEYMAP_V2 + /* converts key to action */ action_t action_for_key(uint8_t layer, key_t key) { @@ -38,42 +38,20 @@ action_t action_for_key(uint8_t layer, key_t key) return keycode_to_action(keycode); } } -#else -/* - * legacy keymap support - */ -/* translation for legacy keymap */ -action_t action_for_key(uint8_t layer, key_t key) -{ - /* convert from legacy keycode to action */ - /* layer 16-31 indicate 'overlay' but not supported in legacy keymap */ - uint8_t keycode = keymap_get_keycode((layer & OVERLAY_MASK), key.row, key.col); - action_t action; - switch (keycode) { - case KC_FN0 ... KC_FN31: - { - uint8_t layer = keymap_fn_layer(FN_INDEX(keycode)); - uint8_t key = keymap_fn_keycode(FN_INDEX(keycode)); - if (key) { - action.code = ACTION_KEYMAP_TAP_KEY(layer, key); - } else { - action.code = ACTION_KEYMAP_MOMENTARY(layer); - } - } - return action; - default: - return keycode_to_action(keycode); - } -} -#endif +/* Macro */ __attribute__ ((weak)) -const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { return MACRO_NONE; } +const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + return MACRO_NONE; +} +/* Function */ __attribute__ ((weak)) -void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {} - +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +} @@ -83,14 +61,9 @@ static action_t keycode_to_action(uint8_t keycode) action_t action; switch (keycode) { case KC_A ... KC_EXSEL: + case KC_LCTRL ... KC_RGUI: action.code = ACTION_KEY(keycode); break; - case KC_LCTRL ... KC_LGUI: - action.code = ACTION_LMOD(keycode); - break; - case KC_RCTRL ... KC_RGUI: - action.code = ACTION_RMOD(keycode); - break; case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE: action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); break; @@ -109,3 +82,40 @@ static action_t keycode_to_action(uint8_t keycode) } return action; } + + + +#ifdef USE_LEGACY_KEYMAP +/* + * Legacy keymap support + * Consider using new keymap API instead. + */ +__attribute__ ((weak)) +uint8_t keymap_key_to_keycode(uint8_t layer, key_t key) +{ + return keymap_get_keycode(layer, key.row, key.col); +} + + +/* Legacy keymap support */ +__attribute__ ((weak)) +action_t keymap_fn_to_action(uint8_t keycode) +{ + action_t action = { .code = ACTION_NO }; + switch (keycode) { + case KC_FN0 ... KC_FN31: + { + uint8_t layer = keymap_fn_layer(FN_INDEX(keycode)); + uint8_t key = keymap_fn_keycode(FN_INDEX(keycode)); + if (key) { + action.code = ACTION_KEYMAP_TAP_KEY(layer, key); + } else { + action.code = ACTION_KEYMAP_MOMENTARY(layer); + } + } + return action; + default: + return action; + } +} +#endif diff --git a/common/keymap.h b/common/keymap.h index 0c483483f..7efd91f70 100644 --- a/common/keymap.h +++ b/common/keymap.h @@ -23,24 +23,29 @@ along with this program. If not, see . #include "action.h" -#ifdef USE_KEYMAP_V2 -/* translates key to keycode - * layer: 0-15 for base layers - * 16-31 for overlays - */ +/* translates key to keycode */ uint8_t keymap_key_to_keycode(uint8_t layer, key_t key); + /* translates Fn keycode to action */ action_t keymap_fn_to_action(uint8_t keycode); -#else -#warning "You are using LEGACY KEYAMP. Consider using NEW KEYMAP." + + + +#ifdef USE_LEGACY_KEYMAP /* - * legacy keymap support + * Legacy keymap + * Consider using new keymap API above instead. */ /* keycode of key */ +__attribute__ ((deprecated)) uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col); + /* layer to move during press Fn key */ +__attribute__ ((deprecated)) uint8_t keymap_fn_layer(uint8_t fn_bits); + /* keycode to send when release Fn key without using */ +__attribute__ ((deprecated)) uint8_t keymap_fn_keycode(uint8_t fn_bits); #endif diff --git a/converter/pc98_usb/config.h b/converter/pc98_usb/config.h index 4f91c07ce..b8d676e4c 100644 --- a/converter/pc98_usb/config.h +++ b/converter/pc98_usb/config.h @@ -30,9 +30,6 @@ along with this program. If not, see . #define MATRIX_ROWS 16 #define MATRIX_COLS 8 -/* To use new keymap framework */ -#define USE_KEYMAP_V2 - /* key combination for command */ #define IS_COMMAND() ( \ host_get_first_key() == KC_CANCEL \ diff --git a/converter/sun_usb/config.h b/converter/sun_usb/config.h index 65ce9daf6..32303cd32 100644 --- a/converter/sun_usb/config.h +++ b/converter/sun_usb/config.h @@ -25,12 +25,10 @@ along with this program. If not, see . #define PRODUCT Sun keyboard converter #define DESCRIPTION converts Sun keyboard protocol into USB - /* matrix size */ #define MATRIX_ROWS 16 #define MATRIX_COLS 8 - /* key combination for command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) || \ @@ -38,6 +36,18 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) +/* legacy keymap support */ +#define USE_LEGACY_KEYMAP + +/* Boot Section Size in *BYTEs* + * Teensy halfKay 512 + * Teensy++ halfKay 1024 + * Atmel DFU loader 4096 + * LUFA bootloader 4096 + * USBaspLoader 2048 + */ +#define BOOTLOADER_SIZE 4096 + /* Serial(USART) configuration * asynchronous, negative logic, 1200baud, no flow control diff --git a/keyboard/gh60/config.h b/keyboard/gh60/config.h index be4d72384..cd98395eb 100644 --- a/keyboard/gh60/config.h +++ b/keyboard/gh60/config.h @@ -25,20 +25,8 @@ along with this program. If not, see . #define DEVICE_VER 0x0001 #define MANUFACTURER geekhack #define PRODUCT GH60 -/* message strings */ #define DESCRIPTION t.m.k. keyboard firmware for GH60 - -/* Boot Section Size in *BYTEs* - * Teensy halfKay 512 - * Teensy++ halfKay 1024 - * Atmel DFU loader 4096 - * LUFA bootloader 4096 - * USBaspLoader 2048 - */ -#define BOOTLOADER_SIZE 4096 - - /* matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 14 @@ -49,14 +37,20 @@ along with this program. If not, see . /* Set 0 if need no debouncing */ #define DEBOUNCE 5 -/* To use new keymap framework */ -#define USE_KEYMAP_V2 - /* key combination for command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) +/* Boot Section Size in *BYTEs* + * Teensy halfKay 512 + * Teensy++ halfKay 1024 + * Atmel DFU loader 4096 + * LUFA bootloader 4096 + * USBaspLoader 2048 + */ +#define BOOTLOADER_SIZE 4096 + /* * Boot magic keys * call some function by pressing key when pluging cable or powering on. diff --git a/keyboard/hhkb/config.h b/keyboard/hhkb/config.h index 3bfeb45ed..ef2958981 100644 --- a/keyboard/hhkb/config.h +++ b/keyboard/hhkb/config.h @@ -44,9 +44,6 @@ along with this program. If not, see . #define MATRIX_ROWS 8 #define MATRIX_COLS 8 -/* To use new keymap framework */ -#define USE_KEYMAP_V2 - /* * Boot magic keys * call some function by pressing key when pluging cable or powering on. diff --git a/keyboard/hhkb/config_iwrap.h b/keyboard/hhkb/config_iwrap.h index 2c18cd817..7a4ec3711 100644 --- a/keyboard/hhkb/config_iwrap.h +++ b/keyboard/hhkb/config_iwrap.h @@ -41,9 +41,6 @@ along with this program. If not, see . #define MATRIX_ROWS 8 #define MATRIX_COLS 8 -/* To use new keymap framework */ -#define USE_KEYMAP_V2 - /* key combination for command */ #define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT))) -- cgit v1.3.1 From ef8439bddb2d7fe5fd95faf2b6bebd8235acf160 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 11 Mar 2013 15:28:14 +0900 Subject: Add build option BOOTMAGIC_ENABLE --- common.mk | 8 ++++++-- common/command.c | 4 ++++ common/keyboard.c | 6 +++--- keyboard/gh60/Makefile.lufa | 4 ++-- keyboard/gh60/Makefile.pjrc | 9 ++++----- 5 files changed, 19 insertions(+), 12 deletions(-) (limited to 'keyboard') diff --git a/common.mk b/common.mk index 2735f5bec..f9faf2f95 100644 --- a/common.mk +++ b/common.mk @@ -10,12 +10,16 @@ SRC += $(COMMON_DIR)/host.c \ $(COMMON_DIR)/print.c \ $(COMMON_DIR)/debug.c \ $(COMMON_DIR)/bootloader.c \ - $(COMMON_DIR)/bootmagic.c \ - $(COMMON_DIR)/eeconfig.c \ $(COMMON_DIR)/util.c # Option modules +ifdef BOOTMAGIC_ENABLE + SRC += $(COMMON_DIR)/bootmagic.c + SRC += $(COMMON_DIR)/eeconfig.c + OPT_DEFS += -DBOOTMAGIC_ENABLE +endif + ifdef MOUSEKEY_ENABLE SRC += $(COMMON_DIR)/mousekey.c OPT_DEFS += -DMOUSEKEY_ENABLE diff --git a/common/command.c b/common/command.c index d7ba3f232..372ca291e 100644 --- a/common/command.c +++ b/common/command.c @@ -123,6 +123,7 @@ static void command_common_help(void) print("Paus: jump to bootloader\n"); } +#ifdef BOOTMAGIC_ENABLE static void print_eeprom_config(void) { uint8_t eebyte; @@ -145,15 +146,18 @@ static void print_eeprom_config(void) print("keyconf.swap_grave_esc: "); print_hex8(kc.swap_grave_esc); print("\n"); print("keyconf.swap_backslash_backspace: "); print_hex8(kc.swap_backslash_backspace); print("\n"); } +#endif static bool command_common(uint8_t code) { static host_driver_t *host_driver = 0; switch (code) { +#ifdef BOOTMAGIC_ENABLE case KC_E: print("eeprom config\n"); print_eeprom_config(); break; +#endif case KC_CAPSLOCK: if (host_get_driver()) { host_driver = host_get_driver(); diff --git a/common/keyboard.c b/common/keyboard.c index 1acb79861..401fdb4e1 100644 --- a/common/keyboard.c +++ b/common/keyboard.c @@ -29,10 +29,8 @@ along with this program. If not, see . #include "util.h" #include "sendchar.h" #include "bootmagic.h" -#ifdef MOUSEKEY_ENABLE -#include "mousekey.h" -#endif #include "eeconfig.h" +#include "mousekey.h" #ifdef MATRIX_HAS_GHOST @@ -64,6 +62,7 @@ void keyboard_init(void) ps2_mouse_init(); #endif +#ifdef BOOTMAGIC_ENABLE bootmagic(); if (eeconfig_is_enabled()) { @@ -77,6 +76,7 @@ void keyboard_init(void) } else { eeconfig_init(); } +#endif } /* diff --git a/keyboard/gh60/Makefile.lufa b/keyboard/gh60/Makefile.lufa index b885b7dfa..a5ff609a7 100644 --- a/keyboard/gh60/Makefile.lufa +++ b/keyboard/gh60/Makefile.lufa @@ -47,8 +47,7 @@ TOP_DIR = ../.. # Directory keyboard dependent files exist TARGET_DIR = . - -# List C source files here. (C dependencies are automatically generated.) +# project specific files SRC += keymap.c \ matrix.c \ led.c @@ -100,6 +99,7 @@ F_USB = $(F_CPU) # Build Options # comment out to disable the options. # +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) diff --git a/keyboard/gh60/Makefile.pjrc b/keyboard/gh60/Makefile.pjrc index 2538c0c6b..f03ca9416 100644 --- a/keyboard/gh60/Makefile.pjrc +++ b/keyboard/gh60/Makefile.pjrc @@ -47,7 +47,7 @@ TOP_DIR = ../.. # Directory keyboard dependent files exist TARGET_DIR = . -# keyboard dependent files +# project specific files SRC = keymap.c \ matrix.c \ led.c @@ -57,10 +57,8 @@ CONFIG_H = config.h # MCU name, you MUST set this to match the board you are using # type "make clean" after changing this, so all files will be rebuilt -#MCU = at90usb162 # Teensy 1.0 -MCU = atmega32u4 # Teensy 2.0 -#MCU = at90usb646 # Teensy++ 1.0 -#MCU = at90usb1286 # Teensy++ 2.0 +MCU = atmega32u4 +#MCU = at90usb1286 # Processor frequency. @@ -79,6 +77,7 @@ OPT_DEFS += -DBOOT_SIZE=4096 # Build Options # comment out to disable the options. # +BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+5000) EXTRAKEY_ENABLE = yes # Audio control and System control(+600) NKRO_ENABLE = yes # USB Nkey Rollover(+500) -- cgit v1.3.1