summaryrefslogtreecommitdiffstats
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)
[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 0000000000..cb48dfe8ed
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/config.h
@@ -0,0 +1,75 @@
+/* Copyright 2021 stickandgum
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// I like NKRO.. but let's not force it. @drashna pointed out some older hardware has issues - Toggle it via keycode if you like.
+// #define FORCE_NKRO
+
+// 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.
+#ifdef RGB_MATRIX_ENABLE
+
+// #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
+
+// Below added per: https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#suspended-state-id-suspended-state
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain
+ #define RGB_MATRIX_KEYPRESSES // REACTIVE, SPLASH modes
+
+// Soon we need to ENABLE modes by DEFAULT soon as per: https://github.com/qmk/qmk_firmware/pull/13758 Thanks @noroadsleft
+ // #define DISABLE_RGB_MATRIX_SOLID_COLOR // BUILT IN (MAPPED!) Static single color.
+ // #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Accenting various keys on the keyboard.
+ // #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Top down rainbow!
+ #define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Left Right Rainbow (the top-down is better imho).
+ // #define DISABLE_RGB_MATRIX_BREATHING // Built in (MAPPED!)
+ // #define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white)
+ // #define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black)
+ #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (RGB_MATRIX_CYCLE_PINWHEEL)
+ #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // See above
+ #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // See above
+ // #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black)
+ #define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow
+ // #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // BUILT IN (MAPPED!) Full Rainbow Left to Right
+ #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+ #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center.
+ #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points.
+ #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
+ // #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // BUILT IN (MAPPED!) - Consider disabling this - my poor eyes.
+ #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+ #define DISABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboards
+ #define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Similar to above.
+ #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Enough of the spinning rainbows - we get it! :-)
+ #define DISABLE_RGB_MATRIX_RAINDROPS // Jellybeans are better.
+ // #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation - better than above.
+ #define DISABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
+ #define DISABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
+ #define DISABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
+ // #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // Hot keys!
+ // #define DISABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix!
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black: wide slightly better imo
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Key hits shown in current hue - all other keys shifted hue
+ // #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (black otherwise)
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but a bit too intense imo.
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single color fade.
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-keys)
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades
+ #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades
+ #define DISABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black.
+ #define DISABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black.
+ #define DISABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (Using solid_reactive_wide instead).
+ #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. (Using solid_reactive_wide instead).
+#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 0000000000..762fe00df2
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/keymap.c
@@ -0,0 +1,300 @@
+/* Copyright 2021 stickandgum GMMK Pro ANSI Enhanced Keymap File
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum my_keycodes {
+ LED_TILDE = SAFE_RANGE,
+ LED_1,
+ LED_2,
+ LED_3,
+ LED_4,
+ LED_5,
+ LED_6,
+ LED_7,
+ LED_8,
+ LED_9,
+ LED_0,
+ LED_MINS,
+ LED_EQL,
+ QMKBEST
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
+// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
+// Tab Q W E R T Y U I O P [ ] \ PgUp
+// Caps A S D F G H J K L ; " Enter PgDn
+// Sh_L Z X C V B N M , . ? Sh_R Up End
+// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
+
+ [0] = LAYOUT(
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_DEL, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, KC_WHOM, _______, _______, _______, _______, _______, KC_WAKE, KC_SLEP, KC_PAUS, _______,
+ 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,
+ _______, RGB_SAI, RGB_VAI, RGB_HUI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_BRIU,
+ _______, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_SPI, _______, _______, _______, _______, QMKBEST, _______, _______, _______, KC_BRID,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_MPLY, KC_PWR,
+ _______, _______, _______, _______, KC_RALT, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT
+ ),
+
+};
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ // https://beta.docs.qmk.fm/using-qmk/simple-keycodes/feature_advanced_keycodes#alt-escape-for-alt-tab-id-alt-escape-for-alt-tab
+ if (get_mods() & MOD_MASK_CTRL) { // If CTRL is held
+ uint8_t mod_state = get_mods(); // Store all modifiers that are held
+ unregister_mods(MOD_MASK_CTRL); // Immediately unregister the CRTL key (don't send CTRL-PgDn) - del_mods doesn't work here (not immediate)
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ set_mods(mod_state); // Add back in the CTRL key - so ctrl-key will work if ctrl was never released after paging.
+ } else if (get_mods() & MOD_MASK_SHIFT) {
+ uint8_t mod_state = get_mods();
+ unregister_mods(MOD_MASK_SHIFT);
+ if (clockwise) {
+ #ifdef MOUSEKEY_ENABLE // If using the mouse scroll - make sure MOUSEKEY is enabled
+ tap_code(KC_MS_WH_DOWN);
+ #else
+ tap_code(KC_VOLU);
+ #endif
+ } else {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_UP);
+ #else
+ tap_code(KC_VOLD);
+ #endif
+ }
+ set_mods(mod_state);
+ } else if (clockwise) { // All else volume.
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return true;
+}
+#endif //ENCODER_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+static void set_rgb_caps_leds_on(void);
+static void set_rgb_scroll_leds_on(void);
+static void set_rgb_caps_leds_off(void);
+static void set_rgb_scroll_leds_off(void);
+
+// Called on powerup and is the last _init that is run.
+void keyboard_post_init_user(void) {
+
+ 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};
+ int j;
+
+ /* output each array element's value */
+ for (j = 0; j < 35; j++ ) {
+ g_led_config.flags[mods[j]] = LED_FLAG_MODIFIER;
+ }
+
+ if (!rgb_matrix_is_enabled()) {
+ rgb_matrix_enable();
+#ifdef CONSOLE_ENABLE
+ uprintf("ERROR! RGB Matrix Enabled and wrote to EEPROM! -How was the RGB Matrix Disabled?");
+#endif
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+#ifdef CONSOLE_ENABLE
+ switch(rgb_matrix_get_flags()) {
+ case 0x08:
+ uprintf("FLAG: LED_FLAG_INDICATOR ");
+ break;
+ case 0x04:
+ uprintf("FLAG: LED_FLAG_KEYLIGHT ");
+ break;
+ case 0x02:
+ uprintf("FLAG: LED_FLAG_UNDERGLOW ");
+ break;
+ case 0x01:
+ uprintf("FLAG: LED_FLAG_MODIFIER ");
+ break;
+ case 0xFF:
+ uprintf("FLAG: LED_FLAG_ALL ");
+ break;
+ case 0x00:
+ uprintf("FLAG: LED_FLAG_NONE ");
+ break;
+ default:
+ uprintf("FLAG Other: %u ", rgb_matrix_get_flags());
+ }
+ uprintf("Caps? %d Scroll? %d - MATRIX: %d\n", host_keyboard_led_state().caps_lock, host_keyboard_led_state().scroll_lock, rgb_matrix_is_enabled());
+#endif //CONSOLE_ENABLE
+
+ switch (keycode) {
+ case RGB_TOG:
+ if (record->event.pressed) {
+ if (rgb_matrix_get_flags() == LED_FLAG_ALL) {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_color_all(0, 0, 0);
+ } else {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ }
+ }
+ return false;
+ case LED_TILDE:
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); // Can use RGB_M_P built-in keycode instead.
+ break;
+ case LED_1:
+ rgb_matrix_mode(RGB_MATRIX_ALPHAS_MODS);
+ break;
+ case LED_2:
+ rgb_matrix_mode(RGB_MATRIX_GRADIENT_UP_DOWN);
+ break;
+ case LED_3:
+ rgb_matrix_mode(RGB_MATRIX_JELLYBEAN_RAINDROPS);
+ break;
+ case LED_4:
+ rgb_matrix_mode(RGB_MATRIX_BAND_SAT);
+ break;
+ case LED_5:
+ rgb_matrix_mode(RGB_MATRIX_BAND_VAL);
+ break;
+ case LED_6:
+ rgb_matrix_mode(RGB_MATRIX_BAND_SPIRAL_VAL);
+ break;
+ case LED_7:
+ rgb_matrix_mode(RGB_MATRIX_CYCLE_LEFT_RIGHT); // Can use RGB_M_R built-in keycode instead.
+ break;
+ case LED_8:
+ rgb_matrix_mode(RGB_MATRIX_CYCLE_PINWHEEL); // Can use RGB_M_SW built-in keycode instead.
+ break;
+ case LED_9:
+ rgb_matrix_mode(RGB_MATRIX_BREATHING); // Can use RGB_M_B built-in keycode instead.
+ break;
+ #ifdef RGB_MATRIX_KEYPRESSES // Reactive effects require RGB_MATRIX_KEYPRESSES in config.h
+ case LED_0:
+ rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE_WIDE);
+ break;
+ #endif //RGB_MATRIX_KEYPRESSES
+ #ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap and Rain require #define RGB_MATRIX_FRAMEBUFFER_EFFECTS in config.h
+ case LED_MINS:
+ rgb_matrix_mode(RGB_MATRIX_DIGITAL_RAIN);
+ break;
+ case LED_EQL:
+ rgb_matrix_mode(RGB_MATRIX_TYPING_HEATMAP);
+ break;
+ #endif //RGB_MATRIX_FRAMEBUFFER_EFFECTS
+ case QMKBEST:
+ if (record->event.pressed) { // when keycode QMKBEST is pressed
+ SEND_STRING("QMK rocks");
+ } else { // when keycode QMKBEST key is released
+ SEND_STRING("!!");
+ }
+ break;
+ }
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ set_rgb_caps_leds_on();
+ } else {
+ if (rgb_matrix_get_flags() == LED_FLAG_NONE){
+ set_rgb_caps_leds_off();
+ }
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ set_rgb_scroll_leds_on();
+ } else {
+ if (rgb_matrix_get_flags() == LED_FLAG_NONE){
+ set_rgb_scroll_leds_off();
+ }
+ }
+}
+
+// RGB led number layout, function of the key
+
+// 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
+// 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
+// 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
+// 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
+// 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
+// 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
+// 87, led 07 88, led 18
+// 91, led 08 92, led 19
+
+static void set_rgb_caps_leds_on() {
+ rgb_matrix_set_color(0, 255, 0, 0); //Escape Key
+ rgb_matrix_set_color(3, 255, 0, 0); //capslock key
+ rgb_matrix_set_color(5, 255, 0, 0); //Left CTRL key
+ rgb_matrix_set_color(67, 255, 0, 0); //Left LED 01
+ rgb_matrix_set_color(68, 255, 0, 0); //Right LED 12
+ rgb_matrix_set_color(70, 255, 127, 0); //Left LED 02
+ rgb_matrix_set_color(71, 255, 127, 0); //Right LED 13
+ rgb_matrix_set_color(73, 255, 255, 0); //Left LED 03
+ rgb_matrix_set_color(74, 255, 255, 0); //Right LED 14
+ rgb_matrix_set_color(76, 0, 255, 0); //Left LED 04
+ rgb_matrix_set_color(77, 0, 255, 0); //Right LED 15
+ rgb_matrix_set_color(80, 0, 0, 255); //Left LED 05
+ rgb_matrix_set_color(81, 0, 0, 255); //Right LED 16
+ rgb_matrix_set_color(83, 46, 43, 95); //Left LED 06
+ rgb_matrix_set_color(84, 46, 43, 95); //Right LED 17
+ rgb_matrix_set_color(87, 139, 0, 255); //Left LED 07
+ rgb_matrix_set_color(88, 139, 0, 255); //Right LED 18
+ rgb_matrix_set_color(91, 255, 255, 255); //Left LED 08
+ rgb_matrix_set_color(92, 255, 255, 255); //Right LED 19
+}
+
+static void set_rgb_caps_leds_off() {
+ rgb_matrix_set_color(0, 0, 0, 0); //Escape Key
+ rgb_matrix_set_color(3, 0, 0, 0); //capslock key
+ rgb_matrix_set_color(5, 0, 0, 0); //Left CTRL key
+ rgb_matrix_set_color(67, 0, 0, 0); //Left LED 01
+ rgb_matrix_set_color(68, 0, 0, 0); //Right LED 12
+ rgb_matrix_set_color(70, 0, 0, 0); //Left LED 02
+ rgb_matrix_set_color(71, 0, 0, 0); //Right LED 13
+ rgb_matrix_set_color(73, 0, 0, 0); //Left LED 03
+ rgb_matrix_set_color(74, 0, 0, 0); //Right LED 14
+ rgb_matrix_set_color(76, 0, 0, 0); //Left LED 04
+ rgb_matrix_set_color(77, 0, 0, 0); //Right LED 15
+ rgb_matrix_set_color(80, 0, 0, 0); //Left LED 05
+ rgb_matrix_set_color(81, 0, 0, 0); //Right LED 16
+ rgb_matrix_set_color(83, 0, 0, 0); //Left LED 06
+ rgb_matrix_set_color(84, 0, 0, 0); //Right LED 17
+ rgb_matrix_set_color(87, 0, 0, 0); //Left LED 07
+ rgb_matrix_set_color(88, 0, 0, 0); //Right LED 18
+ rgb_matrix_set_color(91, 0, 0, 0); //Left LED 08
+ rgb_matrix_set_color(92, 0, 0, 0); //Right LED 19
+}
+
+static void set_rgb_scroll_leds_on() {
+ rgb_matrix_set_color(72, 255, 255, 255); // Under Rotary (HOME)
+}
+
+static void set_rgb_scroll_leds_off() {
+ rgb_matrix_set_color(72, 0, 0, 0); // Under Rotary (HOME)
+}
+
+#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 0000000000..7eb21d05e5
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/readme.md
@@ -0,0 +1,64 @@
+# Glorious GMMK Pro / ANSI - Enhanced Keyboard
+
+Tried to incorporate full featured GMMK Pro keyboard functionality without adding unnecessary features. Included Scroll Lock and Caps LEDs. NKRO is on by default.
+SHIFT and Ctrl keys for scrolling with the rotary, Added Fn-keys for Screen Brightness, NKRO, PowerOff, Suspend, App Shortcuts, and RGB Toggle/Modifications
+Trimmed 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.
+
+BIG thank you to [AndreBrait](https://github.com/andrebrait), And of course, @drashna and @filterpaper and the entire discord community.
+
+* Keymap Creator: [StickAndGum](https://github.com/StickAndGum)
+* Keyboard: [More info on GMMK Pro](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black)
+* Controller [STM32F303CCT6](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
+
+* Layout:
+ ![keyboard-layout](https://user-images.githubusercontent.com/22257588/130371838-875ba65b-88ea-4f81-a44a-bb24194c4989.png)
+
+Features are as follows:
+
+Rotary:
+ - Default: Volume Up/Down
+ - Shift: Mouse Wheel Down/Up
+ - Ctrl: Page Down/Up
+
+Top/Default Layer:
+ - Print Screen -> Print Screen (Left of rotary)
+ - Delete -> Home (Under Rotary)
+ - Right Alt -> Delete (Right of Spacebar)
+ - All other keys defaults.
+
+Fn Layer:
+ - Fn + \ -> Bootloader Mode (Can also hold ESC while powering up) - If hit by mistake, just unplug and replug in.
+ - Fn + Backspace -> Insert
+ - Fn + Print -> Pause/Break
+ - Fn + Home -> Scroll Lock (Lights up white!)
+ - Fn + Del (right of space) -> Right-Alt key.
+ - Fn + RCtrl (right of Fn) -> Menu/App key.
+ - Fn + N -> Toggle NKRO (Defaults to Enabled)
+ - Fn + End -> Power Off Computer
+ - Fn + F12 -> Suspend Computer
+ - Fn + F11 -> Wake Computer (Necessary on MAC OS?)
+ - Fn + Page Up / Down -> Laptop Screen Brightness Up/Down
+ - Fn + F1 - F5 -> Launch Calc, My Comp (Explorer), Media Player, Mail Client, Web Browser Home.
+ - Fn + Up, Down, Left, Right Arrows -> Media Play, Stop, Previous, Next respectively.
+
+- RGB Information:
+ - Toggle for RGB via Fn-r (CAPS & SCROLL still Light/Indicate)
+ - CAPS: Side Light Rainbow Indicators and Left-side RED Indicators
+ - Scroll: Fn-Home (Under Rotary) white indicator.
+ - Modifiers identified around most of the edge of keyboard / Side lights accented (Fn-1 looks GREAT IMHO)
+
+- RGB Modifing (all via Function key) all via wasdqerf (common gaming keys) - easy to remember.
+ - Fn + r -> Toggle RGB
+ - Fn + w,s -> Brightness Up, Down
+ - Fn + a,d -> Cycle Forward/Backward through rgb effects
+ - Fn + q -> Increase or Decrease Saturation (use SHIFT key to lower)
+ - Fn + e -> Increase or Decrease Hue/Color (use SHIFT key to lower)
+ - Fn + f -> Increase or Decrease Speed (Using "F" for Fast!) (Use SHIFT for slower)
+ - Fn + ~, 0-9, - = keys (2nd row keys) -> 13 RGB different effects arranged to my liking. Fn-1 is my favorite.
+ - Fn + L -> My easter egg... "QMK rocks!"
+
+- Known issues:
+ - 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.
+ - If you find a fix for this, please let me know.
+
+See 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 0000000000..640ec44b2e
--- /dev/null
+++ b/keyboards/gmmk/pro/ansi/keymaps/stickandgum/rules.mk
@@ -0,0 +1,2 @@
+CONSOLE_ENABLE = no
+MOUSEKEY_ENABLE = yes