aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/planck/keymaps/lja83/config.h25
-rw-r--r--keyboards/planck/keymaps/lja83/keymap.c362
-rw-r--r--keyboards/planck/keymaps/lja83/readme.md2
-rw-r--r--keyboards/planck/keymaps/lja83/rules.mk1
4 files changed, 390 insertions, 0 deletions
diff --git a/keyboards/planck/keymaps/lja83/config.h b/keyboards/planck/keymaps/lja83/config.h
new file mode 100644
index 000000000..b0c34f5c0
--- /dev/null
+++ b/keyboards/planck/keymaps/lja83/config.h
@@ -0,0 +1,25 @@
1#pragma once
2
3#ifdef AUDIO_ENABLE
4 #define STARTUP_SONG SONG(PLANCK_SOUND)
5 // #define STARTUP_SONG SONG(NO_SOUND)
6
7 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
8 SONG(COLEMAK_SOUND), \
9 SONG(DVORAK_SOUND) \
10 }
11#endif
12
13/*
14 * MIDI options
15 */
16
17/* enable basic MIDI features:
18 - MIDI notes can be sent when in Music mode is on
19*/
20
21#define MIDI_BASIC
22
23
24// Most tactile encoders have detents every 4 stages
25#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/keymaps/lja83/keymap.c b/keyboards/planck/keymaps/lja83/keymap.c
new file mode 100644
index 000000000..d42c5b645
--- /dev/null
+++ b/keyboards/planck/keymaps/lja83/keymap.c
@@ -0,0 +1,362 @@
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
17#include QMK_KEYBOARD_H
18#include "muse.h"
19
20
21enum planck_layers {
22 _QWERTY,
23 _COLEMAK,
24 _DVORAK,
25 _LOWER,
26 _RAISE,
27 _PLOVER,
28 _ADJUST,
29 _NAV,
30};
31
32enum planck_keycodes {
33 QWERTY = SAFE_RANGE,
34 COLEMAK,
35 DVORAK,
36 PLOVER,
37 BACKLIT,
38 EXT_PLV
39};
40
41#define LOWER MO(_LOWER)
42#define RAISE MO(_RAISE)
43#define NAV MO(_NAV)
44
45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46
47// clang-format off
48/* Qwerty
49 * ,-----------------------------------------------------------------------------------.
50 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
51 * |------+------+------+------+------+------+------+------+------+------+------+------|
52 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
53 * |------+------+------+------+------+------+------+------+------+------+------+------|
54 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
55 * |------+------+------+------+------+------+------+------+------+------+------+------|
56 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
57 * `-----------------------------------------------------------------------------------'
58 */
59[_QWERTY] = LAYOUT_planck_grid(
60 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
61 LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
62 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT),
63 BACKLIT, KC_LCTL, KC_LGUI, KC_LALT, LOWER, LT(_NAV, KC_SPC), KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
64),
65
66/* Colemak
67 * ,-----------------------------------------------------------------------------------.
68 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
69 * |------+------+------+------+------+------+------+------+------+------+------+------|
70 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
71 * |------+------+------+------+------+------+------+------+------+------+------+------|
72 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
73 * |------+------+------+------+------+------+------+------+------+------+------+------|
74 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
75 * `-----------------------------------------------------------------------------------'
76 */
77[_COLEMAK] = LAYOUT_planck_grid(
78 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
79 KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
80 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
81 BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
82),
83
84/* Dvorak
85 * ,-----------------------------------------------------------------------------------.
86 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
87 * |------+------+------+------+------+------+------+------+------+------+------+------|
88 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
89 * |------+------+------+------+------+------+------+------+------+------+------+------|
90 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
91 * |------+------+------+------+------+------+------+------+------+------+------+------|
92 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
93 * `-----------------------------------------------------------------------------------'
94 */
95[_DVORAK] = LAYOUT_planck_grid(
96 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
97 KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
98 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
99 BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
100),
101
102/* Lower
103 * ,-----------------------------------------------------------------------------------.
104 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
105 * |------+------+------+------+------+------+------+------+------+------+------+------|
106 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
107 * |------+------+------+------+------+------+------+------+------+------+------+------|
108 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
109 * |------+------+------+------+------+------+------+------+------+------+------+------|
110 * | | | | | | | | Next | Vol- | Vol+ | Play |
111 * `-----------------------------------------------------------------------------------'
112 */
113[_LOWER] = LAYOUT_planck_grid(
114 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
115 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
116 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
117 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
118),
119
120/* Raise
121 * ,-----------------------------------------------------------------------------------.
122 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
123 * |------+------+------+------+------+------+------+------+------+------+------+------|
124 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
125 * |------+------+------+------+------+------+------+------+------+------+------+------|
126 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
127 * |------+------+------+------+------+------+------+------+------+------+------+------|
128 * | | | | | | | | Next | Vol- | Vol+ | Play |
129 * `-----------------------------------------------------------------------------------'
130 */
131[_RAISE] = LAYOUT_planck_grid(
132 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
133 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
134 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
135 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
136),
137
138/* Plover layer (http://opensteno.org)
139 * ,-----------------------------------------------------------------------------------.
140 * | # | # | # | # | # | # | # | # | # | # | # | # |
141 * |------+------+------+------+------+------+------+------+------+------+------+------|
142 * | | S | T | P | H | * | * | F | P | L | T | D |
143 * |------+------+------+------+------+------+------+------+------+------+------+------|
144 * | | S | K | W | R | * | * | R | B | G | S | Z |
145 * |------+------+------+------+------+------+------+------+------+------+------+------|
146 * | Exit | | | A | O | | E | U | | | |
147 * `-----------------------------------------------------------------------------------'
148 */
149[_PLOVER] = LAYOUT_planck_grid(
150 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
151 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
152 XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
153 EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
154),
155
156/* Adjust (Lower + Raise)
157 * v------------------------RGB CONTROL--------------------v
158 * ,-----------------------------------------------------------------------------------.
159 * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
160 * |------+------+------+------+------+------+------+------+------+------+------+------|
161 * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
162 * |------+------+------+------+------+------+------+------+------+------+------+------|
163 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
164 * |------+------+------+------+------+------+------+------+------+------+------+------|
165 * | | | | | | | | | | | |
166 * `-----------------------------------------------------------------------------------'
167 */
168[_ADJUST] = LAYOUT_planck_grid(
169 _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
170 _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
171 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
172 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
173),
174
175[_NAV] = LAYOUT_planck_grid(
176 XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_UP, XXXXXXX, KC_MS_WH_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
177 XXXXXXX, XXXXXXX, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXXXXX, XXXXXXX,
178 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_BTN1, KC_MS_BTN3, KC_MS_BTN2, XXXXXXX, XXXXXXX,
179 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
180)
181};
182// clang-format on
183
184#ifdef AUDIO_ENABLE
185 float plover_song[][2] = SONG(PLOVER_SOUND);
186 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
187#endif
188
189layer_state_t layer_state_set_user(layer_state_t state) {
190 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
191}
192
193bool process_record_user(uint16_t keycode, keyrecord_t *record) {
194 switch (keycode) {
195 case QWERTY:
196 if (record->event.pressed) {
197 print("mode just switched to qwerty and this is a huge string\n");
198 set_single_persistent_default_layer(_QWERTY);
199 }
200 return false;
201 break;
202 case COLEMAK:
203 if (record->event.pressed) {
204 set_single_persistent_default_layer(_COLEMAK);
205 }
206 return false;
207 break;
208 case DVORAK:
209 if (record->event.pressed) {
210 set_single_persistent_default_layer(_DVORAK);
211 }
212 return false;
213 break;
214 case BACKLIT:
215 if (record->event.pressed) {
216 register_code(KC_RSFT);
217 #ifdef BACKLIGHT_ENABLE
218 backlight_step();
219 #endif
220 #ifdef KEYBOARD_planck_rev5
221 writePinLow(E6);
222 #endif
223 } else {
224 unregister_code(KC_RSFT);
225 #ifdef KEYBOARD_planck_rev5
226 writePinHigh(E6);
227 #endif
228 }
229 return false;
230 break;
231 case PLOVER:
232 if (record->event.pressed) {
233 #ifdef AUDIO_ENABLE
234 stop_all_notes();
235 PLAY_SONG(plover_song);
236 #endif
237 layer_off(_RAISE);
238 layer_off(_LOWER);
239 layer_off(_ADJUST);
240 layer_on(_PLOVER);
241 if (!eeconfig_is_enabled()) {
242 eeconfig_init();
243 }
244 keymap_config.raw = eeconfig_read_keymap();
245 keymap_config.nkro = 1;
246 eeconfig_update_keymap(keymap_config.raw);
247 }
248 return false;
249 break;
250 case EXT_PLV:
251 if (record->event.pressed) {
252 #ifdef AUDIO_ENABLE
253 PLAY_SONG(plover_gb_song);
254 #endif
255 layer_off(_PLOVER);
256 }
257 return false;
258 break;
259 }
260 return true;
261}
262
263bool muse_mode = false;
264uint8_t last_muse_note = 0;
265uint16_t muse_counter = 0;
266uint8_t muse_offset = 70;
267uint16_t muse_tempo = 50;
268
269bool encoder_update_user(uint16_t index, bool clockwise) {
270 if (muse_mode) {
271 if (IS_LAYER_ON(_RAISE)) {
272 if (clockwise) {
273 muse_offset++;
274 } else {
275 muse_offset--;
276 }
277 } else {
278 if (clockwise) {
279 muse_tempo+=1;
280 } else {
281 muse_tempo-=1;
282 }
283 }
284 } else {
285 if (clockwise) {
286 #ifdef MOUSEKEY_ENABLE
287 tap_code(KC_MS_WH_DOWN);
288 #else
289 tap_code(KC_PGDN);
290 #endif
291 } else {
292 #ifdef MOUSEKEY_ENABLE
293 tap_code(KC_MS_WH_UP);
294 #else
295 tap_code(KC_PGUP);
296 #endif
297 }
298 }
299 return true;
300}
301
302void dip_switch_update_user(uint8_t index, bool active) {
303 switch (index) {
304 case 0: {
305#ifdef AUDIO_ENABLE
306 static bool play_sound = false;
307#endif
308 if (active) {
309#ifdef AUDIO_ENABLE
310 if (play_sound) { PLAY_SONG(plover_song); }
311#endif
312 layer_on(_ADJUST);
313 } else {
314#ifdef AUDIO_ENABLE
315 if (play_sound) { PLAY_SONG(plover_gb_song); }
316#endif
317 layer_off(_ADJUST);
318 }
319#ifdef AUDIO_ENABLE
320 play_sound = true;
321#endif
322 break;
323 }
324 case 1:
325 if (active) {
326 muse_mode = true;
327 } else {
328 muse_mode = false;
329 }
330 }
331}
332
333void matrix_scan_user(void) {
334#ifdef AUDIO_ENABLE
335 if (muse_mode) {
336 if (muse_counter == 0) {
337 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
338 if (muse_note != last_muse_note) {
339 stop_note(compute_freq_for_midi_note(last_muse_note));
340 play_note(compute_freq_for_midi_note(muse_note), 0xF);
341 last_muse_note = muse_note;
342 }
343 }
344 muse_counter = (muse_counter + 1) % muse_tempo;
345 } else {
346 if (muse_counter) {
347 stop_all_notes();
348 muse_counter = 0;
349 }
350 }
351#endif
352}
353
354bool music_mask_user(uint16_t keycode) {
355 switch (keycode) {
356 case RAISE:
357 case LOWER:
358 return false;
359 default:
360 return true;
361 }
362}
diff --git a/keyboards/planck/keymaps/lja83/readme.md b/keyboards/planck/keymaps/lja83/readme.md
new file mode 100644
index 000000000..3650ae446
--- /dev/null
+++ b/keyboards/planck/keymaps/lja83/readme.md
@@ -0,0 +1,2 @@
1# LJA83 Planck Layout
2
diff --git a/keyboards/planck/keymaps/lja83/rules.mk b/keyboards/planck/keymaps/lja83/rules.mk
new file mode 100644
index 000000000..dcf16bef3
--- /dev/null
+++ b/keyboards/planck/keymaps/lja83/rules.mk
@@ -0,0 +1 @@
SRC += muse.c