aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml7
-rw-r--r--keyboards/ergodox/keymaps/dvorak_programmer/Makefile2
-rw-r--r--keyboards/ergodox/keymaps/dvorak_programmer/README.md7
-rw-r--r--keyboards/ergodox/keymaps/dvorak_programmer/keymap.c70
-rw-r--r--keyboards/gonnerd/keymaps/default/keymap.c22
-rw-r--r--keyboards/gonnerd/keymaps/mauin/keymap.c50
-rw-r--r--keyboards/gonnerd/readme.md4
-rw-r--r--keyboards/planck/rev3/Makefile3
-rw-r--r--keyboards/tv44/keymaps/smt/Makefile21
-rw-r--r--keyboards/tv44/keymaps/smt/config.h36
-rw-r--r--keyboards/tv44/keymaps/smt/keyboard-layout-minivan.pngbin0 -> 66567 bytes
-rw-r--r--keyboards/tv44/keymaps/smt/keymap.c232
-rw-r--r--keyboards/tv44/keymaps/smt/readme.md126
-rw-r--r--readme.md2
14 files changed, 504 insertions, 78 deletions
diff --git a/.travis.yml b/.travis.yml
index 18ecde7e3..6c26e4112 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,3 +30,10 @@ addons:
30 - diffutils 30 - diffutils
31after_success: 31after_success:
32 bash util/travis_compiled_push.sh 32 bash util/travis_compiled_push.sh
33notifications:
34 webhooks:
35 urls:
36 - https://webhooks.gitter.im/e/cca31de3d44b9adb617b
37 on_success: change # options: [always|never|change] default: always
38 on_failure: always # options: [always|never|change] default: always
39 on_start: never # options: [always|never|change] default: always \ No newline at end of file
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/Makefile b/keyboards/ergodox/keymaps/dvorak_programmer/Makefile
index 3c65e25e1..91b1ae597 100644
--- a/keyboards/ergodox/keymaps/dvorak_programmer/Makefile
+++ b/keyboards/ergodox/keymaps/dvorak_programmer/Makefile
@@ -4,5 +4,5 @@ SLEEP_LED_ENABLE=no
4FORCE_NKRO ?= yes 4FORCE_NKRO ?= yes
5DEBUG_ENABLE = no 5DEBUG_ENABLE = no
6CONSOLE_ENABLE = no 6CONSOLE_ENABLE = no
7TAP_DANCE_ENABLE = yes 7TAP_DANCE_ENABLE = no
8MOUSEKEY_ENABLE = yes 8MOUSEKEY_ENABLE = yes
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/README.md b/keyboards/ergodox/keymaps/dvorak_programmer/README.md
index 54da74f7f..36722469f 100644
--- a/keyboards/ergodox/keymaps/dvorak_programmer/README.md
+++ b/keyboards/ergodox/keymaps/dvorak_programmer/README.md
@@ -7,7 +7,6 @@ Layers
7------ 7------
8 8
9* BASE: this is where you type. 9* BASE: this is where you type.
10* SHELL_LAYER: this is a permanent layer which I use when I don't need the F keys and gives me bash shortcuts on the top row.
11* SHELL_NAV: hold down the Tab key to access shell/terminal navigation shorcuts such as forward/backward word, history, Ctrl+C, screen tab movement. 10* SHELL_NAV: hold down the Tab key to access shell/terminal navigation shorcuts such as forward/backward word, history, Ctrl+C, screen tab movement.
12* KEY_NAV: arrow key movement with backward/forward word support, and copy/paste. 11* KEY_NAV: arrow key movement with backward/forward word support, and copy/paste.
13* KEY_SEL: same as above, but every movement shift-selects. 12* KEY_SEL: same as above, but every movement shift-selects.
@@ -20,6 +19,12 @@ Layers
20Updates 19Updates
21------- 20-------
22 21
222017/02/10:
23* Made left shift an MO for SHELL_NAV, and symbol+right shift CAPSLOCK. Made all modifiers OSM.
24
252017/01/28:
26* Made the capslock key a dual momentary layer activation for BRACKETS and SHELL_NAV. One keypress held down for BRACKETS, one keypress, released and then held down for SHELL_NAV
27
232017/01/22: 282017/01/22:
24* Made brackets toggle an OSL on the left capslock 29* Made brackets toggle an OSL on the left capslock
25* Added SHELL_LAYER 30* Added SHELL_LAYER
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c
index 7ed0c7f12..ae4fd444d 100644
--- a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c
+++ b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c
@@ -6,7 +6,6 @@
6#include "action_code.h" 6#include "action_code.h"
7 7
8#define BASE 0 // default layer 8#define BASE 0 // default layer
9#define SHELL_LAYER 1
10#define SHELL_NAV 2 9#define SHELL_NAV 2
11#define KEY_NAV 3 // key navigation layer 10#define KEY_NAV 3 // key navigation layer
12#define KEY_SEL 4 // key selection layer 11#define KEY_SEL 4 // key selection layer
@@ -37,41 +36,25 @@
37#define END_NEWLINE 17 36#define END_NEWLINE 17
38 37
39 38
40const uint16_t PROGMEM fn_actions[] = {
41 [1] = ACTION_LAYER_TAP_TOGGLE(KEY_NAV), // FN1 - keynav layer
42 [2] = ACTION_LAYER_TAP_TOGGLE(NUMBER), // FN2 - number layer
43 [3] = ACTION_MODS_ONESHOT(MOD_LSFT), // FN3 - shift modifier / oneshot
44 [4] = ACTION_MODS_ONESHOT(MOD_LCTL), // FN4 - ctrl modifier / oneshot
45 [5] = ACTION_MODS_ONESHOT(MOD_LALT), // FN5 - alt modifier / oneshot
46};
47
48//Tap Dance Declarations
49enum {
50 TD_SHIFT_CAPSLOCK = 0,
51 TD_BRK_LEFT = 1,
52 TD_BRK_RIGHT = 2
53};
54
55
56 39
57const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 40const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
58// base layer 41// base layer
59[BASE] = KEYMAP( // layer 0 : default 42[BASE] = KEYMAP( // layer 0 : default
60 // left hand 43 // left hand
61 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, 44 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
62 LT(SHELL_NAV,KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), 45 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL),
63 OSL(BRACKETS), KC_A, KC_O, KC_E, KC_U, KC_I, 46 MO(BRACKETS), KC_A, KC_O, KC_E, KC_U, KC_I,
64 OSM(MOD_LSFT), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(KEY_NAV), 47 MO(SHELL_NAV), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(KEY_NAV),
65 OSL(SHORTCUTS),KC_FN4, KC_FN5,OSL(SYMBOL),MO(NUMBER), 48 OSL(SHORTCUTS),OSM(MOD_LCTL), OSM(MOD_LALT),OSL(SYMBOL),MO(NUMBER),
66 // thumb cluster 49 // thumb cluster
67 MO(MOUSE), RCTL(KC_S), 50 OSM(MOD_LSFT), RCTL(KC_S),
68 RCTL(KC_DEL), 51 RCTL(KC_DEL),
69 KC_BSPC,RCTL(KC_BSPC),KC_DEL, 52 KC_BSPC,RCTL(KC_BSPC),KC_DEL,
70 // right hand 53 // right hand
71 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS, 54 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS,
72 KC_PGUP, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, 55 KC_PGUP, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
73 KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, 56 KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
74 KC_PGDN, KC_B, KC_M, KC_W, KC_V, KC_Z, TD(TD_SHIFT_CAPSLOCK), 57 KC_PGDN, KC_B, KC_M, KC_W, KC_V, KC_Z, OSM(MOD_LSFT),
75 // lower keys - browser tab control 58 // lower keys - browser tab control
76 RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), LALT(KC_LEFT), RCTL(KC_W), 59 RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), LALT(KC_LEFT), RCTL(KC_W),
77 // thumb cluster 60 // thumb cluster
@@ -82,31 +65,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
82 65
83 66
84 67
85// permanent shell layer - meant to be used while in a terminal. only the top keys are overriden
86[SHELL_LAYER] = KEYMAP(
87 // left hand
88 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,LALT(KC_DOT),RCTL(KC_R),RCTL(KC_C),
89 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
90 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
91 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
92 // bottom row
93 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
94 // thumb cluster
95 KC_TRNS,KC_TRNS,
96 KC_TRNS,
97 KC_TRNS,KC_TRNS,KC_TRNS,
98 // right hand
99 RCTL(KC_W), LALT(KC_B),LALT(KC_F), KC_LEFT, KC_RIGHT, LALT(KC_D), KC_TRNS,
100 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
101 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
102 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
103 // bottom row
104 KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
105 // thumb cluster
106 KC_TRNS, KC_TRNS,
107 KC_TRNS,
108 KC_TRNS, KC_TRNS, KC_TRNS
109),
110 68
111// shell navigation layer 69// shell navigation layer
112[SHELL_NAV] = KEYMAP( 70[SHELL_NAV] = KEYMAP(
@@ -270,11 +228,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
270 MEH(KC_F7), MEH(KC_F8), MEH(KC_F9), MEH(KC_F10), MEH(KC_F11), MEH(KC_F12), M(SWITCH_NDS), 228 MEH(KC_F7), MEH(KC_F8), MEH(KC_F9), MEH(KC_F10), MEH(KC_F11), MEH(KC_F12), M(SWITCH_NDS),
271 KC_TRNS, MEH(KC_A), MEH(KC_B), MEH(KC_C), MEH(KC_D), MEH(KC_E), MEH(KC_F), 229 KC_TRNS, MEH(KC_A), MEH(KC_B), MEH(KC_C), MEH(KC_D), MEH(KC_E), MEH(KC_F),
272 MEH(KC_G), MEH(KC_H), MEH(KC_I), MEH(KC_J), MEH(KC_K), MEH(KC_L), 230 MEH(KC_G), MEH(KC_H), MEH(KC_I), MEH(KC_J), MEH(KC_K), MEH(KC_L),
273 KC_TRNS, MEH(KC_M), MEH(KC_N), MEH(KC_O), MEH(KC_P), MEH(KC_Q), MEH(KC_R), 231 KC_TRNS, MEH(KC_M), MEH(KC_N), MEH(KC_O), MEH(KC_P), MEH(KC_Q), KC_CAPSLOCK,
274 MEH(KC_S), MEH(KC_T), MEH(KC_U), MEH(KC_V), MEH(KC_X), 232 MEH(KC_S), MEH(KC_T), MEH(KC_U), MEH(KC_V), MEH(KC_X),
275 MEH(KC_6), MEH(KC_7), 233 MEH(KC_6), MEH(KC_7),
276 MEH(KC_8), 234 MEH(KC_8),
277 MEH(KC_9), TO(BASE), TO(SHELL_LAYER) 235 MEH(KC_9), MEH(KC_Y), MEH(KC_Z)
278), 236),
279 237
280 238
@@ -395,7 +353,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
395 if (record->event.pressed) { 353 if (record->event.pressed) {
396 return MACRO( T(END), T(ENTER), END); 354 return MACRO( T(END), T(ENTER), END);
397 } 355 }
398 break; 356 break;
357
399 358
400 } 359 }
401 return MACRO_NONE; 360 return MACRO_NONE;
@@ -415,13 +374,6 @@ void led_set_user(uint8_t usb_led) {
415 } 374 }
416} 375}
417 376
418qk_tap_dance_action_t tap_dance_actions[] = {
419 [TD_SHIFT_CAPSLOCK] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPSLOCK),
420 [TD_BRK_LEFT] = ACTION_TAP_DANCE_DOUBLE (KC_LPRN, KC_LCBR),
421 [TD_BRK_RIGHT] = ACTION_TAP_DANCE_DOUBLE (KC_RPRN, KC_RCBR)
422
423};
424
425 377
426// Runs constantly in the background, in a loop. 378// Runs constantly in the background, in a loop.
427void matrix_scan_user(void) { 379void matrix_scan_user(void) {
diff --git a/keyboards/gonnerd/keymaps/default/keymap.c b/keyboards/gonnerd/keymaps/default/keymap.c
index a37005939..d74f949dc 100644
--- a/keyboards/gonnerd/keymaps/default/keymap.c
+++ b/keyboards/gonnerd/keymaps/default/keymap.c
@@ -1,14 +1,24 @@
1#include "gonnerd.h" 1#include "gonnerd.h"
2 2
3// Keymap layers 3#define __x__ KC_NO
4 4
5// Keymap layers
5const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 6const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
6 [0] = KEYMAP_60( /* Base */ 7 [0] = KEYMAP_60( /* Base */
7 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSPC,\ 8 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
8 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,KC_RBRC,KC_BSLS,\ 9 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
9 KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT,KC_NO, KC_ENT, \ 10 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, __x__, KC_ENT, \
10 KC_LSFT,KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT,KC_NO, \ 11 KC_LSFT, __x__, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, __x__, \
11 KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,MO(1), KC_RCTL), 12 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL \
13 ),
14
15 [1] = KEYMAP_60( /* System layer to have access to RESET button */
16 RESET, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
17 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
18 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
19 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
20 __x__, __x__, __x__, __x__, __x__, __x__, KC_TRNS, __x__ \
21 ),
12}; 22};
13 23
14const uint16_t PROGMEM fn_actions[] = { 24const uint16_t PROGMEM fn_actions[] = {
diff --git a/keyboards/gonnerd/keymaps/mauin/keymap.c b/keyboards/gonnerd/keymaps/mauin/keymap.c
index 1a1d515a9..5979a7ca4 100644
--- a/keyboards/gonnerd/keymaps/mauin/keymap.c
+++ b/keyboards/gonnerd/keymaps/mauin/keymap.c
@@ -23,11 +23,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 * `-----------------------------------------------------------' 23 * `-----------------------------------------------------------'
24 */ 24 */
25 [BASE_LAYER] = KEYMAP_60( 25 [BASE_LAYER] = KEYMAP_60(
26 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \ 26 F(0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
27 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \ 27 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
28 MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, __x__, KC_ENT, \ 28 MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, __x__, KC_ENT, \
29 KC_LSFT, __x__, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, __x__, \ 29 KC_LSFT, __x__, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, __x__, \
30 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(3), KC_RCTL \ 30 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(2), KC_RCTL \
31 ), 31 ),
32 32
33 /* Layer 1: Function Layer 33 /* Layer 1: Function Layer
@@ -45,10 +45,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45 */ 45 */
46 [FUNCTION_LAYER] = KEYMAP_60( 46 [FUNCTION_LAYER] = KEYMAP_60(
47 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \ 47 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
48 __x__, KC_MPRV, KC_MPLY, KC_MNXT, __x__, __x__, KC_PGUP, KC_HOME, KC_UP, KC_END, __x__, KC_SLCK, KC_PAUS, __x__, \ 48 __x__, KC_MPRV, KC_MPLY, KC_MNXT, __x__, __x__, KC_PGUP, KC_HOME, KC_UP, KC_END, __x__, KC_SLCK, KC_PAUS, __x__, \
49 KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, __x__, __x__, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, __x__, __x__, __x__, __x__, \ 49 KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, __x__, __x__, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, __x__, __x__, __x__, __x__, \
50 KC_LSFT, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \ 50 KC_LSFT, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
51 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, __x__, __x__, __x__, __x__ \ 51 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, __x__, __x__, __x__, __x__ \
52 ), 52 ),
53 53
54 /* Layer 2: System Layer 54 /* Layer 2: System Layer
@@ -69,10 +69,40 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
69 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \ 69 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
70 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \ 70 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
71 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \ 71 __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, __x__, \
72 __x__, __x__, __x__, __x__, __x__, __x__, KC_TRNS, __x__ \ 72 __x__, __x__, __x__, __x__, __x__, __x__, KC_TRNS, __x__ \
73 ), 73 ),
74}; 74};
75 75
76const uint16_t PROGMEM fn_actions[] = { 76enum function_id {
77 ESC_GRV, // Makes Esc behave like `~ when pressed with the left GUI modifier. This is the "switch between windows of the same application" key combination in macOS
78};
77 79
80const uint16_t PROGMEM fn_actions[] = {
81 [0] = ACTION_FUNCTION(ESC_GRV),
78}; 82};
83
84void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
85 static uint8_t esc_grv_mask;
86 switch (id) {
87 case ESC_GRV:
88 esc_grv_mask = get_mods() & MOD_BIT(KC_LGUI);
89 if (record->event.pressed) {
90 if (esc_grv_mask) {
91 add_key(KC_GRV);
92 send_keyboard_report();
93 } else {
94 add_key(KC_ESC);
95 send_keyboard_report();
96 }
97 } else {
98 if (esc_grv_mask) {
99 del_key(KC_GRV);
100 send_keyboard_report();
101 } else {
102 del_key(KC_ESC);
103 send_keyboard_report();
104 }
105 }
106 break;
107 }
108}
diff --git a/keyboards/gonnerd/readme.md b/keyboards/gonnerd/readme.md
index 1224ff6b0..807df308a 100644
--- a/keyboards/gonnerd/readme.md
+++ b/keyboards/gonnerd/readme.md
@@ -11,6 +11,10 @@ It is possible to change the bootloader of the GON NerD with an ISP programmer.
11_After changing the bootloader on your GON NerD PCB you will not be able to go back to the original firmware and the official configuration software will 11_After changing the bootloader on your GON NerD PCB you will not be able to go back to the original firmware and the official configuration software will
12not work anymore. You will lose your warranty and official support from GON!_ 12not work anymore. You will lose your warranty and official support from GON!_
13 13
14## Reset button
15
16To run the `make dfu` command to flash keymaps onto the board, you need to put the board into DFU mode. As the GON NerD PCBs do not have a reset button on the board to put it into DFU mode, be sure to include a `RESET` button on your keymap. Otherwise you'll have to unscrew your keyboard from the case and short the GND and RST pins.
17
14## Building 18## Building
15 19
16Download or clone the whole firmware and navigate to the keyboards/gonnerd folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. 20Download or clone the whole firmware and navigate to the keyboards/gonnerd folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
diff --git a/keyboards/planck/rev3/Makefile b/keyboards/planck/rev3/Makefile
new file mode 100644
index 000000000..191c6bb66
--- /dev/null
+++ b/keyboards/planck/rev3/Makefile
@@ -0,0 +1,3 @@
1ifndef MAKEFILE_INCLUDED
2 include ../../../Makefile
3endif \ No newline at end of file
diff --git a/keyboards/tv44/keymaps/smt/Makefile b/keyboards/tv44/keymaps/smt/Makefile
new file mode 100644
index 000000000..f4671a9d1
--- /dev/null
+++ b/keyboards/tv44/keymaps/smt/Makefile
@@ -0,0 +1,21 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18
19ifndef QUANTUM_DIR
20 include ../../../../Makefile
21endif \ No newline at end of file
diff --git a/keyboards/tv44/keymaps/smt/config.h b/keyboards/tv44/keymaps/smt/config.h
new file mode 100644
index 000000000..f8f0a5078
--- /dev/null
+++ b/keyboards/tv44/keymaps/smt/config.h
@@ -0,0 +1,36 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6/**
7 *TV44 keymap definition macro
8 */
9#define KEYMAP_TV44( \
10 K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
11 K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
12 K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \
13 K37, K38, K39, K40, K41, K42, K43, K44 \
14) { \
15 { K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \
16 { K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \
17 { K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \
18 { K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, KC_NO, K44 } \
19}
20
21/**
22 *TV45 keymap definition macro (arrows layout)
23 */
24#define KEYMAP_TV45( \
25 K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
26 K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
27 K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, \
28 K37, K38, K39, K40, K41, K42, K43, K44, K45 \
29) { \
30 { K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, }, \
31 { K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, }, \
32 { K25, K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, }, \
33 { K37, K38, K39, K40, KC_NO, KC_NO, KC_NO, K41, K42, K43, K44, K45 } \
34}
35
36#endif
diff --git a/keyboards/tv44/keymaps/smt/keyboard-layout-minivan.png b/keyboards/tv44/keymaps/smt/keyboard-layout-minivan.png
new file mode 100644
index 000000000..2dca67fb6
--- /dev/null
+++ b/keyboards/tv44/keymaps/smt/keyboard-layout-minivan.png
Binary files differ
diff --git a/keyboards/tv44/keymaps/smt/keymap.c b/keyboards/tv44/keymaps/smt/keymap.c
new file mode 100644
index 000000000..de5ce03e2
--- /dev/null
+++ b/keyboards/tv44/keymaps/smt/keymap.c
@@ -0,0 +1,232 @@
1#include "tv44.h"
2#include "action_layer.h"
3#include "eeconfig.h"
4
5extern keymap_config_t keymap_config;
6
7// Each layer gets a name for readability, which is then used in the keymap matrix below.
8// The underscores don't mean anything - you can have a layer called STUFF or any other name.
9// Layer names don't all need to be of the same length, obviously, and you can also skip them
10// entirely and just use numbers.
11#define _QWERTY 0
12#define _COLEMAK 1
13#define _DVORAK 2
14#define _LOWER 3
15#define _RAISE 4
16#define _ADJUST 16
17
18// Keycodes
19enum planck_keycodes {
20 QWERTY = SAFE_RANGE,
21 COLEMAK,
22 DVORAK,
23 LOWER,
24 RAISE,
25 BACKLIT
26};
27
28// Fillers to make layering more clear
29#define _______ KC_TRNS
30#define XXXXXXX KC_NO
31
32// Custom macros
33#define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl
34#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
35#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper
36#define ALT_GRV ALT_T(KC_GRV) // Tap for Backtick, hold for Alt
37
38const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
39
40/* Qwerty
41 *
42 * ,---------+------+------+------+------+------+------+------+------+------+------+---------.
43 * |Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp |
44 * |---------`------`------`------`------`------`------`------`------`------`------`---------|
45 * | Ctrl/Esc | A | S | D | F | G | H | J | K | L | ; | ' |
46 * |----------`------`------`------`------`------`------`------`------`------`------`--------|
47 * | Shift | Z | X | C | V | B | N | M | , | . | / |Sft/Ent|
48 * |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
49 * | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
50 * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
51 */
52[_QWERTY] = KEYMAP_TV45(
53/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
54 HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
55/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
56 CTL_ESC , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT ,
57/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
58 KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT ,
59/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
60 ALT_GRV , KC_LGUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_RGUI, KC_RALT, KC_RCTL ),
61/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
62
63/* Colemak
64 * ,---------+------+------+------+------+------+------+------+------+------+------+---------.
65 * |Hyper/Tab| Q | W | F | P | G | J | L | U | Y | ; | Bksp |
66 * |---------`------`------`------`------`------`------`------`------`------`------`---------|
67 * | Ctrl/Esc | A | R | S | T | D | H | N | E | I | O | ' |
68 * |----------`------`------`------`------`------`------`------`------`------`------`--------|
69 * | Shift | Z | X | C | V | B | K | M | , | . | / |Sft/Ent|
70 * |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
71 * | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
72 * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
73 */
74[_COLEMAK] = KEYMAP_TV45(
75/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
76 HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
77/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
78 CTL_ESC , KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT ,
79/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
80 KC_LSFT , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT ,
81/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
82 ALT_GRV , KC_LGUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_RGUI, KC_RALT, KC_RCTL ),
83/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
84
85/* Dvorak
86 * ,---------+------+------+------+------+------+------+------+------+------+------+---------.
87 * |Hyper/Tab| ' | , | . | P | Y | F | G | C | R | L | Bksp |
88 * |---------`------`------`------`------`------`------`------`------`------`------`---------|
89 * | Ctrl/Esc | A | O | E | U | I | D | H | T | N | S | - |
90 * |----------`------`------`------`------`------`------`------`------`------`------`--------|
91 * | Shift | ; | Q | J | K | X | B | M | W | V | Z |Sft/Ent|
92 * |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
93 * | Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
94 * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
95 */
96[_DVORAK] = KEYMAP_TV45(
97/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
98 HPR_TAB,KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC ,
99/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
100 CTL_ESC , KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS ,
101/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
102 KC_LSFT , KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT ,
103/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
104 ALT_GRV , KC_LGUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_RGUI, KC_RALT, KC_RCTL ),
105/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
106
107/* Lower
108 * ,---------+------+------+------+------+------+------+------+------+------+------+---------.
109 * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
110 * |---------`------`------`------`------`------`------`------`------`------`------`---------|
111 * | $ | 4 | 5 | 6 | . | + | * | 4 | 5 | 6 | . | PageUp |
112 * |----------`------`------`------`------`------`------`------`------`------`------`--------|
113 * | = | 7 | 8 | 9 | 0 | - | / | 1 | 2 | 3 | Up |PageDn |
114 * |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
115 * | Brite | | | Home | End | | Left | Down | Right |
116 * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
117 */
118[_LOWER] = KEYMAP_TV45(
119/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
120 KC_0 , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL ,
121/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
122 KC_DLR , KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_ASTR, KC_4, KC_5, KC_6, KC_DOT, KC_PGUP ,
123/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
124 KC_EQL , KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_SLSH, KC_1, KC_2, KC_3, KC_UP, KC_PGDN ,
125/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
126 BACKLIT , _______ , _______ , KC_HOME , KC_END , _______ , KC_LEFT, KC_DOWN, KC_RGHT ),
127/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
128
129/* Raise
130 * ,---------+------+------+------+------+------+------+------+------+------+------+---------.
131 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
132 * |---------`------`------`------`------`------`------`------`------`------`------`---------|
133 * | F1 | F2 | F3 | F4 | F5 | F6 | _ | ? | + | { | } | |
134 * |----------`------`------`------`------`------`------`------`------`------`------`--------|
135 * | F7 | F8 | F9 | F10 | F11 | F12 | - | / | = | [ | ] | |
136 * |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
137 * | Brite | | | Play | Next | | Mute | Vol- | Vol+ |
138 * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
139 */
140[_RAISE] = KEYMAP_TV45(
141/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
142 KC_TILD,KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL ,
143/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
144 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_QUES, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE ,
145/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
146 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_SLSH, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS ,
147/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
148 BACKLIT , _______ , _______ , KC_MPLY , KC_MNXT , _______ , KC_MUTE, KC_VOLD, KC_VOLU ),
149/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
150
151/* Adjust (Lower + Raise)
152 * ,---------+------+------+------+------+------+------+------+------+------+------+---------.
153 * | | Reset| | | | | | | | | | Del |
154 * |---------`------`------`------`------`------`------`------`------`------`------`---------|
155 * | | | | | |AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
156 * |----------`------`------`------`------`------`------`------`------`------`------`--------|
157 * | | | | | | | | | | | | |
158 * |-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
159 * | | | | | | | | | |
160 * `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
161 */
162[_ADJUST] = KEYMAP_TV45(
163/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
164 _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
165/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
166 _______ ,_______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______ ,
167/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
168 _______ ,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
169/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
170 _______ , _______ , _______ , _______ , _______ , _______ , _______, _______, _______ ),
171/*`---------+---------------+---------+-------^^^------+-------^^^-------+----------+--------+--------+--------------'*/
172};
173
174void persistant_default_layer_set(uint16_t default_layer) {
175 eeconfig_update_default_layer(default_layer);
176 default_layer_set(default_layer);
177}
178
179bool process_record_user(uint16_t keycode, keyrecord_t *record) {
180 switch (keycode) {
181 case QWERTY:
182 if (record->event.pressed) {
183 persistant_default_layer_set(1UL<<_QWERTY);
184 }
185 return false;
186 break;
187 case COLEMAK:
188 if (record->event.pressed) {
189 persistant_default_layer_set(1UL<<_COLEMAK);
190 }
191 return false;
192 break;
193 case DVORAK:
194 if (record->event.pressed) {
195 persistant_default_layer_set(1UL<<_DVORAK);
196 }
197 return false;
198 break;
199 case LOWER:
200 if (record->event.pressed) {
201 layer_on(_LOWER);
202 update_tri_layer(_LOWER, _RAISE, _ADJUST);
203 } else {
204 layer_off(_LOWER);
205 update_tri_layer(_LOWER, _RAISE, _ADJUST);
206 }
207 return false;
208 break;
209 case RAISE:
210 if (record->event.pressed) {
211 layer_on(_RAISE);
212 update_tri_layer(_LOWER, _RAISE, _ADJUST);
213 } else {
214 layer_off(_RAISE);
215 update_tri_layer(_LOWER, _RAISE, _ADJUST);
216 }
217 return false;
218 break;
219 case BACKLIT:
220 if (record->event.pressed) {
221 register_code(KC_RSFT);
222 #ifdef BACKLIGHT_ENABLE
223 backlight_step();
224 #endif
225 } else {
226 unregister_code(KC_RSFT);
227 }
228 return false;
229 break;
230 }
231 return true;
232}
diff --git a/keyboards/tv44/keymaps/smt/readme.md b/keyboards/tv44/keymaps/smt/readme.md
new file mode 100644
index 000000000..647eb8976
--- /dev/null
+++ b/keyboards/tv44/keymaps/smt/readme.md
@@ -0,0 +1,126 @@
1# smt's TV44 keymap
2
3This keymap is based on a combination of my Planck keymap and [jeebak's TV44 layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/tv44/keymaps/jeebak). I removed the macros and TouchCursor/MouseCursor layers, because I'm just not ready for that level of mind-mapping.
4
5I had been using something close to the default Minivan layout, but after spending a bit of time with the Planck and Preonic, I decided it would be better for me to try to standardize to some degree, where possible.
6
7Also, it's worth noting that my Minivan is one with the "arrows" layout, which has a 45th key, so I had to define a new KEYMAP_TV45 macro in config.h. In spite of this, the 45-key Minivan is still technically considered a "TV44" as far as I know.
8
9![smt's TV44 keymap](keyboard-layout-minivan.png)
10
11## Notable features (most of which can be found in my or jeebak's respective keymap file):
12
131. **Shift/Enter**
14
15 I use both the left and right shift keys when I type. When I want to modify a key with shift, I hold shift with the hand opposite the one typing the key. In the default keymap, Enter is where shift would be on a standard keyboard layout. Oh, muscle memory.
16
17 Thankfully, QMK supports [mod-tap](https://github.com/jackhumbert/qmk_firmware/wiki#fun-with-modifier-keys) keys, and this allows me to set the Enter key to send a modifier (MOD_LSFT) when held, and KC_ENT when tapped. Awesome!
18
192. **Hyper/Tab**
20
21 This key modifies with "Hyper" (see [Brett Terpstra's post](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) on this) when held, and outputs the code for Tab when tapped. On the Mac, I use KeyboardMaestro to remap my hyper-keys to do a lot of crazy things.
22
233. **Ctrl/Escape**
24
25 I set up another mod-tap, this time for the Escape key that would act as a Control modifier when held.
26
274. **Alt/Backtick**
28
29 I don't currently have LEDs on most of my keyboards, and I certainly don't want LED controls on the base layer of a 40%.
30
31 So, why use backtick in the lower left corner? I use it as my tmux prefix key, so I need to type it more frequently than most people. Putting it on the base layer works well for my use case, and it's consistent with where I place it in my Planck and Preonic keymaps.
32
33 I also like Alt in that position, so it works well as yet another mod-tap key.
34
35
36## Layers
37
38### Qwerty
39
40```
41,---------+------+------+------+------+------+------+------+------+------+------+---------.
42|Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp |
43|---------`------`------`------`------`------`------`------`------`------`------`---------|
44| Ctrl/Esc | A | S | D | F | G | H | J | K | L | ; | ' |
45|----------`------`------`------`------`------`------`------`------`------`------`--------|
46| Shift | Z | X | C | V | B | N | M | , | . | / |Sft/Ent|
47|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
48| Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
49 `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
50```
51
52### Colemak
53
54```
55,---------+------+------+------+------+------+------+------+------+------+------+---------.
56|Hyper/Tab| Q | W | F | P | G | J | L | U | Y | ; | Bksp |
57|---------`------`------`------`------`------`------`------`------`------`------`---------|
58| Ctrl/Esc | A | R | S | T | D | H | N | E | I | O | ' |
59|----------`------`------`------`------`------`------`------`------`------`------`--------|
60| Shift | Z | X | C | V | B | K | M | , | . | / |Sft/Ent|
61|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
62| Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
63 `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
64```
65
66### Dvorak
67
68```
69,---------+------+------+------+------+------+------+------+------+------+------+---------.
70|Hyper/Tab| ' | , | . | P | Y | F | G | C | R | L | Bksp |
71|---------`------`------`------`------`------`------`------`------`------`------`---------|
72| Ctrl/Esc | A | O | E | U | I | D | H | T | N | S | - |
73|----------`------`------`------`------`------`------`------`------`------`------`--------|
74| Shift | ; | Q | J | K | X | B | M | W | V | Z |Sft/Ent|
75|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
76| Alt/` | GUI | Lower | Space | Space | Raise | GUI | Alt | Ctrl |
77 `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
78```
79
80### Lower
81
82This is where I put the number row, two numpad clusters, common arithmetic operators, and cursorkeys: Arrow cluster, Home/End, Page Up/Page Down. `0` and `$` are also placed on the left side for convenient access to beginning-of-line and end-of-line Vim commands. BRITE has been moved here from the base layer.
83
84```
85,---------+------+------+------+------+------+------+------+------+------+------+---------.
86| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
87|---------`------`------`------`------`------`------`------`------`------`------`---------|
88| $ | 4 | 5 | 6 | . | + | * | 4 | 5 | 6 | . | PageUp |
89|----------`------`------`------`------`------`------`------`------`------`------`--------|
90| = | 7 | 8 | 9 | 0 | - | / | 1 | 2 | 3 | Up |PageDn |
91|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
92| Brite | | | Home | End | | Left | Down | Right |
93 `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
94```
95
96### Raise
97
98As a developer, it makes the most sense for me to group all the commonly-used symbols that don't fit on the main layer. In particular, having the dual-column of parens-braces-brackets helps me keep them straight. I've dropped basic media controls onto this layer as well.
99
100```
101,---------+------+------+------+------+------+------+------+------+------+------+---------.
102| ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
103|---------`------`------`------`------`------`------`------`------`------`------`---------|
104| F1 | F2 | F3 | F4 | F5 | F6 | _ | ? | + | { | } | | |
105|----------`------`------`------`------`------`------`------`------`------`------`--------|
106| F7 | F8 | F9 | F10 | F11 | F12 | - | / | = | [ | ] | \ |
107|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
108| Brite | | | Play | Next | | Mute | Vol- | Vol+ |
109 `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
110```
111
112### Adjust (Lower + Raise)
113
114Utility layer. There isn't much here; it's mainly for swapping the default keymap between Qwerty and Dvorak, or putting the keyboard into flash mode via the Reset key.
115
116```
117,---------+------+------+------+------+------+------+------+------+------+------+---------.
118| | Reset| | | | | | | | | | Del |
119|---------`------`------`------`------`------`------`------`------`------`------`---------|
120| | | | | |AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
121|----------`------`------`------`------`------`------`------`------`------`------`--------|
122| | | | | | | | | | | | |
123|-----------`------`------`------`------`-----'-------`------`------`------`------`-------|
124| | | | | | | | | |
125 `-------+---------+--------+-----^^^------+-----^^^------+---------+------+------+-------'
126```
diff --git a/readme.md b/readme.md
index 71f756667..21bb79a49 100644
--- a/readme.md
+++ b/readme.md
@@ -1,6 +1,6 @@
1# Quantum Mechanical Keyboard Firmware 1# Quantum Mechanical Keyboard Firmware
2 2
3[![Build Status](https://travis-ci.org/jackhumbert/qmk_firmware.svg?branch=master)](https://travis-ci.org/jackhumbert/qmk_firmware) [![Gitter](https://badges.gitter.im/qmk/qmk_firmware.svg)](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) 3[![Build Status](https://travis-ci.org/qmk/qmk_firmware.svg?branch=master)](https://travis-ci.org/jackhumbert/qmk_firmware) [![Gitter](https://badges.gitter.im/qmk/qmk_firmware.svg)](https://gitter.im/qmk/qmk_firmware?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
4 4
5This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). 5This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/).
6 6