aboutsummaryrefslogtreecommitdiff
path: root/keyboards/lets_split/keymaps/fabian/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/lets_split/keymaps/fabian/keymap.c')
-rw-r--r--keyboards/lets_split/keymaps/fabian/keymap.c159
1 files changed, 105 insertions, 54 deletions
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;