aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboard/atomic/keymaps/pvc/keymap.c28
-rw-r--r--keyboard/planck/keymaps/pvc/config.h88
-rw-r--r--keyboard/planck/keymaps/pvc/keymap.c536
-rw-r--r--keyboard/planck/keymaps/pvc/makefile.mk16
-rw-r--r--keyboard/planck/keymaps/pvc_planck.c179
5 files changed, 658 insertions, 189 deletions
diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c
index 28aa2c359..e17c41e23 100644
--- a/keyboard/atomic/keymaps/pvc/keymap.c
+++ b/keyboard/atomic/keymaps/pvc/keymap.c
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
92 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| 92 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
93 * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | 93 * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
94 * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| 94 * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
95 * | LCTRL | LWIN | FN | LALT | RAISED | XXXXXX . SPACE | LOWER | RALT | HOME | END | RCTRL | LEFT | DOWN | RIGHT | 95 * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT |
96 * '--------------------------------------------------------------------------------------------------------------------------------------' 96 * '--------------------------------------------------------------------------------------------------------------------------------------'
97 */ 97 */
98 98
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
101 { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, 101 { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
102 { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, 102 { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
103 { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, 103 { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
104 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_LGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, 104 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
105 }, 105 },
106 106
107 /* COLEMAK 107 /* COLEMAK
@@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
114 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| 114 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
115 * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | 115 * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN |
116 * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| 116 * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
117 * | LCTRL | LWIN | FN | LALT | RAISED | XXXXXX . SPACE | LOWER | RALT | HOME | END | RCTRL | LEFT | DOWN | RIGHT | 117 * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT |
118 * '--------------------------------------------------------------------------------------------------------------------------------------' 118 * '--------------------------------------------------------------------------------------------------------------------------------------'
119 */ 119 */
120 120
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
123 { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, 123 { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL },
124 { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP }, 124 { KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_ENT, KC_PGUP },
125 { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, 125 { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
126 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_LGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, 126 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
127 }, 127 },
128 128
129/* DVORAK 129/* DVORAK
@@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
136 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| 136 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
137 * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | 137 * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN |
138 * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| 138 * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------|
139 * | LCTRL | LWIN | FN | LALT | RAISED | XXXXXX . SPACE | LOWER | RALT | HOME | END | RCTRL | LEFT | DOWN | RIGHT | 139 * | LCTRL | LWIN | FN | LALT | RAISE | XXXXXX . SPACE | LOWER | RALT | RWIN | MENU | RCTRL | LEFT | DOWN | RIGHT |
140 * '--------------------------------------------------------------------------------------------------------------------------------------' 140 * '--------------------------------------------------------------------------------------------------------------------------------------'
141 */ 141 */
142 142
@@ -145,7 +145,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
145 { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL }, 145 { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DEL },
146 { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP }, 146 { KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_ENT, KC_PGUP },
147 { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, 147 { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN },
148 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_LGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, 148 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
149 }, 149 },
150 150
151 151
@@ -255,7 +255,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
255 if (record->event.pressed) 255 if (record->event.pressed)
256 { 256 {
257 persistant_default_layer_set(1UL<<LAYER_QWERTY); 257 persistant_default_layer_set(1UL<<LAYER_QWERTY);
258 PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO); 258 #ifdef AUDIO_ENABLE
259 PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
260 #endif /* AUDIO_ENABLE */
259 } 261 }
260 break; 262 break;
261 263
@@ -263,7 +265,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
263 if (record->event.pressed) 265 if (record->event.pressed)
264 { 266 {
265 persistant_default_layer_set(1UL<<LAYER_COLEMAK); 267 persistant_default_layer_set(1UL<<LAYER_COLEMAK);
266 PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO); 268 #ifdef AUDIO_ENABLE
269 PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
270 #endif /* AUDIO_ENABLE */
267 } 271 }
268 break; 272 break;
269 273
@@ -271,11 +275,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
271 if (record->event.pressed) 275 if (record->event.pressed)
272 { 276 {
273 persistant_default_layer_set(1UL<<LAYER_DVORAK); 277 persistant_default_layer_set(1UL<<LAYER_DVORAK);
274 PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO); 278 #ifdef AUDIO_ENABLE
279 PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
280 #endif /* AUDIO_ENABLE */
275 } 281 }
276 break; 282 break;
277 283
278
279 case MACRO_LOWER: 284 case MACRO_LOWER:
280 if (record->event.pressed) 285 if (record->event.pressed)
281 { 286 {
@@ -324,6 +329,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
324 329
325#endif /* MOUSEKEY_ENABLE */ 330#endif /* MOUSEKEY_ENABLE */
326 331
332#ifdef AUDIO_ENABLE
327 333
328 case MACRO_TIMBRE_1: 334 case MACRO_TIMBRE_1:
329 if (record->event.pressed) set_timbre(TIMBRE_12); 335 if (record->event.pressed) set_timbre(TIMBRE_12);
@@ -416,6 +422,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
416 } 422 }
417 break; 423 break;
418 424
425#endif /* AUDIO_ENABLE */
426
419 default: 427 default:
420 break; 428 break;
421 429
diff --git a/keyboard/planck/keymaps/pvc/config.h b/keyboard/planck/keymaps/pvc/config.h
new file mode 100644
index 000000000..7d64f0977
--- /dev/null
+++ b/keyboard/planck/keymaps/pvc/config.h
@@ -0,0 +1,88 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0001
27#define MANUFACTURER Ortholinear Keyboards
28#define PRODUCT The Planck Keyboard
29#define DESCRIPTION A compact ortholinear keyboard
30
31/* key matrix size */
32#define MATRIX_ROWS 4
33#define MATRIX_COLS 12
34
35/* Planck PCB default pin-out */
36#define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
37#define ROWS (int []){ D0, D5, B5, B6 }
38
39/* COL2ROW or ROW2COL */
40#define DIODE_DIRECTION COL2ROW
41
42/* define if matrix has ghost */
43//#define MATRIX_HAS_GHOST
44
45/* number of backlight levels */
46#define BACKLIGHT_LEVELS 3
47
48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCE 5
50
51/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
52#define LOCKING_SUPPORT_ENABLE
53/* Locking resynchronize hack */
54#define LOCKING_RESYNC_ENABLE
55
56/* key combination for command */
57#define IS_COMMAND() ( \
58 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
59)
60
61/* ws2812 RGB LED */
62#define ws2812_PORTREG PORTD
63#define ws2812_DDRREG DDRD
64#define ws2812_pin PD1
65#define RGBLED_NUM 28 // Number of LEDs
66#define RGBLIGHT_HUE_STEP 10
67#define RGBLIGHT_SAT_STEP 17
68#define RGBLIGHT_VAL_STEP 17
69
70/*
71 * Feature disable options
72 * These options are also useful to firmware size reduction.
73 */
74
75/* disable debug print */
76//#define NO_DEBUG
77
78/* disable print */
79//#define NO_PRINT
80
81/* disable action features */
82//#define NO_ACTION_LAYER
83//#define NO_ACTION_TAPPING
84//#define NO_ACTION_ONESHOT
85//#define NO_ACTION_MACRO
86//#define NO_ACTION_FUNCTION
87
88#endif
diff --git a/keyboard/planck/keymaps/pvc/keymap.c b/keyboard/planck/keymaps/pvc/keymap.c
new file mode 100644
index 000000000..27850b215
--- /dev/null
+++ b/keyboard/planck/keymaps/pvc/keymap.c
@@ -0,0 +1,536 @@
1#include "planck.h"
2#include "action_layer.h"
3#include "eeconfig.h"
4#include "led.h"
5
6#ifdef AUDIO_ENABLE
7 #include "audio.h"
8 #include "song_list.h"
9#endif
10
11#define LAYER_QWERTY 0
12#define LAYER_COLEMAK 1
13#define LAYER_DVORAK 2
14#define LAYER_LOWER 3
15#define LAYER_RAISE 4
16#define LAYER_FUNCTION 5
17#define LAYER_MOUSE 6
18#define LAYER_MUSIC 7
19#define LAYER_ADJUST 8
20
21#define MACRO_QWERTY 0
22#define MACRO_COLEMAK 1
23#define MACRO_DVORAK 2
24#define MACRO_LOWER 3
25#define MACRO_RAISE 4
26#define MACRO_FUNCTION 5
27#define MACRO_MOUSE 6
28#define MACRO_TIMBRE_1 7
29#define MACRO_TIMBRE_2 8
30#define MACRO_TIMBRE_3 9
31#define MACRO_TIMBRE_4 10
32#define MACRO_TEMPO_U 11
33#define MACRO_TEMPO_D 12
34#define MACRO_TONE_DEFAULT 13
35#define MACRO_MUSIC_ON 14
36#define MACRO_MUSIC_OFF 15
37#define MACRO_AUDIO_ON 16
38#define MACRO_AUDIO_OFF 17
39#define MACRO_INC_VOICE 18
40#define MACRO_DEC_VOICE 19
41
42#define M_QWRTY M(MACRO_QWERTY)
43#define M_COLMK M(MACRO_COLEMAK)
44#define M_DVORK M(MACRO_DVORAK)
45#define M_LOWER M(MACRO_LOWER)
46#define M_RAISE M(MACRO_RAISE)
47#define M_FUNCT M(MACRO_FUNCTION)
48#define M_MOUSE M(MACRO_MOUSE)
49#define TIMBR_1 M(MACRO_TIMBRE_1)
50#define TIMBR_2 M(MACRO_TIMBRE_2)
51#define TIMBR_3 M(MACRO_TIMBRE_3)
52#define TIMBR_4 M(MACRO_TIMBRE_4)
53#define TMPO_UP M(MACRO_TEMPO_U)
54#define TMPO_DN M(MACRO_TEMPO_D)
55#define TMPO_DF M(MACRO_TONE_DEFAULT)
56
57
58#define MUS_ON M(MACRO_MUSIC_ON)
59#define MUS_OFF M(MACRO_MUSIC_OFF)
60#define AUD_OFF M(MACRO_AUDIO_OFF)
61#define AUD_ON M(MACRO_AUDIO_ON)
62#define VC_UP M(MACRO_INC_VOICE)
63#define VC_DOWN M(MACRO_DEC_VOICE)
64
65
66#define SC_UNDO LCTL(KC_Z)
67#define SC_REDO LCTL(KC_Y)
68#define SC_CUT LCTL(KC_X)
69#define SC_COPY LCTL(KC_C)
70#define SC_PSTE LCTL(KC_V)
71#define SC_SELA LCTL(KC_A)
72#define SC_SAVE LCTL(KC_S)
73#define SC_OPEN LCTL(KC_O)
74#define SC_ACLS LALT(KC_F4)
75#define SC_CCLS LCTL(KC_F4)
76
77
78#define _______ KC_TRNS
79#define XXXXXXX KC_NO
80#define ________________ _______, _______
81#define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX
82
83const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
84
85/* QWERTY
86 * .-----------------------------------------------------------------------------------------------------------.
87 * | TAB | Q | W | E | R | T | Y | U | I | O | P | BACKSP |
88 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
89 * | ESC | A | S | D | F | G | H | J | K | L | ; | ' |
90 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
91 * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | ENTER |
92 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
93 * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT |
94 * '-----------------------------------------------------------------------------------------------------------'
95 */
96
97 [LAYER_QWERTY] = { /* QWERTY */
98 { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
99 { KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
100 { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
101 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT },
102 },
103
104/* COLEMAK
105 * .-----------------------------------------------------------------------------------------------------------.
106 * | TAB | Q | W | F | P | G | J | L | U | Y | ; | ESC |
107 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
108 * | BACKSP | A | R | S | T | D | H | N | E | I | O | ' |
109 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
110 * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | ENTER |
111 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
112 * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT |
113 * '-----------------------------------------------------------------------------------------------------------'
114 */
115
116 [LAYER_COLEMAK] = { /* COLEMAK */
117 { KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_ESC },
118 { KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT },
119 { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
120 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT },
121 },
122
123/* DVORAK
124 * .-----------------------------------------------------------------------------------------------------------.
125 * | TAB | ' | , | . | P | Y | F | G | C | R | L | BACKSP |
126 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
127 * | ESC | A | O | E | U | I | D | H | T | N | S | ' |
128 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
129 * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | ENTER |
130 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
131 * | LCTRL | LWIN | FN | LALT | RAISE | SPACE | SPACE | LOWER | UP | DOWN | LEFT | RIGHT |
132 * '-----------------------------------------------------------------------------------------------------------'
133 */
134
135 [LAYER_DVORAK] = { /* DVORAK */
136 { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC },
137 { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH },
138 { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
139 { KC_LCTL, KC_LGUI, M_FUNCT, KC_LALT, M_RAISE, KC_SPC, KC_SPC, M_LOWER, KC_UP, KC_DOWN, KC_LEFT, KC_RGHT },
140 },
141
142/* Raise
143 * .-----------------------------------------------------------------------------------------------------------.
144 * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | DEL |
145 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
146 * | XXXXXX | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | [ | ] | \ |
147 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
148 * | LSHIFT | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ENTER |
149 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
150 * | LCTRL | LWIN | FN | LALT | RAISE | BACKSP | BACKSP | LOWER | PG UP | PG DN | HOME | END |
151 * '-----------------------------------------------------------------------------------------------------------'
152 */
153
154 [LAYER_RAISE] = { /* RAISED */
155 { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL },
156 { XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS },
157 { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
158 { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END },
159 },
160
161
162/* LOWERED
163 * .-----------------------------------------------------------------------------------------------------------.
164 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | INS |
165 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
166 * | XXXXXX | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
167 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
168 * | LSHIFT | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX | XXXXXX | XXXXXX | XXXXXX | ENTER |
169 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
170 * | LCTRL | LWIN | FN | LALT | RAISE | BACKSP | BACKSP | LOWER | PG UP | PG DN | HOME | END |
171 * '-----------------------------------------------------------------------------------------------------------'
172 */
173
174 [LAYER_LOWER] = { /* LOWERED */
175 { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS },
176 { XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS },
177 { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
178 { _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END },
179 },
180
181/* FUNCTION
182 * .-----------------------------------------------------------------------------------------------------------.
183 * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | PAUSE |
184 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
185 * | CAP LK | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | PRINT |
186 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
187 * | SCR LK | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | MUTE |
188 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
189 * | LCTRL | LWIN | FN | LALT | RAISE | PLAY | PLAY | LOWER | VOL UP | VOL DN | NEXT | PREV |
190 * '-----------------------------------------------------------------------------------------------------------'
191 */
192 [LAYER_FUNCTION] = { /* FUNCTION */
193 { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PAUS },
194 { KC_CAPS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_PSCR },
195 { KC_SLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE },
196 { _______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT },
197 },
198
199#ifdef MOUSEKEY_ENABLE
200
201 [LAYER_MOUSE] = { /* MOUSE */
202 { KC_ESC, KC_ACL0, KC_ACL1, KC_ACL2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC },
203 { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
204 { _______, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_D },
205 { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, KC_MS_U, KC_MS_D, KC_MS_L, KC_MS_R },
206 },
207
208#endif
209
210 [LAYER_MUSIC] = { /* MUSIC */
211 { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
212 { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
213 { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
214 { XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_RAISE, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX },
215 },
216
217 [LAYER_ADJUST] = { /* ADJUST */
218 { _______, TIMBR_1, TIMBR_2, TIMBR_3, TIMBR_4, TMPO_UP, TMPO_DN, TMPO_DF, MUS_ON, MUS_OFF, AUD_ON, AUD_OFF },
219 { _______, M_QWRTY, M_COLMK, M_DVORK, _______, _______, _______, _______, _______, _______, _______, _______ },
220 { _______, _______, _______, _______, _______, RESET, _______, M_MOUSE, _______, _______, _______, _______ },
221 { _______, _______, _______, _______, _______, _______, _______, _______, VC_UP, VC_DOWN, _______, _______ },
222 },
223
224
225/*
226 [LAYER_EMPTY] = {
227 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
228 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
229 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, },
230 { _______, _______, _______, _______, _______, ________________, _______, _______, _______, _______, _______, },
231 },
232*/
233
234};
235
236#ifdef AUDIO_ENABLE
237
238float tone_my_startup[][2] = SONG(ODE_TO_JOY);
239float tone_my_goodbye[][2] = SONG(ROCK_A_BYE_BABY);
240
241float tone_qwerty[][2] = SONG(QWERTY_SOUND);
242float tone_dvorak[][2] = SONG(DVORAK_SOUND);
243float tone_colemak[][2] = SONG(COLEMAK_SOUND);
244
245float tone_audio_on[][2] = SONG(CLOSE_ENCOUNTERS_5_NOTE);
246float tone_music_on[][2] = SONG(DOE_A_DEER);
247float tone_caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
248float tone_caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);
249float tone_numlk_on[][2] = SONG(NUM_LOCK_ON_SOUND);
250float tone_numlk_off[][2] = SONG(NUM_LOCK_OFF_SOUND);
251float tone_scroll_on[][2] = SONG(SCROLL_LOCK_ON_SOUND);
252float tone_scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
253float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
254
255#endif /* AUDIO_ENABLE */
256
257void persistant_default_layer_set(uint16_t default_layer)
258{
259 eeconfig_update_default_layer(default_layer);
260 default_layer_set(default_layer);
261}
262
263const uint16_t PROGMEM fn_actions[] = {
264};
265
266const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
267{
268
269 // MACRODOWN only works in this function
270 switch(id)
271 {
272
273 case MACRO_QWERTY:
274 if (record->event.pressed)
275 {
276 persistant_default_layer_set(1UL<<LAYER_QWERTY);
277 #ifdef AUDIO_ENABLE
278 PLAY_NOTE_ARRAY(tone_qwerty, false, STACCATO);
279 #endif /* AUDIO_ENABLE */
280 }
281 break;
282
283 case MACRO_COLEMAK:
284 if (record->event.pressed)
285 {
286 persistant_default_layer_set(1UL<<LAYER_COLEMAK);
287 #ifdef AUDIO_ENABLE
288 PLAY_NOTE_ARRAY(tone_colemak, false, STACCATO);
289 #endif /* AUDIO_ENABLE */
290 }
291 break;
292
293 case MACRO_DVORAK:
294 if (record->event.pressed)
295 {
296 persistant_default_layer_set(1UL<<LAYER_DVORAK);
297 #ifdef AUDIO_ENABLE
298 PLAY_NOTE_ARRAY(tone_dvorak, false, STACCATO);
299 #endif /* AUDIO_ENABLE */
300 }
301 break;
302
303 case MACRO_LOWER:
304 if (record->event.pressed)
305 {
306 layer_on(LAYER_LOWER);
307 update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
308 }
309 else
310 {
311 layer_off(LAYER_LOWER);
312 update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
313 }
314 break;
315
316 case MACRO_RAISE:
317 if (record->event.pressed)
318 {
319 layer_on(LAYER_RAISE);
320 update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
321 }
322 else
323 {
324 layer_off(LAYER_RAISE);
325 update_tri_layer(LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
326 }
327 break;
328
329 case MACRO_FUNCTION:
330 if (record->event.pressed)
331 {
332 layer_on(LAYER_FUNCTION);
333 }
334 else
335 {
336 layer_off(LAYER_FUNCTION);
337 }
338 break;
339
340#ifdef MOUSEKEY_ENABLE
341
342 case MACRO_MOUSE:
343 if (record->event.pressed)
344 {
345 layer_invert(LAYER_MOUSE);
346 }
347 break;
348
349#endif /* MOUSEKEY_ENABLE */
350
351#ifdef AUDIO_ENABLE
352
353 case MACRO_TIMBRE_1:
354 if (record->event.pressed) set_timbre(TIMBRE_12);
355 break;
356
357 case MACRO_TIMBRE_2:
358 if (record->event.pressed) set_timbre(TIMBRE_25);
359 break;
360
361 case MACRO_TIMBRE_3:
362 if (record->event.pressed) set_timbre(TIMBRE_50);
363 break;
364
365 case MACRO_TIMBRE_4:
366 if (record->event.pressed) set_timbre(TIMBRE_75);
367 break;
368
369 case MACRO_TEMPO_U:
370 if (record->event.pressed) increase_tempo(10);
371 break;
372
373 case MACRO_TEMPO_D:
374 if (record->event.pressed) decrease_tempo(10);
375 break;
376
377 case MACRO_TONE_DEFAULT:
378 if (record->event.pressed)
379 {
380 set_timbre(TIMBRE_DEFAULT);
381 set_tempo(TEMPO_DEFAULT);
382 }
383 break;
384
385 case MACRO_AUDIO_OFF:
386 if (record->event.pressed)
387 {
388 #ifdef AUDIO_ENABLE
389 audio_off();
390 #endif
391 }
392 break;
393
394 case MACRO_AUDIO_ON:
395 if (record->event.pressed)
396 {
397 #ifdef AUDIO_ENABLE
398 audio_on();
399 PLAY_NOTE_ARRAY(tone_audio_on, false, STACCATO);
400 #endif
401 }
402 break;
403
404 case MACRO_MUSIC_ON:
405 if (record->event.pressed)
406 {
407 #ifdef AUDIO_ENABLE
408 PLAY_NOTE_ARRAY(tone_music_on, false, STACCATO);
409 layer_on(LAYER_MUSIC);
410 #endif
411 }
412 break;
413
414 case MACRO_MUSIC_OFF:
415 if (record->event.pressed)
416 {
417 #ifdef AUDIO_ENABLE
418 layer_off(LAYER_MUSIC);
419 stop_all_notes();
420 #endif
421 }
422 break;
423
424 case MACRO_INC_VOICE:
425 if (record->event.pressed)
426 {
427 #ifdef AUDIO_ENABLE
428 voice_iterate();
429 PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
430 #endif
431 }
432 break;
433
434 case MACRO_DEC_VOICE:
435 if (record->event.pressed)
436 {
437 #ifdef AUDIO_ENABLE
438 voice_deiterate();
439 PLAY_NOTE_ARRAY(music_scale, false, STACCATO);
440 #endif
441 }
442 break;
443
444#endif /* AUDIO_ENABLE */
445
446 default:
447 break;
448
449 }
450 return MACRO_NONE;
451};
452
453
454#ifdef AUDIO_ENABLE
455
456
457void process_action_user(keyrecord_t *record)
458{
459
460 uint8_t starting_note = 0x0C;
461 int offset = 7;
462
463 if (IS_LAYER_ON(LAYER_MUSIC))
464 {
465 if (record->event.pressed)
466 {
467 play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
468 }
469 else
470 {
471 stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
472 }
473 }
474}
475
476
477void matrix_init_user(void)
478{
479 set_voice(default_voice);
480 play_startup_tone();
481 println("Matrix Init");
482}
483
484void led_set_user(uint8_t usb_led)
485{
486 static uint8_t old_usb_led = 0;
487
488 _delay_ms(10); // gets rid of tick
489
490 if ((usb_led & (1<<USB_LED_CAPS_LOCK)) && !(old_usb_led & (1<<USB_LED_CAPS_LOCK)))
491 {
492 // If CAPS LK LED is turning on...
493 PLAY_NOTE_ARRAY(tone_caps_on, false, LEGATO);
494 }
495 else if (!(usb_led & (1<<USB_LED_CAPS_LOCK)) && (old_usb_led & (1<<USB_LED_CAPS_LOCK)))
496 {
497 // If CAPS LK LED is turning off...
498 PLAY_NOTE_ARRAY(tone_caps_off, false, LEGATO);
499 }
500 else if ((usb_led & (1<<USB_LED_NUM_LOCK)) && !(old_usb_led & (1<<USB_LED_NUM_LOCK)))
501 {
502 // If NUM LK LED is turning on...
503 PLAY_NOTE_ARRAY(tone_numlk_on, false, LEGATO);
504 }
505 else if (!(usb_led & (1<<USB_LED_NUM_LOCK)) && (old_usb_led & (1<<USB_LED_NUM_LOCK)))
506 {
507 // If NUM LED is turning off...
508 PLAY_NOTE_ARRAY(tone_numlk_off, false, LEGATO);
509 }
510 else if ((usb_led & (1<<USB_LED_SCROLL_LOCK)) && !(old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
511 {
512 // If SCROLL LK LED is turning on...
513 PLAY_NOTE_ARRAY(tone_scroll_on, false, LEGATO);
514 }
515 else if (!(usb_led & (1<<USB_LED_SCROLL_LOCK)) && (old_usb_led & (1<<USB_LED_SCROLL_LOCK)))
516 {
517 // If SCROLL LED is turning off...
518 PLAY_NOTE_ARRAY(tone_scroll_off, false, LEGATO);
519 }
520 old_usb_led = usb_led;
521}
522
523
524void play_startup_tone()
525{
526 _delay_ms(10); // gets rid of tick
527 PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO);
528}
529
530void play_goodbye_tone()
531{
532 PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO);
533 _delay_ms(1000);
534}
535
536#endif /* AUDIO_ENABLE */ \ No newline at end of file
diff --git a/keyboard/planck/keymaps/pvc/makefile.mk b/keyboard/planck/keymaps/pvc/makefile.mk
new file mode 100644
index 000000000..4b9e34c53
--- /dev/null
+++ b/keyboard/planck/keymaps/pvc/makefile.mk
@@ -0,0 +1,16 @@
1BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
2MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
3EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
4CONSOLE_ENABLE = yes # Console for debug(+400)
5COMMAND_ENABLE = yes # Commands for debug and configuration
6NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
7MIDI_ENABLE = no # MIDI controls
8AUDIO_ENABLE = no # Audio output on port C6
9UNICODE_ENABLE = no # Unicode
10BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
11RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
12
13# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
14SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
15
16CONFIG_H = keymaps/$(KEYMAP)/config.h
diff --git a/keyboard/planck/keymaps/pvc_planck.c b/keyboard/planck/keymaps/pvc_planck.c
deleted file mode 100644
index 1de8acb1e..000000000
--- a/keyboard/planck/keymaps/pvc_planck.c
+++ /dev/null
@@ -1,179 +0,0 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3
4#include "planck.h"
5#include "print.h"
6#include "action_layer.h"
7#ifdef BACKLIGHT_ENABLE
8 #include "backlight.h"
9#endif
10
11// Each layer gets a name for readability, which is then used in the keymap matrix below.
12// The underscores don't mean anything - you can have a layer called STUFF or any other name.
13// Layer names don't all need to be of the same length, obviously, and you can also skip them
14// entirely and just use numbers.
15#define _QW 0
16#define _CM 1
17#define _DV 2
18#define _LW 3
19#define _RS 4
20#define _FN 5
21
22#define XXXXXXX KC_NO
23#define _______ KC_TRNS
24
25#define ASFT(kc) LSFT(RSFT(kc))
26#define MG_B ASFT(KC_B)
27#define MG_H ASFT(KC_H)
28
29const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30
31/* Qwerty
32 * ,-----------------------------------------------------------------------------------.
33 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
34 * |------+------+------+------+------+-------------+------+------+------+------+------|
35 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
36 * |------+------+------+------+------+------|------+------+------+------+------+------|
37 * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter |
38 * |------+------+------+------+------+------+------+------+------+------+------+------|
39 * | Ctrl | GUI | Alt | Del |Raise | Space |Lower | / | Left | Down |Right |
40 * `-----------------------------------------------------------------------------------'
41 */
42[_QW] = {
43 {RESET, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
44 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
45 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT },
46 {KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, M(_LW), KC_SPC, KC_SPC, M(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT}
47},
48
49/* Colemak
50 * ,-----------------------------------------------------------------------------------.
51 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
52 * |------+------+------+------+------+-------------+------+------+------+------+------|
53 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
54 * |------+------+------+------+------+------|------+------+------+------+------+------|
55 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
56 * |------+------+------+------+------+------+------+------+------+------+------+------|
57 * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
58 * `-----------------------------------------------------------------------------------'
59 */
60[_CM] = {
61 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
62 {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
63 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
64 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
65},
66
67/* Dvorak
68 * ,-----------------------------------------------------------------------------------.
69 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
70 * |------+------+------+------+------+-------------+------+------+------+------+------|
71 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
72 * |------+------+------+------+------+------|------+------+------+------+------+------|
73 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
74 * |------+------+------+------+------+------+------+------+------+------+------+------|
75 * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
76 * `-----------------------------------------------------------------------------------'
77 */
78[_DV] = {
79 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
80 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
81 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
82 {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
83},
84
85/* Raise
86 * ,-----------------------------------------------------------------------------------.
87 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
88 * |------+------+------+------+------+-------------+------+------+------+------+------|
89 * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
90 * |------+------+------+------+------+------|------+------+------+------+------+------|
91 * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
92 * |------+------+------+------+------+------+------+------+------+------+------+------|
93 * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
94 * `-----------------------------------------------------------------------------------'
95 */
96[_RS] = {
97 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
98 {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
99 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, RESET, _______},
100 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
101},
102
103/* Lower
104 * ,-----------------------------------------------------------------------------------.
105 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
106 * |------+------+------+------+------+-------------+------+------+------+------+------|
107 * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
108 * |------+------+------+------+------+------|------+------+------+------+------+------|
109 * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
110 * |------+------+------+------+------+------+------+------+------+------+------+------|
111 * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
112 * `-----------------------------------------------------------------------------------'
113 */
114[_LW] = {
115 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
116 {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
117 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, MG_B, _______},
118 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
119},
120
121/* Function
122 * ,-----------------------------------------------------------------------------------.
123 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
124 * |------+------+------+------+------+-------------+------+------+------+------+------|
125 * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
126 * |------+------+------+------+------+------|------+------+------+------+------+------|
127 * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
128 * |------+------+------+------+------+------+------+------+------+------+------+------|
129 * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play |
130 * `-----------------------------------------------------------------------------------'
131 */
132[_FN] = {
133 {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
134 {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
135 {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX},
136 {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}
137}
138};
139
140const uint16_t PROGMEM fn_actions[] = {
141
142};
143
144
145const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
146{
147 // MACRODOWN only works in this function
148 switch(id)
149 {
150 case _RS:
151 if (record->event.pressed) {
152 print("RS_DN");
153 layer_on(_RS);
154 update_tri_layer(_RS, _LW, _FN);
155 } else {
156 print("RS_UP");
157 layer_off(_RS);
158 update_tri_layer(_RS, _LW, _FN);
159 phex(layer_state);
160 }
161 break;
162
163 case _LW:
164 if (record->event.pressed) {
165 print("LW_DN");
166 layer_on(_LW);
167 update_tri_layer(_RS, _LW, _FN);
168 } else {
169 print("LW_UP");
170 layer_off(_LW);
171 update_tri_layer(_RS, _LW, _FN);
172 }
173 break;
174
175 default:
176 break;
177 }
178 return MACRO_NONE;
179};