Ver Fonte

Merge remote-tracking branch 'origin/develop' into xap

QMK Bot há 3 anos atrás
pai
commit
f8e36408da
29 ficheiros alterados com 871 adições e 6 exclusões
  1. 9 0
      data/mappings/keyboard_aliases.hjson
  2. 0 0
      keyboards/durgod/dgk6x/hades_ansi/config.h
  3. 0 0
      keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c
  4. 0 0
      keyboards/durgod/dgk6x/hades_ansi/info.json
  5. 0 0
      keyboards/durgod/dgk6x/hades_ansi/keymaps/default/keymap.json
  6. 0 0
      keyboards/durgod/dgk6x/hades_ansi/keymaps/default/readme.md
  7. 0 0
      keyboards/durgod/dgk6x/hades_ansi/keymaps/via/keymap.json
  8. 0 0
      keyboards/durgod/dgk6x/hades_ansi/keymaps/via/readme.md
  9. 0 0
      keyboards/durgod/dgk6x/hades_ansi/keymaps/via/rules.mk
  10. 2 2
      keyboards/durgod/dgk6x/hades_ansi/readme.md
  11. 0 0
      keyboards/durgod/dgk6x/hades_ansi/rules.mk
  12. 22 0
      keyboards/durgod/dgk6x/hades_iso/config.h
  13. 105 0
      keyboards/durgod/dgk6x/hades_iso/hades_iso.c
  14. 173 0
      keyboards/durgod/dgk6x/hades_iso/info.json
  15. 38 0
      keyboards/durgod/dgk6x/hades_iso/keymaps/default/keymap.json
  16. 12 0
      keyboards/durgod/dgk6x/hades_iso/keymaps/default/readme.md
  17. 38 0
      keyboards/durgod/dgk6x/hades_iso/keymaps/via/keymap.json
  18. 12 0
      keyboards/durgod/dgk6x/hades_iso/keymaps/via/readme.md
  19. 1 0
      keyboards/durgod/dgk6x/hades_iso/keymaps/via/rules.mk
  20. 26 0
      keyboards/durgod/dgk6x/hades_iso/readme.md
  21. 1 0
      keyboards/durgod/dgk6x/hades_iso/rules.mk
  22. 2 1
      keyboards/durgod/dgk6x/readme.md
  23. 1 1
      keyboards/durgod/dgk6x/rules.mk
  24. 1 1
      keyboards/durgod/hades/readme.md
  25. 0 1
      keyboards/durgod/hades/rules.mk
  26. 17 0
      keyboards/evyd13/atom47/keymaps/phsc138/config.h
  27. 390 0
      keyboards/evyd13/atom47/keymaps/phsc138/keymap.c
  28. 18 0
      keyboards/evyd13/atom47/keymaps/phsc138/readme.md
  29. 3 0
      keyboards/evyd13/atom47/keymaps/phsc138/rules.mk

+ 9 - 0
data/mappings/keyboard_aliases.hjson

@@ -149,6 +149,15 @@
     "durgod/k320": {
         "target": "durgod/k3x0/k320"
     },
+    "durgod/hades": {
+        "target": "durgod/dgk6x/hades_ansi"
+    },
+    "durgod/hades_ansi": {
+        "target": "durgod/dgk6x/hades_ansi"
+    },
+    "durgod/hades_iso": {
+        "target": "durgod/dgk6x/hades_iso"
+    },
     "dztech/dz60rgb": {
         "target": "dztech/dz60rgb/v1"
     },

+ 0 - 0
keyboards/durgod/dgk6x/hades/config.h → keyboards/durgod/dgk6x/hades_ansi/config.h


+ 0 - 0
keyboards/durgod/dgk6x/hades/hades.c → keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c


+ 0 - 0
keyboards/durgod/dgk6x/hades/info.json → keyboards/durgod/dgk6x/hades_ansi/info.json


+ 0 - 0
keyboards/durgod/dgk6x/hades/keymaps/default/keymap.json → keyboards/durgod/dgk6x/hades_ansi/keymaps/default/keymap.json


+ 0 - 0
keyboards/durgod/dgk6x/hades/keymaps/default/readme.md → keyboards/durgod/dgk6x/hades_ansi/keymaps/default/readme.md


+ 0 - 0
keyboards/durgod/dgk6x/hades/keymaps/via/keymap.json → keyboards/durgod/dgk6x/hades_ansi/keymaps/via/keymap.json


+ 0 - 0
keyboards/durgod/dgk6x/hades/keymaps/via/readme.md → keyboards/durgod/dgk6x/hades_ansi/keymaps/via/readme.md


+ 0 - 0
keyboards/durgod/dgk6x/hades/keymaps/via/rules.mk → keyboards/durgod/dgk6x/hades_ansi/keymaps/via/rules.mk


+ 2 - 2
keyboards/durgod/dgk6x/hades/readme.md → keyboards/durgod/dgk6x/hades_ansi/readme.md

@@ -12,11 +12,11 @@ This is a standard off-the-shelf Durgod Hades 65% ANSI layout keyboard with RGB
 
 Make command example for this keyboard (after setting up your build environment):
 
-    make durgod/hades:default
+    make durgod/dgk6x/hades_ansi:default
 
 Flashing example for this keyboard:
 
-    make durgod/hades:default:flash
+    make durgod/dgk6x/hades_ansi:default:flash
 
 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).
 

+ 0 - 0
keyboards/durgod/dgk6x/hades/rules.mk → keyboards/durgod/dgk6x/hades_ansi/rules.mk


+ 22 - 0
keyboards/durgod/dgk6x/hades_iso/config.h

