aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/clueboard/66/keymaps/muzfuz/keymap.c74
-rw-r--r--keyboards/clueboard/66/keymaps/muzfuz/readme.md8
-rw-r--r--keyboards/dz60/keymaps/muzfuz/README.md8
-rw-r--r--keyboards/dz60/keymaps/muzfuz/keymap.c80
-rw-r--r--keyboards/planck/keymaps/muzfuz/config.h40
-rw-r--r--keyboards/planck/keymaps/muzfuz/keymap.c297
-rw-r--r--keyboards/planck/keymaps/muzfuz/readme.md8
-rw-r--r--keyboards/planck/keymaps/muzfuz/rules.mk1
8 files changed, 516 insertions, 0 deletions
diff --git a/keyboards/clueboard/66/keymaps/muzfuz/keymap.c b/keyboards/clueboard/66/keymaps/muzfuz/keymap.c
new file mode 100644
index 000000000..d4af35483
--- /dev/null
+++ b/keyboards/clueboard/66/keymaps/muzfuz/keymap.c
@@ -0,0 +1,74 @@
1#include QMK_KEYBOARD_H
2
3// Helpful defines
4#define ESC_CTL CTL_T(KC_ESCAPE) // Tap for Esc, hold for Ctrl
5#define _FL_KCF LT(1,KC_F)
6#define _FL_KCJ LT(1,KC_J)
7#define _AL_KCA LT(2,KC_A)
8#define CMD_ENT LGUI(LSFT(KC_ENT))
9
10// Each layer gets a name for readability, which is then used in the keymap matrix below.
11// The underscores don't mean anything - you can have a layer called STUFF or any other name.
12#define _BL 0
13#define _FL 1
14#define _AL 2
15#define _CL 3
16
17enum custom_keycodes {
18 HASHRKT = SAFE_RANGE,
19 CLNEQLS,
20};
21
22const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 /* Keymap _BL: Base Layer (Default Layer)
24 */
25 [_BL] = LAYOUT(
26 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, HASHRKT, LGUI(KC_C),
27 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_BSPC, LGUI(KC_V),
28 ESC_CTL, _AL_KCA, KC_S, KC_D, _FL_KCF, KC_G, KC_H, _FL_KCJ, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_LGUI,
29 KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SLSH, KC_RSFT, KC_UP,
30 CMD_ENT, KC_LCTL, KC_LALT, KC_LGUI, KC_ENT, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, MO(_CL), KC_LEFT, KC_DOWN, KC_RGHT),
31
32 /* Keymap _FL: Function Layer
33 */
34 [_FL] = LAYOUT(
35 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, KC_VOLU,
36 _______, HASHRKT, _______, KC_LCBR, KC_RCBR, _______, _______, KC_UNDS, KC_PLUS, KC_PIPE, _______, _______, _______, KC_MUTE, KC_VOLD,
37 _______, CLNEQLS, _______, KC_LBRC, KC_RBRC, _______, _______, KC_MINS, KC_EQL, KC_BSLS, KC_TILD, KC_GRV, _______, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END),
40
41 /* Keymap _FL: Function Layer
42 */
43 [_AL] = LAYOUT(
44 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
46 _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
47 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
49
50 /* Keymap _CL: Control layer
51 */
52 [_CL] = LAYOUT(
53 BL_STEP, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
54 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_VAD,
55 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
56 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
57 _______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
58};
59
60bool process_record_user(uint16_t keycode, keyrecord_t *record) {
61 switch(keycode) {
62 case HASHRKT:
63 if (record->event.pressed) {
64 SEND_STRING("=>");
65 }
66 break;
67 case CLNEQLS:
68 if (record->event.pressed) {
69 SEND_STRING(":=");
70 }
71 break;
72 }
73 return true;
74}
diff --git a/keyboards/clueboard/66/keymaps/muzfuz/readme.md b/keyboards/clueboard/66/keymaps/muzfuz/readme.md
new file mode 100644
index 000000000..ce23a8a99
--- /dev/null
+++ b/keyboards/clueboard/66/keymaps/muzfuz/readme.md
@@ -0,0 +1,8 @@
1# muzfuz Clueboard layout
2
3```shell
4make clueboard/66/rev3:muzfuz
5dfu-programmer atmega32u4 erase --force && \
6dfu-programmer atmega32u4 flash .build/clueboard_66_rev3_muzfuz.hex && \
7dfu-programmer atmega32u4 reset
8```
diff --git a/keyboards/dz60/keymaps/muzfuz/README.md b/keyboards/dz60/keymaps/muzfuz/README.md
new file mode 100644
index 000000000..711d6d5f5
--- /dev/null
+++ b/keyboards/dz60/keymaps/muzfuz/README.md
@@ -0,0 +1,8 @@
1# muzfuz DZ60 layout
2
3```shell
4make dz60:muzfuz
5dfu-programmer atmega32u4 erase --force && \
6dfu-programmer atmega32u4 flash .build/dz60_muzfuz_v2.hex && \
7dfu-programmer atmega32u4 reset
8```
diff --git a/keyboards/dz60/keymaps/muzfuz/keymap.c b/keyboards/dz60/keymaps/muzfuz/keymap.c
new file mode 100644
index 000000000..848569f61
--- /dev/null
+++ b/keyboards/dz60/keymaps/muzfuz/keymap.c
@@ -0,0 +1,80 @@
1#include QMK_KEYBOARD_H
2
3#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
4#define ESC_CTL CTL_T(KC_ESCAPE) // Tap for Esc, hold for Ctrl
5
6enum custom_keycodes {
7 HASHRKT = SAFE_RANGE,
8 CLNEQLS,
9};
10
11const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
12
13 LAYOUT(
14 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, HASHRKT,
15 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_BSPC,
16 ESC_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RGUI,
17 KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
18 KC_LCTL, KC_LALT, KC_LGUI, KC_ENT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_RGHT, KC_DOWN),
19
20 LAYOUT(
21 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
22 _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET,
23 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
24 _______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
25 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
26};
27
28void led_set_user(uint8_t usb_led) {
29
30 if (usb_led & (1 << USB_LED_NUM_LOCK)) {
31
32 } else {
33
34 }
35
36 if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
37 DDRB |= (1 << 2); PORTB &= ~(1 << 2);
38 } else {
39 DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
40 }
41
42 if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
43
44 } else {
45
46 }
47
48 if (usb_led & (1 << USB_LED_COMPOSE)) {
49
50 } else {
51
52 }
53
54 if (usb_led & (1 << USB_LED_KANA)) {
55
56 } else {
57
58 }
59
60}
61
62bool process_record_user(uint16_t keycode, keyrecord_t *record)
63{
64 switch (keycode)
65 {
66 case HASHRKT:
67 if (record->event.pressed)
68 {
69 SEND_STRING("=>");
70 }
71 break;
72 case CLNEQLS:
73 if (record->event.pressed)
74 {
75 SEND_STRING(":=");
76 }
77 break;
78 }
79 return true;
80}
diff --git a/keyboards/planck/keymaps/muzfuz/config.h b/keyboards/planck/keymaps/muzfuz/config.h
new file mode 100644
index 000000000..fe44b5aa2
--- /dev/null
+++ b/keyboards/planck/keymaps/muzfuz/config.h
@@ -0,0 +1,40 @@
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 \
8 { \
9 SONG(QWERTY_SOUND), \
10 SONG(COLEMAK_SOUND), \
11 SONG(DVORAK_SOUND) \
12 }
13#endif
14
15/*
16 * MIDI options
17 */
18
19/* Prevent use of disabled MIDI features in the keymap */
20//#define MIDI_ENABLE_STRICT 1
21
22/* enable basic MIDI features:
23 - MIDI notes can be sent when in Music mode is on
24*/
25
26#define MIDI_BASIC
27
28/* enable advanced MIDI features:
29 - MIDI notes can be added to the keymap
30 - Octave shift and transpose
31 - Virtual sustain, portamento, and modulation wheel
32 - etc.
33*/
34//#define MIDI_ADVANCED
35
36/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
37//#define MIDI_TONE_KEYCODE_OCTAVES 2
38
39// Most tactile encoders have detents every 4 stages
40#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/keymaps/muzfuz/keymap.c b/keyboards/planck/keymaps/muzfuz/keymap.c
new file mode 100644
index 000000000..16994a576
--- /dev/null
+++ b/keyboards/planck/keymaps/muzfuz/keymap.c
@@ -0,0 +1,297 @@
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
20extern keymap_config_t keymap_config;
21
22enum planck_layers
23{
24 _QWERTY,
25 _LOWER,
26 _RAISE,
27 _ADJUST
28};
29
30enum planck_keycodes
31{
32 QWERTY = SAFE_RANGE,
33 BACKLIT,
34 EXT_PLV,
35 HASHRKT,
36 CLNEQLS
37};
38
39#define LOWER MO(_LOWER)
40#define RAISE MO(_RAISE)
41#define ESC_CTL CTL_T(KC_ESCAPE)
42
43const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
44
45 /* Qwerty
46 * ,-----------------------------------------------------------------------------------.
47 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
48 * |------+------+------+------+------+-------------+------+------+------+------+------|
49 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
50 * |------+------+------+------+------+------|------+------+------+------+------+------|
51 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
52 * |------+------+------+------+------+------+------+------+------+------+------+------|
53 * | Brite| Ctrl | Alt | GUI |Lower | Enter|Space |Raise | Left | Down | Up |Right |
54 * `-----------------------------------------------------------------------------------'
55 */
56 [_QWERTY] = LAYOUT_planck_grid(
57 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
58 ESC_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
59 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
60 BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_ENT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
61
62 /* Lower
63 * ,-----------------------------------------------------------------------------------.
64 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
65 * |------+------+------+------+------+-------------+------+------+------+------+------|
66 * |ESCCTL| := | | { | } | ( | ) | - | = | \ | ~ | GUI |
67 * |------+------+------+------+------+------|------+------+------+------+------+------|
68 * | | => | | [ | ] | | | _ | + | | | Home | End |
69 * |------+------+------+------+------+------+------+------+------+------+------+------|
70 * | | | | | | | | Next | Vol- | Vol+ | Play |
71 * `-----------------------------------------------------------------------------------'
72 */
73
74 [_LOWER] = LAYOUT_planck_grid(
75 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
76 ESC_CTL, CLNEQLS, _______, KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL, KC_BSLS, KC_TILD, KC_RGUI,
77 _______, HASHRKT, _______, KC_LBRC, KC_RBRC, _______, _______, KC_UNDS, KC_PLUS, KC_PIPE, KC_HOME, KC_END,
78 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
79
80 /* Raise
81 * ,-----------------------------------------------------------------------------------.
82 * | ` | | | Up | | | | 7 | 8 | 9 | 0 | Bksp |
83 * |------+------+------+------+------+-------------+------+------+------+------+------|
84 * |ESCCTL| | Left | Down | Right | | | 4 | 5 | 6 | | GUI |
85 * |------+------+------+------+------+------|------+------+------+------+------+------|
86 * | | | | | | | | 1 | 2 | 3 | | |
87 * |------+------+------+------+------+------+------+------+------+------+------+------|
88 * | | | | | | | | Next | Vol- | Vol+ | Play |
89 * `-----------------------------------------------------------------------------------'
90 */
91 [_RAISE] = LAYOUT_planck_grid(
92 KC_GRV, _______, _______, KC_UP, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
93 ESC_CTL, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_4, KC_5, KC_6, _______, KC_RGUI,
94 _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______,
95 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
96
97 /* Adjust (Lower + Raise)
98 * ,-----------------------------------------------------------------------------------.
99 * | | Reset| | | | | | | | | | Del |
100 * |------+------+------+------+------+-------------+------+------+------+------+------|
101 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
102 * |------+------+------+------+------+------|------+------+------+------+------+------|
103 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
104 * |------+------+------+------+------+------+------+------+------+------+------+------|
105 * | | | | | | | | | | | |
106 * `-----------------------------------------------------------------------------------'
107 */
108 [_ADJUST] = LAYOUT_planck_grid(
109 _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
110 _______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, QWERTY, _______, _______, _______, _______,
111 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
112 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
113
114};
115
116#ifdef AUDIO_ENABLE
117float plover_song[][2] = SONG(PLOVER_SOUND);
118float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
119#endif
120
121uint32_t layer_state_set_user(uint32_t state)
122{
123 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
124}
125
126bool process_record_user(uint16_t keycode, keyrecord_t *record)
127{
128 switch (keycode)
129 {
130 case HASHRKT:
131 if (record->event.pressed)
132 {
133 SEND_STRING("=>");
134 }
135 break;
136 case CLNEQLS:
137 if (record->event.pressed)
138 {
139 SEND_STRING(":=");
140 }
141 break;
142 case QWERTY:
143 if (record->event.pressed)
144 {
145 print("mode just switched to qwerty and this is a huge string\n");
146 set_single_persistent_default_layer(_QWERTY);
147 }
148 return false;
149 break;
150 case BACKLIT:
151 if (record->event.pressed)
152 {
153 register_code(KC_RSFT);
154#ifdef BACKLIGHT_ENABLE
155 backlight_step();
156#endif
157#ifdef KEYBOARD_planck_rev5
158 PORTE &= ~(1 << 6);
159#endif
160 }
161 else
162 {
163 unregister_code(KC_RSFT);
164#ifdef KEYBOARD_planck_rev5
165 PORTE |= (1 << 6);
166#endif
167 }
168 return false;
169 break;
170 }
171 return true;
172}
173
174bool muse_mode = false;
175uint8_t last_muse_note = 0;
176uint16_t muse_counter = 0;
177uint8_t muse_offset = 70;
178uint16_t muse_tempo = 50;
179
180void encoder_update(bool clockwise)
181{
182 if (muse_mode)
183 {
184 if (IS_LAYER_ON(_RAISE))
185 {
186 if (clockwise)
187 {
188 muse_offset++;
189 }
190 else
191 {
192 muse_offset--;
193 }
194 }
195 else
196 {
197 if (clockwise)
198 {
199 muse_tempo += 1;
200 }
201 else
202 {
203 muse_tempo -= 1;
204 }
205 }
206 }
207 else
208 {
209 if (clockwise)
210 {
211#ifdef MOUSEKEY_ENABLE
212 register_code(KC_MS_WH_DOWN);
213 unregister_code(KC_MS_WH_DOWN);
214#else
215 register_code(KC_PGDN);
216 unregister_code(KC_PGDN);
217#endif
218 }
219 else
220 {
221#ifdef MOUSEKEY_ENABLE
222 register_code(KC_MS_WH_UP);
223 unregister_code(KC_MS_WH_UP);
224#else
225 register_code(KC_PGUP);
226 unregister_code(KC_PGUP);
227#endif
228 }
229 }
230}
231
232void dip_update(uint8_t index, bool active)
233{
234 switch (index)
235 {
236 case 0:
237 if (active)
238 {
239#ifdef AUDIO_ENABLE
240 PLAY_SONG(plover_song);
241#endif
242 layer_on(_ADJUST);
243 }
244 else
245 {
246#ifdef AUDIO_ENABLE
247 PLAY_SONG(plover_gb_song);
248#endif
249 layer_off(_ADJUST);
250 }
251 break;
252 case 1:
253 if (active)
254 {
255 muse_mode = true;
256 }
257 else
258 {
259 muse_mode = false;
260#ifdef AUDIO_ENABLE
261 stop_all_notes();
262#endif
263 }
264 }
265}
266
267void matrix_scan_user(void)
268{
269#ifdef AUDIO_ENABLE
270 if (muse_mode)
271 {
272 if (muse_counter == 0)
273 {
274 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
275 if (muse_note != last_muse_note)
276 {
277 stop_note(compute_freq_for_midi_note(last_muse_note));
278 play_note(compute_freq_for_midi_note(muse_note), 0xF);
279 last_muse_note = muse_note;
280 }
281 }
282 muse_counter = (muse_counter + 1) % muse_tempo;
283 }
284#endif
285}
286
287bool music_mask_user(uint16_t keycode)
288{
289 switch (keycode)
290 {
291 case RAISE:
292 case LOWER:
293 return false;
294 default:
295 return true;
296 }
297}
diff --git a/keyboards/planck/keymaps/muzfuz/readme.md b/keyboards/planck/keymaps/muzfuz/readme.md
new file mode 100644
index 000000000..78153fb32
--- /dev/null
+++ b/keyboards/planck/keymaps/muzfuz/readme.md
@@ -0,0 +1,8 @@
1# The muzfuz Planck Layout
2
3```shell
4docker run -e KEYMAP=muzfuz -e KEYBOARD=planck --rm -v $('pwd'):/qmk:rw qmk_firmware
5dfu-programmer atmega32u4 erase
6dfu-programmer atmega32u4 flash .build/planck_rev6_muzfuz.hex
7dfu-programmer atmega32u4 launch
8```
diff --git a/keyboards/planck/keymaps/muzfuz/rules.mk b/keyboards/planck/keymaps/muzfuz/rules.mk
new file mode 100644
index 000000000..dcf16bef3
--- /dev/null
+++ b/keyboards/planck/keymaps/muzfuz/rules.mk
@@ -0,0 +1 @@
SRC += muse.c