forked from mattharrison/tmk_keyboard
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request cub-uanic#4 from jackhumbert/master
upstream
- Loading branch information
Showing
17 changed files
with
2,945 additions
and
1,149 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) |
1,474 changes: 1,474 additions & 0 deletions
1,474
keyboard/ergodox_ez/keymaps/naps62/ergodox_ez.hex
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} | ||
|
||
}; |
Oops, something went wrong.