Fix legacy keymap support
- need to define USE_LEGACY_KEYMAP to use legacy keymap
This commit is contained in:
		| @@ -26,7 +26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
|  |  | ||||||
| static action_t keycode_to_action(uint8_t keycode); | static action_t keycode_to_action(uint8_t keycode); | ||||||
|  |  | ||||||
| #ifdef USE_KEYMAP_V2 |  | ||||||
| /* converts key to action */ | /* converts key to action */ | ||||||
| action_t action_for_key(uint8_t layer, key_t key) | 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); |             return keycode_to_action(keycode); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| #else |  | ||||||
| /*  |  | ||||||
|  * legacy keymap support | /* Macro */ | ||||||
|  */ | __attribute__ ((weak)) | ||||||
| /* translation for legacy keymap */ | const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||||||
| action_t action_for_key(uint8_t layer, key_t key) |  | ||||||
| { | { | ||||||
|     /* convert from legacy keycode to action */ |     return MACRO_NONE; | ||||||
|     /* 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 |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Function */ | ||||||
| __attribute__ ((weak)) | __attribute__ ((weak)) | ||||||
| const prog_macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { return MACRO_NONE; } | void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) | ||||||
|  | { | ||||||
| __attribute__ ((weak)) | } | ||||||
| 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; |     action_t action; | ||||||
|     switch (keycode) { |     switch (keycode) { | ||||||
|         case KC_A ... KC_EXSEL: |         case KC_A ... KC_EXSEL: | ||||||
|  |         case KC_LCTRL ... KC_RGUI: | ||||||
|             action.code = ACTION_KEY(keycode); |             action.code = ACTION_KEY(keycode); | ||||||
|             break; |             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: |         case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE: | ||||||
|             action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); |             action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode)); | ||||||
|             break; |             break; | ||||||
| @@ -109,3 +82,40 @@ static action_t keycode_to_action(uint8_t keycode) | |||||||
|     } |     } | ||||||
|     return action; |     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 | ||||||
|   | |||||||
| @@ -23,24 +23,29 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #include "action.h" | #include "action.h" | ||||||
|  |  | ||||||
|  |  | ||||||
| #ifdef USE_KEYMAP_V2 | /* translates key to keycode */ | ||||||
| /* translates key to keycode |  | ||||||
|  *      layer:  0-15 for base layers |  | ||||||
|  *              16-31 for overlays |  | ||||||
|  */ |  | ||||||
| uint8_t keymap_key_to_keycode(uint8_t layer, key_t key); | uint8_t keymap_key_to_keycode(uint8_t layer, key_t key); | ||||||
|  |  | ||||||
| /* translates Fn keycode to action */ | /* translates Fn keycode to action */ | ||||||
| action_t keymap_fn_to_action(uint8_t keycode); | 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 */ | /* keycode of key */ | ||||||
|  | __attribute__ ((deprecated)) | ||||||
| uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col); | uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col); | ||||||
|  |  | ||||||
| /* layer to move during press Fn key */ | /* layer to move during press Fn key */ | ||||||
|  | __attribute__ ((deprecated)) | ||||||
| uint8_t keymap_fn_layer(uint8_t fn_bits); | uint8_t keymap_fn_layer(uint8_t fn_bits); | ||||||
|  |  | ||||||
| /* keycode to send when release Fn key without using */ | /* keycode to send when release Fn key without using */ | ||||||
|  | __attribute__ ((deprecated)) | ||||||
| uint8_t keymap_fn_keycode(uint8_t fn_bits); | uint8_t keymap_fn_keycode(uint8_t fn_bits); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|   | |||||||
| @@ -30,9 +30,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #define MATRIX_ROWS     16 | #define MATRIX_ROWS     16 | ||||||
| #define MATRIX_COLS     8 | #define MATRIX_COLS     8 | ||||||
|  |  | ||||||
| /* To use new keymap framework */ |  | ||||||
| #define USE_KEYMAP_V2 |  | ||||||
|  |  | ||||||
| /* key combination for command */ | /* key combination for command */ | ||||||
| #define IS_COMMAND()    ( \ | #define IS_COMMAND()    ( \ | ||||||
|     host_get_first_key() == KC_CANCEL \ |     host_get_first_key() == KC_CANCEL \ | ||||||
|   | |||||||
| @@ -25,12 +25,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #define PRODUCT         Sun keyboard converter | #define PRODUCT         Sun keyboard converter | ||||||
| #define DESCRIPTION     converts Sun keyboard protocol into USB | #define DESCRIPTION     converts Sun keyboard protocol into USB | ||||||
|  |  | ||||||
|  |  | ||||||
| /* matrix size */ | /* matrix size */ | ||||||
| #define MATRIX_ROWS 16 | #define MATRIX_ROWS 16 | ||||||
| #define MATRIX_COLS 8 | #define MATRIX_COLS 8 | ||||||
|  |  | ||||||
|  |  | ||||||
| /* key combination for command */ | /* key combination for command */ | ||||||
| #define IS_COMMAND() ( \ | #define IS_COMMAND() ( \ | ||||||
|     keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) || \ |     keyboard_report->mods == (MOD_BIT(KC_LALT) | MOD_BIT(KC_RALT)) || \ | ||||||
| @@ -38,6 +36,18 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
|     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ |     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 | /* Serial(USART) configuration | ||||||
|  *     asynchronous, negative logic, 1200baud, no flow control |  *     asynchronous, negative logic, 1200baud, no flow control | ||||||
|   | |||||||
| @@ -25,20 +25,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #define DEVICE_VER      0x0001 | #define DEVICE_VER      0x0001 | ||||||
| #define MANUFACTURER    geekhack | #define MANUFACTURER    geekhack | ||||||
| #define PRODUCT         GH60 | #define PRODUCT         GH60 | ||||||
| /* message strings */ |  | ||||||
| #define DESCRIPTION     t.m.k. keyboard firmware for GH60 | #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 */ | /* matrix size */ | ||||||
| #define MATRIX_ROWS 5 | #define MATRIX_ROWS 5 | ||||||
| #define MATRIX_COLS 14 | #define MATRIX_COLS 14 | ||||||
| @@ -49,14 +37,20 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| /* Set 0 if need no debouncing */ | /* Set 0 if need no debouncing */ | ||||||
| #define DEBOUNCE    5 | #define DEBOUNCE    5 | ||||||
|  |  | ||||||
| /* To use new keymap framework */ |  | ||||||
| #define USE_KEYMAP_V2 |  | ||||||
|  |  | ||||||
| /* key combination for command */ | /* key combination for command */ | ||||||
| #define IS_COMMAND() ( \ | #define IS_COMMAND() ( \ | ||||||
|     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ |     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 |  * Boot magic keys | ||||||
|  * call some function by pressing key when pluging cable or powering on. |  * call some function by pressing key when pluging cable or powering on. | ||||||
|   | |||||||
| @@ -44,9 +44,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #define MATRIX_ROWS 8 | #define MATRIX_ROWS 8 | ||||||
| #define MATRIX_COLS 8 | #define MATRIX_COLS 8 | ||||||
|  |  | ||||||
| /* To use new keymap framework */ |  | ||||||
| #define USE_KEYMAP_V2 |  | ||||||
|  |  | ||||||
| /*  | /*  | ||||||
|  * Boot magic keys |  * Boot magic keys | ||||||
|  * call some function by pressing key when pluging cable or powering on. |  * call some function by pressing key when pluging cable or powering on. | ||||||
|   | |||||||
| @@ -41,9 +41,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #define MATRIX_ROWS 8 | #define MATRIX_ROWS 8 | ||||||
| #define MATRIX_COLS 8 | #define MATRIX_COLS 8 | ||||||
|  |  | ||||||
| /* To use new keymap framework */ |  | ||||||
| #define USE_KEYMAP_V2 |  | ||||||
|  |  | ||||||
| /* key combination for command */ | /* key combination for command */ | ||||||
| #define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))  | #define IS_COMMAND() (keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))  | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user