aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Topfstedt <topfstedt@schneevonmorgen.com>2017-10-06 20:08:35 +0200
committerJack Humbert <jack.humb@gmail.com>2017-10-06 08:08:35 -1000
commit120089d917d18debbf6f02d12c4d8cdb5000599d (patch)
tree4317679f1ba1728ea959ac75252b6143675cfbd0
parentd2bbfb9058f07ffee75272d954d189ad878fad28 (diff)
downloadqmk_firmware-120089d917d18debbf6f02d12c4d8cdb5000599d.tar.gz
qmk_firmware-120089d917d18debbf6f02d12c4d8cdb5000599d.zip
Consistent fabian layouts for amj40, let's split, planck and xd75 (#1812)
* slight modifier changes; added plover and reusing jack's default planck keymap as the basis * space is not shift when held anymore * added fabian layout (based on jack's default) * changed fabian layout (based on jack's default) * changed fabian layout (based on jack's default)
-rwxr-xr-xkeyboards/amj40/keymaps/fabian/keymap.c137
-rw-r--r--keyboards/lets_split/keymaps/fabian/keymap.c159
-rw-r--r--keyboards/planck/keymaps/fabian/Makefile3
-rw-r--r--keyboards/planck/keymaps/fabian/config.h42
-rw-r--r--keyboards/planck/keymaps/fabian/keymap.c272
-rw-r--r--keyboards/xd75/keymaps/fabian/keymap.c170
6 files changed, 601 insertions, 182 deletions
diff --git a/keyboards/amj40/keymaps/fabian/keymap.c b/keyboards/amj40/keymaps/fabian/keymap.c
index 51064b636..41a128e2b 100755
--- a/keyboards/amj40/keymaps/fabian/keymap.c
+++ b/keyboards/amj40/keymaps/fabian/keymap.c
@@ -1,3 +1,18 @@
1/* Copyright 2015-2017 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
1#include "amj40.h" 16#include "amj40.h"
2 17
3// Set the custom keymap 18// Set the custom keymap
@@ -14,23 +29,16 @@
14 {k30, k31, k32, k33, k34, k35, XXX, XXX, XXX, k39, k3a, k3b} \ 29 {k30, k31, k32, k33, k34, k35, XXX, XXX, XXX, k39, k3a, k3b} \
15} 30}
16 31
17// Fillers to make layering more clear 32extern keymap_config_t keymap_config;
18#define _______ KC_TRNS
19#define XXXXXXX KC_NO
20
21// Custom
22#define CTL_ESC CTL_T(KC_ESC) // Tap for Escape, hold for Control
23#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
24#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
25#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
26// #define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
27 33
28#define _QWERTY 0 34enum custom_layers {
29#define _COLEMAK 1 35 _QWERTY,
30#define _DVORAK 2 36 _COLEMAK,
31#define _LOWER 3 37 _DVORAK,
32#define _RAISE 4 38 _LOWER,
33#define _ADJUST 16 39 _RAISE,
40 _ADJUST
41};
34 42
35enum custom_keycodes { 43enum custom_keycodes {
36 QWERTY = SAFE_RANGE, 44 QWERTY = SAFE_RANGE,
@@ -38,9 +46,21 @@ enum custom_keycodes {
38 DVORAK, 46 DVORAK,
39 LOWER, 47 LOWER,
40 RAISE, 48 RAISE,
41 ADJUST, 49 BACKLIT,
50 EXT_PLV
42}; 51};
43 52
53#define XXXXXXX KC_NO
54#define _______ KC_TRNS
55
56#define CTL_ESC CTL_T(KC_ESC) // Tap for Escape, hold for Control
57#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
58#define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
59#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
60#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
61#define SFT_SPC SFT_T(KC_SPC) // Tap for Space, hold for Shift
62#define UMLAUT RALT(KC_U) // Combine Alt and U
63
44const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 64const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45/* Qwerty 65/* Qwerty
46 * ,-----------------------------------------------------------------------------------. 66 * ,-----------------------------------------------------------------------------------.
@@ -50,14 +70,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
50 * |------+------+------+------+------+------|------+------+------+------+------+------| 70 * |------+------+------+------+------+------|------+------+------+------+------+------|
51 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | 71 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
52 * |------+------+------+------+------+------+------+------+------+------+------+------| 72 * |------+------+------+------+------+------+------+------+------+------+------+------|
53 * |Adjust| Ctrl | Alt | GUI | Lower and Space | Raise and Bksp | GUI |AltGr | Ctrl | 73 * | Ctrl | Meh | Alt | GUI | Lower and Space | Raise | GUI |AltGr | Ctrl |
54 * `-----------------------------------------------------------------------------------' 74 * `-----------------------------------------------------------------------------------'
55 */ 75 */
56[_QWERTY] = KEYMAP( \ 76[_QWERTY] = KEYMAP( \
57 HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ 77 HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
58 CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ 78 CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
59 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT , \ 79 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, \
60 F(2), KC_LCTL, KC_LALT, KC_LGUI, F(0), F(1), KC_RGUI, KC_RALT, KC_RCTL \ 80 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, F(0), RAISE, KC_RGUI, KC_RALT, KC_RCTL \
61), 81),
62 82
63/* Colemak 83/* Colemak
@@ -68,14 +88,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
68 * |------+------+------+------+------+------|------+------+------+------+------+------| 88 * |------+------+------+------+------+------|------+------+------+------+------+------|
69 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | 89 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
70 * |------+------+------+------+------+------+------+------+------+------+------+------| 90 * |------+------+------+------+------+------+------+------+------+------+------+------|
71 * |Adjust| Ctrl | Alt | GUI | Lower and Space | Raise and Bksp | GUI |AltGr | Ctrl | 91 * | Ctrl | Meh | Alt | GUI | Lower and Space | Raise | GUI |AltGr | Ctrl |
72 * `-----------------------------------------------------------------------------------' 92 * `-----------------------------------------------------------------------------------'
73 */ 93 */
74[_COLEMAK] = KEYMAP( \ 94[_COLEMAK] = KEYMAP( \
75 HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ 95 HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
76 CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ 96 CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
77 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT , \ 97 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, \
78 F(2), KC_LCTL, KC_LALT, KC_LGUI, F(0), F(1), KC_RGUI, KC_RALT, KC_RCTL \ 98 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, F(0), RAISE, KC_RGUI, KC_RALT, KC_RCTL \
79), 99),
80 100
81/* Dvorak 101/* Dvorak
@@ -86,14 +106,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
86 * |------+------+------+------+------+------|------+------+------+------+------+------| 106 * |------+------+------+------+------+------|------+------+------+------+------+------|
87 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | 107 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
88 * |------+------+------+------+------+------+------+------+------+------+------+------| 108 * |------+------+------+------+------+------+------+------+------+------+------+------|
89 * |Adjust| Ctrl | Alt | GUI | Lower and Space | Raise and Bksp | GUI |AltGr | Ctrl | 109 * | Ctrl | Meh | Alt | GUI | Lower and Space | Raise | GUI |AltGr | Ctrl |
90 * `-----------------------------------------------------------------------------------' 110 * `-----------------------------------------------------------------------------------'
91 */ 111 */
92[_DVORAK] = KEYMAP( \ 112[_DVORAK] = KEYMAP( \
93 HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ 113 HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
94 CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ 114 CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
95 SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT , \ 115 SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, \
96 F(2), KC_LCTL, KC_LALT, KC_LGUI, F(0), F(1), KC_RGUI, KC_RALT, KC_RCTL \ 116 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, F(0), RAISE, KC_RGUI, KC_RALT, KC_RCTL \
97), 117),
98 118
99/* Lower 119/* Lower
@@ -104,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
104 * |------+------+------+------+------+------|------+------+------+------+------+------| 124 * |------+------+------+------+------+------|------+------+------+------+------+------|
105 * | | F7 | F8 | F9 | F10 | F11 | F12 | MS L | MS D |MS U | MS R |MS Btn| 125 * | | F7 | F8 | F9 | F10 | F11 | F12 | MS L | MS D |MS U | MS R |MS Btn|
106 * |------+------+------+------+------+------+------+------+------+------+------+------| 126 * |------+------+------+------+------+------+------+------+------+------+------+------|
107 * | | | | | | | | | Next | Vol- | Vol+ | Play | 127 * | | | | | | Next | Vol- | Vol+ | Play |
108 * `-----------------------------------------------------------------------------------' 128 * `-----------------------------------------------------------------------------------'
109 */ 129 */
110[_LOWER] = KEYMAP( \ 130[_LOWER] = KEYMAP( \
@@ -122,7 +142,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
122 * |------+------+------+------+------+------|------+------+------+------+------+------| 142 * |------+------+------+------+------+------|------+------+------+------+------+------|
123 * | | F7 | F8 | F9 | F10 | F11 | F12 | Left | Down | Up | Rght |MS_BN2| 143 * | | F7 | F8 | F9 | F10 | F11 | F12 | Left | Down | Up | Rght |MS_BN2|
124 * |------+------+------+------+------+------+------+------+------+------+------+------| 144 * |------+------+------+------+------+------+------+------+------+------+------+------|
125 * | | | | | | | | | Next | Vol- | Vol+ | Play | 145 * | | | | | | Next | Vol- | Vol+ | Play |
126 * `-----------------------------------------------------------------------------------' 146 * `-----------------------------------------------------------------------------------'
127 */ 147 */
128[_RAISE] = KEYMAP( \ 148[_RAISE] = KEYMAP( \
@@ -134,72 +154,44 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
134 154
135/* Adjust (Lower + Raise) 155/* Adjust (Lower + Raise)
136 * ,-----------------------------------------------------------------------------------. 156 * ,-----------------------------------------------------------------------------------.
137 * |Reset |Colemk|Qwerty|Dvorak| | | | | MU | | |Reset | 157 * | | Reset| | | | | | | | | Reset| Del |
158 * |------+------+------+------+------+-------------+------+------+------+------+------|
159 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
138 * |------+------+------+------+------+------|------+------+------+------+------+------| 160 * |------+------+------+------+------+------|------+------+------+------+------+------|
139 * | |AGNorm|AGSwap| | | | | ML | MD | MR | | | 161 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
140 * |------+------+------+------+------+------+------+------+------+------+------+------|
141 * | |AudOn |AudOff| | | | |MBtn1 |MBtn2 |MBtn3 | | |
142 * |------+------+------+------+------+------+------+------+------+------+------+------| 162 * |------+------+------+------+------+------+------+------+------+------+------+------|
143 * | | | | | | | | | | | | | 163 * | | | | | | | | | |
144 * `-----------------------------------------------------------------------------------' 164 * `-----------------------------------------------------------------------------------'
145 */ 165 */
146[_ADJUST] = KEYMAP( \ 166[_ADJUST] = KEYMAP( \
147 RESET, COLEMAK, QWERTY, DVORAK, _______, _______, _______, _______, KC_MS_U, _______, _______, RESET, \ 167 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL, \
148 _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, \ 168 _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
149 _______, AU_ON, AU_OFF, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, \ 169 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
150 _______, _______, _______, _______, _______, _______, _______, _______, _______ \ 170 _______, _______, _______, _______, _______, _______, _______, _______, _______ \
151) 171)
152
153}; 172};
154 173
155#ifdef AUDIO_ENABLE
156float tone_qwerty[][2] = SONG(QWERTY_SOUND);
157float tone_dvorak[][2] = SONG(DVORAK_SOUND);
158float tone_colemak[][2] = SONG(COLEMAK_SOUND);
159#endif
160
161void persistent_default_layer_set(uint16_t default_layer) {
162 eeconfig_update_default_layer(default_layer);
163 default_layer_set(default_layer);
164}
165
166const uint16_t PROGMEM fn_actions[] = { 174const uint16_t PROGMEM fn_actions[] = {
167 [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), 175 [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC),
168 [1] = ACTION_LAYER_TAP_KEY(_RAISE, KC_BSPC),
169 [2] = ACTION_LAYER_TAP_KEY(_ADJUST, KC_LGUI),
170};
171
172const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
173{
174 return MACRO_NONE;
175}; 176};
176 177
177bool process_record_user(uint16_t keycode, keyrecord_t *record) { 178bool process_record_user(uint16_t keycode, keyrecord_t *record) {
178 switch (keycode) { 179 switch (keycode) {
179 case QWERTY: 180 case QWERTY:
180 if (record->event.pressed) { 181 if (record->event.pressed) {
181 #ifdef AUDIO_ENABLE 182 set_single_persistent_default_layer(_QWERTY);
182 PLAY_SONG(tone_qwerty);
183 #endif
184 persistent_default_layer_set(1UL<<_QWERTY);
185 } 183 }
186 return false; 184 return false;
187 break; 185 break;
188 case COLEMAK: 186 case COLEMAK:
189 if (record->event.pressed) { 187 if (record->event.pressed) {
190 #ifdef AUDIO_ENABLE 188 set_single_persistent_default_layer(_COLEMAK);
191 PLAY_SONG(tone_colemak);
192 #endif
193 persistent_default_layer_set(1UL<<_COLEMAK);
194 } 189 }
195 return false; 190 return false;
196 break; 191 break;
197 case DVORAK: 192 case DVORAK:
198 if (record->event.pressed) { 193 if (record->event.pressed) {
199 #ifdef AUDIO_ENABLE 194 set_single_persistent_default_layer(_DVORAK);
200 PLAY_SONG(tone_dvorak);
201 #endif
202 persistent_default_layer_set(1UL<<_DVORAK);
203 } 195 }
204 return false; 196 return false;
205 break; 197 break;
@@ -223,11 +215,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
223 } 215 }
224 return false; 216 return false;
225 break; 217 break;
226 case ADJUST: 218 case BACKLIT:
227 if (record->event.pressed) { 219 if (record->event.pressed) {
228 layer_on(_ADJUST); 220 register_code(KC_RSFT);
221 #ifdef BACKLIGHT_ENABLE
222 backlight_step();
223 #endif
229 } else { 224 } else {
230 layer_off(_ADJUST); 225 unregister_code(KC_RSFT);
231 } 226 }
232 return false; 227 return false;
233 break; 228 break;
diff --git a/keyboards/lets_split/keymaps/fabian/keymap.c b/keyboards/lets_split/keymaps/fabian/keymap.c
index 14e5dcf1a..e4b1c3025 100644
--- a/keyboards/lets_split/keymaps/fabian/keymap.c
+++ b/keyboards/lets_split/keymaps/fabian/keymap.c
@@ -1,39 +1,56 @@
1/* Copyright 2015-2017 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
1#include "lets_split.h" 17#include "lets_split.h"
2#include "action_layer.h" 18#include "action_layer.h"
3#include "eeconfig.h" 19#include "eeconfig.h"
4 20
5extern keymap_config_t keymap_config; 21extern keymap_config_t keymap_config;
6 22
7// Each layer gets a name for readability, which is then used in the keymap matrix below. 23enum custom_layers {
8// The underscores don't mean anything - you can have a layer called STUFF or any other name. 24 _QWERTY,
9// Layer names don't all need to be of the same length, obviously, and you can also skip them 25 _COLEMAK,
10// entirely and just use numbers. 26 _DVORAK,
11#define _QWERTY 0 27 _LOWER,
12#define _COLEMAK 1 28 _RAISE,
13#define _DVORAK 2 29 _PLOVER,
14#define _LOWER 3 30 _ADJUST
15#define _RAISE 4 31};
16#define _ADJUST 16
17 32
18enum custom_keycodes { 33enum custom_keycodes {
19 QWERTY = SAFE_RANGE, 34 QWERTY = SAFE_RANGE,
20 COLEMAK, 35 COLEMAK,
21 DVORAK, 36 DVORAK,
37 PLOVER,
22 LOWER, 38 LOWER,
23 RAISE, 39 RAISE,
24 ADJUST, 40 BACKLIT,
41 EXT_PLV,
25}; 42};
26 43
27// Fillers to make layering more clear
28#define _______ KC_TRNS
29#define XXXXXXX KC_NO 44#define XXXXXXX KC_NO
45#define _______ KC_TRNS
30 46
31// Custom
32#define CTL_ESC CTL_T(KC_ESC) // Tap for Escape, hold for Control 47#define CTL_ESC CTL_T(KC_ESC) // Tap for Escape, hold for Control
33#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
34#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
35#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) 48#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
36// #define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) 49#define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
50#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
51#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
52#define SFT_SPC SFT_T(KC_SPC) // Tap for Space, hold for Shift
53#define UMLAUT RALT(KC_U) // Combine Alt and U
37 54
38const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 55const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
39 56
@@ -45,14 +62,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45 * |------+------+------+------+------+------|------+------+------+------+------+------| 62 * |------+------+------+------+------+------|------+------+------+------+------+------|
46 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | 63 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
47 * |------+------+------+------+------+------+------+------+------+------+------+------| 64 * |------+------+------+------+------+------+------+------+------+------+------+------|
48 * |Adjust| Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | GUI |AltGr | Ctrl |Adjust| 65 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
49 * `-----------------------------------------------------------------------------------' 66 * `-----------------------------------------------------------------------------------'
50 */ 67 */
51[_QWERTY] = KEYMAP( \ 68[_QWERTY] = KEYMAP( \
52 HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ 69 HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
53 CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ 70 CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
54 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT , \ 71 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT , \
55 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST \ 72 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL \
56), 73),
57 74
58/* Colemak 75/* Colemak
@@ -63,14 +80,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63 * |------+------+------+------+------+------|------+------+------+------+------+------| 80 * |------+------+------+------+------+------|------+------+------+------+------+------|
64 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | 81 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
65 * |------+------+------+------+------+------+------+------+------+------+------+------| 82 * |------+------+------+------+------+------+------+------+------+------+------+------|
66 * |Adjust| Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | GUI |AltGr | Ctrl |Adjust| 83 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
67 * `-----------------------------------------------------------------------------------' 84 * `-----------------------------------------------------------------------------------'
68 */ 85 */
69[_COLEMAK] = KEYMAP( \ 86[_COLEMAK] = KEYMAP( \
70 HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ 87 HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
71 CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ 88 CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
72 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT , \ 89 SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT , \
73 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST \ 90 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL \
74), 91),
75 92
76/* Dvorak 93/* Dvorak
@@ -81,14 +98,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
81 * |------+------+------+------+------+------|------+------+------+------+------+------| 98 * |------+------+------+------+------+------|------+------+------+------+------+------|
82 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | 99 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
83 * |------+------+------+------+------+------+------+------+------+------+------+------| 100 * |------+------+------+------+------+------+------+------+------+------+------+------|
84 * |Adjust| Ctrl | Alt | GUI |Lower |Space | Bksp |Raise | GUI |AltGr | Ctrl |Adjust| 101 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
85 * `-----------------------------------------------------------------------------------' 102 * `-----------------------------------------------------------------------------------'
86 */ 103 */
87[_DVORAK] = KEYMAP( \ 104[_DVORAK] = KEYMAP( \
88 HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ 105 HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
89 CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ 106 CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
90 SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT , \ 107 SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT , \
91 ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST \ 108 KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL \
92), 109),
93 110
94/* Lower 111/* Lower
@@ -127,64 +144,67 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
127 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ 144 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
128), 145),
129 146
130/* Adjust (Lower + Raise) 147/* Plover layer (http://opensteno.org)
131 * ,-----------------------------------------------------------------------------------. 148 * ,-----------------------------------------------------------------------------------.
132 * | |Reset | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Reset | Del | 149 * | # | # | # | # | # | # | # | # | # | # | # | # |
150 * |------+------+------+------+------+-------------+------+------+------+------+------|
151 * | | S | T | P | H | * | * | F | P | L | T | D |
133 * |------+------+------+------+------+------|------+------+------+------+------+------| 152 * |------+------+------+------+------+------|------+------+------+------+------+------|
134 * | | | | | | | | | | | | | 153 * | | S | K | W | R | * | * | R | B | G | S | Z |
135 * |------+------+------+------+------+------+------+------+------+------+------+------| 154 * |------+------+------+------+------+------+------+------+------+------+------+------|
136 * | | | | | | | | | | | | | 155 * | Exit | | | A | O | | | E | U | | | |
156 * `-----------------------------------------------------------------------------------'
157 */
158
159[_PLOVER] = KEYMAP( \
160 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, \
161 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, \
162 XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
163 EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX \
164),
165
166/* Adjust (Lower + Raise)
167 * ,-----------------------------------------------------------------------------------.
168 * | | Reset| | | | | | | | | Reset| Del |
169 * |------+------+------+------+------+-------------+------+------+------+------+------|
170 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
171 * |------+------+------+------+------+------|------+------+------+------+------+------|
172 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
137 * |------+------+------+------+------+------+------+------+------+------+------+------| 173 * |------+------+------+------+------+------+------+------+------+------+------+------|
138 * | | | | | | | | | | | | | 174 * | | | | | | | | | | | | |
139 * `-----------------------------------------------------------------------------------' 175 * `-----------------------------------------------------------------------------------'
140 */ 176 */
141[_ADJUST] = KEYMAP( \ 177[_ADJUST] = KEYMAP( \
142 _______, RESET, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, RESET, KC_DEL, \ 178 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL , \
143 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 179 _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, \
144 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 180 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
145 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ 181 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
146) 182)
147 183
148
149}; 184};
150 185
151#ifdef AUDIO_ENABLE 186#ifdef AUDIO_ENABLE
152float tone_qwerty[][2] = SONG(QWERTY_SOUND); 187 float plover_song[][2] = SONG(PLOVER_SOUND);
153float tone_dvorak[][2] = SONG(DVORAK_SOUND); 188 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
154float tone_colemak[][2] = SONG(COLEMAK_SOUND);
155#endif 189#endif
156 190
157void persistent_default_layer_set(uint16_t default_layer) {
158 eeconfig_update_default_layer(default_layer);
159 default_layer_set(default_layer);
160}
161
162bool process_record_user(uint16_t keycode, keyrecord_t *record) { 191bool process_record_user(uint16_t keycode, keyrecord_t *record) {
163 switch (keycode) { 192 switch (keycode) {
164 case QWERTY: 193 case QWERTY:
165 if (record->event.pressed) { 194 if (record->event.pressed) {
166 #ifdef AUDIO_ENABLE 195 set_single_persistent_default_layer(_QWERTY);
167 PLAY_SONG(tone_qwerty);
168 #endif
169 persistent_default_layer_set(1UL<<_QWERTY);
170 } 196 }
171 return false; 197 return false;
172 break; 198 break;
173 case COLEMAK: 199 case COLEMAK:
174 if (record->event.pressed) { 200 if (record->event.pressed) {
175 #ifdef AUDIO_ENABLE 201 set_single_persistent_default_layer(_COLEMAK);
176 PLAY_SONG(tone_colemak);
177 #endif
178 persistent_default_layer_set(1UL<<_COLEMAK);
179 } 202 }
180 return false; 203 return false;
181 break; 204 break;
182 case DVORAK: 205 case DVORAK:
183 if (record->event.pressed) { 206 if (record->event.pressed) {
184 #ifdef AUDIO_ENABLE 207 set_single_persistent_default_layer(_DVORAK);
185 PLAY_SONG(tone_dvorak);
186 #endif
187 persistent_default_layer_set(1UL<<_DVORAK);
188 } 208 }
189 return false; 209 return false;
190 break; 210 break;
@@ -208,11 +228,42 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
208 } 228 }
209 return false; 229 return false;
210 break; 230 break;
211 case ADJUST: 231 case BACKLIT:
212 if (record->event.pressed) { 232 if (record->event.pressed) {
213 layer_on(_ADJUST); 233 register_code(KC_RSFT);
234 #ifdef BACKLIGHT_ENABLE
235 backlight_step();
236 #endif
214 } else { 237 } else {
238 unregister_code(KC_RSFT);
239 }
240 return false;
241 break;
242 case PLOVER:
243 if (record->event.pressed) {
244 #ifdef AUDIO_ENABLE
245 stop_all_notes();
246 PLAY_SONG(plover_song);
247 #endif
248 layer_off(_RAISE);
249 layer_off(_LOWER);
215 layer_off(_ADJUST); 250 layer_off(_ADJUST);
251 layer_on(_PLOVER);
252 if (!eeconfig_is_enabled()) {
253 eeconfig_init();
254 }
255 keymap_config.raw = eeconfig_read_keymap();
256 keymap_config.nkro = 1;
257 eeconfig_update_keymap(keymap_config.raw);
258 }
259 return false;
260 break;
261 case EXT_PLV:
262 if (record->event.pressed) {
263 #ifdef AUDIO_ENABLE
264 PLAY_SONG(plover_gb_song);
265 #endif
266 layer_off(_PLOVER);
216 } 267 }
217 return false; 268 return false;
218 break; 269 break;
diff --git a/keyboards/planck/keymaps/fabian/Makefile b/keyboards/planck/keymaps/fabian/Makefile
new file mode 100644
index 000000000..457a3d01d
--- /dev/null
+++ b/keyboards/planck/keymaps/fabian/Makefile
@@ -0,0 +1,3 @@
1ifndef QUANTUM_DIR
2 include ../../../../Makefile
3endif
diff --git a/keyboards/planck/keymaps/fabian/config.h b/keyboards/planck/keymaps/fabian/config.h
new file mode 100644
index 000000000..b406e2fed
--- /dev/null
+++ b/keyboards/planck/keymaps/fabian/config.h
@@ -0,0 +1,42 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include "../../config.h"
5
6#ifdef AUDIO_ENABLE
7 #define STARTUP_SONG SONG(PLANCK_SOUND)
8 // #define STARTUP_SONG SONG(NO_SOUND)
9
10 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
11 SONG(COLEMAK_SOUND), \
12 SONG(DVORAK_SOUND) \
13 }
14#endif
15
16#define MUSIC_MASK (keycode != KC_NO)
17
18/*
19 * MIDI options
20 */
21
22/* Prevent use of disabled MIDI features in the keymap */
23//#define MIDI_ENABLE_STRICT 1
24
25/* enable basic MIDI features:
26 - MIDI notes can be sent when in Music mode is on
27*/
28
29#define MIDI_BASIC
30
31/* enable advanced MIDI features:
32 - MIDI notes can be added to the keymap
33 - Octave shift and transpose
34 - Virtual sustain, portamento, and modulation wheel
35 - etc.
36*/
37//#define MIDI_ADVANCED
38
39/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
40//#define MIDI_TONE_KEYCODE_OCTAVES 2
41
42#endif \ No newline at end of file
diff --git a/keyboards/planck/keymaps/fabian/keymap.c b/keyboards/planck/keymaps/fabian/keymap.c
new file mode 100644
index 000000000..39a423862
--- /dev/null
+++ b/keyboards/planck/keymaps/fabian/keymap.c
@@ -0,0 +1,272 @@
1/* Copyright 2015-2017 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "planck.h"
18#include "action_layer.h"
19
20extern keymap_config_t keymap_config;
21
22enum custom_layers {
23 _QWERTY,
24 _COLEMAK,
25 _DVORAK,
26 _LOWER,
27 _RAISE,
28 _PLOVER,
29 _ADJUST
30};
31
32enum custom_keycodes {
33 QWERTY = SAFE_RANGE,
34 COLEMAK,
35 DVORAK,
36 PLOVER,
37 LOWER,
38 RAISE,
39 BACKLIT,
40 EXT_PLV
41};
42
43#define XXXXXXX KC_NO
44#define _______ KC_TRNS
45
46#define CTL_ESC CTL_T(KC_ESC) // Tap for Escape, hold for Control
47#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
48#define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
49#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
50#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
51#define SFT_SPC SFT_T(KC_SPC) // Tap for Space, hold for Shift
52#define UMLAUT RALT(KC_U) // Combine Alt and U
53
54const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
55
56/* Qwerty
57 * ,-----------------------------------------------------------------------------------.
58 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
59 * |------+------+------+------+------+-------------+------+------+------+------+------|
60 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
61 * |------+------+------+------+------+------|------+------+------+------+------+------|
62 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
63 * |------+------+------+------+------+------+------+------+------+------+------+------|
64 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
65 * `-----------------------------------------------------------------------------------'
66 */
67[_QWERTY] = {
68 {HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
69 {CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
70 {SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT},
71 {KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL}
72},
73
74/* Colemak
75 * ,-----------------------------------------------------------------------------------.
76 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
77 * |------+------+------+------+------+-------------+------+------+------+------+------|
78 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
79 * |------+------+------+------+------+------|------+------+------+------+------+------|
80 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
81 * |------+------+------+------+------+------+------+------+------+------+------+------|
82 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
83 * `-----------------------------------------------------------------------------------'
84 */
85[_COLEMAK] = {
86 {HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
87 {CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
88 {SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT},
89 {KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL}
90},
91
92/* Dvorak
93 * ,-----------------------------------------------------------------------------------.
94 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
95 * |------+------+------+------+------+-------------+------+------+------+------+------|
96 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
97 * |------+------+------+------+------+------|------+------+------+------+------+------|
98 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
99 * |------+------+------+------+------+------+------+------+------+------+------+------|
100 * | Ctrl | Meh | Alt | GUI |Lower |Space | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
101 * `-----------------------------------------------------------------------------------'
102 */
103[_DVORAK] = {
104 {HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
105 {CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
106 {SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT},
107 {KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL}
108},
109
110/* Lower
111 * ,-----------------------------------------------------------------------------------.
112 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
113 * |------+------+------+------+------+-------------+------+------+------+------+------|
114 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
115 * |------+------+------+------+------+------|------+------+------+------+------+------|
116 * | | F7 | F8 | F9 | F10 | F11 | F12 | MS L | MS D |MS U | MS R |MS Btn|
117 * |------+------+------+------+------+------+------+------+------+------+------+------|
118 * | | | | | | | | | Next | Vol- | Vol+ | Play |
119 * `-----------------------------------------------------------------------------------'
120 */
121[_LOWER] = {
122 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
123 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
124 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1},
125 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
126},
127
128/* Raise
129 * ,-----------------------------------------------------------------------------------.
130 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
131 * |------+------+------+------+------+-------------+------+------+------+------+------|
132 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | } |
133 * |------+------+------+------+------+------|------+------+------+------+------+------|
134 * | | F7 | F8 | F9 | F10 | F11 | F12 | Left | Down | Up | Rght |MS_BN2|
135 * |------+------+------+------+------+------+------+------+------+------+------+------|
136 * | | | | | | | | | Next | Vol- | Vol+ | Play |
137 * `-----------------------------------------------------------------------------------'
138 */
139[_RAISE] = {
140 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
141 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
142 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BTN2},
143 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
144},
145
146/* Plover layer (http://opensteno.org)
147 * ,-----------------------------------------------------------------------------------.
148 * | # | # | # | # | # | # | # | # | # | # | # | # |
149 * |------+------+------+------+------+-------------+------+------+------+------+------|
150 * | | S | T | P | H | * | * | F | P | L | T | D |
151 * |------+------+------+------+------+------|------+------+------+------+------+------|
152 * | | S | K | W | R | * | * | R | B | G | S | Z |
153 * |------+------+------+------+------+------+------+------+------+------+------+------|
154 * | Exit | | | A | O | | | E | U | | | |
155 * `-----------------------------------------------------------------------------------'
156 */
157
158[_PLOVER] = {
159 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
160 {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
161 {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
162 {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
163},
164
165/* Adjust (Lower + Raise)
166 * ,-----------------------------------------------------------------------------------.
167 * | | Reset| | | | | | | | | Reset| Del |
168 * |------+------+------+------+------+-------------+------+------+------+------+------|
169 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
170 * |------+------+------+------+------+------|------+------+------+------+------+------|
171 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
172 * |------+------+------+------+------+------+------+------+------+------+------+------|
173 * | | | | | | | | | | | | |
174 * `-----------------------------------------------------------------------------------'
175 */
176[_ADJUST] = {
177 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL },
178 {_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______},
179 {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______},
180 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
181}
182
183
184};
185
186#ifdef AUDIO_ENABLE
187 float plover_song[][2] = SONG(PLOVER_SOUND);
188 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
189#endif
190
191bool process_record_user(uint16_t keycode, keyrecord_t *record) {
192 switch (keycode) {
193 case QWERTY:
194 if (record->event.pressed) {
195 set_single_persistent_default_layer(_QWERTY);
196 }
197 return false;
198 break;
199 case COLEMAK:
200 if (record->event.pressed) {
201 set_single_persistent_default_layer(_COLEMAK);
202 }
203 return false;
204 break;
205 case DVORAK:
206 if (record->event.pressed) {
207 set_single_persistent_default_layer(_DVORAK);
208 }
209 return false;
210 break;
211 case LOWER:
212 if (record->event.pressed) {
213 layer_on(_LOWER);
214 update_tri_layer(_LOWER, _RAISE, _ADJUST);
215 } else {
216 layer_off(_LOWER);
217 update_tri_layer(_LOWER, _RAISE, _ADJUST);
218 }
219 return false;
220 break;
221 case RAISE:
222 if (record->event.pressed) {
223 layer_on(_RAISE);
224 update_tri_layer(_LOWER, _RAISE, _ADJUST);
225 } else {
226 layer_off(_RAISE);
227 update_tri_layer(_LOWER, _RAISE, _ADJUST);
228 }
229 return false;
230 break;
231 case BACKLIT:
232 if (record->event.pressed) {
233 register_code(KC_RSFT);
234 #ifdef BACKLIGHT_ENABLE
235 backlight_step();
236 #endif
237 } else {
238 unregister_code(KC_RSFT);
239 }
240 return false;
241 break;
242 case PLOVER:
243 if (record->event.pressed) {
244 #ifdef AUDIO_ENABLE
245 stop_all_notes();
246 PLAY_SONG(plover_song);
247 #endif
248 layer_off(_RAISE);
249 layer_off(_LOWER);
250 layer_off(_ADJUST);
251 layer_on(_PLOVER);
252 if (!eeconfig_is_enabled()) {
253 eeconfig_init();
254 }
255 keymap_config.raw = eeconfig_read_keymap();
256 keymap_config.nkro = 1;
257 eeconfig_update_keymap(keymap_config.raw);
258 }
259 return false;
260 break;
261 case EXT_PLV:
262 if (record->event.pressed) {
263 #ifdef AUDIO_ENABLE
264 PLAY_SONG(plover_gb_song);
265 #endif
266 layer_off(_PLOVER);
267 }
268 return false;
269 break;
270 }
271 return true;
272}
diff --git a/keyboards/xd75/keymaps/fabian/keymap.c b/keyboards/xd75/keymaps/fabian/keymap.c
index 884602fde..3a330ca96 100644
--- a/keyboards/xd75/keymaps/fabian/keymap.c
+++ b/keyboards/xd75/keymaps/fabian/keymap.c
@@ -1,39 +1,56 @@
1/* Copyright 2015-2017 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
1#include QMK_KEYBOARD_H 17#include QMK_KEYBOARD_H
2#include "action_layer.h" 18#include "action_layer.h"
3#include "eeconfig.h" 19#include "eeconfig.h"
4 20
5extern keymap_config_t keymap_config; 21extern keymap_config_t keymap_config;
6 22
7// Each layer gets a name for readability, which is then used in the keymap matrix below. 23enum custom_layers {
8// The underscores don't mean anything - you can have a layer called STUFF or any other name. 24 _QWERTY,
9// Layer names don't all need to be of the same length, obviously, and you can also skip them 25 _COLEMAK,
10// entirely and just use numbers. 26 _DVORAK,
11#define _QWERTY 0 27 _LOWER,
12#define _COLEMAK 1 28 _RAISE,
13#define _DVORAK 2 29 _PLOVER,
14#define _LOWER 3 30 _ADJUST
15#define _RAISE 4 31};
16#define _ADJUST 16
17 32
18enum custom_keycodes { 33enum custom_keycodes {
19 QWERTY = SAFE_RANGE, 34 QWERTY = SAFE_RANGE,
20 COLEMAK, 35 COLEMAK,
21 DVORAK, 36 DVORAK,
37 PLOVER,
22 LOWER, 38 LOWER,
23 RAISE, 39 RAISE,
24 ADJUST, 40 BACKLIT,
41 EXT_PLV
25}; 42};
26 43
27// Fillers to make layering more clear
28#define _______ KC_TRNS
29#define XXXXXXX KC_NO 44#define XXXXXXX KC_NO
45#define _______ KC_TRNS
30 46
31// Custom
32#define CTL_ESC CTL_T(KC_ESC) // Tap for Escape, hold for Control 47#define CTL_ESC CTL_T(KC_ESC) // Tap for Escape, hold for Control
33#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
34#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
35#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) 48#define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
36// #define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) 49#define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
50#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
51#define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
52#define SFT_SPC SFT_T(KC_SPC) // Tap for Space, hold for Shift
53#define UMLAUT RALT(KC_U) // Combine Alt and U
37 54
38const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 55const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
39 56
@@ -47,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
47 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 64 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
48 * | Shift| Z | X | C | V | B | | | | N | M | , | . | / |Enter | 65 * | Shift| Z | X | C | V | B | | | | N | M | , | . | / |Enter |
49 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 66 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
50 * |Adjust| Ctrl | Alt | GUI |Lower |Space | | | | Bksp |Raise | GUI |AltGr | Ctrl |Adjust| 67 * | Ctrl | Meh | Alt | GUI |Lower |Space | | | | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
51 * `--------------------------------------------------------------------------------------------------------' 68 * `--------------------------------------------------------------------------------------------------------'
52 */ 69 */
53[_QWERTY] = { 70[_QWERTY] = {
@@ -55,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
55 { HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC }, 72 { HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
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 }, 73 { 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 { SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT }, 74 { SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT },
58 { ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST }, 75 { KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL }
59}, 76},
60 77
61/* Colemak 78/* Colemak
@@ -68,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
68 * |------+------+------+------+------+------+------+------+------|------+------+------+------+------+------| 85 * |------+------+------+------+------+------+------+------+------|------+------+------+------+------+------|
69 * | Shift| Z | X | C | V | B | | | | K | M | , | . | / |Enter | 86 * | Shift| Z | X | C | V | B | | | | K | M | , | . | / |Enter |
70 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 87 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
71 * |Adjust| Ctrl | Alt | GUI |Lower |Space | | | | Bksp |Raise | GUI |AltGr | Ctrl |Adjust| 88 * | Ctrl | Meh | Alt | GUI |Lower |Space | | | | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
72 * `--------------------------------------------------------------------------------------------------------' 89 * `--------------------------------------------------------------------------------------------------------'
73 */ 90 */
74[_COLEMAK] = { 91[_COLEMAK] = {
@@ -76,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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 }, 93 { 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 { CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT }, 94 { CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT },
78 { SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT }, 95 { SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT },
79 { ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST }, 96 { KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL }
80}, 97},
81 98
82/* Dvorak 99/* Dvorak
@@ -89,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
89 * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| 106 * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
90 * | Shift| ; | Q | J | K | X | | | | B | M | W | V | Z |Enter | 107 * | Shift| ; | Q | J | K | X | | | | B | M | W | V | Z |Enter |
91 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 108 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
92 * |Adjust| Ctrl | Alt | GUI |Lower |Space | | | | Bksp |Raise | GUI |AltGr | Ctrl |Adjust| 109 * | Ctrl | Meh | Alt | GUI |Lower |Space | | | | Tab |Raise | GUI |AltGr | Umlt | Ctrl |
93 * `--------------------------------------------------------------------------------------------------------' 110 * `--------------------------------------------------------------------------------------------------------'
94 */ 111 */
95[_DVORAK] = { 112[_DVORAK] = {
@@ -97,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
97 { HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, _______, _______, _______, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC }, 114 { HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, _______, _______, _______, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC },
98 { CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, _______, _______, _______, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH }, 115 { CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, _______, _______, _______, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH },
99 { SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, _______, _______, _______, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT }, 116 { SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, _______, _______, _______, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT },
100 { ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST }, 117 { KC_LCTL, MEH_GRV, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, HPR_TAB, RAISE, KC_RGUI, KC_RALT, UMLAUT, KC_RCTL }
101}, 118},
102 119
103/* Lower 120/* Lower
@@ -118,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
118 { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC }, 135 { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC },
119 { KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE }, 136 { KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE },
120 { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1 }, 137 { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1 },
121 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY }, 138 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY }
122}, 139},
123 140
124/* Raise 141/* Raise
@@ -139,68 +156,76 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
139 { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC }, 156 { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC },
140 { KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS }, 157 { KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS },
141 { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BTN2 }, 158 { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BTN2 },
142 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY }, 159 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY }
143}, 160},
144 161
145/* Adjust (Lower + Raise) 162/* Plover layer (http://opensteno.org)
146 * ,--------------------------------------------------------------------------------------------------------. 163 * ,--------------------------------------------------------------------------------------------------------.
147 * | | | | | | | | | | | | | | | | 164 * | | | | | | | | | | | | | | | |
148 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 165 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
149 * | |Reset | |Aud on|Audoff|AGnorm| | | |AGswap|Qwerty|Colemk|Dvorak|Reset | Del | 166 * | # | # | # | # | # | # | | | | # | # | # | # | # | # |
150 * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------| 167 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
151 * | | | | | | | | | | | | | | | | 168 * | | S | T | P | H | * | | | | * | F | P | L | T | D |
169 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
170 * | | S | K | W | R | * | | | | * | R | B | G | S | Z |
152 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 171 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
172 * | Exit | | | A | O | | | | | | E | U | | | |
173 * `--------------------------------------------------------------------------------------------------------'
174 */
175
176[_PLOVER] = {
177 { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
178 { KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
179 { XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC },
180 { XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
181 { EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX }
182},
183
184/* Adjust (Lower + Raise)
185 * ,--------------------------------------------------------------------------------------------------------.
153 * | | | | | | | | | | | | | | | | 186 * | | | | | | | | | | | | | | | |
154 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------| 187 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
188 * | | Reset| | | | | | | | | | | | Reset| Del |
189 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
190 * | | | |Aud on|Audoff|AGnorm| | | |AGswap|Qwerty|Colemk|Dvorak|Plover| |
191 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
192 * | |Voice-|Voice+|Mus on|Musoff|MIDIon| | | |MIDIof| | | | | |
193 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
155 * | | | | | | | | | | | | | | | | 194 * | | | | | | | | | | | | | | | |
156 * `--------------------------------------------------------------------------------------------------------' 195 * `--------------------------------------------------------------------------------------------------------'
157 */ 196 */
158[_ADJUST] = { 197
159 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, 198[_ADJUST] = {
160 { _______, RESET, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, DVORAK, RESET, KC_DEL },
161 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
162 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
163 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, 199 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
164}, 200 { _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL },
201 { _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______ },
202 { _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, _______, _______, _______, MI_OFF, _______, _______, _______, _______, _______ },
203 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }
204}
165}; 205};
166 206
167#ifdef AUDIO_ENABLE 207#ifdef AUDIO_ENABLE
168float tone_qwerty[][2] = SONG(QWERTY_SOUND); 208 float plover_song[][2] = SONG(PLOVER_SOUND);
169float tone_dvorak[][2] = SONG(DVORAK_SOUND); 209 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
170float tone_colemak[][2] = SONG(COLEMAK_SOUND);
171#endif 210#endif
172 211
173void persistent_default_layer_set(uint16_t default_layer) {
174 eeconfig_update_default_layer(default_layer);
175 default_layer_set(default_layer);
176}
177
178bool process_record_user(uint16_t keycode, keyrecord_t *record) { 212bool process_record_user(uint16_t keycode, keyrecord_t *record) {
179 switch (keycode) { 213 switch (keycode) {
180 case QWERTY: 214 case QWERTY:
181 if (record->event.pressed) { 215 if (record->event.pressed) {
182 #ifdef AUDIO_ENABLE 216 set_single_persistent_default_layer(_QWERTY);
183 PLAY_SONG(tone_qwerty);
184 #endif
185 persistent_default_layer_set(1UL<<_QWERTY);
186 } 217 }
187 return false; 218 return false;
188 break; 219 break;
189 case COLEMAK: 220 case COLEMAK:
190 if (record->event.pressed) { 221 if (record->event.pressed) {
191 #ifdef AUDIO_ENABLE 222 set_single_persistent_default_layer(_COLEMAK);
192 PLAY_SONG(tone_colemak);
193 #endif
194 persistent_default_layer_set(1UL<<_COLEMAK);
195 } 223 }
196 return false; 224 return false;
197 break; 225 break;
198 case DVORAK: 226 case DVORAK:
199 if (record->event.pressed) { 227 if (record->event.pressed) {
200 #ifdef AUDIO_ENABLE 228 set_single_persistent_default_layer(_DVORAK);
201 PLAY_SONG(tone_dvorak);
202 #endif
203 persistent_default_layer_set(1UL<<_DVORAK);
204 } 229 }
205 return false; 230 return false;
206 break; 231 break;
@@ -224,11 +249,42 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
224 } 249 }
225 return false; 250 return false;
226 break; 251 break;
227 case ADJUST: 252 case BACKLIT:
228 if (record->event.pressed) { 253 if (record->event.pressed) {
229 layer_on(_ADJUST); 254 register_code(KC_RSFT);
255 #ifdef BACKLIGHT_ENABLE
256 backlight_step();
257 #endif
230 } else { 258 } else {
259 unregister_code(KC_RSFT);
260 }
261 return false;
262 break;
263 case PLOVER:
264 if (record->event.pressed) {
265 #ifdef AUDIO_ENABLE
266 stop_all_notes();
267 PLAY_SONG(plover_song);
268 #endif
269 layer_off(_RAISE);
270 layer_off(_LOWER);
231 layer_off(_ADJUST); 271 layer_off(_ADJUST);
272 layer_on(_PLOVER);
273 if (!eeconfig_is_enabled()) {
274 eeconfig_init();
275 }
276 keymap_config.raw = eeconfig_read_keymap();
277 keymap_config.nkro = 1;
278 eeconfig_update_keymap(keymap_config.raw);
279 }
280 return false;
281 break;
282 case EXT_PLV:
283 if (record->event.pressed) {
284 #ifdef AUDIO_ENABLE
285 PLAY_SONG(plover_gb_song);
286 #endif
287 layer_off(_PLOVER);
232 } 288 }
233 return false; 289 return false;
234 break; 290 break;