Commit | Line | Data |
---|---|---|
b688c2c0 CK |
1 | /* Copyright 2015-2018 Jack Humbert, Corey Kump |
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 |
b688c2c0 CK |
18 | |
19 | extern keymap_config_t keymap_config; | |
20 | ||
21 | enum planck_layers { | |
22 | _COLEMAK, | |
23 | _QWERTY, | |
24 | _LOWER, | |
25 | _LEANDOWN, | |
26 | _RAISE, | |
27 | _WOBBLE, | |
28 | _PLOVER, | |
29 | _ADJUST | |
30 | }; | |
31 | ||
32 | /* This include relies on the layer constants above and so must be declared after them */ | |
33 | #include "tapdance.c" | |
34 | ||
35 | enum planck_keycodes { | |
36 | QWERTY = SAFE_RANGE, | |
37 | COLEMAK, | |
38 | LOWER, | |
39 | RAISE, | |
40 | BACKLIT | |
41 | }; | |
42 | ||
43 | #define KC_ KC_TRNS | |
44 | #define KC_____ KC_TRNS | |
45 | #define KC_XXXX KC_NO | |
46 | #define KC_LOWR LOWER | |
47 | #define KC_RASE RAISE | |
48 | ||
49 | /** | |
50 | * Custom Corvec Bindings | |
51 | * | |
52 | * Previously used but currently unused bindings are commented out. | |
53 | **/ | |
54 | ||
55 | // Activate the Wobble layer | |
56 | #define KC_WOBL MO(_WOBBLE) | |
57 | // Dual function with Raise | |
58 | #define KC_RESC LT(_RAISE, KC_ESC) | |
59 | // Dual functions with Lower | |
60 | #define KC_LENT LT(_LOWER, KC_ENT) | |
61 | #define KC_LQUT LT(_LEANDOWN, KC_QUOT) | |
62 | // Dual functions with Shift | |
63 | #define KC_SDEL MT(MOD_LSFT, KC_DEL) | |
64 | #define KC_SAPP MT(MOD_LSFT, KC_APP) | |
65 | ||
66 | /** | |
67 | * Functions taking advantage of tap dance: | |
68 | **/ | |
69 | // Tap once: quote. Hold: LEANDOWN layer. Tap twice: minus. | |
70 | #define KC_TQTD TD(TD_QUOT_LEAN_MINS) | |
71 | // Tap once: [. Hold: RALT. Tap twice: { | |
72 | #define KC_TALT TD(TD_LBRC_RALT_LCBR) | |
73 | // Tap once: ]. Hold: RGUI. Tap twice: } | |
74 | #define KC_TGUI TD(TD_RBRC_RGUI_RCBR) | |
75 | ||
76 | ||
77 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
78 | ||
79 | [_COLEMAK] = KC_KEYMAP( | |
80 | //-----+----+----+----+----+----+----+----+----+----+----+---- | |
81 | TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,BSPC, | |
82 | //-----+----+----+----+----+----+----+----+----+----+----+---- | |
83 | RESC, A , R , S , T , D , H , N , E , I , O ,TQTD, | |
84 | //-----+----+----+----+----+----+----+----+----+----+----+---- | |
85 | LSFT, Z , X , C , V , B , K , M ,COMM,DOT ,SLSH,RSFT, | |
86 | //-----+----+----+----+----+----+----+----+----+----+----+---- | |
87 | LCTL,LGUI,WOBL,LALT,LENT, SPC, SPC,RASE,SDEL,TALT,TGUI,RCTL | |
88 | ), | |
89 | ||
90 | [_QWERTY] = KC_KEYMAP( | |
91 | //-----+----+----+----+----+----+----+----+----+----+----+---- | |
92 | TAB , Q , W , E , R , T , Y , U , I , O , P ,BSPC, | |
93 | //-----+----+----+----+----+----+----+----+----+----+----+---- | |
94 | RESC, A , S , D , F , G , H , J , K , L ,SCLN,TQTD, | |
95 | //-----+----+----+----+----+----+----+----+----+----+----+---- | |
96 | LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,RSFT, | |
97 | //-----+----+----+----+----+----+----+----+----+----+----+---- | |
98 | LCTL,LGUI,WOBL,LALT,LENT, SPC, SPC,RASE,RALT,SAPP,RGUI,RCTL | |
99 | ), | |
100 | ||
101 | [_LOWER] = KC_KEYMAP( | |
102 | GRV ,EXLM, AT ,HASH, DLR,PERC,CIRC,AMPR,ASTR,LPRN,RPRN,____, | |
103 | ____,LPRN,RPRN,LBRC,RBRC,XXXX,LEFT,DOWN, UP ,RGHT,XXXX,MINS, | |
104 | ____,BSLS,TILD,PIPE,EQL ,UNDS,HOME,PGDN,PGUP,END ,BSLS,____, | |
105 | ____,____,____,____,____,____,____,____,____,____,____,____ | |
106 | ), | |
107 | ||
108 | [_LEANDOWN] = KC_KEYMAP( | |
109 | GRV ,EXLM, AT ,HASH, DLR,PERC,CIRC,AMPR,ASTR,LPRN,RPRN,____, | |
110 | ____,LPRN,RPRN,LBRC,RBRC,LCBR,LCBR,DLR ,PERC,CIRC,____,____, | |
111 | ____,BSLS,TILD,PIPE,EQL ,UNDS,HOME,EXLM, AT ,HASH,BSLS,____, | |
112 | ____,____,____,____,____,____,____,____,LEFT,DOWN, UP ,RGHT | |
113 | ), | |
114 | ||
115 | [_RAISE] = KC_KEYMAP( | |
116 | GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,____, | |
117 | ____,LPRN,RPRN,LCBR,RCBR,XXXX,XXXX, 4 , 5 , 6 ,PPLS,MINS, | |
118 | ____,BSLS,TILD,PIPE,EQL ,UNDS,XXXX, 1 , 2 , 3 ,PAST,____, | |
119 | ____,____,____,____,____,____,____,____,____,____,____,____ | |
120 | ), | |
121 | ||
122 | [_WOBBLE] = KC_KEYMAP( | |
123 | GRV , F1 , F2 , F3 , F4 , NO ,MUTE,VOLD,VOLU, NO , NO , DEL, | |
124 | , F5 , F6 , F7 , F8 , NO ,MPRV,MPLY,MSTP,MNXT, NO ,BSLS, | |
125 | , F9 , F10, F11, F12, NO , NO , NO , NO , INS,PSCR, , | |
126 | , , , , , , , , , , , | |
127 | ), | |
128 | ||
129 | /* Adjust (Lower + Raise) | |
130 | * ,-----------------------------------------------------------------------------------. | |
131 | * |Colemk| | Debug|RGB Tg|RGB Md|RGB H+|RGB H-|RGB S+|RGB S-|RGB V+|RGB V-|Qwerty| | |
132 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
133 | * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk| |AS On | AS + | | |
134 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
135 | * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf|AS Rep|AS Off| AS - | | |
136 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
137 | * | | | | | | | | | | | Reset| | |
138 | * `-----------------------------------------------------------------------------------' | |
139 | */ | |
140 | ||
26eef35f JY |
141 | [_ADJUST] = LAYOUT_planck_grid( |
142 | COLEMAK, _______, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, QWERTY , | |
143 | _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, _______, KC_ASON, KC_ASUP, | |
144 | _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF,KC_ASRP, KC_ASOFF,KC_ASDN, | |
145 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET | |
146 | ) | |
b688c2c0 CK |
147 | |
148 | ||
149 | }; | |
150 | ||
151 | #ifdef AUDIO_ENABLE | |
152 | float plover_song[][2] = SONG(PLOVER_SOUND); | |
153 | float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); | |
154 | #endif | |
155 | ||
156 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |
157 | switch (keycode) { | |
158 | case QWERTY: | |
159 | if (record->event.pressed) { | |
160 | print("mode just switched to qwerty and this is a huge string\n"); | |
161 | set_single_persistent_default_layer(_QWERTY); | |
162 | } | |
163 | return false; | |
164 | break; | |
165 | case COLEMAK: | |
166 | if (record->event.pressed) { | |
167 | set_single_persistent_default_layer(_COLEMAK); | |
168 | } | |
169 | return false; | |
170 | break; | |
171 | case LOWER: | |
172 | if (record->event.pressed) { | |
173 | layer_on(_LOWER); | |
174 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
175 | } else { | |
176 | layer_off(_LOWER); | |
177 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
178 | } | |
179 | return false; | |
180 | break; | |
181 | case RAISE: | |
182 | if (record->event.pressed) { | |
183 | layer_on(_RAISE); | |
184 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
185 | } else { | |
186 | layer_off(_RAISE); | |
187 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
188 | } | |
189 | return false; | |
190 | break; | |
191 | case BACKLIT: | |
192 | if (record->event.pressed) { | |
193 | register_code(KC_RSFT); | |
194 | #ifdef BACKLIGHT_ENABLE | |
195 | backlight_step(); | |
196 | #endif | |
197 | PORTE &= ~(1<<6); | |
198 | } else { | |
199 | unregister_code(KC_RSFT); | |
200 | PORTE |= (1<<6); | |
201 | } | |
202 | return false; | |
203 | break; | |
204 | } | |
205 | return true; | |
206 | } |