]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/planck/keymaps/dlaroe/keymap.c
Adds support for Planck Rev 6 (#2666)
[qmk_firmware.git] / keyboards / planck / keymaps / dlaroe / keymap.c
1 // Can't Remember Sh*t Keymap for Planck
2 // http://www.keyboard-layout-editor.com/#/gists/c6c0ac051b2b118a34ef84ebadab54c7
3
4 #pragma message "You may need to add LAYOUT_planck_grid to your keymap layers - see default for an example"
5 #include "planck.h"
6 #include "action_layer.h"
7 #ifdef AUDIO_ENABLE
8   #include "audio.h"
9 #endif
10 #include "eeconfig.h"
11
12 extern keymap_config_t keymap_config;
13
14
15 enum planck_layers {
16   _QWERTY,
17   _ARROW,
18   _GAME,
19   _LOWER,
20   _RAISE,
21   _PLOVER,
22   _ADJUST
23 };
24
25
26 enum planck_keycodes {
27   QWERTY = SAFE_RANGE,
28   ARROW,
29   GAME,
30   LOWER,
31   RAISE,
32   BACKLIT,
33   PLOVER,
34   EXT_PLV
35 };
36
37 // Fillers to make layering more clear
38 #define _______ KC_TRNS
39 #define XXXXXXX KC_NO
40
41 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42
43 /* Qwerty
44  * ,-----------------------------------------------------------------------------------.
45  * | Esc  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
46  * |------+------+------+------+------+-------------+------+------+------+------+------|
47  * | Tab  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  '   |
48  * |------+------+------+------+------+------|------+------+------+------+------+------|
49  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
50  * |------+------+------+------+------+------+------+------+------+------+------+------|
51  * | Ctrl |  GUI |  \   | Alt  | Lower|    Space    |Raise |   [  |   -  |   =  |   ]  |
52  * `-----------------------------------------------------------------------------------'
53  */
54 [_QWERTY] = {
55   {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,  KC_T,    KC_Y,    KC_U,   KC_I,    KC_O,   KC_P,    KC_BSPC},
56   {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,  KC_G,    KC_H,    KC_J,   KC_K,    KC_L,   KC_SCLN, KC_QUOT},
57   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,  KC_B,    KC_N,    KC_M,   KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT) },
58   {KC_LCTL, KC_LGUI, KC_BSLS, KC_LALT, LOWER, KC_SPC,  KC_SPC,  RAISE,  LT(_LOWER, KC_LBRC), KC_MINS, KC_EQL, MT(MOD_RCTL, KC_RBRC)}
59 },
60
61  /* Arrow
62  * ,-----------------------------------------------------------------------------------.
63  * | Esc  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
64  * |------+------+------+------+------+-------------+------+------+------+------+------|
65  * | Tab  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  '   |
66  * |------+------+------+------+------+------|------+------+------+------+------+------|
67  * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
68  * |------+------+------+------+------+------+------+------+------+------+------+------|
69  * | Ctrl |  GUI |  \   | Alt  | Lower|    Space    |Raise | Left | Down |  Up  | Right|
70  * `-----------------------------------------------------------------------------------'
71  */
72 [_ARROW] = {
73   {KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,  KC_T,    KC_Y,    KC_U,   KC_I,    KC_O,   KC_P,    KC_BSPC},
74   {KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,  KC_G,    KC_H,    KC_J,   KC_K,    KC_L,   KC_SCLN, KC_QUOT},
75   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,  KC_B,    KC_N,    KC_M,   KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT) },
76   {KC_LCTL, KC_LGUI, KC_BSLS, KC_LALT, LOWER, KC_SPC,  KC_SPC,  RAISE,  KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT}
77 },
78
79
80 /* Game
81  * ,-----------------------------------------------------------------------------------.
82  * |   1  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
83  * |------+------+------+------+------+-------------+------+------+------+------+------|
84  * |Shift |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  '   |
85  * |------+------+------+------+------+------|------+------+------+------+------+------|
86  * | Ctrl |   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
87  * |------+------+------+------+------+------+------+------+------+------+------+------|
88  * | Alt  |   4  |   3  |   2  | Lower|    Space    |Raise | Left | Down |  Up  | Right|
89  * `-----------------------------------------------------------------------------------'
90  */
91 [_GAME] = {
92   {   KC_1,   KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,   KC_I,    KC_O,   KC_P,    KC_BSPC},
93   {KC_LSFT,   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,   KC_K,    KC_L,   KC_SCLN, KC_QUOT},
94   {KC_LCTL,   KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,   KC_COMM, KC_DOT, KC_SLSH, _______ },
95   {KC_LALT,   KC_4,    KC_3,    KC_2,    LOWER,  KC_SPC,  KC_SPC,   RAISE,  KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT}
96 },
97
98
99 /* Lower   (switched to # because KP# were weird in terminal emulators)
100  * ,-----------------------------------------------------------------------------------.
101  * |  Del |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
102  * |------+------+------+------+------+-------------+------+------+------+------+------|
103  * |  Tab |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   4  |   5  |   6  |   .  |  *   |
104  * |------+------+------+------+------+------+------+------+------+------+------+------|
105  * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |   1  |   2  |   3  |   /  |Enter |
106  * |------+------+------+------+------+------+------+------+------+------+------+------|
107  * |  Esc |      |      |      |      |      0      |      |      |      | KP_+ |      |
108  * `-----------------------------------------------------------------------------------'
109  */
110 [_LOWER] = {
111   { KC_DEL,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,  KC_8, KC_9,    KC_0,  _______},
112   { _______,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_4,  KC_5, KC_6,  KC_DOT, KC_ASTR},
113   {_______,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,   KC_F12,  KC_1,  KC_2, KC_3, KC_SLSH,  _______},
114   {KC_ESC, _______, _______, _______, _______,   KC_0,    KC_0, _______,  _______, _______, KC_PLUS, _______}
115 },
116
117 /* Raise
118  * ,-----------------------------------------------------------------------------------.
119  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |  Del |
120  * |------+------+------+------+------+-------------+------+------+------+------+------|
121  * | Del  | Wh Up|RightC| M-Up | LeftC|QWERTY| Left | Down |  Up  | Right|  |   |   `  |
122  * |------+------+------+------+------+------|------+------+------+------+------+------|
123  * |      | Wh Dn| M-L  | M-Dn | M-R  |      |   -  |   =  |   [  |   ]  |  \   |      |
124  * |------+------+------+------+------+------+------+------+------+------+------+------|
125  * |      | App  |      |      |      |     Ins     |      | Home | PGDN | PGUP |  End |
126  * `-----------------------------------------------------------------------------------'
127  */
128 [_RAISE] = {
129   {KC_TILD,   KC_EXLM,     KC_AT, KC_HASH,  KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN,   KC_RPRN, KC_DEL},
130   { KC_DEL,   KC_WH_U,   KC_BTN2, KC_MS_U, KC_BTN1, QWERTY, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT,   KC_PIPE,  KC_GRV},
131   {_______,   KC_WH_D,   KC_MS_L, KC_MS_D, KC_MS_R, _______,  KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLASH, _______},
132   {_______,   KC_APP,   _______, _______, _______, KC_INS, KC_INS, _______, KC_HOME, KC_PGDN,   KC_PGUP,  KC_END}
133 },
134
135 /* Plover layer (http://opensteno.org)
136  * ,-----------------------------------------------------------------------------------.
137  * |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |   #  |
138  * |------+------+------+------+------+-------------+------+------+------+------+------|
139  * |      |   S  |   T  |   P  |   H  |   *  |   *  |   F  |   P  |   L  |   T  |   D  |
140  * |------+------+------+------+------+------|------+------+------+------+------+------|
141  * |      |   S  |   K  |   W  |   R  |   *  |   *  |   R  |   B  |   G  |   S  |   Z  |
142  * |------+------+------+------+------+------+------+------+------+------+------+------|
143  * | Exit |      |      |   A  |   O  |             |   E  |   U  |      |      |      |
144  * `-----------------------------------------------------------------------------------'
145  */
146
147 [_PLOVER] = {
148   {KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1,    KC_1   },
149   {XXXXXXX, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC},
150   {XXXXXXX, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
151   {EXT_PLV, XXXXXXX, XXXXXXX, KC_C,    KC_V,    XXXXXXX, XXXXXXX, KC_N,    KC_M,    XXXXXXX, XXXXXXX, XXXXXXX}
152 },
153
154 /* Adjust (Lower + Raise)
155  * ,-----------------------------------------------------------------------------------.
156  * | C-A-I|Qwerty|      |      |Reset |Macro0|      |      |      |      |PLOVER|C-A-D |
157  * |------+------+------+------+------+-------------+------+------+------+------+------|
158  * | Caps | Arrow|      |Aud on|Audoff| Game |AGswap|AGnorm| PrtSc|ScrLck| Break|      |
159  * |------+------+------+------+------+------|------+------+------+------+------+------|
160  * |      |Voice-|Voice+|Mus on|Musoff| Prev | Next | Mute | VolDn| VolUp|      |      |
161  * |------+------+------+------+------+------+------+------+------+------+------+------|
162  * | Brite|      |      |      |      | Play/Pause  |      | BL_T |BL_DEC|BL_INC|BL_ST |
163  * `-----------------------------------------------------------------------------------'
164  */
165 [_ADJUST] = {
166   {LALT(LCTL(KC_INS)), QWERTY,   _______, _______, RESET, M(0),  _______, _______, _______, _______, PLOVER, LALT(LCTL(KC_DEL))},
167   {KC_CAPS, ARROW, _______, AU_ON,   AU_OFF,  GAME, AG_SWAP, AG_NORM,  KC_PSCR, KC_SLCK, KC_PAUS,  _______},
168   {_______, MUV_DE,  MUV_IN,  MU_ON,   MU_OFF,  KC_MPRV, KC_MNXT,  KC_MUTE, KC_VOLD, KC_VOLU, _______, _______},
169   {BACKLIT, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, BL_TOGG, BL_DEC , BL_INC , BL_STEP}
170 }
171
172
173 };
174
175 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is.
176 {
177   switch(id) {
178     case 0: // this would trigger when you hit a key mapped as M(0)
179       if (record->event.pressed) {
180         return MACRO( D(LSFT), T(LEFT), U(LSFT), D(LCTL), T(X), U(LCTL), T(RIGHT), D(LCTL), T(V), U(LCTL), T(LEFT),  END  ); // this swaps the characters on either side of the cursor when the macro executes
181       }
182       break;
183   }
184   return MACRO_NONE;
185 };
186
187 #ifdef AUDIO_ENABLE
188   float plover_song[][2]     = SONG(PLOVER_SOUND);
189   float plover_gb_song[][2]  = SONG(PLOVER_GOODBYE_SOUND);
190 #endif
191
192 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
193   switch (keycode) {
194     case QWERTY:
195       if (record->event.pressed) {
196         print("mode just switched to qwerty and this is a huge string\n");
197         set_single_persistent_default_layer(_QWERTY);
198       }
199       return false;
200       break;
201     case ARROW:
202       if (record->event.pressed) {
203         set_single_persistent_default_layer(_ARROW);
204       }
205       return false;
206       break;
207     case GAME:
208       if (record->event.pressed) {
209         set_single_persistent_default_layer(_GAME);
210       }
211       return false;
212       break;
213     case LOWER:
214       if (record->event.pressed) {
215         layer_on(_LOWER);
216         update_tri_layer(_LOWER, _RAISE, _ADJUST);
217       } else {
218         layer_off(_LOWER);
219         update_tri_layer(_LOWER, _RAISE, _ADJUST);
220       }
221       return false;
222       break;
223     case RAISE:
224       if (record->event.pressed) {
225         layer_on(_RAISE);
226         update_tri_layer(_LOWER, _RAISE, _ADJUST);
227       } else {
228         layer_off(_RAISE);
229         update_tri_layer(_LOWER, _RAISE, _ADJUST);
230       }
231       return false;
232       break;
233     case BACKLIT:
234       if (record->event.pressed) {
235         register_code(KC_RSFT);
236         #ifdef BACKLIGHT_ENABLE
237           backlight_step();
238         #endif
239       } else {
240         unregister_code(KC_RSFT);
241       }
242       return false;
243       break;
244     case PLOVER:
245       if (record->event.pressed) {
246         #ifdef AUDIO_ENABLE
247           stop_all_notes();
248           PLAY_SONG(plover_song);
249         #endif
250         layer_off(_RAISE);
251         layer_off(_LOWER);
252         layer_off(_ADJUST);
253         layer_on(_PLOVER);
254         if (!eeconfig_is_enabled()) {
255             eeconfig_init();
256         }
257         keymap_config.raw = eeconfig_read_keymap();
258         keymap_config.nkro = 1;
259         eeconfig_update_keymap(keymap_config.raw);
260       }
261       return false;
262       break;
263     case EXT_PLV:
264       if (record->event.pressed) {
265         #ifdef AUDIO_ENABLE
266           PLAY_SONG(plover_gb_song);
267         #endif
268         layer_off(_PLOVER);
269       }
270       return false;
271       break;
272   }
273   return true;
274 }