@@ -0,0 +1,22 @@
+/* Copyright 2021 Jessica Sullivan and Don Kjer
+ *
+ * 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
+
+#define DRIVER_1_LED_TOTAL 59
+#define DRIVER_2_LED_TOTAL 10   
+
+#define CAPS_LED 29

+ 105 - 0
keyboards/durgod/dgk6x/hades_iso/hades_iso.c

@@ -0,0 +1,105 @@
+/* Copyright 2021 Jessica Sullivan and Don Kjer 
+ *
+ * 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 "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+
+const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
+/* Refer to IS31 manual for these locations
+ *   driver
+ *   |  R location
+ *   |  |       G location
+ *   |  |       |       B location
+ *   |  |       |       | */
+
+   {0, C_1,   B_1,   A_1},  // Esc
+   {0, C_2,   B_2,   A_2},  // 1
+   {0, C_3,   B_3,   A_3},  // 2
+   {0, C_4,   B_4,   A_4},  // 3
+   {0, C_5,   B_5,   A_5},  // 4
+   {0, C_6,   B_6,   A_6},  // 5
+   {0, C_7,   B_7,   A_7},  // 6
+   {0, C_8,   B_8,   A_8},  // 7
+   {0, C_9,   B_9,   A_9},  // 8
+   {0, C_10,  B_10,  A_10}, // 9
+   {0, C_11,  B_11,  A_11}, // 0
+   {0, C_12,  B_12,  A_12}, // -
+   {0, C_13,  B_13,  A_13}, // =
+   {0, C_14,  B_14,  A_14}, // Bksp
+   {0, C_15,  B_15,  A_15}, // Del
+
+   {0, F_1,   E_1,   D_1},  // Tab
+   {0, F_2,   E_2,   D_2},  // Q
+   {0, F_3,   E_3,   D_3},  // W
+   {0, F_4,   E_4,   D_4},  // E
+   {0, F_5,   E_5,   D_5},  // R
+   {0, F_6,   E_6,   D_6},  // T
+   {0, F_7,   E_7,   D_7},  // Y
+   {0, F_8,   E_8,   D_8},  // U
+   {0, F_9,   E_9,   D_9},  // I
+   {0, F_10,  E_10,  D_10}, // O
+   {0, F_11,  E_11,  D_11}, // P
+   {0, F_12,  E_12,  D_12}, // [
+   {0, F_13,  E_13,  D_13}, // ]
+   {0, F_15,  E_15,  D_15}, // Home
+
+   {0, I_1,   H_1,   G_1},  // Caps
+   {0, I_2,   H_2,   G_2},  // A
+   {0, I_3,   H_3,   G_3},  // S
+   {0, I_4,   H_4,   G_4},  // D
+   {0, I_5,   H_5,   G_5},  // F
+   {0, I_6,   H_6,   G_6},  // G
+   {0, I_7,   H_7,   G_7},  // H
+   {0, I_8,   H_8,   G_8},  // J
+   {0, I_9,   H_9,   G_9},  // K
+   {0, I_10,  H_10,  G_10}, // L
+   {0, I_11,  H_11,  G_11}, // :
+   {0, I_12,  H_12,  G_12}, // '
+   {0, I_13,  H_13,  G_13}, // NUHS
+   {0, I_14,  H_14,  G_14}, // Enter
+   {0, I_15,  H_15,  G_15}, // PgUp
+
+   {0, L_1,   K_1,   J_1},  // LShift
+   {0, L_2,   K_2,   J_2},  // NUBS
+   {0, L_3,   K_3,   J_3},  // Z
+   {0, L_4,   K_4,   J_4},  // X
+   {0, L_5,   K_5,   J_5},  // C
+   {0, L_6,   K_6,   J_6},  // V
+   {0, L_7,   K_7,   J_7},  // B
+   {0, L_8,   K_8,   J_8},  // N
+   {0, L_9,   K_9,   J_9},  // M
+   {0, L_10,  K_10,  J_10}, // <
+   {0, L_11,  K_11,  J_11}, // >
+   {0, L_12,  K_12,  J_12}, // ?
+   {0, L_13,  K_13,  J_13}, // RShift
+   {0, L_14,  K_14,  J_14}, // Up
+   {0, L_15,  K_15,  J_15}, // PgOn
+
+   {1, C_1,   B_1,   A_1},  // LCtrl
+   {1, C_2,   B_2,   A_2},  // LAlt
+   {1, C_3,   B_3,   A_3},  // Windows
+   {1, C_6,   B_6,   A_6},  // Space
+   {1, C_10,  B_10,  A_10}, // Fn1/RAlt hades/venus
+   {1, C_11,  B_11,  A_11}, // Fn2/Fn1
+   {1, C_12,  B_12,  A_12}, // RCtrl/Fn2
+   {1, C_13,  B_13,  A_13}, // LEFT/RCtrl
+   {1, C_14,  B_14,  A_14}, // DOWN
+   {1, C_15,  B_15,  A_15}  // RIGHT
+};
+
+#endif /* RGB_MATRIX_ENABLE */

+ 173 - 0
keyboards/durgod/dgk6x/hades_iso/info.json

