aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarrett Drouillard <jarrett@thestyl.us>2021-08-12 11:56:25 -0400
committerGitHub <noreply@github.com>2021-08-12 08:56:25 -0700
commit2218879d6878a63e74bca473399f9d315da7648b (patch)
treeb89bb1ec1d704f6e101b5c8e2a6ae42de961c427
parenta2d5468df331fec6d76a9c5fd4253ec788507bb1 (diff)
downloadqmk_firmware-2218879d6878a63e74bca473399f9d315da7648b.tar.gz
qmk_firmware-2218879d6878a63e74bca473399f9d315da7648b.zip
[Keymap] add kuatsure planck keymap (#10625)
Co-authored-by: Ryan <fauxpark@gmail.com>
-rw-r--r--keyboards/planck/keymaps/kuatsure/config.h33
-rw-r--r--keyboards/planck/keymaps/kuatsure/keymap.c318
-rw-r--r--keyboards/planck/keymaps/kuatsure/readme.md1
-rw-r--r--keyboards/planck/keymaps/kuatsure/rules.mk6
-rw-r--r--keyboards/preonic/keymaps/kuatsure/keymap.c2
-rw-r--r--users/kuatsure/kuatsure.c14
-rw-r--r--users/kuatsure/kuatsure.h10
7 files changed, 371 insertions, 13 deletions
diff --git a/keyboards/planck/keymaps/kuatsure/config.h b/keyboards/planck/keymaps/kuatsure/config.h
new file mode 100644
index 000000000..8d832285b
--- /dev/null
+++ b/keyboards/planck/keymaps/kuatsure/config.h
@@ -0,0 +1,33 @@
1/* Copyright 2020 kuatsure
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#pragma once
18
19#ifdef AUDIO_ENABLE
20 #define STARTUP_SONG SONG(PLANCK_SOUND)
21 // #define STARTUP_SONG SONG(NO_SOUND)
22
23 #define GAME_SOUND DVORAK_SOUND
24
25 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
26 SONG(GAME_SOUND) \
27 }
28#endif
29
30#define MIDI_BASIC
31
32// Most tactile encoders have detents every 4 stages
33#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/keymaps/kuatsure/keymap.c b/keyboards/planck/keymaps/kuatsure/keymap.c
new file mode 100644
index 000000000..6ce1049b8
--- /dev/null
+++ b/keyboards/planck/keymaps/kuatsure/keymap.c
@@ -0,0 +1,318 @@
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#include "kuatsure.h"
20
21#define LAYOUT_planck_grid_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__)
22
23enum planck_layers {
24 _QWERTY,
25 _GAME,
26 _GAME_LOWER,
27 _GAME_RAISE,
28 _MOUSE,
29 _LOWER,
30 _RAISE,
31 _ADJUST
32};
33
34enum planck_keycodes {
35 QWERTY = USER_SAFE_RANGE,
36 GAME,
37};
38
39#define LOWER MO(_LOWER)
40#define RAISE MO(_RAISE)
41#define MOUSE TG(_MOUSE)
42#define G_LOWER MO(_GAME_LOWER)
43#define G_RAISE MO(_GAME_RAISE)
44
45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46
47/* Qwerty
48 * ,-----------------------------------------------------------------------------------.
49 * | Tab/M| Q | W | E | R | T | Y | U | I | O | P | Bksp |
50 * |------+------+------+------+------+-------------+------+------+------+------+------|
51 * | Esc/C| A | S | D | F | G | H | J | K | L | ; | ' |
52 * |------+------+------+------+------+------|------+------+------+------+------+------|
53 * | Shift| Z | X | C | V | B | N | M | , | . | / | Ent |
54 * |------+------+------+------+------+------+------+------+------+------+------+------|
55 * | Mute | Ldr | Alt | GUI |Lower | RSE | SPC | Left | Down | Up |Right |
56 * `-----------------------------------------------------------------------------------'
57 */
58[_QWERTY] = LAYOUT_planck_grid_wrapper(
59 KT_MTAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
60 KT_CESC, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
61 KT_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_ENT,
62 KC_MPLY, KC_LEAD, KC_LALT, KC_LGUI, LOWER, RAISE, KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
63),
64
65/* Lower
66 * ,-----------------------------------------------------------------------------------.
67 * | | ! | & | Up | | ` | | { | } | _ | | | |
68 * |------+------+------+------+------+-------------+------+------+------+------+------|
69 * | | Del | Left | Down | Right| ~ | = | ( | ) | + | : | " |
70 * |------+------+------+------+------+------|------+------+------+------+------+------|
71 * | | VolD | Prev | Play | Next | VolU | - | [ | ] | | ? |Mouse |
72 * |------+------+------+------+------+------+------+------+------+------+------+------|
73 * | | | | | | | | | Home | PgDn | PgUp | End |
74 * `-----------------------------------------------------------------------------------'
75 */
76[_LOWER] = LAYOUT_planck_grid_wrapper(
77 _______, KC_EXLM, KC_AMPR, KC_UP, _______, KC_GRV, _______, ____CRBRACES____, KC_UNDS, _______, KC_PIPE,
78 _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TILD, KC_EQL, _____PARENS_____, KC_PLUS, KC_COLN, KC_DQT ,
79 _______, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_MINS, ___SQBRACKETS___, _______, KC_QUES, MOUSE ,
80 _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
81),
82
83/* Raise
84 * ,-----------------------------------------------------------------------------------.
85 * | | F9 | F10 | F11 | F12 | | * | 7 | 8 | 9 | 0 | \ |
86 * |------+------+------+------+------+-------------+------+------+------+------+------|
87 * | | F5 | F6 | F7 | F8 | | = | 4 | 5 | 6 | + | |
88 * |------+------+------+------+------+------|------+------+------+------+------+------|
89 * | | F1 | F2 | F3 | F4 | | - | 1 | 2 | 3 | / | |
90 * |------+------+------+------+------+------+------+------+------+------+------+------|
91 * | | | | | | | | | 0 | 0 | | |
92 * `-----------------------------------------------------------------------------------'
93 */
94[_RAISE] = LAYOUT_planck_grid_wrapper(
95 _______, ____________FUNCTION_3____________, _______, KC_ASTR, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
96 _______, ____________FUNCTION_2____________, _______, KC_EQL, KC_4, KC_5, KC_6, KC_PLUS, _______,
97 _______, ____________FUNCTION_1____________, _______, KC_MINS, KC_1, KC_2, KC_3, KC_SLASH, _______,
98 _______, _______, _______, _______, _______, _______, _______, KC_0, KC_0, _______, _______, _______
99),
100
101/* Mouse
102 * ,-----------------------------------------------------------------------------------.
103 * | | | Btn1 | mUP | Btn2 | | | | | | | |
104 * |------+------+------+------+------+------+------+------+------+------+------+------|
105 * | | | mLEFT| mDWN | mRGHT| | | | | | | |
106 * |------+------+------+------+------+------+------+------+------+------+------+------|
107 * | | | Btn3 | Btn4 | Btn5 | | | | | | |Mouse |
108 * |------+------+------+------+------+------+------+------+------+------+------+------|
109 * | | | | | | | | | | | | |
110 * `-----------------------------------------------------------------------------------'
111 */
112[_MOUSE] = LAYOUT_planck_grid_wrapper(
113 _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______,
114 _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______,
115 _______, _______, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, _______, _______, _______, _______, MOUSE ,
116 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
117),
118
119/* Adjust (Lower + Raise)
120 * ,-----------------------------------------------------------------------------------.
121 * | | MAKE | FLSH | | | | | | | | | Del |
122 * |------+------+------+------+------+-------------+------+------+------+------+------|
123 * | | RESET| DEBUG| | |Aud on|AudOff| Game |Mouse | | | |
124 * |------+------+------+------+------+------|------+------+------+------+------+------|
125 * | | VRSN | | |MusMod|Mus on|MusOff| | | | | |
126 * |------+------+------+------+------+------+------+------+------+------+------+------|
127 * | | | | | | | | | | | | |
128 * `-----------------------------------------------------------------------------------'
129 */
130[_ADJUST] = LAYOUT_planck_grid_wrapper(
131 _______, KB_MAKE, KB_FLSH, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
132 _______, RESET, DEBUG, _______, _______, AU_ON, AU_OFF, GAME, MOUSE, _______, _______, _______,
133 _______, KB_VRSN, _______, _______, MU_MOD, MU_ON, MU_OFF, _______, _______, _______, _______, _______,
134 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
135),
136
137/* Game
138 *
139 * Mostly transparent, but wanted to disable gui key.
140 * Also give a key to get back to qwerty layout.
141 *
142 * Disabling the `Controlled ESC` key is also plus.
143 * Think BDO / Monster Hunter / D2
144 *
145 * ,-----------------------------------------------------------------------------------.
146 * | Tab | | | | | | | | | | | |
147 * |------+------+------+------+------+-------------+------+------+------+------+------|
148 * | Ctrl | | | | | | | | | | | |
149 * |------+------+------+------+------+------|------+------+------+------+------+------|
150 * | Shft | | | | | | | | | | | |
151 * |------+------+------+------+------+------+------+------+------+------+------+------|
152 * | |Qwerty| F14 | Spc | gLWR | gRSE | ESC | | | | |
153 * `-----------------------------------------------------------------------------------'
154 */
155[_GAME] = LAYOUT_planck_grid_wrapper(
156 KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
157 KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
158 KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
159 _______, QWERTY, KC_F14, KC_SPC, G_LOWER, G_RAISE, KC_ESC, KC_ESC, _______, _______, _______, _______
160),
161
162/* Game Lower
163 * ,-----------------------------------------------------------------------------------.
164 * | | 1 | 2 | 3 | 4 | ` | | F9 | F10 | F11 | F12 | |
165 * |------+------+------+------+------+-------------+------+------+------+------+------|
166 * | | 5 | 6 | 7 | 8 | | | F5 | F6 | F7 | F8 | |
167 * |------+------+------+------+------+------|------+------+------+------+------+------|
168 * | | 9 | 0 | - | = | | | F1 | F2 | F3 | F4 | |
169 * |------+------+------+------+------+------+------+------+------+------+------+------|
170 * | | | | | | | | | | | | |
171 * `-----------------------------------------------------------------------------------'
172 */
173[_GAME_LOWER] = LAYOUT_planck_grid_wrapper(
174 _______, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, ____________FUNCTION_3____________, _______,
175 _______, KC_5, KC_6, KC_7, KC_8, _______, _______, ____________FUNCTION_2____________, _______,
176 _______, KC_9, KC_0, KC_MINS, KC_EQL, _______, _______, ____________FUNCTION_1____________, _______,
177 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
178),
179
180/* Game Raise
181 * ,-----------------------------------------------------------------------------------.
182 * | | p7 | p8 | p9 | p0 | ` | | F9 | F10 | F11 | F12 | |
183 * |------+------+------+------+------+-------------+------+------+------+------+------|
184 * | | p4 | p5 | p6 | p+ | | | F5 | F6 | F7 | F8 | |
185 * |------+------+------+------+------+------|------+------+------+------+------+------|
186 * | | p1 | p2 | p3 | pE | | | F1 | F2 | F3 | F4 | |
187 * |------+------+------+------+------+------+------+------+------+------+------+------|
188 * | | | | | | | | | | | | |
189 * `-----------------------------------------------------------------------------------'
190 */
191[_GAME_RAISE] = LAYOUT_planck_grid_wrapper(
192 _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_GRV, _______, ____________FUNCTION_3____________, _______,
193 _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, ____________FUNCTION_2____________, _______,
194 _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, ____________FUNCTION_1____________, _______,
195 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
196),
197
198};
199
200#ifdef AUDIO_ENABLE
201 float plover_song[][2] = SONG(PLOVER_SOUND);
202 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
203#endif
204
205layer_state_t layer_state_set_user(layer_state_t state) {
206 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
207}
208
209bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
210 switch (keycode) {
211 case QWERTY:
212 if (record->event.pressed) {
213 print("mode just switched to qwerty and this is a huge string\n");
214 set_single_persistent_default_layer(_QWERTY);
215 }
216 return false;
217 break;
218
219 case GAME:
220 if (record->event.pressed) {
221 set_single_persistent_default_layer(_GAME);
222 }
223 return false;
224 break;
225 }
226 return true;
227}
228
229bool muse_mode = false;
230uint8_t last_muse_note = 0;
231uint16_t muse_counter = 0;
232uint8_t muse_offset = 70;
233uint16_t muse_tempo = 50;
234
235void encoder_update(bool clockwise) {
236 if (muse_mode) {
237 if (IS_LAYER_ON(_RAISE)) {
238 if (clockwise) {
239 muse_offset++;
240 } else {
241 muse_offset--;
242 }
243 } else {
244 if (clockwise) {
245 muse_tempo+=1;
246 } else {
247 muse_tempo-=1;
248 }
249 }
250 } else {
251 if (clockwise) {
252 if (IS_LAYER_ON(_MOUSE)) {
253 tap_code(KC_MS_WH_UP);
254 } else {
255 tap_code(KC_VOLU);
256 }
257 } else {
258 if (IS_LAYER_ON(_MOUSE)) {
259 tap_code(KC_MS_WH_DOWN);
260 } else {
261 tap_code(KC_VOLD);
262 }
263 }
264 }
265}
266
267void dip_update(uint8_t index, bool active) {
268 switch (index) {
269 case 0:
270 if (active) {
271 #ifdef AUDIO_ENABLE
272 PLAY_SONG(plover_song);
273 #endif
274 layer_on(_ADJUST);
275 } else {
276 #ifdef AUDIO_ENABLE
277 PLAY_SONG(plover_gb_song);
278 #endif
279 layer_off(_ADJUST);
280 }
281 break;
282 case 1:
283 if (active) {
284 muse_mode = true;
285 } else {
286 muse_mode = false;
287 #ifdef AUDIO_ENABLE
288 stop_all_notes();
289 #endif
290 }
291 }
292}
293
294void matrix_scan_keymap(void) {
295 #ifdef AUDIO_ENABLE
296 if (muse_mode) {
297 if (muse_counter == 0) {
298 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
299 if (muse_note != last_muse_note) {
300 stop_note(compute_freq_for_midi_note(last_muse_note));
301 play_note(compute_freq_for_midi_note(muse_note), 0xF);
302 last_muse_note = muse_note;
303 }
304 }
305 muse_counter = (muse_counter + 1) % muse_tempo;
306 }
307 #endif
308}
309
310bool music_mask_user(uint16_t keycode) {
311 switch (keycode) {
312 case RAISE:
313 case LOWER:
314 return false;
315 default:
316 return true;
317 }
318}
diff --git a/keyboards/planck/keymaps/kuatsure/readme.md b/keyboards/planck/keymaps/kuatsure/readme.md
new file mode 100644
index 000000000..b1e5c6423
--- /dev/null
+++ b/keyboards/planck/keymaps/kuatsure/readme.md
@@ -0,0 +1 @@
# The kuatsure Planck layout - largely based on the Preonic's & Keyboard Paradise V60's layout
diff --git a/keyboards/planck/keymaps/kuatsure/rules.mk b/keyboards/planck/keymaps/kuatsure/rules.mk
new file mode 100644
index 000000000..f9fba61d3
--- /dev/null
+++ b/keyboards/planck/keymaps/kuatsure/rules.mk
@@ -0,0 +1,6 @@
1SRC += muse.c
2
3BACKLIGHT_ENABLE = no
4LEADER_ENABLE = yes
5ENCODER_ENABLE = yes
6MOUSEKEY_ENABLE = yes
diff --git a/keyboards/preonic/keymaps/kuatsure/keymap.c b/keyboards/preonic/keymaps/kuatsure/keymap.c
index 907360d0c..5bd7321d4 100644
--- a/keyboards/preonic/keymaps/kuatsure/keymap.c
+++ b/keyboards/preonic/keymaps/kuatsure/keymap.c
@@ -17,6 +17,8 @@
17#include QMK_KEYBOARD_H 17#include QMK_KEYBOARD_H
18#include "kuatsure.h" 18#include "kuatsure.h"
19 19
20#define LAYOUT_preonic_grid_wrapper(...) LAYOUT_preonic_grid(__VA_ARGS__)
21
20enum preonic_layers { 22enum preonic_layers {
21 _QWERTY, 23 _QWERTY,
22 _GAME, 24 _GAME,
diff --git a/users/kuatsure/kuatsure.c b/users/kuatsure/kuatsure.c
index f935e83c7..88bf6790a 100644
--- a/users/kuatsure/kuatsure.c
+++ b/users/kuatsure/kuatsure.c
@@ -3,7 +3,8 @@
3 3
4qk_tap_dance_action_t tap_dance_actions[] = { 4qk_tap_dance_action_t tap_dance_actions[] = {
5 [TD_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LT), 5 [TD_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LT),
6 [TD_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_GT) 6 [TD_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_GT),
7 [TD_SLSH] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS),
7}; 8};
8 9
9__attribute__ ((weak)) 10__attribute__ ((weak))
@@ -29,15 +30,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
29 30
30 case KB_FLSH: 31 case KB_FLSH:
31 if (!record->event.pressed) { 32 if (!record->event.pressed) {
32 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP 33 SEND_STRING(
33 #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU)) 34 "qmk flash -kb " QMK_KEYBOARD " -km " QMK_KEYMAP
34 ":dfu "
35 #elif defined(BOOTLOADER_HALFKAY)
36 ":teensy "
37 #elif defined(BOOTLOADER_CATERINA)
38 ":avrdude "
39 #endif
40 SS_TAP(X_ENTER)
41 ); 35 );
42 36
43 reset_keyboard(); 37 reset_keyboard();
diff --git a/users/kuatsure/kuatsure.h b/users/kuatsure/kuatsure.h
index 8961d5621..ca2c91c9b 100644
--- a/users/kuatsure/kuatsure.h
+++ b/users/kuatsure/kuatsure.h
@@ -11,13 +11,18 @@ enum kuatsure_keycodes {
11 USER_SAFE_RANGE, 11 USER_SAFE_RANGE,
12}; 12};
13 13
14#define ONESHOT_TAP_TOGGLE 2
15#define KT_LSFT OSM(MOD_LSFT)
16
14enum { 17enum {
15 TD_LBRC = 0, 18 TD_LBRC = 0,
16 TD_RBRC, 19 TD_RBRC,
20 TD_SLSH
17}; 21};
18 22
19#define KT_LBRC TD(TD_LBRC) 23#define KT_LBRC TD(TD_LBRC)
20#define KT_RBRC TD(TD_RBRC) 24#define KT_RBRC TD(TD_RBRC)
25#define KT_SLSH TD(TD_SLSH)
21 26
22#define TAPPING_TERM 200 27#define TAPPING_TERM 200
23 28
@@ -33,8 +38,6 @@ void tmux_pane_zoom(void);
33#undef LEADER_TIMEOUT 38#undef LEADER_TIMEOUT
34#define LEADER_TIMEOUT 300 39#define LEADER_TIMEOUT 300
35 40
36#define LAYOUT_preonic_grid_wrapper(...) LAYOUT_preonic_grid(__VA_ARGS__)
37
38#define _________________NUMBER_L1_________________ KC_1, KC_2, KC_3, KC_4, KC_5 41#define _________________NUMBER_L1_________________ KC_1, KC_2, KC_3, KC_4, KC_5
39#define _________________NUMBER_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0 42#define _________________NUMBER_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0
40 43
@@ -47,7 +50,8 @@ void tmux_pane_zoom(void);
47 50
48#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P 51#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
49#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN 52#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
50#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH 53#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KT_SLSH
54#define _________________QWERTY_R3_M_______________ KC_N, KC_M, KC_COMM, KC_DOT, KC_UP
51 55
52#define ____________FUNCTION_1____________ KC_F1, KC_F2, KC_F3, KC_F4 56#define ____________FUNCTION_1____________ KC_F1, KC_F2, KC_F3, KC_F4
53#define ____________FUNCTION_2____________ KC_F5, KC_F6, KC_F7, KC_F8 57#define ____________FUNCTION_2____________ KC_F5, KC_F6, KC_F7, KC_F8