Commit | Line | Data |
---|---|---|
03c9deb7 D |
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 | ||
26eef35f | 17 | #include QMK_KEYBOARD_H |
21a277bd | 18 | #include "keymap_steno.h" |
03c9deb7 D |
19 | |
20 | // Custom Keycodes and Combinations Used | |
21 | #define DEL_SHF SFT_T(KC_DEL) | |
22 | #define QUAKE LCTL(KC_GRV) | |
23 | ||
24 | #define WKSP_L LALT(LCTL(KC_LEFT)) | |
25 | #define WKSP_D LALT(LCTL(KC_DOWN)) | |
26 | #define WKSP_U LALT(LCTL(KC_UP)) | |
27 | #define WKSP_R LALT(LCTL(KC_RGHT)) | |
28 | ||
29 | extern keymap_config_t keymap_config; | |
30 | ||
31 | enum planck_layers { | |
32 | _BASE, | |
33 | _LOWER, | |
34 | _RAISE, | |
35 | _FUNC, | |
21a277bd D |
36 | _PLOVER, |
37 | _ADJUST, | |
38 | _MOUSE | |
03c9deb7 D |
39 | }; |
40 | ||
41 | enum planck_keycodes { | |
42 | BASE = SAFE_RANGE, | |
21a277bd | 43 | PLOVER, |
03c9deb7 D |
44 | LOWER, |
45 | RAISE, | |
46 | FUNC, | |
47 | MOUSE, | |
21a277bd D |
48 | ADJUST, |
49 | EXT_PLV | |
03c9deb7 D |
50 | }; |
51 | ||
52 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
53 | ||
54 | /* Base | |
55 | * ,-----------------------------------------------------------------------------------. | |
56 | * | Tab | " ' | < , | > . | P | Y | F | G | C | R | L | ? / | | |
57 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
58 | * | Esc | A | O | E | U | I | D | H | T | N | S | _ - | | |
59 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
60 | * |Del/Sf| : ; | Q | J | K | X | B | M | W | V | Z | Bspc | | |
61 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
21a277bd | 62 | * | Ctrl |Plover| GUI | Alt |Lower |Shift |Space |Raise | Alt | GUI | Fn |Enter | |
03c9deb7 D |
63 | * `-----------------------------------------------------------------------------------' |
64 | */ | |
26eef35f JY |
65 | [_BASE] = LAYOUT_planck_grid( |
66 | KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, | |
67 | KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, | |
68 | DEL_SHF, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSPC, | |
69 | KC_LCTL, PLOVER, KC_LGUI, KC_LALT, LOWER, KC_LSFT, KC_SPC, RAISE, KC_RALT, KC_RGUI, FUNC, KC_ENT | |
70 | ), | |
03c9deb7 D |
71 | |
72 | /* Lower | |
73 | * ,-----------------------------------------------------------------------------------. | |
74 | * | | | | | | | | Home |PgDwn | PgUp | End | | | |
75 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
76 | * | |PrScr | Menu | | | | | Left | Down | Up |Right | | | |
77 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
78 | * | |CapsLk|NumLck| Ins | | | |WkLeft|WkDown| WkUp |WkRigh| | | |
79 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
80 | * | | | | | | | |Raise | | | | | | |
81 | * `-----------------------------------------------------------------------------------' | |
82 | */ | |
26eef35f JY |
83 | [_LOWER] = LAYOUT_planck_grid( |
84 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, | |
85 | XXXXXXX, KC_PSCR, KC_MENU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, | |
86 | XXXXXXX, KC_CAPS, KC_LNUM, KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, WKSP_L, WKSP_D, WKSP_U, WKSP_R, XXXXXXX, | |
87 | _______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX | |
88 | ), | |
03c9deb7 D |
89 | |
90 | /* Raise | |
91 | * ,-----------------------------------------------------------------------------------. | |
92 | * |Quake | ` | ~ | \ | | | ( | ) | 7 | 8 | 9 | / | = | | |
93 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
94 | * | | ! | @ | # | $ | { | } | 4 | 5 | 6 | * | + | | |
95 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
96 | * | | % | ^ | & | * | [ | ] | 1 | 2 | 3 | - |Bkspc | | |
97 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
98 | * | | | | |Lower | < | > | | 0 | . | , | | | |
99 | * `-----------------------------------------------------------------------------------' | |
100 | */ | |
26eef35f JY |
101 | [_RAISE] = LAYOUT_planck_grid( |
102 | QUAKE, KC_GRV, KC_TILD, KC_BSLS, KC_PIPE, KC_LPRN, KC_RPRN, KC_7, KC_8, KC_9, KC_SLSH, KC_EQL, | |
103 | XXXXXXX, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_4, KC_5, KC_6, KC_ASTR, KC_PLUS, | |
104 | XXXXXXX, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_1, KC_2, KC_3, KC_MINS, KC_BSPC, | |
105 | _______, XXXXXXX, _______, _______, _______, KC_LABK, KC_RABK, _______, KC_0, KC_DOT, KC_COMM, XXXXXXX | |
106 | ), | |
03c9deb7 D |
107 | |
108 | /* Func | |
109 | * ,-----------------------------------------------------------------------------------. | |
110 | * | |Sleep |Prev-W|Ply/Ps|Next-W| | | F9 | F10 | F11 | F12 | | | |
111 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
112 | * | | Wake | Mute | Vol- | Vol+ | | | F5 | F6 | F7 | F8 | | | |
113 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
114 | * | |Power |Prev-M|Ply/Ps|Next-M| | | F1 | F2 | F3 | F4 | | | |
115 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
116 | * | | | | | | | | | | | | | | |
117 | * `-----------------------------------------------------------------------------------' | |
118 | */ | |
26eef35f JY |
119 | [_FUNC] = LAYOUT_planck_grid( |
120 | XXXXXXX, KC_SLEP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, | |
121 | XXXXXXX, KC_WAKE, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, | |
122 | XXXXXXX, KC_PWR, KC_MRWD, KC_MPLY, KC_MFFD, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, | |
123 | _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX | |
124 | ), | |
03c9deb7 D |
125 | |
126 | /* Mouse (Not Reachable on Planck) | |
127 | * ,-----------------------------------------------------------------------------------. | |
128 | * | | | | | | | | | | | | | | |
129 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
130 | * | | |Click1|Click3|Click2| | |MouseL|MouseD|MouseU|MouseR| | | |
131 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
132 | * | | |Accel0|Accel1|Accel2| | |ScrllL|ScrllD|ScrllU|ScrllR| | | |
133 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
134 | * | | | | | | | | | | | | | | |
135 | * `-----------------------------------------------------------------------------------' | |
136 | */ | |
26eef35f JY |
137 | [_MOUSE] = LAYOUT_planck_grid( |
138 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | |
139 | XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, | |
140 | XXXXXXX, XXXXXXX, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, XXXXXXX, | |
141 | _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX | |
142 | ), | |
03c9deb7 | 143 | |
21a277bd D |
144 | /* Plover layer (http://opensteno.org) |
145 | * ,-----------------------------------------------------------------------------------. | |
146 | * | # | # | # | # | # | # | # | # | # | # | # | # | | |
147 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
148 | * | FN | S | T | P | H | * | * | F | P | L | T | D | | |
149 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
150 | * | | S | K | W | R | * | * | R | B | G | S | Z | | |
151 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
11773a55 | 152 | * | Exit | | | A | O | | | E | U | PWR | RES1 | RES2 | |
21a277bd D |
153 | * `-----------------------------------------------------------------------------------' |
154 | */ | |
155 | ||
26eef35f JY |
156 | [_PLOVER] = LAYOUT_planck_grid( |
157 | STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC , | |
158 | STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR , | |
159 | XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR , | |
160 | EXT_PLV, XXXXXXX, XXXXXXX, STN_A, STN_O, XXXXXXX, XXXXXXX, STN_E, STN_U, STN_PWR, STN_RE1, STN_RE2 | |
161 | ), | |
21a277bd | 162 | |
03c9deb7 D |
163 | /* Adjust (Lower + Raise) |
164 | * ,-----------------------------------------------------------------------------------. | |
165 | * | | Reset| | | | | | | | | | Del | | |
166 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
11773a55 | 167 | * | | | |Aud on|Audoff|AGnorm|AGswap|RGBTog|RGBMod| | | | |
03c9deb7 | 168 | * |------+------+------+------+------+------|------+------+------+------+------+------| |
11773a55 | 169 | * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|Light-|Light+| | | | |
03c9deb7 | 170 | * |------+------+------+------+------+------+------+------+------+------+------+------| |
11773a55 | 171 | * | | | | | | | | | | | | | |
03c9deb7 D |
172 | * `-----------------------------------------------------------------------------------' |
173 | */ | |
26eef35f JY |
174 | [_ADJUST] = LAYOUT_planck_grid( |
175 | _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , | |
176 | _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, RGB_TOG, RGB_MOD, _______, _______, _______, | |
177 | _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, RGB_VAD, RGB_VAI, _______, _______, _______, | |
178 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |
179 | ) | |
03c9deb7 D |
180 | |
181 | }; | |
182 | ||
21a277bd D |
183 | #ifdef AUDIO_ENABLE |
184 | float plover_song[][2] = SONG(PLOVER_SOUND); | |
185 | float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); | |
186 | #endif | |
187 | ||
03c9deb7 D |
188 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
189 | switch (keycode) { | |
190 | case LOWER: | |
191 | if (record->event.pressed) { | |
192 | layer_on(_LOWER); | |
193 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
194 | } else { | |
195 | layer_off(_LOWER); | |
196 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
197 | } | |
198 | return false; | |
199 | break; | |
200 | case RAISE: | |
201 | if (record->event.pressed) { | |
202 | layer_on(_RAISE); | |
203 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
204 | } else { | |
205 | layer_off(_RAISE); | |
206 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
207 | } | |
208 | return false; | |
209 | break; | |
210 | case FUNC: | |
211 | if (record->event.pressed) { | |
212 | layer_on(_FUNC); | |
213 | } else { | |
214 | layer_off(_FUNC); | |
215 | } | |
216 | return false; | |
217 | break; | |
21a277bd D |
218 | case PLOVER: |
219 | if (!record->event.pressed) { | |
220 | #ifdef AUDIO_ENABLE | |
221 | stop_all_notes(); | |
222 | PLAY_SONG(plover_song); | |
223 | #endif | |
224 | layer_on(_PLOVER); | |
225 | } | |
226 | return false; | |
227 | break; | |
228 | case EXT_PLV: | |
229 | if (record->event.pressed) { | |
230 | #ifdef AUDIO_ENABLE | |
231 | PLAY_SONG(plover_gb_song); | |
232 | #endif | |
233 | layer_off(_PLOVER); | |
234 | } | |
235 | return false; | |
236 | break; | |
03c9deb7 D |
237 | case MOUSE: |
238 | if (record->event.pressed) { | |
239 | layer_on(_MOUSE); | |
240 | } else { | |
241 | layer_off(_MOUSE); | |
242 | } | |
243 | return false; | |
244 | break; | |
245 | } | |
246 | return true; | |
247 | } | |
21a277bd D |
248 | |
249 | void matrix_init_user() { | |
250 | steno_set_mode(STENO_MODE_GEMINI); | |
251 | } |