@@ -0,0 +1,173 @@
+{
+    "manufacturer": "Hoksi Technology",
+    "keyboard_name": "DURGOD Hades (QMK)",
+    "maintainer": "ebastler",
+    "url": "https://www.amazon.com/gp/product/B08562392T",
+    "usb": {
+        "device_version": "0.0.1",
+        "pid": "0x4AD4",
+        "vid": "0xD60D"
+    },
+    "matrix_pins": {
+        "cols": ["B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14", "B15", "C6", "C7", "C8", "C9", "C10", "C11"],
+        "rows": ["A0", "A1", "A2", "A3", "A4"]
+    },
+    "rgb_matrix": {
+        "layout": [
+            {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+            {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+            {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+            {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+            {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+            {"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
+            {"matrix": [0, 6], "x": 96, "y": 0, "flags": 4},
+            {"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
+            {"matrix": [0, 8], "x": 128, "y": 0, "flags": 4},
+            {"matrix": [0, 9], "x": 144, "y": 0, "flags": 4},
+            {"matrix": [0, 10], "x": 160, "y": 0, "flags": 4},
+            {"matrix": [0, 11], "x": 176, "y": 0, "flags": 4},
+            {"matrix": [0, 12], "x": 192, "y": 0, "flags": 4},
+            {"matrix": [0, 13], "x": 216, "y": 0, "flags": 1},
+            {"matrix": [0, 14], "x": 240, "y": 0, "flags": 4},
+
+            {"matrix": [1, 0], "x": 4, "y": 16, "flags": 4},
+            {"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
+            {"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
+            {"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
+            {"matrix": [1, 4], "x": 72, "y": 16, "flags": 4},
+            {"matrix": [1, 5], "x": 88, "y": 16, "flags": 4},
+            {"matrix": [1, 6], "x": 104, "y": 16, "flags": 4},
+            {"matrix": [1, 7], "x": 120, "y": 16, "flags": 4},
+            {"matrix": [1, 8], "x": 136, "y": 16, "flags": 4},
+            {"matrix": [1, 9], "x": 152, "y": 16, "flags": 4},
+            {"matrix": [1, 10], "x": 168, "y": 16, "flags": 4},
+            {"matrix": [1, 11], "x": 184, "y": 16, "flags": 4},
+            {"matrix": [1, 12], "x": 200, "y": 16, "flags": 4},
+            {"matrix": [1, 14], "x": 240, "y": 16, "flags": 4},
+
+            {"matrix": [2, 0], "x": 6, "y": 32, "flags": 4},
+            {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
+            {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
+            {"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
+            {"matrix": [2, 4], "x": 76, "y": 32, "flags": 4},
+            {"matrix": [2, 5], "x": 92, "y": 32, "flags": 4},
+            {"matrix": [2, 6], "x": 108, "y": 32, "flags": 4},
+            {"matrix": [2, 7], "x": 124, "y": 32, "flags": 4},
+            {"matrix": [2, 8], "x": 140, "y": 32, "flags": 4},
+            {"matrix": [2, 9], "x": 156, "y": 32, "flags": 4},
+            {"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
+            {"matrix": [2, 11], "x": 188, "y": 32, "flags": 4},
+            {"matrix": [2, 12], "x": 204, "y": 32, "flags": 4},
+            {"matrix": [2, 13], "x": 220, "y": 24, "flags": 1},
+            {"matrix": [2, 14], "x": 240, "y": 32, "flags": 4},
+
+            {"matrix": [3, 0], "x": 2, "y": 48, "flags": 1},
+            {"matrix": [3, 1], "x": 19, "y": 48, "flags": 4},
+            {"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
+            {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
+            {"matrix": [3, 4], "x": 68, "y": 48, "flags": 4},
+            {"matrix": [3, 5], "x": 84, "y": 48, "flags": 4},
+            {"matrix": [3, 6], "x": 100, "y": 48, "flags": 4},
+            {"matrix": [3, 7], "x": 116, "y": 48, "flags": 4},
+            {"matrix": [3, 8], "x": 132, "y": 48, "flags": 4},
+            {"matrix": [3, 9], "x": 148, "y": 48, "flags": 4},
+            {"matrix": [3, 10], "x": 164, "y": 48, "flags": 4},
+            {"matrix": [3, 11], "x": 180, "y": 48, "flags": 4},
+            {"matrix": [3, 12], "x": 202, "y": 48, "flags": 1},
+            {"matrix": [3, 13], "x": 224, "y": 48, "flags": 4},
+            {"matrix": [3, 14], "x": 240, "y": 48, "flags": 4},
+
+            {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+            {"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
+            {"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
+            {"matrix": [4, 5], "x": 101, "y": 64, "flags": 4},
+            {"matrix": [4, 9], "x": 160, "y": 64, "flags": 1},
+            {"matrix": [4, 10], "x": 176, "y": 64, "flags": 1},
+            {"matrix": [4, 11], "x": 192, "y": 64, "flags": 1},
+            {"matrix": [4, 12], "x": 208, "y": 64, "flags": 4},
+            {"matrix": [4, 13], "x": 224, "y": 64, "flags": 4},
+            {"matrix": [4, 14], "x": 240, "y": 64, "flags": 4}
+        ]
+    },
+    "diode_direction": "ROW2COL",
+    "community_layouts": ["65_iso"],
+    "layouts": {
+        "LAYOUT_65_iso": {
+            "layout": [
+                {"label": "Esc",        "matrix": [0,  0], "x": 0, "y": 0},
+                {"label": "!",          "matrix": [0,  1], "x": 1, "y": 0},
+                {"label": "@",          "matrix": [0,  2], "x": 2, "y": 0},
+                {"label": "#",          "matrix": [0,  3], "x": 3, "y": 0},
+                {"label": "$",          "matrix": [0,  4], "x": 4, "y": 0},
+                {"label": "%",          "matrix": [0,  5], "x": 5, "y": 0},
+                {"label": "^",          "matrix": [0,  6], "x": 6, "y": 0},
+                {"label": "&",          "matrix": [0,  7], "x": 7, "y": 0},
+                {"label": "*",          "matrix": [0,  8], "x": 8, "y": 0},
+                {"label": "(",          "matrix": [0,  9], "x": 9, "y": 0},
+                {"label": ")",          "matrix": [0, 10], "x": 10, "y": 0},
+                {"label": "_",          "matrix": [0, 11], "x": 11, "y": 0},
+                {"label": "+",          "matrix": [0, 12], "x": 12, "y": 0},
+                {"label": "Backspace",  "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+                {"label": "Delete",     "matrix": [0, 14], "x": 15, "y": 0},
+
+                {"label": "Tab",        "matrix": [1,  0], "x": 0, "y": 1, "w": 1.5},
+                {"label": "Q",          "matrix": [1,  1], "x": 1.5, "y": 1},
+                {"label": "W",          "matrix": [1,  2], "x": 2.5, "y": 1},
+                {"label": "E",          "matrix": [1,  3], "x": 3.5, "y": 1},
+                {"label": "R",          "matrix": [1,  4], "x": 4.5, "y": 1},
+                {"label": "T",          "matrix": [1,  5], "x": 5.5, "y": 1},
+                {"label": "Y",          "matrix": [1,  6], "x": 6.5, "y": 1},
+                {"label": "U",          "matrix": [1,  7], "x": 7.5, "y": 1},
+                {"label": "I",          "matrix": [1,  8], "x": 8.5, "y": 1},
+                {"label": "O",          "matrix": [1,  9], "x": 9.5, "y": 1},
+                {"label": "P",          "matrix": [1, 10], "x": 10.5, "y": 1},
+                {"label": "{",          "matrix": [1, 11], "x": 11.5, "y": 1},
+                {"label": "}",          "matrix": [1, 12], "x": 12.5, "y": 1},
+                {"label": "Home",       "matrix": [1, 14], "x": 15, "y": 1},
+
+                {"label": "CapsLock",   "matrix": [2,  0], "x": 0, "y": 2, "w": 1.75},
+                {"label": "A",          "matrix": [2,  1], "x": 1.75, "y": 2},
+                {"label": "S",          "matrix": [2,  2], "x": 2.75, "y": 2},
+                {"label": "D",          "matrix": [2,  3], "x": 3.75, "y": 2},
+                {"label": "F",          "matrix": [2,  4], "x": 4.75, "y": 2},
+                {"label": "G",          "matrix": [2,  5], "x": 5.75, "y": 2},
+                {"label": "H",          "matrix": [2,  6], "x": 6.75, "y": 2},
+                {"label": "J",          "matrix": [2,  7], "x": 7.75, "y": 2},
+                {"label": "K",          "matrix": [2,  8], "x": 8.75, "y": 2},
+                {"label": "L",          "matrix": [2,  9], "x": 9.75, "y": 2},
+                {"label": ":",          "matrix": [2, 10], "x": 10.75, "y": 2},
+                {"label": "\"",         "matrix": [2, 11], "x": 11.75, "y": 2},
+                {"label": "#",          "matrix": [2, 12], "x": 12.75, "y": 2},
+                {"label": "Enter",      "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+                {"label": "PgUp",       "matrix": [2, 14], "x": 15, "y": 2},
+
+                {"label": "Shift",      "matrix": [3,  0], "x": 0, "y": 3, "w": 1.25},
+                {"label": "\\",         "matrix": [3,  1], "x": 1.25, "y": 3},
+                {"label": "Z",          "matrix": [3,  2], "x": 2.25, "y": 3},
+                {"label": "X",          "matrix": [3,  3], "x": 3.25, "y": 3},
+                {"label": "C",          "matrix": [3,  4], "x": 4.25, "y": 3},
+                {"label": "V",          "matrix": [3,  5], "x": 5.25, "y": 3},
+                {"label": "B",          "matrix": [3,  6], "x": 6.25, "y": 3},
+                {"label": "N",          "matrix": [3,  7], "x": 7.25, "y": 3},
+                {"label": "M",          "matrix": [3,  8], "x": 8.25, "y": 3},
+                {"label": "<",          "matrix": [3,  9], "x": 9.25, "y": 3},
+                {"label": ">",          "matrix": [3, 10], "x": 10.25, "y": 3},
+                {"label": "?",          "matrix": [3, 11], "x": 11.25, "y": 3},
+                {"label": "Shift",      "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+                {"label": "Up",         "matrix": [3, 13], "x": 14, "y": 3},
+                {"label": "PgDn",       "matrix": [3, 14], "x": 15, "y": 3},
+
+                {"label": "Ctrl",       "matrix": [4,  0], "x": 0, "y": 4, "w": 1.25},
+                {"label": "Win",        "matrix": [4,  1], "x": 1.25, "y": 4, "w": 1.25},
+                {"label": "Alt",        "matrix": [4,  2], "x": 2.5, "y": 4, "w": 1.25},
+                {"label": "K45",        "matrix": [4,  5], "x": 3.75, "y": 4, "w": 6.25},
+                {"label": "Fn1",        "matrix": [4,  9], "x": 10, "y": 4},
+                {"label": "Fn2",        "matrix": [4, 10], "x": 11, "y": 4},
+                {"label": "Ctrl",       "matrix": [4, 11], "x": 12, "y": 4},
+                {"label": "Left",       "matrix": [4, 12], "x": 13, "y": 4},
+                {"label": "Down",       "matrix": [4, 13], "x": 14, "y": 4},
+                {"label": "Right",      "matrix": [4, 14], "x": 15, "y": 4}
+            ]
+        }
+    }
+}

+ 38 - 0
keyboards/durgod/dgk6x/hades_iso/keymaps/default/keymap.json

@@ -0,0 +1,38 @@
+{
+  "keyboard": "durgod/dgk6x/hades_iso",
+  "keymap": "default",
+  "layout": "LAYOUT_65_iso",
+  "layers": [
+    [
+      "QK_GESC",  "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_DEL", 
+      "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_HOME",
+      "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_NUHS", "KC_ENT",  "KC_PGUP", 
+      "KC_LSFT",  "KC_NUBS", "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_PGDN", 
+      "KC_LCTL",  "KC_LGUI", "KC_LALT",                                  "KC_SPC",                        "MO(1)",   "MO(2)",   "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RIGHT"
+    ],
+    [
+      "KC_GRV",  "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_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_UP",   "KC_TRNS",  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PSCR", "KC_SCRL", "KC_PAUS",            "KC_TRNS",
+      "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RIGHT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_INS",  "KC_END",  "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "GUI_TOG", "KC_TRNS",                                   "KC_TRNS",                       "KC_TRNS", "MO(3)",   "KC_TRNS", "KC_APP",  "KC_TRNS", "KC_TRNS"
+    ],
+    [
+      "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_RMOD", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",            "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS",                                  "KC_TRNS",                       "MO(3)",   "KC_TRNS", "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI"
+    ],
+    [
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",            "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_SAI", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS",                                  "KC_TRNS",                       "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI"
+    ]
+  ],
+  "author":"ebastler",
+  "notes":"derived from ANSI keymap by J-Sully",
+  "version":1
+}

+ 12 - 0
keyboards/durgod/dgk6x/hades_iso/keymaps/default/readme.md

@@ -0,0 +1,12 @@
+![Durgod Hades Layout Image](https://i.imgur.com/vsi6sdKh.png)
+
+# The default keymap for Durgod Hades.
+
+This keymap is intended to closely follow the stock Durgod Hades layout. RGB Hue and Saturation can be changed Fn1 + Fn2 + arrow keys. 
+
+## Windows key lock
+
+You can hold down Fn1 + Windows key to disable the Windows key while in locked mode.
+The 'Lock' LED indicates if the Windows key is locked.
+
+This is similar to the stock Hades Windows key lock functionality.

+ 38 - 0
keyboards/durgod/dgk6x/hades_iso/keymaps/via/keymap.json

@@ -0,0 +1,38 @@
+{
+  "keyboard": "durgod/dgk6x/hades_iso",
+  "keymap": "via",
+  "layout": "LAYOUT_65_iso",
+  "layers": [
+    [
+      "QK_GESC",  "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_DEL", 
+      "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_HOME",
+      "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_NUHS", "KC_ENT",  "KC_PGUP", 
+      "KC_LSFT",  "KC_NUBS", "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_PGDN", 
+      "KC_LCTL",  "KC_LGUI", "KC_LALT",                                  "KC_SPC",                        "MO(1)",   "MO(2)",   "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RIGHT"
+    ],
+    [
+      "KC_GRV",  "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_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_UP",   "KC_TRNS",  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PSCR", "KC_SCRL", "KC_PAUS",            "KC_TRNS",
+      "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RIGHT", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_INS",  "KC_END",  "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "GUI_TOG", "KC_TRNS",                                   "KC_TRNS",                       "KC_TRNS", "MO(3)",   "KC_TRNS", "KC_APP",  "KC_TRNS", "KC_TRNS"
+    ],
+    [
+      "KC_TRNS", "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_RMOD", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",            "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_VAI", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS",                                  "KC_TRNS",                       "MO(3)",   "KC_TRNS", "KC_TRNS", "RGB_SPD", "RGB_VAD", "RGB_SPI"
+    ],
+    [
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",            "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_SAI", "KC_TRNS",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS",                                  "KC_TRNS",                       "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_HUD", "RGB_SAD", "RGB_HUI"
+    ]
+  ],
+  "author":"ebastler",
+  "notes":"derived from ANSI keymap by J-Sully",
+  "version":1
+}

+ 12 - 0
keyboards/durgod/dgk6x/hades_iso/keymaps/via/readme.md

@@ -0,0 +1,12 @@
+![Durgod Hades Layout Image](https://i.imgur.com/vsi6sdK.png)
+
+# The via keymap for Durgod Hades.
+
+This keymap is intended to closely follow the stock Durgod Hades layout. RGB Hue and Saturation can be changed Fn1 + Fn2 + arrow keys. 
+
+## Windows key lock
+
+You can hold down Fn1 + Windows key to disable the Windows key while in locked mode.
+The 'Lock' LED indicates if the Windows key is locked.
+
+This is similar to the stock Hades Windows key lock functionality.

+ 1 - 0
keyboards/durgod/dgk6x/hades_iso/keymaps/via/rules.mk

@@ -0,0 +1 @@
+VIA_ENABLE = yes

+ 26 - 0
keyboards/durgod/dgk6x/hades_iso/readme.md

@@ -0,0 +1,26 @@
+# Hades
+
+This is a standard off-the-shelf Durgod Hades 65% ISO layout keyboard with RGB matrix.
+
+* Keyboard Maintainer: [ebastler](https://github.com/ebastler), based on the work of [J-Sully](https://github.com/J-Sully) and [dkjer](https://github.com/dkjer)
+* Hardware Supported: Durgod Hades ISO board with STM32F070RBT6
+* Hardware Availability: https://www.amazon.de/-/en/Durgod-Hades-Mechanical-Gaming-Keyboard/dp/B08H11BFXF
+
+## Instructions
+
+### Build
+
+Make command example for this keyboard (after setting up your build environment):
+
+    make durgod/dgk6x/hades_iso:default
+
+Flashing example for this keyboard:
+
+    make durgod/dgk6x/hades_iso:default:flash
+
+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).
+
+### Initial Flash
+
+Instructions for Flashing from initial Stock Firmware:
+* [Initial Flashing](../readme.md#initial-flash)

+ 1 - 0
keyboards/durgod/dgk6x/hades_iso/rules.mk

@@ -0,0 +1 @@
+# This file intentionally left blank

+ 2 - 1
keyboards/durgod/dgk6x/readme.md

@@ -12,7 +12,8 @@ This DGK6X code is shared between the ANSI variants of Venus, Hades and Galaxy k
 
 Instructions for building the Venus, Hades and Galaxy firmware can be found here: 
 * [Venus](venus/readme.md)
-* [Hades](hades/readme.md)
+* [Hades ANSI](hades_ansi/readme.md)
+* [Hades ISO](hades_iso/readme.md)
 * [Galaxy](galaxy/readme.md)
 
 ### Initial Flash

+ 1 - 1
keyboards/durgod/dgk6x/rules.mk

@@ -17,4 +17,4 @@ LTO_ENABLE = yes
 
 RGB_MATRIX_ENABLE = yes
 
-DEFAULT_FOLDER=durgod/dgk6x/hades
+DEFAULT_FOLDER=durgod/dgk6x/hades_ansi

+ 1 - 1
keyboards/durgod/hades/readme.md

@@ -1,3 +1,3 @@
 # Hades 
 
-See: [Hades](../dgk6x/hades/readme.md)
+See: [Hades ANSI](../dgk6x/hades_ansi/readme.md) and [Hades ISO](../dgk6x/hades_iso/readme.md)

+ 0 - 1
keyboards/durgod/hades/rules.mk

@@ -1 +0,0 @@
-DEFAULT_FOLDER=durgod/dgk6x/hades

+ 17 - 0
keyboards/evyd13/atom47/keymaps/phsc138/config.h

@@ -0,0 +1,17 @@
+/* Copyright 2022 PHSC138
+ *
+ * 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
+#define TAPPING_TERM 150 // Tap dance time limit

+ 390 - 0
keyboards/evyd13/atom47/keymaps/phsc138/keymap.c

@@ -0,0 +1,390 @@
+/* Copyright 2022 PHSC138
+ *
+ * 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
+
+// These are all aliases for the function layers.
+enum custom_layers {
+    _BASE,
+    _PROG,
+    _GAME,
+    _FN,
+    _FN1,
+    _NUM
+};
+
+
+// Tap Dance
+typedef struct {
+    char is_press_action;
+    int state;
+} tap;
+
+enum {
+    SINGLE_TAP = 1,
+    SINGLE_HOLD = 2,
+    DOUBLE_TAP = 3,
+    DOUBLE_HOLD = 4,
+    DOUBLE_SINGLE_TAP = 5, // Send two single taps
+    TRIPLE_TAP = 6,
+    TRIPLE_HOLD = 7
+};
+
+// Tap dance enums
+enum {
+    PN_SWAP = 0,
+    LAPO = 1,
+    LCPO = 2,
+    RAPC = 3,
+    RCPC = 4,
+    D20 = 5
+};
+
+enum custom_keycodes {
+    PROF_MAC = QK_USER
+};
+
+
+uint8_t cur_dance (tap_dance_state_t *state);
+void pn_finished (tap_dance_state_t *state, void *user_data);
+void pn_reset (tap_dance_state_t *state, void *user_data);
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// TREE: 'pn' to enter custom layers:
+    // _BASE
+        // _FN
+        // _FN1
+        // _NUM
+        // _PROG
+    // _PROG
+        // _FN
+        // _FN1
+        // _NUM
+        // _GAME
+    // _GAME
+    // _BASE
+
+// Tap pn for toggle to _PROG, or hold for numpad
+[_BASE] = LAYOUT_split_space(
+    QK_GESC,  KC_Q,     KC_W,     KC_E,        KC_R,        KC_T,       KC_Y,    KC_U,      KC_I,    KC_O,       KC_P,     KC_DEL,   KC_BSPC,
+    KC_TAB,   KC_A,     KC_S,     KC_D,        KC_F,        KC_G,       KC_H,    KC_J,      KC_K,    KC_L,       KC_SCLN,            KC_ENT,
+    KC_LSFT,  KC_Z,     KC_X,     KC_C,        KC_V,        KC_B,       KC_N,    KC_M,      KC_COMM, KC_DOT,     KC_RSFT,            MO(_FN1),
+    KC_LCTL,  KC_LGUI,  KC_LALT,  TD(PN_SWAP),              KC_SPC,              KC_SPC,             MO(_FN),    KC_RALT,  KC_APP,   KC_RCTL),
+
+
+// LEFT AND RIGHT SHIFT: '(' and ')' when tapped, shift when held
+// LEFT AND RIGHT CTRL: '{' and '}' when tapped, ctrl when held
+// LEFT AND RIGHT ALT: '[' and ']' when tapped, ctrl when held
+[_PROG] = LAYOUT_split_space(
+    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    _______,   _______, _______,
+    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    _______,            _______,
+    SC_LSPO,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    SC_RSPC,            _______,
+    TD(LCPO), _______,  TD(LAPO), TO(_GAME),                _______,             _______,            _______,    TD(RAPC),  _______, TD(RCPC)),
+
+
+// Macro for right space is bhop
+// Maco for 'fn' is move forward
+// Macro for 'fn1' is spin constantly
+// Macro for right shift is D20
+[_GAME] = LAYOUT_split_space(
+    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    _______,   _______, _______,
+    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    _______,            _______,
+    _______,  _______,  _______,  _______,     _______,     _______,    _______, _______,   _______, _______,    TD(D20),            XXXXXXX,
+    _______,  _______,  _______,  TO(_BASE),                _______,             XXXXXXX,            XXXXXXX,    _______,   XXXXXXX, _______),
+
+
+[_FN] = LAYOUT_split_space(
+    _______,  KC_VOLD,  KC_VOLU,  KC_MUTE,     QK_RBT,      _______,    KC_CALC, KC_PGUP,   _______, KC_PGDN,    KC_PSCR,   KC_SCRL,  KC_PAUS,
+    KC_CAPS,  KC_MPRV,  KC_MPLY,  KC_MNXT,     _______,     _______,    KC_LEFT, KC_DOWN,   KC_UP,   KC_RIGHT,   KC_INS,              _______,
+    _______,  _______,  _______,  _______,     _______,     KC_HOME,    KC_END,  BL_TOGG,   BL_DOWN,  BL_UP,     _______,             _______,
+    _______,  _______,  _______,  _______,                  _______,             _______,            _______,    _______,   _______,  _______),
+
+
+[_FN1] = LAYOUT_split_space(
+    KC_GRV,   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_1,     KC_2,     KC_3,     KC_4,        KC_5,        KC_6,       KC_7,    KC_8,      KC_9,    KC_0,       KC_MINS,             KC_EQL,
+    _______,  _______,  _______,  _______,     _______,     KC_QUOT,    KC_SLSH, KC_LBRC,   KC_RBRC, KC_BSLS,    KC_RSFT,             _______,
+    _______,  _______,  _______,  _______,     _______,     _______,             _______,            _______,    _______,             _______),
+
+
+[_NUM] = LAYOUT_split_space(
+    _______,  _______,  _______,  _______,     _______,     _______,    KC_7,    KC_8,      KC_9,    _______,    PROF_MAC,  _______,  _______,
+    _______,  _______,  _______,  _______,     _______,     _______,    KC_4,    KC_5,      KC_6,    _______,    _______,             _______,
+    _______,  _______,  _______,  _______,     _______,     KC_1,       KC_2,    KC_3,      KC_DOT,  _______,    _______,             _______,
+    _______,  _______,  _______,  _______,     _______,     KC_0,                 _______,           _______,    DB_TOGG,             QK_BOOT),
+};
+
+
+/*--- Profile Macro ---*/
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case PROF_MAC:
+      if (record->event.pressed) {
+        // When keycode PROF_MAC is pressed
+        SEND_STRING("if [ $shell = 'zsh' ]; then echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.zshrc\nclear; else echo \"echo \"Lock your computer -PHSC138\"\" >> ~/.profile\nclear; fi\n");
+      } else {
+        // When keycode QMKBEST is released
+      }
+      break;
+  }
+  return true;
+};
+/*--- End Profile Macro ---*/
+
+/* Return an integer that corresponds to what kind of tap dance should be executed.
+ *
+ * How to figure out tap dance state: interrupted and pressed.
+ *
+ * Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
+ *  under the tapping term. This is typically indicitive that you are trying to "tap" the key.
+ *
+ * Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term
+ *  has ended, but the key is still being pressed down. This generally means the key is being "held".
+ *
+ * One thing that is currenlty not possible with qmk software in regards to tap dance is to mimic the "permissive hold"
+ *  feature. In general, advanced tap dances do not work well if they are used with commonly typed letters.
+ *  For example "A". Tap dances are best used on non-letter keys that are not hit while typing letters.
+ *
+ * Good places to put an advanced tap dance:
+ *  z,q,x,j,k,v,b, any function key, home/end, comma, semi-colon
+ *
+ * Criteria for "good placement" of a tap dance key:
+ *  Not a key that is hit frequently in a sentence
+ *  Not a key that is used frequently to double tap, for example 'tab' is often double tapped in a terminal, or
+ *    in a web form. So 'tab' would be a poor choice for a tap dance.
+ *  Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
+ *    letter 'p', the word 'pepper' would be quite frustating to type.
+ *
+ * For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
+ *
+ */
+uint8_t cur_dance(tap_dance_state_t *state) {
+    if(state->count == 1) {
+        if(state->interrupted || !state->pressed) return SINGLE_TAP;
+        //key has not been interrupted, but they key is still held. Means you want to send a 'HOLD'.
+        else return SINGLE_HOLD;
+    } else if(state->count == 2) {
+        /*
+         * DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
+         * action when hitting 'pp'. Suggested use case for this return value is when you want to send two
+         * keystrokes of the key, and not the 'double tap' action/macro.
+        */
+        if(state->interrupted) return DOUBLE_SINGLE_TAP;
+        else if(state->pressed) return DOUBLE_HOLD;
+        else return DOUBLE_TAP;
+    }
+    //Assumes no one is trying to type the same letter three times (at least not quickly).
+    //If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
+    //an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP'
+    if(state->count == 3) {
+        if(state->interrupted || !state->pressed) return TRIPLE_TAP;
+        else return TRIPLE_HOLD;
+    }
+    else return 8; //magic number. At some point this method will expand to work for more presses
+}
+
+//instanalize an instance of 'tap' for the 'pn' tap dance.
+static tap pn_tap_state = {
+    .is_press_action = 1,
+    .state = 0
+};
+
+void pn_finished(tap_dance_state_t *state, void *user_data) {
+    pn_tap_state.state = cur_dance(state);
+    switch(pn_tap_state.state) {
+        case SINGLE_TAP: layer_on(_PROG); break;
+        case SINGLE_HOLD: layer_on(_NUM); break;
+        //case DOUBLE_TAP: register_code(KC_ESC); break;
+        //case DOUBLE_HOLD: register_code(KC_LALT); break;
+        //case DOUBLE_SINGLE_TAP: register_code(KC_X); unregister_code(KC_X); register_code(KC_X);
+        //Last case is for fast typing. Assuming your key is `f`:
+        //For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
+        //In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
+    }
+}
+
+void pn_reset(tap_dance_state_t *state, void *user_data) {
+    switch(pn_tap_state.state) {
+        //case SINGLE_TAP: unregister_code(KC_X); break;
+        case SINGLE_HOLD: layer_off(_NUM); break;
+        //case DOUBLE_TAP: unregister_code(KC_ESC); break;
+        //case DOUBLE_HOLD: unregister_code(KC_LALT);
+        //case DOUBLE_SINGLE_TAP: unregister_code(KC_X);
+    }
+    pn_tap_state.state = 0;
+}
+
+static tap lalt_tap_state = {
+    .is_press_action = 1,
+    .state = 0
+};
+
+void lalt_finished(tap_dance_state_t *state, void *user_data) {
+    lalt_tap_state.state = cur_dance(state);
+    switch(lalt_tap_state.state) {
+        case SINGLE_TAP: register_code(KC_LBRC); break;
+        case SINGLE_HOLD: register_code(KC_LALT); break;
+    }
+}
+
+void lalt_reset(tap_dance_state_t *state, void *user_data) {
+    switch(lalt_tap_state.state) {
+        case SINGLE_TAP: unregister_code(KC_LBRC); break;
+        case SINGLE_HOLD: unregister_code(KC_LALT); break;
+    }
+    lalt_tap_state.state = 0;
+}
+
+static tap ralt_tap_state = {
+    .is_press_action = 1,
+    .state = 0
+};
+
+void ralt_finished(tap_dance_state_t *state, void *user_data) {
+    ralt_tap_state.state = cur_dance(state);
+    switch(ralt_tap_state.state) {
+        case SINGLE_TAP: register_code(KC_RBRC); break;
+        case SINGLE_HOLD: register_code(KC_RALT); break;
+    }
+}
+
+void ralt_reset(tap_dance_state_t *state, void *user_data) {
+    switch(ralt_tap_state.state) {
+        case SINGLE_TAP: unregister_code(KC_RBRC); break;
+        case SINGLE_HOLD: unregister_code(KC_RALT); break;
+    }
+    ralt_tap_state.state = 0;
+}
+
+static tap rctl_tap_state = {
+    .is_press_action = 1,
+    .state = 0
+};
+
+void rctl_finished(tap_dance_state_t *state, void *user_data) {
+    rctl_tap_state.state = cur_dance(state);
+    switch(rctl_tap_state.state) {
+        case SINGLE_TAP: register_code(KC_RSFT); register_code(KC_RBRC); break;
+        case SINGLE_HOLD: register_code(KC_RCTL); break;
+    }
+}
+
+void rctl_reset(tap_dance_state_t *state, void *user_data) {
+    switch(rctl_tap_state.state) {
+        case SINGLE_TAP: unregister_code(KC_RSFT); unregister_code(KC_RBRC); break;
+        case SINGLE_HOLD: unregister_code(KC_RCTL); break;
+    }
+    rctl_tap_state.state = 0;
+}
+
+static tap lctl_tap_state = {
+    .is_press_action = 1,
+    .state = 0
+};
+
+void lctl_finished(tap_dance_state_t *state, void *user_data) {
+    lctl_tap_state.state = cur_dance(state);
+    switch(lctl_tap_state.state) {
+        case SINGLE_TAP: register_code(KC_LSFT); register_code(KC_LBRC); break;
+        case SINGLE_HOLD: register_code(KC_LCTL); break;
+    }
+}
+
+void lctl_reset(tap_dance_state_t *state, void *user_data) {
+    switch(lctl_tap_state.state) {
+        case SINGLE_TAP: unregister_code(KC_LSFT); unregister_code(KC_LBRC); break;
+        case SINGLE_HOLD: unregister_code(KC_LCTL); break;
+    }
+    lctl_tap_state.state = 0;
+}
+
+static tap d20_tap_state = {
+    .is_press_action = 1,
+    .state = 0,
+};
+
+int d20_srand = 0;
+uint32_t timer_seed;
+
+void d20_finished(tap_dance_state_t *state, void *user_data) {
+    d20_tap_state.state = cur_dance(state);
+    switch(d20_tap_state.state) {
+        case SINGLE_HOLD: {
+            if(d20_srand == 0){
+                timer_seed = timer_read32();
+                srand((unsigned int)timer_seed);
+                d20_srand = 1;
+            }
+
+            SEND_STRING("Seed: ");
+            // uint32_t has max size of 4294967296
+            char SEED_STR_SIZE = 16;
+            // Initialize seed_str
+            char seed_str[SEED_STR_SIZE];
+            for (int iter=0;iter < SEED_STR_SIZE;iter++) seed_str[iter] = 0;
+
+            int i = SEED_STR_SIZE - 2; // Leave null byte on end of string
+            while (timer_seed && i >= 0) {
+                seed_str[i] = timer_seed % 10 + '0';
+                timer_seed /= 10;
+                i -= 1;
+            }
+            i++;
+
+            // Move all characters over i spaces
+            char move = i;
+            while (i < SEED_STR_SIZE -1) {
+                seed_str[i-move] = seed_str[i];
+                seed_str[i] = 0;
+                i += 1;
+            }
+
+            send_string(seed_str);
+            break;
+            // Else allow fall through
+        }
+        case SINGLE_TAP: {
+            if(d20_srand == 0){
+                timer_seed = timer_read();
+                srand((unsigned int)timer_seed);
+                d20_srand = 1;
+            }
+
+            unsigned char roll = rand() % 20 + 1;
+            char res[3];
+            res[0] = (char)((char)(roll / 10) + '0');
+            res[1] = (char)(roll % 10 + '0');
+
+            send_string(res);
+
+            break;
+                         }
+    }
+}
+
+void d20_reset(tap_dance_state_t *state, void *user_data) {
+    d20_tap_state.state = 0;
+}
+
+tap_dance_action_t tap_dance_actions[] = {
+    [PN_SWAP]  = ACTION_TAP_DANCE_FN_ADVANCED(NULL, pn_finished, pn_reset),
+    [LAPO]     = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lalt_finished, lalt_reset),
+    [RAPC]     = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ralt_finished, ralt_reset),
+    [LCPO]     = ACTION_TAP_DANCE_FN_ADVANCED(NULL, lctl_finished, lctl_reset),
+    [RCPC]     = ACTION_TAP_DANCE_FN_ADVANCED(NULL, rctl_finished, rctl_reset),
+    [D20]      = ACTION_TAP_DANCE_FN_ADVANCED(NULL, d20_finished, d20_reset),
+};

+ 18 - 0
keyboards/evyd13/atom47/keymaps/phsc138/readme.md

@@ -0,0 +1,18 @@
+# PHSC138's Layout for the atom47
+## Base layer
+The base layer is a standard vortex core layout
+
+## Layer 1 (PROG)
+This layer contains space cadet bindings to make programming easier. Ex: tapping left shift will input an open parenthesis
+
+## Layer 2 (GAME)
+This layer contains game specific macros, currently only a D20 has been implemented
+
+## Layer 3 (FN)
+This can be activated by pressing the `fn` key. This layer contains mostly the same bindings as the base vortex core except vim keybinds have replaced the arrow keys.
+
+## Layer 4 (FN1)
+This can be activated by pressing the `fn1` key. This is the default vortex core layer.
+
+## Layer 5 (NUM)
+This is a numpad that can be activated by holding the PN key. This also has some useful keys, such as `QC_BOOT`.

+ 3 - 0
keyboards/evyd13/atom47/keymaps/phsc138/rules.mk

@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = yes
+TAP_DANCE_ENABLE = yes