diff --git a/data/mappings/keyboard_aliases.hjson b/data/mappings/keyboard_aliases.hjson
index e26f38010ad..f005bb34c39 100644
--- a/data/mappings/keyboard_aliases.hjson
+++ b/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"
},
diff --git a/keyboards/durgod/dgk6x/hades/config.h b/keyboards/durgod/dgk6x/hades_ansi/config.h
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/config.h
rename to keyboards/durgod/dgk6x/hades_ansi/config.h
diff --git a/keyboards/durgod/dgk6x/hades/hades.c b/keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/hades.c
rename to keyboards/durgod/dgk6x/hades_ansi/hades_ansi.c
diff --git a/keyboards/durgod/dgk6x/hades/info.json b/keyboards/durgod/dgk6x/hades_ansi/info.json
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/info.json
rename to keyboards/durgod/dgk6x/hades_ansi/info.json
diff --git a/keyboards/durgod/dgk6x/hades/keymaps/default/keymap.json b/keyboards/durgod/dgk6x/hades_ansi/keymaps/default/keymap.json
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/keymaps/default/keymap.json
rename to keyboards/durgod/dgk6x/hades_ansi/keymaps/default/keymap.json
diff --git a/keyboards/durgod/dgk6x/hades/keymaps/default/readme.md b/keyboards/durgod/dgk6x/hades_ansi/keymaps/default/readme.md
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/keymaps/default/readme.md
rename to keyboards/durgod/dgk6x/hades_ansi/keymaps/default/readme.md
diff --git a/keyboards/durgod/dgk6x/hades/keymaps/via/keymap.json b/keyboards/durgod/dgk6x/hades_ansi/keymaps/via/keymap.json
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/keymaps/via/keymap.json
rename to keyboards/durgod/dgk6x/hades_ansi/keymaps/via/keymap.json
diff --git a/keyboards/durgod/dgk6x/hades/keymaps/via/readme.md b/keyboards/durgod/dgk6x/hades_ansi/keymaps/via/readme.md
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/keymaps/via/readme.md
rename to keyboards/durgod/dgk6x/hades_ansi/keymaps/via/readme.md
diff --git a/keyboards/durgod/dgk6x/hades/keymaps/via/rules.mk b/keyboards/durgod/dgk6x/hades_ansi/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/keymaps/via/rules.mk
rename to keyboards/durgod/dgk6x/hades_ansi/keymaps/via/rules.mk
diff --git a/keyboards/durgod/dgk6x/hades/readme.md b/keyboards/durgod/dgk6x/hades_ansi/readme.md
similarity index 90%
rename from keyboards/durgod/dgk6x/hades/readme.md
rename to keyboards/durgod/dgk6x/hades_ansi/readme.md
index 950696186f4..d28a8e69670 100644
--- a/keyboards/durgod/dgk6x/hades/readme.md
+++ b/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).
diff --git a/keyboards/durgod/dgk6x/hades/rules.mk b/keyboards/durgod/dgk6x/hades_ansi/rules.mk
similarity index 100%
rename from keyboards/durgod/dgk6x/hades/rules.mk
rename to keyboards/durgod/dgk6x/hades_ansi/rules.mk
diff --git a/keyboards/durgod/dgk6x/hades_iso/config.h b/keyboards/durgod/dgk6x/hades_iso/config.h
new file mode 100644
index 00000000000..ed9494a9901
--- /dev/null
+++ b/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 .
+ */
+
+#pragma once
+
+#define DRIVER_1_LED_TOTAL 59
+#define DRIVER_2_LED_TOTAL 10
+
+#define CAPS_LED 29
diff --git a/keyboards/durgod/dgk6x/hades_iso/hades_iso.c b/keyboards/durgod/dgk6x/hades_iso/hades_iso.c
new file mode 100644
index 00000000000..5f7a724aea8
--- /dev/null
+++ b/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 .
+ */
+
+#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 */
diff --git a/keyboards/durgod/dgk6x/hades_iso/info.json b/keyboards/durgod/dgk6x/hades_iso/info.json
new file mode 100644
index 00000000000..42f4d08fe35
--- /dev/null
+++ b/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}
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/durgod/dgk6x/hades_iso/keymaps/default/keymap.json b/keyboards/durgod/dgk6x/hades_iso/keymaps/default/keymap.json
new file mode 100644
index 00000000000..774c010206a
--- /dev/null
+++ b/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
+}
diff --git a/keyboards/durgod/dgk6x/hades_iso/keymaps/default/readme.md b/keyboards/durgod/dgk6x/hades_iso/keymaps/default/readme.md
new file mode 100644
index 00000000000..27ac31a395d
--- /dev/null
+++ b/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.
diff --git a/keyboards/durgod/dgk6x/hades_iso/keymaps/via/keymap.json b/keyboards/durgod/dgk6x/hades_iso/keymaps/via/keymap.json
new file mode 100644
index 00000000000..c9d5e7b843d
--- /dev/null
+++ b/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
+}
diff --git a/keyboards/durgod/dgk6x/hades_iso/keymaps/via/readme.md b/keyboards/durgod/dgk6x/hades_iso/keymaps/via/readme.md
new file mode 100644
index 00000000000..7ad2befab32
--- /dev/null
+++ b/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.
diff --git a/keyboards/durgod/dgk6x/hades_iso/keymaps/via/rules.mk b/keyboards/durgod/dgk6x/hades_iso/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/durgod/dgk6x/hades_iso/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/durgod/dgk6x/hades_iso/readme.md b/keyboards/durgod/dgk6x/hades_iso/readme.md
new file mode 100644
index 00000000000..2480d49ea37
--- /dev/null
+++ b/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)
diff --git a/keyboards/durgod/dgk6x/hades_iso/rules.mk b/keyboards/durgod/dgk6x/hades_iso/rules.mk
new file mode 100644
index 00000000000..7ff128fa692
--- /dev/null
+++ b/keyboards/durgod/dgk6x/hades_iso/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
\ No newline at end of file
diff --git a/keyboards/durgod/dgk6x/readme.md b/keyboards/durgod/dgk6x/readme.md
index 06ce965690c..a14dfcb9f4c 100644
--- a/keyboards/durgod/dgk6x/readme.md
+++ b/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
diff --git a/keyboards/durgod/dgk6x/rules.mk b/keyboards/durgod/dgk6x/rules.mk
index 1a05a561bea..36a93aa827b 100644
--- a/keyboards/durgod/dgk6x/rules.mk
+++ b/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
diff --git a/keyboards/durgod/hades/readme.md b/keyboards/durgod/hades/readme.md
index c132a99bf9d..612156d79cb 100644
--- a/keyboards/durgod/hades/readme.md
+++ b/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)
diff --git a/keyboards/durgod/hades/rules.mk b/keyboards/durgod/hades/rules.mk
deleted file mode 100644
index b5a326f3443..00000000000
--- a/keyboards/durgod/hades/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-DEFAULT_FOLDER=durgod/dgk6x/hades
diff --git a/keyboards/evyd13/atom47/keymaps/phsc138/config.h b/keyboards/evyd13/atom47/keymaps/phsc138/config.h
new file mode 100644
index 00000000000..ccd556b90d9
--- /dev/null
+++ b/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 .
+ */
+#pragma once
+#define TAPPING_TERM 150 // Tap dance time limit
diff --git a/keyboards/evyd13/atom47/keymaps/phsc138/keymap.c b/keyboards/evyd13/atom47/keymaps/phsc138/keymap.c
new file mode 100644
index 00000000000..f9fec678cda
--- /dev/null
+++ b/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 .
+ */
+
+#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),
+};
diff --git a/keyboards/evyd13/atom47/keymaps/phsc138/readme.md b/keyboards/evyd13/atom47/keymaps/phsc138/readme.md
new file mode 100644
index 00000000000..6817befa8e7
--- /dev/null
+++ b/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`.
diff --git a/keyboards/evyd13/atom47/keymaps/phsc138/rules.mk b/keyboards/evyd13/atom47/keymaps/phsc138/rules.mk
new file mode 100644
index 00000000000..c6a2d559888
--- /dev/null
+++ b/keyboards/evyd13/atom47/keymaps/phsc138/rules.mk
@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = yes
+TAP_DANCE_ENABLE = yes