From 1d5bbb55f28eb2e9eff0543753b8cb85f3b94282 Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 11 Mar 2013 14:39:06 +0900 Subject: [PATCH] Fix legacy keymap support - need to define USE_LEGACY_KEYMAP to use legacy keymap --- common/keymap.c | 88 ++++++++++++++++++++---------------- 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, 83 insertions(+), 73 deletions(-) diff --git a/common/keymap.c b/common/keymap.c index aa8d944a..ace3f49b 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) + + +/* Macro */ +__attribute__ ((weak)) +const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - /* 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); - } + return MACRO_NONE; } -#endif - +/* Function */ __attribute__ ((weak)) -const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { return MACRO_NONE; } - -__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 0c483483..7efd91f7 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 4f91c07c..b8d676e4 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 65ce9daf..32303cd3 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 be4d7238..cd98395e 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 3bfeb45e..ef295898 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 2c18cd81..7a4ec371 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)))