From 8aa559b8257a4494c8c5a3daaac95c87f8264a07 Mon Sep 17 00:00:00 2001 From: Miguel Palhas Date: Sat, 30 Jan 2016 22:30:31 +0000 Subject: [PATCH] Adds naps62's layout --- keyboard/ergodox_ez/keymaps/naps62/README.md | 29 +++ .../ergodox_ez/keymaps/naps62/ergodox_ez.hex | Bin 0 -> 66274 bytes keyboard/ergodox_ez/keymaps/naps62/keymap.c | 187 ++++++++++++++++++ 3 files changed, 216 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/naps62/README.md create mode 100644 keyboard/ergodox_ez/keymaps/naps62/ergodox_ez.hex create mode 100644 keyboard/ergodox_ez/keymaps/naps62/keymap.c diff --git a/keyboard/ergodox_ez/keymaps/naps62/README.md b/keyboard/ergodox_ez/keymaps/naps62/README.md new file mode 100644 index 0000000000..14728e4cc4 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/naps62/README.md @@ -0,0 +1,29 @@ +# ErgoDox EZ naps62 Configuration + +## Motivation + +I wanted a layout that suited my Linux & Vim usage. I also didn't like the lack of efficient access to some of the more common special characters used in programming. + +## Key features / changes + +### Base Layer (L1) + +* **No `MT(mod, kc)` keys (modifier when pressed, key when tapped).** Those keys work with a global timeout. When a key press is shorter than the timeout, it's considered a tap, otherwise it's a hold. I couldn't find any particular timeout that would work for me. I need to use mods extremely fast, but also want the confort of using them more slowly in other occasions. So I gave up on this feature altogether. +* **Direct access to `{}[]`.** When programming, these are used extremely often. I was still getting used to the coder layer, and I prefer the arrows on the home row, so I used the bottom-right keys for this. +* **Layer keys everywhere.** I either use my little finger or my index finger to go to L1, whichever is more confortable in any given situation. L2 is not used while coding/writing, so I don't need an extremely-optimized access to it. +* **Lang key.** This is nothing more than `Super-Space` combo, which in my systems (both Linux & Windows) is the shortcut to change the keyboard language. I'm Portuguese, so I often cycle between US layout for coding, and PT layout for writing. +* **Special chars on the right-most column.** I only use Ctrl & Shift keys on the left side, so I used the right keys to include some of the more useful special characters as well. + +### Coder Layer (L2) + +* The `=` and `-` signs where nowhere to be found. `-` was already on the base layer, but it's still useful to have a fully-featured NumPad on the coder layer. + +### Media Layer (L3) + +* **Better media keys**. Why was Play/Pause so far away? And where was Mute? I put all my media keys close to each other, including the missing ones +* **Arrow keys on home row.** I use vim, so I'm always on my home row. I use this sometimes to get around, but not as often as to need them on the base row. I'm fine with them here +* I don't use mouse keys. They're still set up, and I made some changes as an experiment, but I mostly forgot they exist by now. + +## Author + +[Miguel Palhas](https://github.com/naps62) diff --git a/keyboard/ergodox_ez/keymaps/naps62/ergodox_ez.hex b/keyboard/ergodox_ez/keymaps/naps62/ergodox_ez.hex new file mode 100644 index 0000000000000000000000000000000000000000..e5f213ba827d307b90256d97d68ea36cd5ae8b0b GIT binary patch literal 66274 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 literal 0 HcmV?d00001 diff --git a/keyboard/ergodox_ez/keymaps/naps62/keymap.c b/keyboard/ergodox_ez/keymaps/naps62/keymap.c new file mode 100644 index 0000000000..b954a311e6 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/naps62/keymap.c @@ -0,0 +1,187 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Esc | 1 ! | 2 @ | 3 # | 4 $ | 5 % | Lang | | Esc | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | Bckspc | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | L2 | | L2 | Y | U | I | O | P | \ | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Ctrl | A | S | D | F | G |------| |------| H | J | K | L | ; : | ' " | + * |--------+------+------+------+------+------| L1 | | L1 |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , < | . > | / ? | - _ | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | L1 | ` ~ | ' " | \ | | L2 | | { | } | [ { | ] } | L1 | + * `----------------------------------' `----------------------------------' + * ,--------------. ,---------------. + * | Home | End | | PgUp |Insert | + * ,------|-------|------| |-------+-------+------. + * | | | LGui | | Del | | | + * | Space| Alt |------| |-------| Enter |Space | + * | | | LGui | | Bcsp | | | + * `---------------------' `----------------------' + */ +// 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 + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_SPC), + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, MO(2), + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), + MO(1), KC_GRV, KC_QUOT, KC_BSLS, MO(2), + + KC_HOME, KC_END, + KC_LGUI, + KC_SPC, KC_LALT, KC_LGUI, + + // right hand + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + MO(2), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, + KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, MO(1), + + KC_PGUP, KC_INS, + KC_DEL, + KC_BSPC, KC_ENT, KC_SPC +), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | = | . | 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,KC_TRNS, + 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_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_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_EQL,KC_DOT, KC_0, KC_MINS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | |GuiUp | Expl | | Term | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | |GuiLft|GuiDwn|GuiRgt| | |------| |------| Left | Down | Up |Right | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | |Browsr| | | | |VolDwn|VolUp | Mute | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | | Play | Prev | Next | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | |Brwser|Brwser| + * | Lclk | Rclk |------| |------|Fwd |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +KEYMAP( + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, LGUI(KC_W), LGUI(KC_E), KC_BTN1, LGUI(KC_T), KC_TRNS, + KC_TRNS, LGUI(KC_A), LGUI(KC_S), LGUI(KC_D), KC_MS_D, KC_MS_R, + 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_BTN1, KC_BTN2, 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_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, + KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_WBAK, KC_WFWD +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // 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; + default: + // none + break; + } + +};