From 5b30bb5343f2953e0f4cfa23e3a0a03c435e95e3 Mon Sep 17 00:00:00 2001 From: Mark Sikora Date: Sat, 28 May 2016 19:51:38 -0400 Subject: [PATCH] Cleanup file structure to more closely match tmk --- keyboard/ergodox/Makefile.lufa | 25 ++-- keyboard/ergodox/Makefile.pjrc | 25 ++-- .../ergodox/{keymap.c => keymap_blazak.c} | 110 +----------------- keyboard/ergodox/keymap_colemak.h | 4 - keyboard/ergodox/keymap_common.c | 33 ++++++ keyboard/ergodox/keymap_common.h | 80 +++++++++++++ .../ergodox/{keymap_cub.h => keymap_cub.c} | 17 ++- keyboard/ergodox/keymap_dvorak.h | 4 - .../{keymap_micro.h => keymap_micro.c} | 20 ++-- keyboard/ergodox/keymap_workman.h | 4 - 10 files changed, 154 insertions(+), 168 deletions(-) rename keyboard/ergodox/{keymap.c => keymap_blazak.c} (51%) delete mode 100644 keyboard/ergodox/keymap_colemak.h create mode 100644 keyboard/ergodox/keymap_common.c create mode 100644 keyboard/ergodox/keymap_common.h rename keyboard/ergodox/{keymap_cub.h => keymap_cub.c} (98%) delete mode 100644 keyboard/ergodox/keymap_dvorak.h rename keyboard/ergodox/{keymap_micro.h => keymap_micro.c} (98%) delete mode 100644 keyboard/ergodox/keymap_workman.h diff --git a/keyboard/ergodox/Makefile.lufa b/keyboard/ergodox/Makefile.lufa index abb57017..976877e1 100644 --- a/keyboard/ergodox/Makefile.lufa +++ b/keyboard/ergodox/Makefile.lufa @@ -48,12 +48,18 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # project specific files -SRC = keymap.c \ +SRC = keymap_common.c \ matrix.c \ led.c \ ergodox.c \ twimaster.c +ifdef KEYMAP + SRC := keymap_$(KEYMAP).c $(SRC) +else + SRC := keymap_blazak.c $(SRC) +endif + CONFIG_H = config.h @@ -121,20 +127,3 @@ include $(TMK_DIR)/protocol.mk include $(TMK_DIR)/protocol/lufa.mk include $(TMK_DIR)/common.mk include $(TMK_DIR)/rules.mk - -dvorak: OPT_DEFS += -DKEYMAP_DVORAK -dvorak: all - -colemak: OPT_DEFS += -DKEYMAP_COLEMAK -colemak: all - -workman: OPT_DEFS += -DKEYMAP_WORKMAN -workman: all - -micro: OPT_DEFS += -DKEYMAP_MICRO -micro: all - -cub: OPT_DEFS += -DKEYMAP_CUB -cub: all - - diff --git a/keyboard/ergodox/Makefile.pjrc b/keyboard/ergodox/Makefile.pjrc index aa29a361..04b07d9f 100644 --- a/keyboard/ergodox/Makefile.pjrc +++ b/keyboard/ergodox/Makefile.pjrc @@ -48,12 +48,18 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # project specific files -SRC = keymap.c \ +SRC = keymap_common.c \ matrix.c \ led.c \ ergodox.c \ twimaster.c +ifdef KEYMAP + SRC := keymap_$(KEYMAP).c $(SRC) +else + SRC := keymap_blazak.c $(SRC) +endif + CONFIG_H = config.h @@ -100,20 +106,3 @@ include $(TMK_DIR)/protocol.mk include $(TMK_DIR)/protocol/pjrc.mk include $(TMK_DIR)/common.mk include $(TMK_DIR)/rules.mk - -dvorak: OPT_DEFS += -DKEYMAP_DVORAK -dvorak: all - -colemak: OPT_DEFS += -DKEYMAP_COLEMAK -colemak: all - -workman: OPT_DEFS += -DKEYMAP_WORKMAN -workman: all - -micro: OPT_DEFS += -DKEYMAP_MICRO -micro: all - -cub: OPT_DEFS += -DKEYMAP_CUB -cub: all - - diff --git a/keyboard/ergodox/keymap.c b/keyboard/ergodox/keymap_blazak.c similarity index 51% rename from keyboard/ergodox/keymap.c rename to keyboard/ergodox/keymap_blazak.c index 39713e50..2a8164c5 100644 --- a/keyboard/ergodox/keymap.c +++ b/keyboard/ergodox/keymap_blazak.c @@ -14,80 +14,12 @@ 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 . */ -#include -#include -#include #include -#include "keycode.h" -#include "action.h" -#include "action_util.h" -#include "action_code.h" -#include "action_macro.h" -#include "action_layer.h" #include "bootloader.h" -#include "report.h" -#include "host.h" -#include "print.h" -#include "debug.h" -#include "keymap.h" -#include "ergodox.h" +#include "keymap_common.h" -/* ErgoDox keymap definition macro */ -#define KEYMAP( \ - \ - /* left hand, spatial positions */ \ - k00,k01,k02,k03,k04,k05,k06, \ - k10,k11,k12,k13,k14,k15,k16, \ - k20,k21,k22,k23,k24,k25, \ - k30,k31,k32,k33,k34,k35,k36, \ - k40,k41,k42,k43,k44, \ - k55,k56, \ - k54, \ - k53,k52,k51, \ - \ - /* right hand, spatial positions */ \ - k07,k08,k09,k0A,k0B,k0C,k0D, \ - k17,k18,k19,k1A,k1B,k1C,k1D, \ - k28,k29,k2A,k2B,k2C,k2D, \ - k37,k38,k39,k3A,k3B,k3C,k3D, \ - k49,k4A,k4B,k4C,k4D, \ - k57,k58, \ - k59, \ - k5C,k5B,k5A ) \ - \ - /* matrix positions */ \ - { \ - { KC_##k00,KC_##k10,KC_##k20,KC_##k30,KC_##k40,KC_NO }, \ - { KC_##k01,KC_##k11,KC_##k21,KC_##k31,KC_##k41,KC_##k51}, \ - { KC_##k02,KC_##k12,KC_##k22,KC_##k32,KC_##k42,KC_##k52}, \ - { KC_##k03,KC_##k13,KC_##k23,KC_##k33,KC_##k43,KC_##k53}, \ - { KC_##k04,KC_##k14,KC_##k24,KC_##k34,KC_##k44,KC_##k54}, \ - { KC_##k05,KC_##k15,KC_##k25,KC_##k35,KC_NO, KC_##k55}, \ - { KC_##k06,KC_##k16,KC_NO, KC_##k36,KC_NO, KC_##k56}, \ - \ - { KC_##k07,KC_##k17,KC_NO, KC_##k37,KC_NO, KC_##k57}, \ - { KC_##k08,KC_##k18,KC_##k28,KC_##k38,KC_NO, KC_##k58}, \ - { KC_##k09,KC_##k19,KC_##k29,KC_##k39,KC_##k49,KC_##k59}, \ - { KC_##k0A,KC_##k1A,KC_##k2A,KC_##k3A,KC_##k4A,KC_##k5A}, \ - { KC_##k0B,KC_##k1B,KC_##k2B,KC_##k3B,KC_##k4B,KC_##k5B}, \ - { KC_##k0C,KC_##k1C,KC_##k2C,KC_##k3C,KC_##k4C,KC_##k5C}, \ - { KC_##k0D,KC_##k1D,KC_##k2D,KC_##k3D,KC_##k4D,KC_NO } \ - } - -#if defined(KEYMAP_DVORAK) -#include "keymap_dvorak.h" -#elif defined(KEYMAP_COLEMAK) -#include "keymap_colemak.h" -#elif defined(KEYMAP_WORKMAN) -#include "keymap_workman.h" -#elif defined(KEYMAP_MICRO) -#include "keymap_micro.h" -#elif defined(KEYMAP_CUB) -#include "keymap_cub.h" -#else - -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KEYMAP( // layer 0 : default // left hand EQL, 1, 2, 3, 4, 5, ESC, @@ -182,7 +114,7 @@ enum function_id { /* * Fn action definition */ -static const uint16_t PROGMEM fn_actions[] = { +const uint16_t PROGMEM fn_actions[] = { ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key ACTION_LAYER_MOMENTARY(1), // FN1 - switch to Layer1 ACTION_LAYER_SET(2, ON_PRESS), // FN2 - set Layer2 @@ -200,39 +132,3 @@ void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) print("not supported.\n"); } } - -#endif - - -#define KEYMAPS_SIZE (sizeof(keymaps) / sizeof(keymaps[0])) -#define FN_ACTIONS_SIZE (sizeof(fn_actions) / sizeof(fn_actions[0])) - -/* translates key to keycode */ -uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) -{ - if (layer < KEYMAPS_SIZE) { - return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); - } else { - // fall back to layer 0 - return pgm_read_byte(&keymaps[0][(key.row)][(key.col)]); - } -} - -#if defined(KEYMAP_CUB) - -// function keymap_fn_to_action will be defined in keymap_cub.h - -#else -/* translates Fn keycode to action */ -action_t keymap_fn_to_action(uint8_t keycode) -{ - action_t action; - if (FN_INDEX(keycode) < FN_ACTIONS_SIZE) { - action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]); - } else { - action.code = ACTION_NO; - } - return action; -} -#endif - diff --git a/keyboard/ergodox/keymap_colemak.h b/keyboard/ergodox/keymap_colemak.h deleted file mode 100644 index 4e5565e7..00000000 --- a/keyboard/ergodox/keymap_colemak.h +++ /dev/null @@ -1,4 +0,0 @@ -#error Colemak layout is not defined yet -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -}; -static const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboard/ergodox/keymap_common.c b/keyboard/ergodox/keymap_common.c new file mode 100644 index 00000000..5bae063c --- /dev/null +++ b/keyboard/ergodox/keymap_common.c @@ -0,0 +1,33 @@ +/* +Copyright 2013 Oleg Kostyuk +Copyright 2016 Mark Sikora + +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 . +*/ + +#include "keymap_common.h" + +/* translates key to keycode */ +__attribute__ ((weak)) +uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key) +{ + return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]); +} + +/* translates Fn keycode to action */ +__attribute__ ((weak)) +action_t keymap_fn_to_action(uint8_t keycode) +{ + return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) }; +} diff --git a/keyboard/ergodox/keymap_common.h b/keyboard/ergodox/keymap_common.h new file mode 100644 index 00000000..656c28ff --- /dev/null +++ b/keyboard/ergodox/keymap_common.h @@ -0,0 +1,80 @@ +/* +Copyright 2013 Oleg Kostyuk +Copyright 2016 Mark Sikora + +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 . +*/ +#ifndef KEYMAP_COMMON_H +#define KEYMAP_COMMON_H + +#include +#include +#include +#include "keycode.h" +#include "action.h" +#include "action_macro.h" +#include "report.h" +#include "host.h" +#include "print.h" +#include "debug.h" +#include "keymap.h" + + +extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; +extern const uint16_t fn_actions[]; + + +/* ErgoDox keymap definition macro */ +#define KEYMAP( \ + \ + /* left hand, spatial positions */ \ + k00,k01,k02,k03,k04,k05,k06, \ + k10,k11,k12,k13,k14,k15,k16, \ + k20,k21,k22,k23,k24,k25, \ + k30,k31,k32,k33,k34,k35,k36, \ + k40,k41,k42,k43,k44, \ + k55,k56, \ + k54, \ + k53,k52,k51, \ + \ + /* right hand, spatial positions */ \ + k07,k08,k09,k0A,k0B,k0C,k0D, \ + k17,k18,k19,k1A,k1B,k1C,k1D, \ + k28,k29,k2A,k2B,k2C,k2D, \ + k37,k38,k39,k3A,k3B,k3C,k3D, \ + k49,k4A,k4B,k4C,k4D, \ + k57,k58, \ + k59, \ + k5C,k5B,k5A ) \ + \ + /* matrix positions */ \ + { \ + { KC_##k00,KC_##k10,KC_##k20,KC_##k30,KC_##k40,KC_NO }, \ + { KC_##k01,KC_##k11,KC_##k21,KC_##k31,KC_##k41,KC_##k51}, \ + { KC_##k02,KC_##k12,KC_##k22,KC_##k32,KC_##k42,KC_##k52}, \ + { KC_##k03,KC_##k13,KC_##k23,KC_##k33,KC_##k43,KC_##k53}, \ + { KC_##k04,KC_##k14,KC_##k24,KC_##k34,KC_##k44,KC_##k54}, \ + { KC_##k05,KC_##k15,KC_##k25,KC_##k35,KC_NO, KC_##k55}, \ + { KC_##k06,KC_##k16,KC_NO, KC_##k36,KC_NO, KC_##k56}, \ + \ + { KC_##k07,KC_##k17,KC_NO, KC_##k37,KC_NO, KC_##k57}, \ + { KC_##k08,KC_##k18,KC_##k28,KC_##k38,KC_NO, KC_##k58}, \ + { KC_##k09,KC_##k19,KC_##k29,KC_##k39,KC_##k49,KC_##k59}, \ + { KC_##k0A,KC_##k1A,KC_##k2A,KC_##k3A,KC_##k4A,KC_##k5A}, \ + { KC_##k0B,KC_##k1B,KC_##k2B,KC_##k3B,KC_##k4B,KC_##k5B}, \ + { KC_##k0C,KC_##k1C,KC_##k2C,KC_##k3C,KC_##k4C,KC_##k5C}, \ + { KC_##k0D,KC_##k1D,KC_##k2D,KC_##k3D,KC_##k4D,KC_NO } \ + } + +#endif diff --git a/keyboard/ergodox/keymap_cub.h b/keyboard/ergodox/keymap_cub.c similarity index 98% rename from keyboard/ergodox/keymap_cub.h rename to keyboard/ergodox/keymap_cub.c index 32273025..aba7c79a 100644 --- a/keyboard/ergodox/keymap_cub.h +++ b/keyboard/ergodox/keymap_cub.c @@ -1,4 +1,11 @@ -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +#include +#include "action_layer.h" +#include "action_util.h" +#include "bootloader.h" +#include "keymap_common.h" + + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Keymap: Default Layer in QWERTY * @@ -378,7 +385,7 @@ enum macro_id { /* * Fn action definition */ -static const uint16_t PROGMEM fn_actions[] = { +const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key [1] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // FN1 = Shifted BackSlash // " in Workman @@ -425,7 +432,7 @@ static const uint16_t PROGMEM fn_actions[] = { [27] = ACTION_LAYER_TAP_KEY(9, KC_V), // FN27 = momentary Layer9 on V key, to use with application-specific shortcuts }; -static const uint16_t PROGMEM fn_actions_4[] = { +const uint16_t PROGMEM fn_actions_4[] = { [1] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // FN1 = Shifted BackSlash // " in Workman [2] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // FN2 = Shifted Minus // \ in Workman [3] = ACTION_MODS_KEY(MOD_LSFT, KC_COMM), // FN3 = Shifted comma // < in Workman @@ -433,14 +440,14 @@ static const uint16_t PROGMEM fn_actions_4[] = { [5] = ACTION_MODS_KEY(MOD_LSFT, KC_SLSH), // FN5 = Shifted slash // ? in Workman }; -static const uint16_t PROGMEM fn_actions_7[] = { +const uint16_t PROGMEM fn_actions_7[] = { [0] = ACTION_MACRO(XMONAD_RESET), // FN0 = xmonad-reanimator [1] = ACTION_MACRO(PASSWORD1), // FN1 = default password [2] = ACTION_MACRO(PASSWORD1), // FN2 = other password [3] = ACTION_MACRO(PASSWORD1), // FN3 = mega password }; -static const uint16_t PROGMEM fn_actions_9[] = { +const uint16_t PROGMEM fn_actions_9[] = { [0] = ACTION_MODS_KEY(MOD_LCTL, KC_P0), // FN0 = Ctrl+0 [1] = ACTION_MODS_KEY(MOD_LALT, KC_P1), // FN1 = Alt+1 [2] = ACTION_MODS_KEY(MOD_LALT, KC_P2), // FN2 = Alt+2 diff --git a/keyboard/ergodox/keymap_dvorak.h b/keyboard/ergodox/keymap_dvorak.h deleted file mode 100644 index 198709c5..00000000 --- a/keyboard/ergodox/keymap_dvorak.h +++ /dev/null @@ -1,4 +0,0 @@ -#error Dvorak layout is not defined yet -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -}; -static const uint16_t PROGMEM fn_actions[] = {}; diff --git a/keyboard/ergodox/keymap_micro.h b/keyboard/ergodox/keymap_micro.c similarity index 98% rename from keyboard/ergodox/keymap_micro.h rename to keyboard/ergodox/keymap_micro.c index 4e878d35..80906787 100644 --- a/keyboard/ergodox/keymap_micro.h +++ b/keyboard/ergodox/keymap_micro.c @@ -3,8 +3,12 @@ // http://geekhack.org/index.php?topic=42231.msg1062851#msg1062851 // https://www.massdrop.com/ext/ergodox/?referer=CTL63V&hash=9ff8ddbb75e03e517aaa39acabc81669 // +#include +#include "bootloader.h" +#include "keymap_common.h" -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Keymap: Default Layer in QWERTY * @@ -199,12 +203,12 @@ static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS, TRNS,TRNS,TRNS, - // in Workman right hand will be: - // - // ^ { } ( ) + - // ' ! $ " ; = - // # [ < > ] \ - // + /* in Workman right hand will be: + * + * ^ { } ( ) + + * ' ! $ " ; = + * # [ < > ] \ + */ // right hand TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, @@ -361,7 +365,7 @@ enum function_id { /* * Fn action definition */ -static const uint16_t PROGMEM fn_actions[] = { +const uint16_t PROGMEM fn_actions[] = { ACTION_FUNCTION(TEENSY_KEY), // FN0 - Teensy key // Layer4: unconvenient keys on right hand diff --git a/keyboard/ergodox/keymap_workman.h b/keyboard/ergodox/keymap_workman.h deleted file mode 100644 index b1570650..00000000 --- a/keyboard/ergodox/keymap_workman.h +++ /dev/null @@ -1,4 +0,0 @@ -#error Workman layout is not defined yet -static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -}; -static const uint16_t PROGMEM fn_actions[] = {}; -- 2.46.2