aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstickandgum <stickandgum@users.noreply.github.com>2021-08-22 22:19:11 -0400
committerGitHub <noreply@github.com>2021-08-22 19:19:11 -0700
commit71df135254709c183b980b89554216ec86d02eab (patch)
tree6a06749dbf09f82d121cf9879f6b5a84962e72c3
parent355872cc1d7c0eb5e5c66845188d53c7a434c8d2 (diff)
downloadqmk_firmware-71df135254709c183b980b89554216ec86d02eab.tar.gz
qmk_firmware-71df135254709c183b980b89554216ec86d02eab.zip
[Keymap] Feature rich keymap for GMMK Pro (ANSI) (#14120)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h75
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c300
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md64
-rw-r--r--keyboards/gmmk/pro/ansi/keymaps/stickandgum/rules.mk2
4 files changed, 441 insertions, 0 deletions
diff --git a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h
new file mode 100644
index 000000000..cb48dfe8e
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h
@@ -0,0 +1,75 @@
1/* Copyright 2021 stickandgum
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// I like NKRO.. but let's not force it. @drashna pointed out some older hardware has issues - Toggle it via keycode if you like.
20// #define FORCE_NKRO
21
22// At the time of this, there are 41 effects! That may be a bit too many to cycle through - keeping what I believe is the best.
23#ifdef RGB_MATRIX_ENABLE
24
25// #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
26
27// Below added per: https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#suspended-state-id-suspended-state
28 #define RGB_DISABLE_WHEN_USB_SUSPENDED
29
30 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain
31 #define RGB_MATRIX_KEYPRESSES // REACTIVE, SPLASH modes
32
33// Soon we need to ENABLE modes by DEFAULT soon as per: https://github.com/qmk/qmk_firmware/pull/13758 Thanks @noroadsleft
34 // #define DISABLE_RGB_MATRIX_SOLID_COLOR // BUILT IN (MAPPED!) Static single color.
35 // #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Accenting various keys on the keyboard.
36 // #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Top down rainbow!
37 #define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Left Right Rainbow (the top-down is better imho).
38 // #define DISABLE_RGB_MATRIX_BREATHING // Built in (MAPPED!)
39 // #define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white)
40 // #define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black)
41 #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (RGB_MATRIX_CYCLE_PINWHEEL)
42 #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // See above
43 #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // See above
44 // #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black)
45 #define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow
46 // #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // BUILT IN (MAPPED!) Full Rainbow Left to Right
47 #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
48 #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center.
49 #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points.
50 #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
51 // #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // BUILT IN (MAPPED!) - Consider disabling this - my poor eyes.
52 #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
53 #define DISABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboards
54 #define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Similar to above.
55 #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Enough of the spinning rainbows - we get it! :-)
56 #define DISABLE_RGB_MATRIX_RAINDROPS // Jellybeans are better.
57 // #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation - better than above.
58 #define DISABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
59 #define DISABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
60 #define DISABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
61 // #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // Hot keys!
62 // #define DISABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix!
63 #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black: wide slightly better imo
64 #define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Key hits shown in current hue - all other keys shifted hue
65 // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (black otherwise)
66 #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but a bit too intense imo.
67 #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single color fade.
68 #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-keys)
69 #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades
70 #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades
71 #define DISABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black.
72 #define DISABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black.
73 #define DISABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (Using solid_reactive_wide instead).
74 #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. (Using solid_reactive_wide instead).
75#endif
diff --git a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c
new file mode 100644
index 000000000..762fe00df
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c
@@ -0,0 +1,300 @@
1/* Copyright 2021 stickandgum GMMK Pro ANSI Enhanced Keymap File
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
19enum my_keycodes {
20 LED_TILDE = SAFE_RANGE,
21 LED_1,
22 LED_2,
23 LED_3,
24 LED_4,
25 LED_5,
26 LED_6,
27 LED_7,
28 LED_8,
29 LED_9,
30 LED_0,
31 LED_MINS,
32 LED_EQL,
33 QMKBEST
34};
35
36const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
37
38// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
39// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
40// Tab Q W E R T Y U I O P [ ] \ PgUp
41// Caps A S D F G H J K L ; " Enter PgDn
42// Sh_L Z X C V B N M , . ? Sh_R Up End
43// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
44
45 [0] = LAYOUT(
46 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_PSCR, KC_MUTE,
47 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_BSPC, KC_HOME,
48 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_PGUP,
49 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_PGDN,
50 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_UP, KC_END,
51 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_DEL, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
52 ),
53
54 [1] = LAYOUT(
55 _______, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, KC_WHOM, _______, _______, _______, _______, _______, KC_WAKE, KC_SLEP, KC_PAUS, _______,
56 LED_TILDE, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, KC_INS, KC_SLCK,
57 _______, RGB_SAI, RGB_VAI, RGB_HUI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_BRIU,
58 _______, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_SPI, _______, _______, _______, _______, QMKBEST, _______, _______, _______, KC_BRID,
59 _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_MPLY, KC_PWR,
60 _______, _______, _______, _______, KC_RALT, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT
61 ),
62
63};
64
65#ifdef ENCODER_ENABLE
66bool encoder_update_user(uint8_t index, bool clockwise) {
67 // https://beta.docs.qmk.fm/using-qmk/simple-keycodes/feature_advanced_keycodes#alt-escape-for-alt-tab-id-alt-escape-for-alt-tab
68 if (get_mods() & MOD_MASK_CTRL) { // If CTRL is held
69 uint8_t mod_state = get_mods(); // Store all modifiers that are held
70 unregister_mods(MOD_MASK_CTRL); // Immediately unregister the CRTL key (don't send CTRL-PgDn) - del_mods doesn't work here (not immediate)
71 if (clockwise) {
72 tap_code(KC_PGDN);
73 } else {
74 tap_code(KC_PGUP);
75 }
76 set_mods(mod_state); // Add back in the CTRL key - so ctrl-key will work if ctrl was never released after paging.
77 } else if (get_mods() & MOD_MASK_SHIFT) {
78 uint8_t mod_state = get_mods();
79 unregister_mods(MOD_MASK_SHIFT);
80 if (clockwise) {
81 #ifdef MOUSEKEY_ENABLE // If using the mouse scroll - make sure MOUSEKEY is enabled
82 tap_code(KC_MS_WH_DOWN);
83 #else
84 tap_code(KC_VOLU);
85 #endif
86 } else {
87 #ifdef MOUSEKEY_ENABLE
88 tap_code(KC_MS_WH_UP);
89 #else
90 tap_code(KC_VOLD);
91 #endif
92 }
93 set_mods(mod_state);
94 } else if (clockwise) { // All else volume.
95 tap_code(KC_VOLU);
96 } else {
97 tap_code(KC_VOLD);
98 }
99 return true;
100}
101#endif //ENCODER_ENABLE
102
103#ifdef RGB_MATRIX_ENABLE
104static void set_rgb_caps_leds_on(void);
105static void set_rgb_scroll_leds_on(void);
106static void set_rgb_caps_leds_off(void);
107static void set_rgb_scroll_leds_off(void);
108
109// Called on powerup and is the last _init that is run.
110void keyboard_post_init_user(void) {
111
112 int mods[35] = {0,2,3,4,5,11,17,33,49,55,65,95,97,79,94,85,93,96,90,69,92,67,76,80,91,75,86,68,77,81,92,28,34,39,44};
113 int j;
114
115 /* output each array element's value */
116 for (j = 0; j < 35; j++ ) {
117 g_led_config.flags[mods[j]] = LED_FLAG_MODIFIER;
118 }
119
120 if (!rgb_matrix_is_enabled()) {
121 rgb_matrix_enable();
122#ifdef CONSOLE_ENABLE
123 uprintf("ERROR! RGB Matrix Enabled and wrote to EEPROM! -How was the RGB Matrix Disabled?");
124#endif
125 }
126}
127
128bool process_record_user(uint16_t keycode, keyrecord_t *record) {
129#ifdef CONSOLE_ENABLE
130 switch(rgb_matrix_get_flags()) {
131 case 0x08:
132 uprintf("FLAG: LED_FLAG_INDICATOR ");
133 break;
134 case 0x04:
135 uprintf("FLAG: LED_FLAG_KEYLIGHT ");
136 break;
137 case 0x02:
138 uprintf("FLAG: LED_FLAG_UNDERGLOW ");
139 break;
140 case 0x01:
141 uprintf("FLAG: LED_FLAG_MODIFIER ");
142 break;
143 case 0xFF:
144 uprintf("FLAG: LED_FLAG_ALL ");
145 break;
146 case 0x00:
147 uprintf("FLAG: LED_FLAG_NONE ");
148 break;
149 default:
150 uprintf("FLAG Other: %u ", rgb_matrix_get_flags());
151 }
152 uprintf("Caps? %d Scroll? %d - MATRIX: %d\n", host_keyboard_led_state().caps_lock, host_keyboard_led_state().scroll_lock, rgb_matrix_is_enabled());
153#endif //CONSOLE_ENABLE
154
155 switch (keycode) {
156 case RGB_TOG:
157 if (record->event.pressed) {
158 if (rgb_matrix_get_flags() == LED_FLAG_ALL) {
159 rgb_matrix_set_flags(LED_FLAG_NONE);
160 rgb_matrix_set_color_all(0, 0, 0);
161 } else {
162 rgb_matrix_set_flags(LED_FLAG_ALL);
163 }
164 }
165 return false;
166 case LED_TILDE:
167 rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); // Can use RGB_M_P built-in keycode instead.
168 break;
169 case LED_1:
170 rgb_matrix_mode(RGB_MATRIX_ALPHAS_MODS);
171 break;
172 case LED_2:
173 rgb_matrix_mode(RGB_MATRIX_GRADIENT_UP_DOWN);
174 break;
175 case LED_3:
176 rgb_matrix_mode(RGB_MATRIX_JELLYBEAN_RAINDROPS);
177 break;
178 case LED_4:
179 rgb_matrix_mode(RGB_MATRIX_BAND_SAT);
180 break;
181 case LED_5:
182 rgb_matrix_mode(RGB_MATRIX_BAND_VAL);
183 break;
184 case LED_6:
185 rgb_matrix_mode(RGB_MATRIX_BAND_SPIRAL_VAL);
186 break;
187 case LED_7:
188 rgb_matrix_mode(RGB_MATRIX_CYCLE_LEFT_RIGHT); // Can use RGB_M_R built-in keycode instead.
189 break;
190 case LED_8:
191 rgb_matrix_mode(RGB_MATRIX_CYCLE_PINWHEEL); // Can use RGB_M_SW built-in keycode instead.
192 break;
193 case LED_9:
194 rgb_matrix_mode(RGB_MATRIX_BREATHING); // Can use RGB_M_B built-in keycode instead.
195 break;
196 #ifdef RGB_MATRIX_KEYPRESSES // Reactive effects require RGB_MATRIX_KEYPRESSES in config.h
197 case LED_0:
198 rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE_WIDE);
199 break;
200 #endif //RGB_MATRIX_KEYPRESSES
201 #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap and Rain require #define RGB_MATRIX_FRAMEBUFFER_EFFECTS in config.h
202 case LED_MINS:
203 rgb_matrix_mode(RGB_MATRIX_DIGITAL_RAIN);
204 break;
205 case LED_EQL:
206 rgb_matrix_mode(RGB_MATRIX_TYPING_HEATMAP);
207 break;
208 #endif //RGB_MATRIX_FRAMEBUFFER_EFFECTS
209 case QMKBEST:
210 if (record->event.pressed) { // when keycode QMKBEST is pressed
211 SEND_STRING("QMK rocks");
212 } else { // when keycode QMKBEST key is released
213 SEND_STRING("!!");
214 }
215 break;
216 }
217 return true;
218}
219
220void rgb_matrix_indicators_user(void) {
221 if (host_keyboard_led_state().caps_lock) {
222 set_rgb_caps_leds_on();
223 } else {
224 if (rgb_matrix_get_flags() == LED_FLAG_NONE){
225 set_rgb_caps_leds_off();
226 }
227 }
228 if (host_keyboard_led_state().scroll_lock) {
229 set_rgb_scroll_leds_on();
230 } else {
231 if (rgb_matrix_get_flags() == LED_FLAG_NONE){
232 set_rgb_scroll_leds_off();
233 }
234 }
235}
236
237// RGB led number layout, function of the key
238
239// 67, led 01 0, ESC 6, F1 12, F2 18, F3 23, F4 28, F5 34, F6 39, F7 44, F8 50, F9 56, F10 61, F11 66, F12 69, Prt Rotary(Mute) 68, led 12
240// 70, led 02 1, ~ 7, 1 13, 2 19, 3 24, 4 29, 5 35, 6 40, 7 45, 8 51, 9 57, 0 62, -_ 78, (=+) 85, BackSpc 72, Home 71, led 13
241// 73, led 03 2, Tab 8, Q 14, W 20. E 25, R 30, T 36, Y 41, U 46, I 52, O 58, P 63, [{ 89, ]} 93, \| 75, PgUp 74, led 14
242// 76, led 04 3, Caps 9, A 15, S 21, D 26, F 31, G 37, H 42, J 47, K 53, L 59, ;: 64, '" 96, Enter 86, PgDn 77, led 15
243// 80, led 05 4, Sh_L 10, Z 16, X 22, C 27, V 32, B 38, N 43, M 48, ,< 54, .< 60, /? 90, Sh_R 94, Up 82, End 81, led 16
244// 83, led 06 5, Ct_L 11,Win_L 17, Alt_L 33, SPACE 49, Alt_R 55, FN 65, Ct_R 95, Left 97, Down 79, Right 84, led 17
245// 87, led 07 88, led 18
246// 91, led 08 92, led 19
247
248static void set_rgb_caps_leds_on() {
249 rgb_matrix_set_color(0, 255, 0, 0); //Escape Key
250 rgb_matrix_set_color(3, 255, 0, 0); //capslock key
251 rgb_matrix_set_color(5, 255, 0, 0); //Left CTRL key
252 rgb_matrix_set_color(67, 255, 0, 0); //Left LED 01
253 rgb_matrix_set_color(68, 255, 0, 0); //Right LED 12
254 rgb_matrix_set_color(70, 255, 127, 0); //Left LED 02
255 rgb_matrix_set_color(71, 255, 127, 0); //Right LED 13
256 rgb_matrix_set_color(73, 255, 255, 0); //Left LED 03
257 rgb_matrix_set_color(74, 255, 255, 0); //Right LED 14
258 rgb_matrix_set_color(76, 0, 255, 0); //Left LED 04
259 rgb_matrix_set_color(77, 0, 255, 0); //Right LED 15
260 rgb_matrix_set_color(80, 0, 0, 255); //Left LED 05
261 rgb_matrix_set_color(81, 0, 0, 255); //Right LED 16
262 rgb_matrix_set_color(83, 46, 43, 95); //Left LED 06
263 rgb_matrix_set_color(84, 46, 43, 95); //Right LED 17
264 rgb_matrix_set_color(87, 139, 0, 255); //Left LED 07
265 rgb_matrix_set_color(88, 139, 0, 255); //Right LED 18
266 rgb_matrix_set_color(91, 255, 255, 255); //Left LED 08
267 rgb_matrix_set_color(92, 255, 255, 255); //Right LED 19
268}
269
270static void set_rgb_caps_leds_off() {
271 rgb_matrix_set_color(0, 0, 0, 0); //Escape Key
272 rgb_matrix_set_color(3, 0, 0, 0); //capslock key
273 rgb_matrix_set_color(5, 0, 0, 0); //Left CTRL key
274 rgb_matrix_set_color(67, 0, 0, 0); //Left LED 01
275 rgb_matrix_set_color(68, 0, 0, 0); //Right LED 12
276 rgb_matrix_set_color(70, 0, 0, 0); //Left LED 02
277 rgb_matrix_set_color(71, 0, 0, 0); //Right LED 13
278 rgb_matrix_set_color(73, 0, 0, 0); //Left LED 03
279 rgb_matrix_set_color(74, 0, 0, 0); //Right LED 14
280 rgb_matrix_set_color(76, 0, 0, 0); //Left LED 04
281 rgb_matrix_set_color(77, 0, 0, 0); //Right LED 15
282 rgb_matrix_set_color(80, 0, 0, 0); //Left LED 05
283 rgb_matrix_set_color(81, 0, 0, 0); //Right LED 16
284 rgb_matrix_set_color(83, 0, 0, 0); //Left LED 06
285 rgb_matrix_set_color(84, 0, 0, 0); //Right LED 17
286 rgb_matrix_set_color(87, 0, 0, 0); //Left LED 07
287 rgb_matrix_set_color(88, 0, 0, 0); //Right LED 18
288 rgb_matrix_set_color(91, 0, 0, 0); //Left LED 08
289 rgb_matrix_set_color(92, 0, 0, 0); //Right LED 19
290}
291
292static void set_rgb_scroll_leds_on() {
293 rgb_matrix_set_color(72, 255, 255, 255); // Under Rotary (HOME)
294}
295
296static void set_rgb_scroll_leds_off() {
297 rgb_matrix_set_color(72, 0, 0, 0); // Under Rotary (HOME)
298}
299
300#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md
new file mode 100644
index 000000000..7eb21d05e
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md
@@ -0,0 +1,64 @@
1# Glorious GMMK Pro / ANSI - Enhanced Keyboard
2
3Tried to incorporate full featured GMMK Pro keyboard functionality without adding unnecessary features. Included Scroll Lock and Caps LEDs. NKRO is on by default.
4SHIFT and Ctrl keys for scrolling with the rotary, Added Fn-keys for Screen Brightness, NKRO, PowerOff, Suspend, App Shortcuts, and RGB Toggle/Modifications
5Trimmed down the amazing 41 currently built-in RGB effects down to about 13 or so reasonable effects that feel are just enough for your entertainment without being too excessive.
6
7BIG thank you to [AndreBrait](https://github.com/andrebrait), And of course, @drashna and @filterpaper and the entire discord community.
8
9* Keymap Creator: [StickAndGum](https://github.com/StickAndGum)
10* Keyboard: [More info on GMMK Pro](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black)
11* Controller [STM32F303CCT6](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
12
13* Layout:
14 ![keyboard-layout](https://user-images.githubusercontent.com/22257588/130371838-875ba65b-88ea-4f81-a44a-bb24194c4989.png)
15
16Features are as follows:
17
18Rotary:
19 - Default: Volume Up/Down
20 - Shift: Mouse Wheel Down/Up
21 - Ctrl: Page Down/Up
22
23Top/Default Layer:
24 - Print Screen -> Print Screen (Left of rotary)
25 - Delete -> Home (Under Rotary)
26 - Right Alt -> Delete (Right of Spacebar)
27 - All other keys defaults.
28
29Fn Layer:
30 - Fn + \ -> Bootloader Mode (Can also hold ESC while powering up) - If hit by mistake, just unplug and replug in.
31 - Fn + Backspace -> Insert
32 - Fn + Print -> Pause/Break
33 - Fn + Home -> Scroll Lock (Lights up white!)
34 - Fn + Del (right of space) -> Right-Alt key.
35 - Fn + RCtrl (right of Fn) -> Menu/App key.
36 - Fn + N -> Toggle NKRO (Defaults to Enabled)
37 - Fn + End -> Power Off Computer
38 - Fn + F12 -> Suspend Computer
39 - Fn + F11 -> Wake Computer (Necessary on MAC OS?)
40 - Fn + Page Up / Down -> Laptop Screen Brightness Up/Down
41 - Fn + F1 - F5 -> Launch Calc, My Comp (Explorer), Media Player, Mail Client, Web Browser Home.
42 - Fn + Up, Down, Left, Right Arrows -> Media Play, Stop, Previous, Next respectively.
43
44- RGB Information:
45 - Toggle for RGB via Fn-r (CAPS & SCROLL still Light/Indicate)
46 - CAPS: Side Light Rainbow Indicators and Left-side RED Indicators
47 - Scroll: Fn-Home (Under Rotary) white indicator.
48 - Modifiers identified around most of the edge of keyboard / Side lights accented (Fn-1 looks GREAT IMHO)
49
50- RGB Modifing (all via Function key) all via wasdqerf (common gaming keys) - easy to remember.
51 - Fn + r -> Toggle RGB
52 - Fn + w,s -> Brightness Up, Down
53 - Fn + a,d -> Cycle Forward/Backward through rgb effects
54 - Fn + q -> Increase or Decrease Saturation (use SHIFT key to lower)
55 - Fn + e -> Increase or Decrease Hue/Color (use SHIFT key to lower)
56 - Fn + f -> Increase or Decrease Speed (Using "F" for Fast!) (Use SHIFT for slower)
57 - Fn + ~, 0-9, - = keys (2nd row keys) -> 13 RGB different effects arranged to my liking. Fn-1 is my favorite.
58 - Fn + L -> My easter egg... "QMK rocks!"
59
60- Known issues:
61 - The Heatmap and Matrix FrameBuffer effects (Fn - and =) are a bit buggy - F-keys light up when they shouldn't and the Caps/Scroll lights don't turn off properly when using. Just change the effect to something else to fix this.
62 - If you find a fix for this, please let me know.
63
64See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/gmmk/pro/ansi/keymaps/stickandgum/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/rules.mk
new file mode 100644
index 000000000..640ec44b2
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/rules.mk
@@ -0,0 +1,2 @@
1CONSOLE_ENABLE = no
2MOUSEKEY_ENABLE = yes