aboutsummaryrefslogtreecommitdiff
path: root/keyboards/ergodox_ez/keymaps/algernon/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ergodox_ez/keymaps/algernon/keymap.c')
-rw-r--r--keyboards/ergodox_ez/keymaps/algernon/keymap.c486
1 files changed, 209 insertions, 277 deletions
diff --git a/keyboards/ergodox_ez/keymaps/algernon/keymap.c b/keyboards/ergodox_ez/keymaps/algernon/keymap.c
index 4eea6874c..fdc63a813 100644
--- a/keyboards/ergodox_ez/keymaps/algernon/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/algernon/keymap.c
@@ -15,13 +15,14 @@
15 15
16enum { 16enum {
17 BASE = 0, 17 BASE = 0,
18 EXPRM,
19 ARRW,
18 APPSEL, 20 APPSEL,
19 HUN, 21 HUN,
20 EMACS, 22 NMDIA,
21 OHLFT, 23 OHLFT,
22 OHRGT, 24 OHRGT,
23 PLVR, 25 PLVR,
24 EXPRM
25}; 26};
26 27
27/* Macros */ 28/* Macros */
@@ -33,7 +34,6 @@ enum {
33 A_PLVR, 34 A_PLVR,
34 A_ESC, 35 A_ESC,
35 A_MPN, 36 A_MPN,
36 A_COLN,
37 37
38 // Function / number keys 38 // Function / number keys
39 KF_1, // 1, F1 39 KF_1, // 1, F1
@@ -61,17 +61,6 @@ enum {
61 A_MDL, 61 A_MDL,
62 A_MDR, 62 A_MDR,
63 63
64 // Emacs layer keys
65 AE_VIS, // Visual mode
66 AE_PSTDEL, // Paste/Delete
67 AE_CPYC, // Copy/Cut
68 AE_EMACS, // Emacs copy & paste mode
69 AE_TERM, // Terminal copy & paste mode
70 AE_OTHER, // Other copy & paste mode
71 AE_INS, // Insert mode
72 AE_OVR, // Overwrite mode
73 AE_APPND, // Append
74
75 // Hungarian layer keys 64 // Hungarian layer keys
76 HU_AA, // Á 65 HU_AA, // Á
77 HU_OO, // Ó 66 HU_OO, // Ó
@@ -102,11 +91,13 @@ enum {
102 F_CTRL 91 F_CTRL
103}; 92};
104 93
105/* States & timers */ 94/* Custom keycodes */
95
96enum {
97 CT_CLN = 0x7101
98};
106 99
107uint8_t m_visual_state = 0; 100/* States & timers */
108static uint16_t m_cutdel_timer;
109static uint16_t m_copypaste_timer;
110 101
111uint16_t gui_timer = 0; 102uint16_t gui_timer = 0;
112 103
@@ -123,13 +114,8 @@ uint16_t oh_left_blink_timer = 0;
123uint8_t oh_right_blink = 0; 114uint8_t oh_right_blink = 0;
124uint16_t oh_right_blink_timer = 0; 115uint16_t oh_right_blink_timer = 0;
125 116
126enum { 117uint8_t ct_cln_count = 0;
127 CP_EMACS = 0, 118uint16_t ct_cln_timer = 0;
128 CP_TERM = 1,
129 CP_OTHER = 2,
130};
131
132uint8_t cp_mode = CP_EMACS;
133 119
134/* The Keymap */ 120/* The Keymap */
135 121
@@ -138,18 +124,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
138/* Keymap 0: Base Layer 124/* Keymap 0: Base Layer
139 * 125 *
140 * ,-----------------------------------------------------. ,-----------------------------------------------------. 126 * ,-----------------------------------------------------. ,-----------------------------------------------------.
141 * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | 127 * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | 1HND | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
142 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| 128 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
143 * | Next/Prev | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | = | 129 * | Next/Prev | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | \ |
144 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| 130 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
145 * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | \ | 131 * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | = |
146 * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------| 132 * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
147 * | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop | 133 * | Play/Pause| / | Q | J | K | X | | | | B | M | W | V | Z | Stop |
148 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' 134 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
149 * | Home | End | Down | Up | : | | - | Left | Right| PgUp | PgDn | 135 * | | | Left | Up | : | | - | Down | Rght | | |
150 * `-----------------------------------' `-----------------------------------' 136 * `-----------------------------------' `-----------------------------------'
151 * ,-------------. ,-------------. 137 * ,-------------. ,-------------.
152 * | LAlt | GUI | |EMACS | 1HND | 138 * | LAlt | GUI | | MDIA | ARRW |
153 * ,------|------|------| |------+------+------. 139 * ,------|------|------| |------+------+------.
154 * | | | Ctrl | | LEAD | | | 140 * | | | Ctrl | | LEAD | | |
155 * |Backsp|LShift|------| |------| Enter| Space| 141 * |Backsp|LShift|------| |------| Enter| Space|
@@ -162,25 +148,116 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
162,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC 148,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
163,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I 149,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
164,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN 150,KC_MPLY ,KC_SLSH ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN
165,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,M(A_COLN) 151,KC_NO ,KC_NO ,KC_LEFT ,KC_UP ,CT_CLN
166 152
167 ,F(F_ALT),F(F_GUI) 153 ,F(F_ALT),F(F_GUI)
168 ,F(F_CTRL) 154 ,F(F_CTRL)
169 ,KC_BSPC,F(F_SFT),M(A_ESC) 155 ,KC_BSPC,F(F_SFT),M(A_ESC)
170 156
171 // right hand 157 // right hand
172 ,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11 158 ,M(OH_LEFT),M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
173 ,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_EQL 159 ,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS
174 ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS 160 ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL
175 ,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP 161 ,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP
176 ,KC_MINS,KC_LEFT,KC_RGHT ,KC_PGUP ,KC_PGDN 162 ,KC_MINS,KC_DOWN,KC_RGHT ,KC_NO ,KC_NO
177 163
178 ,OSL(EMACS),M(OH_LEFT) 164 ,OSL(NMDIA),OSL(ARRW)
179 ,KC_LEAD 165 ,KC_LEAD
180 ,F(F_HUN),KC_ENT ,KC_SPC 166 ,F(F_HUN) ,KC_ENT ,KC_SPC
181 ), 167 ),
182 168
183/* Keymap 1: Application select layer 169/* Keymap 1: Experimental layer
170 *
171 * ,-----------------------------------------------------. ,-----------------------------------------------------.
172 * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | 1HND | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
173 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
174 * | Next/Prev | ' | , | . | P | Y | [ | | ] | L | F | C | R | J | = |
175 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
176 * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
177 * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
178 * | Play/Pause| Z | G | V | K | X | | | | Q | M | W | B | / | Stop |
179 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
180 * | | | Left | Up | : | | - | Down | Rght | | |
181 * `-----------------------------------' `-----------------------------------'
182 * ,-------------. ,-------------.
183 * | LAlt | GUI | | MDIA | ARRW |
184 * ,------|------|------| |------+------+------.
185 * | | | Ctrl | | LEAD | | |
186 * |Backsp|LShift|------| |------| Enter| Space|
187 * | | | ESC | | HUN | | |
188 * `--------------------' `--------------------'
189 */
190[EXPRM] = KEYMAP(
191// left hand
192 KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
193,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
194,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
195,KC_MPLY ,KC_Z ,KC_G ,KC_V ,KC_K ,KC_X ,KC_LPRN
196,KC_NO ,KC_NO ,KC_LEFT ,KC_UP ,CT_CLN
197
198 ,F(F_ALT),F(F_GUI)
199 ,F(F_CTRL)
200 ,KC_BSPC,F(F_SFT),M(A_ESC)
201
202 // right hand
203 ,M(OH_LEFT),M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
204 ,KC_RBRC ,KC_L ,KC_F ,KC_C ,KC_R ,KC_J ,KC_BSLS
205 ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL
206 ,KC_RPRN ,KC_Q ,KC_M ,KC_W ,KC_B ,KC_SLSH ,KC_MSTP
207 ,KC_MINS,KC_DOWN,KC_RGHT ,KC_NO ,KC_NO
208
209 ,OSL(NMDIA),OSL(ARRW)
210 ,KC_LEAD
211 ,F(F_HUN) ,KC_ENT ,KC_SPC
212 ),
213
214/* Keymap 2: Arrow layer
215 *
216 * ,-----------------------------------------------------. ,-----------------------------------------------------.
217 * | | | | | | | | | | | | | | | |
218 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
219 * | | | | | | | | | | | | | | | |
220 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
221 * | | | | | | |------| |------| | | | | | |
222 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
223 * | | | | | | | | | | | | | | | |
224 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
225 * | | | Home | PgUp | | | | PgDn | End | | |
226 * `----------------------------------' `----------------------------------'
227 * ,-------------. ,-------------.
228 * | | | | | |
229 * ,------|------|------| |------+------+------.
230 * | | | | | | | |
231 * | | |------| |------| | |
232 * | | | | | | | |
233 * `--------------------' `--------------------'
234 */
235
236[ARRW] = KEYMAP(
237// left hand
238 KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
239,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
240,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
241,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
242,KC_TRNS ,KC_TRNS ,KC_HOME ,KC_PGUP ,KC_TRNS
243
244 ,KC_TRNS ,KC_TRNS
245 ,KC_TRNS
246 ,KC_TRNS ,KC_TRNS ,KC_TRNS
247
248 // right hand
249 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
250 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
251 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
252 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
253 ,KC_TRNS ,KC_PGDN ,KC_END ,KC_TRNS ,KC_TRNS
254
255 ,KC_TRNS ,KC_TRNS
256 ,KC_TRNS
257 ,KC_TRNS ,KC_TRNS ,KC_TRNS
258 ),
259
260/* Keymap 3: Application select layer
184 * 261 *
185 * ,-----------------------------------------------------. ,-----------------------------------------------------. 262 * ,-----------------------------------------------------. ,-----------------------------------------------------.
186 * | |Music |Slack |Emacs |Term |Chrome| | | | | | | | | | 263 * | |Music |Slack |Emacs |Term |Chrome| | | | | | | | | |
@@ -227,7 +304,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
227 ), 304 ),
228 305
229 306
230/* Keymap 2: Hungarian Layer 307/* Keymap 4: Hungarian Layer
231 * 308 *
232 * ,-----------------------------------------------------. ,-----------------------------------------------------. 309 * ,-----------------------------------------------------. ,-----------------------------------------------------.
233 * | | | | | | | | | | | | | | | | 310 * | | | | | | | | | | | | | | | |
@@ -251,73 +328,73 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
251 328
252[HUN] = KEYMAP( 329[HUN] = KEYMAP(
253// left hand 330// left hand
254 KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS 331 KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
255,KC_NO ,KC_NO ,M(HU_OEE),KC_NO ,M(HU_UEE),KC_NO ,KC_NO 332,KC_NO ,KC_NO ,M(HU_OEE),KC_NO ,M(HU_UEE),KC_NO ,KC_NO
256,KC_NO ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II) 333,KC_NO ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II)
257,KC_TRNS ,KC_NO ,M(HU_OE) ,KC_NO ,M(HU_UE) ,KC_NO ,KC_NO 334,KC_NO ,KC_NO ,M(HU_OE) ,KC_NO ,M(HU_UE) ,KC_NO ,KC_NO
258,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_NO 335,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
259 336
260 ,KC_TRNS ,KC_TRNS 337 ,KC_NO ,KC_NO
261 ,KC_TRNS 338 ,KC_NO
262 ,KC_TRNS ,KC_TRNS ,KC_TRNS 339 ,KC_NO ,KC_TRNS ,KC_TRNS
263 340
264 // right hand 341 // right hand
265 ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 342 ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
266 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 343 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
267 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 344 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
268 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 345 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
269 ,KC_NO ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS 346 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
270 347
271 ,KC_NO ,KC_NO 348 ,KC_NO ,KC_NO
272 ,KC_NO 349 ,KC_NO
273 ,F(F_BSE),KC_TRNS ,KC_TRNS 350 ,F(F_BSE),KC_TRNS ,KC_TRNS
274 ), 351 ),
275 352
276/* Keymap 3: Spacemacs layer 353/* Keymap 5: Navigation & Media layer
277 * 354 *
278 * ,-----------------------------------------------------. ,-----------------------------------------------------. 355 * ,-----------------------------------------------------. ,-----------------------------------------------------.
279 * | MS Slow | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |ScrLCK| |ScrLCK| 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 | 356 * | MS Slow | | | | | |ScrLCK| |ScrLCK| | | | | | |
280 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| 357 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
281 * | MS Normal | | Home | Up | PgUp | |Visual| |Scroll| $ |MsUpL | MsUp |MsUpR | R |PrintScreen| 358 * | MS Normal | | Home | Up | PgUp | | | |Scroll| |MsUpL | MsUp |MsUpR | |PrintScreen|
282 * |-----------+------+------+------+------+------| Mode | | Up |------+------+------+------+------+-----------| 359 * |-----------+------+------+------+------+------| | | Up |------+------+------+------+------+-----------|
283 * | MS Fast |APPEND| Left | Down | Right| INS |------| |------| D |MsLeft| MsDn |MsRght| | | 360 * | MS Fast | | Left | Down | Right| |------| |------| |MsLeft| MsDn |MsRght| | |
284 * |-----------+------+------+------+------+------| Cut | |Scroll|------+------+------+------+------+-----------| 361 * |-----------+------+------+------+------+------| | |Scroll|------+------+------+------+------+-----------|
285 * | Play/Pause| | End | Down | PgDn | X | Copy | | Down | |MsDnL | W |MsDnR | | Stop | 362 * | Play/Pause| | End | Down | PgDn | | | | Down | |MsDnL | MsDn |MsDnR | | Stop |
286 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' 363 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
287 * |EmacsM|TermM |OtherM| | | |Vol Up|Vol Dn| Mute | | | 364 * | | | | | | | | | | | |
288 * `----------------------------------' `----------------------------------' 365 * `----------------------------------' `----------------------------------'
289 * ,-------------. ,-------------. 366 * ,-------------. ,-------------.
290 * | Alt | GUI | | BASE | MClk | 367 * | Mute | VlUp | | BASE | MClk |
291 * ,------|------|------| |------+------+------. 368 * ,------|------|------| |------+------+------.
292 * |Delete| | Ctrl | | Prev |Left |Right | 369 * | | | VlDn | | Prev |Left |Right |
293 * | |LShift|------| |------| Click| Click| 370 * | SPC | Enter|------| |------| Click| Click|
294 * |Paste | | ESC | | Next | | | 371 * | | | ESC | | Next | | |
295 * `--------------------' `--------------------' 372 * `--------------------' `--------------------'
296 */ 373 */
297[EMACS] = KEYMAP( 374[NMDIA] = KEYMAP(
298// left hand 375// left hand
299 KC_ACL0 ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,LGUI(KC_L) 376 KC_ACL0 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LGUI(KC_L)
300,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,M(AE_VIS) 377,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_NO
301,KC_ACL2 ,M(AE_APPND) ,KC_LEFT ,KC_DOWN ,KC_RIGHT,M(AE_INS) 378,KC_ACL2 ,KC_NO ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO
302,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_X ,M(AE_CPYC) 379,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_NO
303,M(AE_EMACS),M(AE_TERM) ,M(AE_OTHER),KC_NO ,KC_NO 380,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
304 ,KC_TRNS ,KC_TRNS 381 ,KC_MUTE ,KC_VOLU
305 ,KC_TRNS 382 ,KC_VOLD
306 ,M(AE_PSTDEL),KC_TRNS ,KC_TRNS 383 ,KC_SPC,KC_ENTER,M(A_ESC)
307 384
308 // right hand 385 // right hand
309 ,LGUI(KC_L),M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_11) 386 ,LGUI(KC_L),KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
310 ,KC_WH_U ,KC_DLR ,M(A_MUL),KC_MS_U ,M(A_MUR),M(AE_OVR),KC_PSCR 387 ,KC_WH_U ,KC_NO ,M(A_MUL),KC_MS_U ,M(A_MUR),KC_NO ,KC_PSCR
311 ,KC_D ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO 388 ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
312 ,KC_WH_D ,KC_NO ,M(A_MDL),KC_W ,M(A_MDR),KC_NO ,KC_MSTP 389 ,KC_WH_D ,KC_NO ,M(A_MDL),KC_MS_D ,M(A_MDR),KC_NO ,KC_MSTP
313 ,KC_VOLU ,KC_VOLD ,KC_MUTE ,KC_NO ,KC_NO 390 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
314 391
315 ,KC_TRNS ,KC_MS_BTN3 392 ,KC_TRNS ,KC_MS_BTN3
316 ,KC_MPRV 393 ,KC_MPRV
317 ,KC_MNXT ,KC_BTN1 ,KC_BTN2 394 ,KC_MNXT ,KC_BTN1 ,KC_BTN2
318 ), 395 ),
319 396
320/* Keymap 5: One-handed, left side 397/* Keymap 6: One-handed, left side
321 * 398 *
322 * ,-----------------------------------------------------. 399 * ,-----------------------------------------------------.
323 * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |A BSE| 400 * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |A BSE|
@@ -362,7 +439,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
362 ,KC_NO ,KC_NO ,KC_NO 439 ,KC_NO ,KC_NO ,KC_NO
363 ), 440 ),
364 441
365/* Keymap 6: One-handed, right side 442/* Keymap 7: One-handed, right side
366 * 443 *
367 * ,-----------------------------------------------------. 444 * ,-----------------------------------------------------.
368 * | = F11 | 0 F10| 9 F9 | 8 F8 | 7 F7 | 6 F6 |A BSE| 445 * | = F11 | 0 F10| 9 F9 | 8 F8 | 7 F7 | 6 F6 |A BSE|
@@ -407,15 +484,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
407 ,KC_NO ,KC_NO ,KC_NO 484 ,KC_NO ,KC_NO ,KC_NO
408 ), 485 ),
409 486
410/* Keymap 7: Steno for Plover 487/* Keymap 8: Steno for Plover
411 * 488 *
412 * ,--------------------------------------------------. ,--------------------------------------------------. 489 * ,--------------------------------------------------. ,--------------------------------------------------.
413 * | | | | | | | BASE | | | | | | | | | 490 * | | | | | | | BASE | | | | | | | | |
414 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 491 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
415 * | | # | # | # | # | # | | | | # | # | # | # | # | # | 492 * | | # | # | # | # | # | # | | # | # | # | # | # | # | # |
416 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 493 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
417 * | | | T | P | H | |------| |------| | F | P | L | T | D | 494 * | | | T | P | H | |------| |------| | F | P | L | T | D |
418 * |--------+ S +------+------+------+ * | | | | * +------+------+------+------+--------| 495 * |--------+ S +------+------+------+ * | * | | * | * +------+------+------+------+--------|
419 * | | | K | W | R | | | | | | R | B | G | S | Z | 496 * | | | K | W | R | | | | | | R | B | G | S | Z |
420 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 497 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
421 * | | | | | | | | | | | | 498 * | | | | | | | | | | | |
@@ -432,9 +509,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
432[PLVR] = KEYMAP( 509[PLVR] = KEYMAP(
433// left hand 510// left hand
434KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(A_PLVR), 511KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, M(A_PLVR),
435KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, KC_NO, 512KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
436KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR, 513KC_NO, PV_LS, PV_LT, PV_LP, PV_LH, PV_STAR,
437KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, KC_NO, 514KC_NO, PV_LS, PV_LK, PV_LW, PV_LR, PV_STAR, PV_STAR,
438KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 515KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
439 KC_NO, KC_NO, 516 KC_NO, KC_NO,
440 KC_NO, 517 KC_NO,
@@ -442,61 +519,15 @@ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
442 519
443 // right hand 520 // right hand
444 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 521 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
445 KC_NO, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, 522 PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM, PV_NUM,
446 PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD, 523 PV_STAR, PV_RF, PV_RP, PV_RL, PV_RT, PV_RD,
447 KC_NO, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ, 524 PV_STAR, PV_STAR, PV_RR, PV_RB, PV_RG, PV_RS, PV_RZ,
448 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 525 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
449 KC_NO, KC_NO, 526 KC_NO, KC_NO,
450 KC_NO, 527 KC_NO,
451 KC_NO,PV_E, PV_U 528 KC_NO,PV_E, PV_U
452 ), 529 ),
453 530
454/* Keymap 8: Experimental layer
455 *
456 * ,-----------------------------------------------------. ,-----------------------------------------------------.
457 * | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Plvr | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
458 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
459 * | Next/Prev | ' | , | . | P | Y | [ | | ] | Q | F | C | R | J | = |
460 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
461 * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
462 * |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
463 * | Play/Pause| Z | K | V | G | X | | | | L | M | W | B | / | Stop |
464 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
465 * | Home | End | Down | Up | : | | - | Left | Right| PgUp | PgDn |
466 * `-----------------------------------' `-----------------------------------'
467 * ,-------------. ,-------------.
468 * | LAlt | GUI | |EMACS | 1HND |
469 * ,------|------|------| |------+------+------.
470 * | | | Ctrl | | LEAD | | |
471 * |Backsp|LShift|------| |------| Enter| Space|
472 * | | | ESC | | HUN | | |
473 * `--------------------' `--------------------'
474 */
475[EXPRM] = KEYMAP(
476// left hand
477 KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),M(A_PLVR)
478,M(A_MPN) ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
479,KC_TAB ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
480,KC_MPLY ,KC_Z ,KC_K ,KC_V ,KC_G ,KC_X ,KC_LPRN
481,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,M(A_COLN)
482
483 ,F(F_ALT),F(F_GUI)
484 ,F(F_CTRL)
485 ,KC_BSPC,F(F_SFT),M(A_ESC)
486
487 // right hand
488 ,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,KC_F11
489 ,KC_RBRC ,KC_Q ,KC_F ,KC_C ,KC_R ,KC_J ,KC_EQL
490 ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS
491 ,KC_RPRN ,KC_L ,KC_M ,KC_W ,KC_B ,KC_SLSH ,KC_MSTP
492 ,KC_MINS,KC_LEFT,KC_RGHT ,KC_PGUP ,KC_PGDN
493
494 ,OSL(EMACS),M(OH_LEFT)
495 ,KC_LEAD
496 ,F(F_HUN),KC_ENT ,KC_SPC
497 ),
498
499
500}; 531};
501 532
502const uint16_t PROGMEM fn_actions[] = { 533const uint16_t PROGMEM fn_actions[] = {
@@ -616,26 +647,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
616 } 647 }
617 break; 648 break;
618 649
619 case A_COLN:
620 if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
621 ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
622 int oneshot = ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out());
623
624 if (record->event.pressed) {
625 if (oneshot)
626 clear_oneshot_mods ();
627 unregister_code (KC_LSFT);
628
629 register_code (KC_SCLN);
630 unregister_code (KC_SCLN);
631 if (!oneshot)
632 register_code (KC_LSFT);
633 }
634 } else {
635 return MACRODOWN (D(RSFT), T(SCLN), U(RSFT), END);
636 }
637 break;
638
639 case A_MPN: 650 case A_MPN:
640 if (record->event.pressed) { 651 if (record->event.pressed) {
641 if (keyboard_report->mods & MOD_BIT(KC_LSFT) || 652 if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
@@ -722,126 +733,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
722 mousekey_send(); 733 mousekey_send();
723 break; 734 break;
724 735
725 /* EMACS layer stuff */
726 case AE_EMACS:
727 if (record->event.pressed) {
728 cp_mode = CP_EMACS;
729 }
730 break;
731
732 case AE_TERM:
733 if (record->event.pressed) {
734 cp_mode = CP_TERM;
735 }
736 break;
737
738 case AE_OTHER:
739 if (record->event.pressed) {
740 cp_mode = CP_OTHER;
741 }
742 break;
743
744 case AE_VIS:
745 if (cp_mode == CP_EMACS && record->event.pressed) {
746 return MACRO(T(V), END);
747 }
748 break;
749
750 case AE_CPYC:
751 if (record->event.pressed) {
752 m_copypaste_timer = timer_read ();
753 } else {
754 if (timer_elapsed (m_copypaste_timer) > TAPPING_TERM) {
755 // Long press: Cut
756 switch (cp_mode) {
757 case CP_EMACS:
758 return MACRO(T(X), END);
759 break;
760 case CP_TERM:
761 return MACRO(D(RCTRL), D(RSFT), T(X), U(RSFT), U(RCTRL), END);
762 break;
763 case CP_OTHER:
764 return MACRO(D(RCTRL), T(X), U(RCTRL), END);
765 break;
766 }
767 } else {
768 // Short press: Copy
769 switch (cp_mode) {
770 case CP_EMACS:
771 return MACRO(T(Y), END);
772 break;
773 case CP_TERM:
774 return MACRO(D(RCTRL), D(RSFT), T(C), U(RSFT), U(RCTRL), END);
775 break;
776 case CP_OTHER:
777 return MACRO(D(RCTRL), T(C), U(RCTRL), END);
778 break;
779 }
780 }
781 }
782 break;
783
784 case AE_PSTDEL:
785 if (record->event.pressed) {
786 m_cutdel_timer = timer_read ();
787 } else {
788 if (timer_elapsed (m_cutdel_timer) > TAPPING_TERM) {
789 // Long press: Delete
790 switch (cp_mode) {
791 case CP_EMACS:
792 return MACRO(T(D), END);
793 break;
794 case CP_TERM:
795 case CP_OTHER:
796 return MACRO(T(DEL), END);
797 break;
798 }
799 } else {
800 // Short press: Paste
801 switch (cp_mode) {
802 case CP_EMACS:
803 if (keyboard_report->mods & MOD_BIT(KC_RSFT)) {
804 unregister_code (KC_RSFT);
805 return MACRO(U(RSFT), T(RBRC), T(P), D(RSFT), END);
806 }
807 else
808 return MACRO(T(P), END);
809 break;
810 case CP_TERM:
811 return MACRO(D(RCTRL), D(RSFT), T(V), U(RSFT), U(RCTRL), END);
812 break;
813 case CP_OTHER:
814 return MACRO(D(RCTRL), T(V), U(RCTRL), END);
815 break;
816 }
817 }
818 }
819 break;
820
821 case AE_INS:
822 if (record->event.pressed) {
823 return MACRO(T(I), END);
824 } else {
825 layer_clear();
826 }
827 break;
828
829 case AE_OVR:
830 if (record->event.pressed) {
831 return MACRO(T(R), END);
832 } else {
833 layer_clear();
834 }
835 break;
836
837 case AE_APPND:
838 if (record->event.pressed) {
839 return MACRO(T(A), END);
840 } else {
841 layer_clear();
842 }
843 break;
844
845 /* Plover base */ 736 /* Plover base */
846 case A_PLVR: 737 case A_PLVR:
847 toggle_steno(record->event.pressed); 738 toggle_steno(record->event.pressed);
@@ -872,7 +763,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
872 break; 763 break;
873 764
874 case APP_SLK: 765 case APP_SLK:
875 return MACRODOWN(T(S), T(C), T(U), T(D), T(C), T(L), T(O), T(U), T(D), T(ENT), END); 766 return MACRODOWN(T(S), T(L), T(A), T(C), T(K), T(ENT), END);
876 767
877 case APP_EMCS: 768 case APP_EMCS:
878 return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(ENT), END); 769 return MACRODOWN(T(E), T(M), T(A), T(C), T(S), T(ENT), END);
@@ -1000,6 +891,21 @@ void matrix_scan_user(void) {
1000 if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM) 891 if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
1001 unregister_code (KC_LGUI); 892 unregister_code (KC_LGUI);
1002 893
894 if (ct_cln_timer && timer_elapsed (ct_cln_timer) > TAPPING_TERM) {
895 if (ct_cln_count == 1) {
896 register_code (KC_RSFT);
897 register_code (KC_SCLN);
898 unregister_code (KC_SCLN);
899 unregister_code (KC_RSFT);
900 } else if (ct_cln_count == 2) {
901 register_code (KC_SCLN);
902 unregister_code (KC_SCLN);
903 }
904
905 ct_cln_count = 0;
906 ct_cln_timer = 0;
907 }
908
1003 if (layer != OHLFT) 909 if (layer != OHLFT)
1004 oh_left_blink = 0; 910 oh_left_blink = 0;
1005 if (layer != OHRGT) 911 if (layer != OHRGT)
@@ -1008,7 +914,7 @@ void matrix_scan_user(void) {
1008 if (layer == HUN) { 914 if (layer == HUN) {
1009 ergodox_right_led_2_on(); 915 ergodox_right_led_2_on();
1010 ergodox_right_led_3_on(); 916 ergodox_right_led_3_on();
1011 } else if (layer == EMACS) { 917 } else if (layer == NMDIA) {
1012 ergodox_right_led_1_on(); 918 ergodox_right_led_1_on();
1013 ergodox_right_led_2_on(); 919 ergodox_right_led_2_on();
1014 } else if (layer == PLVR) { 920 } else if (layer == PLVR) {
@@ -1055,7 +961,7 @@ void matrix_scan_user(void) {
1055 ergodox_right_led_1_on (); 961 ergodox_right_led_1_on ();
1056 } else { 962 } else {
1057 ergodox_right_led_1_set (LED_BRIGHTNESS_LO); 963 ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
1058 if (layer != OHLFT && layer != EMACS && layer != PLVR && layer != EXPRM) 964 if (layer != OHLFT && layer != NMDIA && layer != PLVR && layer != EXPRM)
1059 ergodox_right_led_1_off (); 965 ergodox_right_led_1_off ();
1060 } 966 }
1061 967
@@ -1065,7 +971,7 @@ void matrix_scan_user(void) {
1065 ergodox_right_led_2_on (); 971 ergodox_right_led_2_on ();
1066 } else { 972 } else {
1067 ergodox_right_led_2_set (LED_BRIGHTNESS_LO); 973 ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
1068 if (layer != OHRGT && layer != HUN && layer != OHLFT && layer != EMACS && layer != PLVR && layer != EXPRM) 974 if (layer != OHRGT && layer != HUN && layer != OHLFT && layer != NMDIA && layer != PLVR && layer != EXPRM)
1069 ergodox_right_led_2_off (); 975 ergodox_right_led_2_off ();
1070 } 976 }
1071 977
@@ -1087,11 +993,9 @@ void matrix_scan_user(void) {
1087 ang_do_unicode (); 993 ang_do_unicode ();
1088 } 994 }
1089 995
1090#ifdef QMK_VERSION
1091 SEQ_ONE_KEY (KC_V) { 996 SEQ_ONE_KEY (KC_V) {
1092 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); 997 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ (" QMK_VERSION "/" KEYMAP_VERSION ")");
1093 } 998 }
1094#endif
1095 999
1096 SEQ_ONE_KEY (KC_L) { 1000 SEQ_ONE_KEY (KC_L) {
1097 /* λ */ 1001 /* λ */
@@ -1165,8 +1069,36 @@ void matrix_scan_user(void) {
1165 ergodox_right_led_2_off (); 1069 ergodox_right_led_2_off ();
1166 _delay_ms (100); 1070 _delay_ms (100);
1167 ergodox_right_led_3_off (); 1071 ergodox_right_led_3_off ();
1168
1169 } 1072 }
1170 } 1073 }
1171 } 1074 }
1172} 1075}
1076
1077bool process_record_user (uint16_t keycode, keyrecord_t *record) {
1078 switch(keycode) {
1079 case CT_CLN:
1080 if (record->event.pressed) {
1081 ct_cln_count++;
1082 ct_cln_timer = timer_read ();
1083 } else {
1084 }
1085 return false;
1086 break;
1087
1088 default:
1089 if (ct_cln_count == 1) {
1090 register_code (KC_RSFT);
1091 register_code (KC_SCLN);
1092 unregister_code (KC_SCLN);
1093 unregister_code (KC_RSFT);
1094 } else if (ct_cln_count == 2) {
1095 register_code (KC_SCLN);
1096 unregister_code (KC_SCLN);
1097 }
1098 ct_cln_count = 0;
1099 ct_cln_timer = 0;
1100 break;
1101 }
1102
1103 return true;
1104}