From 2d60444df12b7d0b1dfafe197217c9edb7944eab Mon Sep 17 00:00:00 2001
From: Will Wolff-Myren <willwm@gmail.com>
Date: Wed, 23 Jun 2021 19:54:44 -0700
Subject: [PATCH] [Keymap] gmmk/pro: willwm (#12952)

* Create willwm keymap:
Modified GMMK Pro Default + VIA + Space-Cadet Unicode

* Temporarily remove unicode map calls; try using UNICODE_ENABLE instead

* RGBLIGHT_ENABLE = yes

* ...on second thought, don't enable RGBLIGHT =P

* Move Del to PrtSc, add Home, move PrtSc to Fn+Home

* willwm: Add keymap.json and readme.md

* willwm: Add layer0/layer1 images

* willwm: Update readme.md with info from PR #12952

* willwm: Update to better match template
(https://docs.qmk.fm/#/documentation_templates)
---
 keyboards/gmmk/pro/keymaps/willwm/keymap.c    |  74 +++++++
 keyboards/gmmk/pro/keymaps/willwm/keymap.json | 181 ++++++++++++++++++
 keyboards/gmmk/pro/keymaps/willwm/readme.md   |  22 +++
 keyboards/gmmk/pro/keymaps/willwm/rules.mk    |   2 +
 4 files changed, 279 insertions(+)
 create mode 100644 keyboards/gmmk/pro/keymaps/willwm/keymap.c
 create mode 100644 keyboards/gmmk/pro/keymaps/willwm/keymap.json
 create mode 100644 keyboards/gmmk/pro/keymaps/willwm/readme.md
 create mode 100644 keyboards/gmmk/pro/keymaps/willwm/rules.mk

diff --git a/keyboards/gmmk/pro/keymaps/willwm/keymap.c b/keyboards/gmmk/pro/keymaps/willwm/keymap.c
new file mode 100644
index 0000000000..a17f793319
--- /dev/null
+++ b/keyboards/gmmk/pro/keymaps/willwm/keymap.c
@@ -0,0 +1,74 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
+
+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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+//      ESC      F1       F2       F3       F4       F5       F6       F7       F8       F9       F10      F11      F12	     Del           Rotary(Mute)
+//      ~        1        2        3        4        5        6        7        8        9        0         -       (=)	     BackSpc           Home
+//      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_DEL,           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,
+        MO(1),   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_RALT, MO(1),   KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+    ),
+
+    [1] = LAYOUT(
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,            _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,           KC_PSCR,
+        KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,             _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,           _______,
+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, KC_PGUP,  _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, KC_HOME, KC_PGDN,  KC_END
+    ),
+
+    [2] = LAYOUT(
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,          _______,
+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______
+    ),
+
+    [3] = LAYOUT(
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,          _______,
+        _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, _______, _______, _______, _______, _______
+    ),
+
+};
+
+
+void encoder_update_user(uint8_t index, bool clockwise) {
+    if (clockwise) {
+      tap_code(KC_VOLU);
+    } else {
+      tap_code(KC_VOLD);
+    }
+}
diff --git a/keyboards/gmmk/pro/keymaps/willwm/keymap.json b/keyboards/gmmk/pro/keymaps/willwm/keymap.json
new file mode 100644
index 0000000000..d2325d2c13
--- /dev/null
+++ b/keyboards/gmmk/pro/keymaps/willwm/keymap.json
@@ -0,0 +1,181 @@
+{
+  "version": 1,
+  "notes": "",
+  "documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
+  "keyboard": "gmmk/pro",
+  "keymap": "willwm",
+  "layout": "LAYOUT",
+  "layers": [
+    [
+      "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_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",
+      "MO(1)",
+      "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_RALT",
+      "MO(1)",
+      "KC_RCTL",
+      "KC_LEFT",
+      "KC_DOWN",
+      "KC_RGHT"
+    ],
+    [
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_INS",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_PSCR",
+      "KC_CAPS",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "RESET",
+      "KC_NO",
+      "KC_TRNS",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_PGUP",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_NO",
+      "KC_TRNS",
+      "KC_NO",
+      "KC_HOME",
+      "KC_PGDN",
+      "KC_END"
+    ]
+  ],
+  "author": ""
+}
\ No newline at end of file
diff --git a/keyboards/gmmk/pro/keymaps/willwm/readme.md b/keyboards/gmmk/pro/keymaps/willwm/readme.md
new file mode 100644
index 0000000000..1c169faac6
--- /dev/null
+++ b/keyboards/gmmk/pro/keymaps/willwm/readme.md
@@ -0,0 +1,22 @@
+<img width="567" alt="layer0" src="https://user-images.githubusercontent.com/303042/118893170-da3e3280-b8b6-11eb-9459-f6c339c59bde.png">
+<img width="566" alt="layer1" src="https://user-images.githubusercontent.com/303042/118893191-e0341380-b8b6-11eb-8641-a4fdeeb7cbb2.png">
+
+# willwm GMMK Pro Layout 
+
+Based on [gmmk/pro/keymaps/default](../default/keymap.c), with [VIA support](./rules.mk)
+
+Layer 0
+
+* Delete between F12 and rotary encoder (replaces PrtSc)
+* Home below rotary encoder (replaces Del)
+* MO(1) in default location and Caps Lock location
+
+Layer 1
+
+* Tab -> Caps Lock
+* Del -> Insert
+* Home -> PrtSc
+* Left Arrow -> Home
+* Right Arrow -> End
+* Up Arrow -> PgUp
+* Down Arrow -> PgDn
diff --git a/keyboards/gmmk/pro/keymaps/willwm/rules.mk b/keyboards/gmmk/pro/keymaps/willwm/rules.mk
new file mode 100644
index 0000000000..511b50e19c
--- /dev/null
+++ b/keyboards/gmmk/pro/keymaps/willwm/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+UNICODE_ENABLE = yes