From 711809fdac9773f224c2251ecdcc49d4acd581f1 Mon Sep 17 00:00:00 2001 From: Thomas Anderson Date: Fri, 29 Apr 2016 14:42:31 -0700 Subject: [PATCH 1/2] Finalized my personal layout --- .../ergodox_ez/keymaps/techtomas/keymap.c | 231 ++++++++++++++++++ .../keymaps/techtomas/techtomas.hex | Bin 0 -> 51240 bytes 2 files changed, 231 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/techtomas/keymap.c create mode 100644 keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex diff --git a/keyboard/ergodox_ez/keymaps/techtomas/keymap.c b/keyboard/ergodox_ez/keymaps/techtomas/keymap.c new file mode 100644 index 0000000000..b7d3b9a116 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/techtomas/keymap.c @@ -0,0 +1,231 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media +#define CNTL 3 // control layer + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | L1/` | 1 | 2 | 3 | 4 | 5 |CmdSpc| | - | 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * |Meh/Tab | Q | W | E | R | T | STab | | L3 | Y | U | I | O | P | Meh/\ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * |Hyp/Esc | L3/A | S | D | F | G |------| |------| H | J | K | L | L2/; | Hyp/' | + * |--------+------+------+------+------+------| Tab | |AltGui|------+------+------+------+------+--------| + * | LShift | L3/Z | X | C | V | B | | | | N | M | , | . | L2// | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |LCtrl | LAlt | LGui |Left |Right | | UP | Down | [ | ] | L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtl | LGui | | LAlt |ShfGui| + * ,-------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Backsp|Delete|------| |------| Enter | Space | + * | | | End | | PgDn | | | + * `--------------------' `-----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + LT(SYMB,KC_GRV), KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_SPC), + MEH_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, S(KC_TAB), + ALL_T(KC_ESC), LT(CNTL,KC_A), KC_S, KC_D, KC_F, KC_G, + KC_LSFT, LT(CNTL,KC_Z), KC_X, KC_C, KC_V, KC_B, KC_TAB, + KC_LCTL, KC_LALT, KC_LGUI, KC_LEFT, KC_RIGHT, + KC_LCTL, KC_LGUI, + KC_HOME, + KC_BSPC, KC_DELETE, KC_END, + // right hand + KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_FN3, KC_Y, KC_U, KC_I, KC_O, KC_P, MEH_T(KC_BSLS), + KC_H, KC_J, KC_K, KC_L, LT(MDIA,KC_SCLN), ALL_T(KC_QUOT), + LALT(KC_LGUI), KC_N, KC_M, KC_COMM, KC_DOT, LT(MDIA,KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, KC_FN1, + KC_LALT, S(KC_LGUI), + KC_PGUP, + KC_PGDN,KC_ENT, KC_SPC + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | < | | > | : | 7 | 8 | 9 | / | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| ; | 4 | 5 | 6 | * | Prnt | + * |--------+------+------+------+------+------| F14 | | F15 |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | - | Entr | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | 0 | . | = | + | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,S(KC_COMM), + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_F14, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + S(KC_DOT), KC_COLN, KC_7, KC_8, KC_9, KC_BSLS, KC_F12, + KC_SCLN, KC_4, KC_5, KC_6, KC_ASTR, KC_PSCR, + KC_F15, KC_AMPR, KC_1, KC_2, KC_3, KC_MINS, KC_ENT, + KC_0, KC_DOT, KC_EQL, KC_PLUS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Prev | Next | | Prev | Next | + * ,------|------|------| |------+------+------. + * | | | VolUp| | VolUp| | | + * | Play | Mute |------| |------| Mute | Play | + * | | | VolDn| | VolDn| | | + * `--------------------' `--------------------' + */ +// Control +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MPRV, KC_MNXT, + KC_VOLU, + KC_MPLY, KC_MUTE, KC_VOLD, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MPRV, KC_MNXT, + KC_VOLU, + KC_VOLD, KC_MUTE, KC_MPLY +), +/* Keymap 3: Control Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Sleep | | | | | | Pwr | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| Lclk |------| |------| Lft | Down | Up | Right| | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | Rclk | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// Control +[CNTL] = KEYMAP( + KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PWR, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), + [2] = ACTION_LAYER_TAP_TOGGLE(MDIA), + [3] = ACTION_LAYER_TAP_TOGGLE(CNTL) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex b/keyboard/ergodox_ez/keymaps/techtomas/techtomas.hex new file mode 100644 index 0000000000000000000000000000000000000000..8aa849208f149eac81aedadee4c3cd1655410229 GIT binary patch literal 51240 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%0D6#~(kv5Ex@7+h`e0*#p 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 literal 0 HcmV?d00001 From fb57b2e55dfa5773f361aa958354ddddd3d68dbc Mon Sep 17 00:00:00 2001 From: Thomas Anderson Date: Fri, 29 Apr 2016 17:25:14 -0700 Subject: [PATCH 2/2] Added readme --- .../ergodox_ez/keymaps/techtomas/readme.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/techtomas/readme.md diff --git a/keyboard/ergodox_ez/keymaps/techtomas/readme.md b/keyboard/ergodox_ez/keymaps/techtomas/readme.md new file mode 100644 index 0000000000..1ed80fc20c --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/techtomas/readme.md @@ -0,0 +1,36 @@ +# Techtomas Configuration + +## Base Layer + +The base layer is a merge of what I liked with the default layout and the ordinary layout. The thumb cluster is more like the Kinesis advantage and the top row of the cluster is convient for use on the mac. + +* The Caps Lock postion handles [Hyper/Esc](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) +* The Tab key toggles MEH. +* The two vertical mods on the left board are Shift+Tab and Tab. +* The two vertical mods on the right board are Control Layer tap/toggle and Alt+Cmd. +* The HYPER and MEH key are made in the same location on the right side of the board as well. Using Keyboard Maestro for OS X makes one-handed shortcuts very easy. + +## Symbol Layer +The symbol layer can be tap/toggled through the bottom right key and also toggled holding the tilde/grave key in the upper left corner. I haven't used the symbol layer enough to tell if this was a good place or not but it made sense in my head + +The bottom two vertical mods are set to F14 and F15 which is the default for changing screen brightness on the mac + +## Media Layer +/ & ; will toggle the media layer which has play and volume controls assigned to the thumb cluster. I found this an easy way to quickly play/pause + +## Control Layer +The a and z keys toggle the control layer. + +On the left board you have mouse control with left & right click in the location of the G and B keys. +On the right board you have vim-style arrow keys using hjkl + +The thumb cluster and mods all pass down to this layer. + +## Changelog + +* Apr 29, 2016 (V1.1): + * Added F14 and F15 to symbol layer + * Added control layer toggle to A key. + +* Apr 28, 2016 (V1.0): + * Modified config based on the default layout plus inspiration from the ordinary layout