Browse Source

[Keyboard] Add Durgod Taurus K310 keyboard (#12314)

Co-authored-by: Tyler Tidman <tyler.tidman@draak.ca>
Co-authored-by: Simon Arlott <sa.me.uk>
Donald Kjer 3 years ago
parent
commit
13a514923a
52 changed files with 1945 additions and 642 deletions
  1. 6 0
      keyboards/durgod/k310/base/readme.md
  2. 1 0
      keyboards/durgod/k310/base/rules.mk
  3. 4 0
      keyboards/durgod/k310/readme.md
  4. 1 0
      keyboards/durgod/k310/rules.mk
  5. 6 0
      keyboards/durgod/k320/base/readme.md
  6. 1 0
      keyboards/durgod/k320/base/rules.mk
  7. 0 26
      keyboards/durgod/k320/keymaps/default/keymap.json
  8. 0 367
      keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c
  9. 0 90
      keyboards/durgod/k320/keymaps/via/keymap.c
  10. 0 12
      keyboards/durgod/k320/keymaps/via/readme.md
  11. 0 4
      keyboards/durgod/k320/keymaps/via/rules.mk
  12. 1 54
      keyboards/durgod/k320/readme.md
  13. 1 29
      keyboards/durgod/k320/rules.mk
  14. 7 7
      keyboards/durgod/k3x0/config.h
  15. 22 0
      keyboards/durgod/k3x0/halconf.h
  16. 23 0
      keyboards/durgod/k3x0/k310/base/config.h
  17. 27 0
      keyboards/durgod/k3x0/k310/base/readme.md
  18. 1 0
      keyboards/durgod/k3x0/k310/base/rules.mk
  19. 36 0
      keyboards/durgod/k3x0/k310/config.h
  20. 60 9
      keyboards/durgod/k3x0/k310/info.json
  21. 78 0
      keyboards/durgod/k3x0/k310/k310.h
  22. 10 0
      keyboards/durgod/k3x0/k310/readme.md
  23. 4 0
      keyboards/durgod/k3x0/k310/rules.mk
  24. 23 0
      keyboards/durgod/k3x0/k320/base/config.h
  25. 27 0
      keyboards/durgod/k3x0/k320/base/readme.md
  26. 1 0
      keyboards/durgod/k3x0/k320/base/rules.mk
  27. 33 0
      keyboards/durgod/k3x0/k320/config.h
  28. 415 0
      keyboards/durgod/k3x0/k320/info.json
  29. 22 22
      keyboards/durgod/k3x0/k320/k320.h
  30. 0 0
      keyboards/durgod/k3x0/k320/keymaps/kuenhlee/keymap.c
  31. 0 0
      keyboards/durgod/k3x0/k320/keymaps/kuenhlee/readme.md
  32. 0 0
      keyboards/durgod/k3x0/k320/keymaps/kuenhlee/rules.mk
  33. 10 0
      keyboards/durgod/k3x0/k320/readme.md
  34. 4 0
      keyboards/durgod/k3x0/k320/rules.mk
  35. 37 3
      keyboards/durgod/k3x0/k3x0.c
  36. 47 0
      keyboards/durgod/k3x0/k3x0.h
  37. 373 0
      keyboards/durgod/k3x0/keymaps/chimera/keymap.c
  38. 5 5
      keyboards/durgod/k3x0/keymaps/chimera/readme.md
  39. 0 0
      keyboards/durgod/k3x0/keymaps/chimera/rules.mk
  40. 26 0
      keyboards/durgod/k3x0/keymaps/default/keymap.json
  41. 3 3
      keyboards/durgod/k3x0/keymaps/default/readme.md
  42. 11 11
      keyboards/durgod/k3x0/keymaps/default_mac/keymap.json
  43. 0 0
      keyboards/durgod/k3x0/keymaps/default_mac/readme.md
  44. 373 0
      keyboards/durgod/k3x0/keymaps/typhon/keymap.c
  45. 65 0
      keyboards/durgod/k3x0/keymaps/typhon/readme.md
  46. 2 0
      keyboards/durgod/k3x0/keymaps/typhon/rules.mk
  47. 92 0
      keyboards/durgod/k3x0/keymaps/via/keymap.c
  48. 6 0
      keyboards/durgod/k3x0/keymaps/via/readme.md
  49. 1 0
      keyboards/durgod/k3x0/keymaps/via/rules.mk
  50. 51 0
      keyboards/durgod/k3x0/readme.md
  51. 28 0
      keyboards/durgod/k3x0/rules.mk
  52. 1 0
      users/talljoe/talljoe.h

+ 6 - 0
keyboards/durgod/k310/base/readme.md

@@ -0,0 +1,6 @@
+# Taurus K310
+
+Base Model - no backlight leds
+
+See: [K310](../../k3x0/k310/base/readme.md)
+

+ 1 - 0
keyboards/durgod/k310/base/rules.mk

@@ -0,0 +1 @@
+DEFAULT_FOLDER=durgod/k3x0/k310/base

+ 4 - 0
keyboards/durgod/k310/readme.md

@@ -0,0 +1,4 @@
+# K310
+
+See: [K310](../k3x0/k310/readme.md)
+

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

@@ -0,0 +1 @@
+DEFAULT_FOLDER=durgod/k3x0/k310

+ 6 - 0
keyboards/durgod/k320/base/readme.md

@@ -0,0 +1,6 @@
+# Taurus K320
+
+Base Model - no backlight leds
+
+See: [K320](../../k3x0/k320/base/readme.md)
+

+ 1 - 0
keyboards/durgod/k320/base/rules.mk

@@ -0,0 +1 @@
+DEFAULT_FOLDER=durgod/k3x0/k320/base

+ 0 - 26
keyboards/durgod/k320/keymaps/default/keymap.json

@@ -1,26 +0,0 @@
-{
-  "keyboard": "durgod/k320",
-  "keymap": "default",
-  "layout": "LAYOUT_all",
-  "layers": [
-    [
-      "KC_ESC",             "KC_F1",   "KC_F2",   "KC_F3",   "KC_F4",   "KC_F5",   "KC_F6",   "KC_F7",   "KC_F8",   "KC_F9",   "KC_F10",  "KC_F11",  "KC_F12",     "KC_PSCR", "KC_SLCK", "KC_PAUS",
-      "KC_GRV",  "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",    "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "KC_MINS", "KC_EQL",  "KC_BSPC",    "KC_INS",  "KC_HOME", "KC_PGUP",
-      "KC_TAB",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",    "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_LBRC", "KC_RBRC", "KC_BSLS",    "KC_DEL",  "KC_END",  "KC_PGDN",
-      "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_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_LCTL", "KC_LGUI", "KC_LALT",                                  "KC_SPC",                                   "KC_RALT", "MO(1)",   "KC_APP",  "KC_RCTL",    "KC_LEFT", "KC_DOWN", "KC_RGHT"
-    ],
-    [
-      "KC_TRNS",            "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",            "KC_TRNS",               "KC_TRNS",
-      "KC_TRNS", "KC_TGUI", "KC_TRNS",                                  "KC_TRNS",                                  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS",  "KC_TRNS"
-    ]
-  ],
-  "author":"dkjer",
-  "notes":"",
-  "version":1
-}

+ 0 - 367
keyboards/durgod/k320/keymaps/default_toggle_mac_windows/keymap.c

@@ -1,367 +0,0 @@
-/* Copyright 2021 kuenhlee 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 QMK_KEYBOARD_H
-
-// Layer shorthand
-enum _layer {
-    _WBL,
-    _WFL,
-    _WSL,
-    _MBL,
-    _MFL,
-    _MSL
-};
-
-#ifndef DEFAULT_LAYOUT
-# define DEFAULT_LAYOUT _WBL // Change to _MBL to boot into Mac layout.
-#endif
-#ifndef ALT_LAYOUT
-# define ALT_LAYOUT     _MBL // Layout to display 'MR' led when active.
-#endif
-
-static bool win_key_locked = false;
-static bool mac_media_locked = false;
-static bool win_appkey_pressed = false;
-static bool mac_fnkey_pressed = false;
-
-
-// Defines the keycodes used by our macros in process_record_user
-enum custom_keycodes {
-    KC_TGUI = SAFE_RANGE,  // Toggle between GUI Lock or Unlock (Windows)
-    KC_TMED,               // Toggle between Fx keys or Media keys (Mac)
-    KC_WFN,                // Windows function key
-    KC_MFN,                // Mac function key
-    MO_WSL,                // Windows system key
-    MO_MSL,                // Mac system key
-    DF_W2MBL,              // Change layout from Windows to Mac
-    DF_M2WBL               // Change layout from Mac to Windows
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  /* Keymap _WBL: Windows Base Layer (Default Layer)
-   * ,-----------------------------------------------------------.  ,--------------.
-   * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus|
-   * |-----------------------------------------------------------|  |--------------|
-   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
-   * |-----------------------------------------------------------|  |--------------|
-   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|
-   * |-----------------------------------------------------------|  `--------------'
-   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| #|Ret |
-   * |-----------------------------------------------------------|        ,----.
-   * |Shift| \|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |
-   * |-----------------------------------------------------------|   ,-------------.
-   * |Ctrl|Gui |Alt |      Space            |Alt |Func |App|Ctrl |   |Lft| Dn |Rig |
-   * `-----------------------------------------------------------'   `-------------'
-   */
-  [_WBL] = LAYOUT_all( /* Windows Base Layer */
-      KC_ESC,             KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,      KC_PSCR,  KC_SLCK,  KC_PAUS,
-      KC_GRV,   KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,     KC_MINS,  KC_EQL,   KC_BSPC,     KC_INS,   KC_HOME,  KC_PGUP,
-      KC_TAB,   KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,     KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,     KC_LBRC,  KC_RBRC,  KC_BSLS,     KC_DEL,   KC_END,   KC_PGDN,
-      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_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_LCTL,  KC_LGUI,  KC_LALT,                                KC_SPC,                                 KC_RALT,  KC_WFN,   KC_APP,   KC_RCTL,     KC_LEFT,  KC_DOWN,  KC_RGHT
-  ),
-  /* Keymap _WFL: Windows Function Layer
-   * ,-----------------------------------------------------------.  ,--------------.
-   * |   |Play|Stop|Prev|Next| |Mute|Vol+|Vol-|    | |  |  |  |  |  |    |    |    |
-   * |-----------------------------------------------------------|  |--------------|
-   * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |  |    |    |    |
-   * |-----------------------------------------------------------|  |--------------|
-   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |
-   * |-----------------------------------------------------------|  `--------------'
-   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |
-   * |-----------------------------------------------------------|        ,----.
-   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |
-   * |-----------------------------------------------------------|   ,-------------.
-   * |    |Lock|    |                       |    |Func |Sys|     |   |   |    |    |
-   * `-----------------------------------------------------------'   `-------------'
-   */
-  [_WFL] = LAYOUT_all( /* Windows First Layer */
-      _______,            KC_MPLY,  KC_MSTP,  KC_MPRV,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,               _______,
-      _______,  KC_TGUI,  _______,                                _______,                                _______,  _______,  MO_WSL,   _______,     _______,  _______,  _______
-  ),
-  /* Keymap _WSL: Windows System Layer
-   * ,-----------------------------------------------------------.  ,--------------.
-   * |Reset |Sleep|     |     |Power| |  |  |  |  | |  |  |  |MAC|  |              |
-   * |-----------------------------------------------------------|  |--------------|
-   * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |  |    |    |    |
-   * |-----------------------------------------------------------|  |--------------|
-   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |
-   * |-----------------------------------------------------------|  `--------------'
-   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |
-   * |-----------------------------------------------------------|        ,----.
-   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |
-   * |-----------------------------------------------------------|   ,-------------.
-   * |    |    |    |                       |    |Func |Sys|     |   |   |    |    |
-   * `-----------------------------------------------------------'   `-------------'
-   */
-  [_WSL] = LAYOUT_all( /* Windows Second / System Layer */
-      RESET,              KC_SLEP,  XXXXXXX,  XXXXXXX,  KC_PWR,   XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  DF_W2MBL,    XXXXXXX,  XXXXXXX,  XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,     XXXXXXX,  XXXXXXX,  XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,     XXXXXXX,  XXXXXXX,  XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,  DEBUG,    XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,            XXXXXXX,               XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,                                XXXXXXX,                                XXXXXXX,  _______,  _______,  XXXXXXX,     XXXXXXX,  XXXXXXX,  XXXXXXX
-  ),
-
-  /* Keymap _MBL: Mac Base Layer (Alternate Layout)
-   * ,-----------------------------------------------------------.  ,--------------.
-   * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  | f13| f14| f15|
-   * |-----------------------------------------------------------|  |--------------|
-   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
-   * |-----------------------------------------------------------|  |--------------|
-   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|
-   * |-----------------------------------------------------------|  `--------------'
-   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| #|Ret |
-   * |-----------------------------------------------------------|        ,----.
-   * |Shift| \|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |
-   * |-----------------------------------------------------------|   ,-------------.
-   * |Ctrl|Alt |Gui |      Space            |Gui |Alt|Func |Ctrl |   |Lft| Dn |Rig |
-   * `-----------------------------------------------------------'   `-------------'
-   */
-  [_MBL] = LAYOUT_all( /* Mac Base Layer */
-      KC_ESC,             KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,      KC_F13,   KC_F14,   KC_F15,
-      KC_GRV,   KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,     KC_MINS,  KC_EQL,   KC_BSPC,     KC_INS,   KC_HOME,  KC_PGUP,
-      KC_TAB,   KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,     KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,     KC_LBRC,  KC_RBRC,  KC_BSLS,     KC_DEL,   KC_END,   KC_PGDN,
-      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_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_LCTL,  KC_LALT,  KC_LGUI,                                KC_SPC,                                 KC_RGUI,  KC_RALT,  KC_MFN,   KC_RCTL,     KC_LEFT,  KC_DOWN,  KC_RGHT
-  ),
-  /* Keymap _MFL: Mac Function Layer
-   * ,-----------------------------------------------------------.  ,--------------.
-   * |  |Bri-|Bri+|MCon|LPad| |  |  |Prv|Ply| |Nxt|Mute|Vol-|Vol+|  |TMed|    |    |
-   * |-----------------------------------------------------------|  |--------------|
-   * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |  |    |    |    |
-   * |-----------------------------------------------------------|  |--------------|
-   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |
-   * |-----------------------------------------------------------|  `--------------'
-   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |
-   * |-----------------------------------------------------------|        ,----.
-   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |
-   * |-----------------------------------------------------------|   ,-------------.
-   * |    |    |    |                       |    |Sys|Func |     |   |   |    |    |
-   * `-----------------------------------------------------------'   `-------------'
-   */
-  [_MFL] = LAYOUT_all( /* Mac First Layer */
-      _______,            KC_BRID,  KC_BRIU,  _______,  _______,  _______,  _______,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,     KC_TMED,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,     _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,               _______,
-      _______,  _______,  _______,                                _______,                                _______,  MO_MSL,   _______,  _______,     _______,  _______,  _______
-  ),
-  /* Keymap _MSL: Mac System Layer
-   * ,-----------------------------------------------------------.  ,--------------.
-   * |Reset |   |    |     |Sleep| |  |  |  |  | |  |  |  |WIN|  |              |
-   * |-----------------------------------------------------------|  |--------------|
-   * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |  |    |    |    |
-   * |-----------------------------------------------------------|  |--------------|
-   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |
-   * |-----------------------------------------------------------|  `--------------'
-   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |
-   * |-----------------------------------------------------------|        ,----.
-   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |
-   * |-----------------------------------------------------------|   ,-------------.
-   * |    |    |    |                       |    |Sys|Func |     |   |   |    |    |
-   * `-----------------------------------------------------------'   `-------------'
-   */
-  [_MSL] = LAYOUT_all( /* Mac Second / System Layer */
-      RESET,              XXXXXXX,  XXXXXXX,  XXXXXXX,  KC_SLEP,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  DF_M2WBL,    XXXXXXX,  XXXXXXX,  XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,     XXXXXXX,  XXXXXXX,  XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,     XXXXXXX,  XXXXXXX,  XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,  DEBUG,    XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,            XXXXXXX,               XXXXXXX,
-      XXXXXXX,  XXXXXXX,  XXXXXXX,                                XXXXXXX,                                XXXXXXX,  _______,  _______,  XXXXXXX,     XXXXXXX,  XXXXXXX,  XXXXXXX
-  )
-};
-
-void unlock_win_key(void) {
-    win_key_locked = false;
-    mac_media_locked = false;
-    writePinHigh(LED_WIN_LOCK_PIN);
-}
-
-void toggle_lock_win_key(void) {
-    win_key_locked = !win_key_locked;
-    writePin(LED_WIN_LOCK_PIN, !win_key_locked);
-}
-
-void toggle_lock_media_key(void) {
-  mac_media_locked = !mac_media_locked;
-  writePin(LED_WIN_LOCK_PIN, !mac_media_locked);
-}
-
-#ifdef CONSOLE_ENABLE
-void dprint_global_layers(void) {
-    dprint("Global Layers:");
-    if (IS_LAYER_ON(_WFL)) { dprint(" _WFL"); }
-    if (IS_LAYER_ON(_WSL)) { dprint(" _WSL"); }
-    if (IS_LAYER_ON(_MFL)) { dprint(" _MFL"); }
-    if (IS_LAYER_ON(_MSL)) { dprint(" _MSL"); }
-    dprintf("\n");
-}
-
-void dprint_layers(layer_state_t state) {
-    dprint("Layers:");
-    if (IS_LAYER_ON_STATE(state, _WFL)) { dprint(" _WFL"); }
-    if (IS_LAYER_ON_STATE(state, _WSL)) { dprint(" _WSL"); }
-    if (IS_LAYER_ON_STATE(state, _MFL)) { dprint(" _MFL"); }
-    if (IS_LAYER_ON_STATE(state, _MSL)) { dprint(" _MSL"); }
-    dprintf("\n");
-}
-#endif
-
-layer_state_t default_layer_state_set_user(layer_state_t state) {
-#ifdef CONSOLE_ENABLE
-    dprintf("default_layer_state_set_user: 0x%x\n", state);
-    dprint_global_layers();
-#endif
-    // Disable windows key lock on default layer transition.
-    unlock_win_key();
-    win_appkey_pressed = false;
-    mac_fnkey_pressed = false;
-    writePin(LED_MR_LOCK_PIN, !IS_LAYER_ON_STATE(state, ALT_LAYOUT));
-    return state;
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) {
-#ifdef CONSOLE_ENABLE
-    dprintf("layer_state_set_user: 0x%x\n", state);
-    dprint_layers(state);
-#endif
-    return state;
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-        case KC_TGUI:
-            if (!record->event.pressed) {
-                // Toggle GUI lock on key release
-                toggle_lock_win_key();
-            }
-            break;
-        case KC_TMED:
-            // Only trigger when Fn key is also held down, to avoid accidental unlock.
-            if (!mac_fnkey_pressed) { return false; }
-            if (!record->event.pressed) {
-                // Toggle Media Lock on key release
-                toggle_lock_media_key();
-            }
-            break;
-        case KC_LGUI:
-            if (win_key_locked) { return false; }
-            break;
-        case KC_WFN:
-            // Like MO(_WFL), but also enables _WSL if KC_APP is already pressed down.
-            if (record->event.pressed) {
-                layer_on(_WFL);
-                if (win_appkey_pressed) {
-                    // Also enable Secondary layer if App key is being held down.
-                    win_appkey_pressed = false;
-                    layer_on(_WSL);
-                }
-            } else {
-                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
-                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
-            }
-            break;
-        case KC_APP:
-            if (record->event.pressed) {
-                // Don't actually press down the app menu key
-                win_appkey_pressed = true;
-            } else {
-                if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
-                if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
-                if (win_appkey_pressed) {
-                    win_appkey_pressed = false;
-                    // Tap the KC_APP key on key release.
-                    tap_code(KC_APP);
-                }
-            }
-            return false;
-            break;
-        case KC_MFN:
-            // Mac Fn key.  Emit Fn keycode, and also transition layers similar to KC_WFN.
-            if (record->event.pressed) {
-                mac_fnkey_pressed = true;
-                layer_on(_MFL);
-                // Also enable Secondary layer if Right-Alt key is being held down.
-                if (get_mods() & MOD_BIT(KC_RALT)) {
-                    layer_on(_MSL);
-                }
-            } else {
-                mac_fnkey_pressed = false;
-                if (!mac_media_locked) {
-                    if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
-                    if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
-                }
-            }
-            break;
-        case KC_RALT:
-            // Disable MSL/WFL layer on key-up.
-            if (!record->event.pressed) {
-                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
-                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
-            }
-            break;
-        case MO_WSL:
-            if (record->event.pressed) {
-                layer_on(_WSL);
-            } else {
-                if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
-                if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
-            }
-            break;
-        case MO_MSL:
-            if (record->event.pressed) {
-                layer_on(_MSL);
-            } else {
-                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
-                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
-            }
-            break;
-        case DF_W2MBL:
-            if (!record->event.pressed) {
-                // Switch base layer, but preserve first/secondary layers.
-                default_layer_set(1UL<<_MBL);
-                layer_state_set(1UL<<_MFL | 1UL<<_MSL);
-            }
-            break;
-        case DF_M2WBL:
-            if (!record->event.pressed) {
-                // Switch base layer, but preserve first/secondary layers.
-                default_layer_set(1UL<<_WBL);
-                layer_state_set(1UL<<_WFL | 1UL<<_WSL);
-            }
-            break;
-        case RESET:
-            if (record->event.pressed) {
-                // Flash LEDs to indicate bootloader mode is enabled.
-                on_all_leds();
-            }
-            break;
-    }
-    return true;
-}
-
-void keyboard_post_init_user(void) {
-    default_layer_set(1UL<<DEFAULT_LAYOUT);
-}
-

+ 0 - 90
keyboards/durgod/k320/keymaps/via/keymap.c

@@ -1,90 +0,0 @@
-/* Copyright 2021 Maxime Coirault
- *
- * 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
-
-// Layer shorthand
-enum _layer {
-    _BASE,
-    _FUNC,
-    _LAYER3,
-    _LAYER4
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  /* Keymap _BASE: Base Layer (Default Layer)
-   * ,-----------------------------------------------------------.  ,--------------.
-   * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus|
-   * |-----------------------------------------------------------|  |--------------|
-   * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
-   * |-----------------------------------------------------------|  |--------------|
-   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|     |  | Del| End|PgDn|
-   * |------------------------------------------------------ Ret |  `--------------'
-   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| #|    |
-   * |-----------------------------------------------------------|        ,----.
-   * |Shift| \|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |
-   * |-----------------------------------------------------------|   ,-------------.
-   * |Ctrl|Gui |Alt |      Space            |Alt | Fn  |App |Ctrl|   |Lft| Dn |Rig |
-   * `-----------------------------------------------------------'   `-------------'
-   */
-  [_BASE] = LAYOUT_all( /* Base Layer */
-      KC_ESC,             KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,       KC_PSCR,  KC_SLCK,  KC_PAUS,
-      KC_GRV,   KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,     KC_MINS,  KC_EQL,   KC_BSPC,      KC_INS,   KC_HOME,  KC_PGUP,
-      KC_TAB,   KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,     KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,     KC_LBRC,  KC_RBRC,  KC_BSLS,      KC_DEL,   KC_END,   KC_PGDN,
-      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_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_LCTL,  KC_LGUI,  KC_LALT,                                KC_SPC,                                 KC_RALT,  MO(_FUNC),KC_APP,   KC_RCTL,      KC_LEFT,  KC_DOWN,  KC_RGHT
-  ),
-  /* Keymap _FUNC: Function Layer
-   * ,-----------------------------------------------------------.  ,--------------.
-   * |   |Play|Stop|Prev|Next| |Mute|Vol+|Vol-|    | |  |  |  |  |  |    |    |    |
-   * |-----------------------------------------------------------|  |--------------|
-   * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |  |    |    |    |
-   * |-----------------------------------------------------------|  |--------------|
-   * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |  |    |    |    |
-   * |-------------------------------------------------------    |  `--------------'
-   * |       |   |   |   |   |   |   |   |   |   |   |   |  |    |
-   * |-----------------------------------------------------------|        ,----.
-   * |     |  |   |   |   |   |   |   |   |   |   |   |          |        |    |
-   * |-----------------------------------------------------------|   ,-------------.
-   * |    |    |    |                       |    |Func |    |    |   |   |    |    |
-   * `-----------------------------------------------------------'   `-------------'
-   */
-  [_FUNC] = LAYOUT_all( /* Function Layer */
-      _______,            KC_MPLY,  KC_MSTP,  KC_MPRV,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,                _______,
-      _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______
-  ),
-  [_LAYER3] = LAYOUT_all( /* Layer 3 */
-      _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,                _______,
-      _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______
-  ),
-  [_LAYER4] = LAYOUT_all( /* Layer 4 */
-      _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,      _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
-      _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,                _______,
-      _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,      _______,  _______,  _______
-  )
-};
-

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

@@ -1,12 +0,0 @@
-# The default keymap for Durgod Taurus K320.
-
-Layer 0 : Standard 87/88 keys TKL layout
-
-Layer 1 : Media control
-- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
-
-## Supported PCBs
-
-This firmware was tested on a Durgod K320 ISO with the PCB marked "DGK320ST-Single v1.0 HS20181227".
-
-The pcb features switch holes for ANSI layout, so this firmware might be compatible with with the Durgod K320 ANSI.

+ 0 - 4
keyboards/durgod/k320/keymaps/via/rules.mk

@@ -1,4 +0,0 @@
-OPT_DEFS += -DWINLOCK_DISABLED
-
-VIA_ENABLE = yes
-LTO_ENABLE = yes

+ 1 - 54
keyboards/durgod/k320/readme.md

@@ -1,57 +1,4 @@
 # K320
 # K320
 
 
-This is a standard off-the-shelf Durgod Taurus K320 TKL (87/88-key) keyboard without backlight.
+See: [K320](../k3x0/k320/readme.md)
 
 
-* Keyboard Maintainer: [dkjer](https://github.com/dkjer)
-* Hardware Supported: Durgod Taurus K320 board with STM32F070RBT6
-* Hardware Availability: https://www.durgod.com/page9?product_id=47&_l=en
-
-## Instructions
-
-### Build
-
-Make command example for this keyboard (after setting up your build environment):
-
-    make durgod/k320:default
-
-Flashing example for this keyboard:
-
-    make durgod/k320: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
-
-For first Flashing from initial Stock's Firmware
-
-1. Back up original Firmware Image:
-- Unplug
-- Short Boot0 to Vdd (See below)
-- Plug In USB
-- Make a Flash Image's Backup in case you wanted to restore the Keyboard to Stock's Image:
-  - Using DFUseDemo.exe from ST's STSW-STM32080: https://www.st.com/en/development-tools/stsw-stm32080.html
-  - Using dfu-util:
-
-        dfu-util --list
-        dfu-util --alt 0 --dfuse-address 0x08000000 --upload ${OLD_STOCK_BIN}
-
-2. Flash the QMK Firmware Image.
-- Put board into Bootloader mode, using the same method as when backing up the original Firmware (above)
-- Here are a few options for performing the initial Flash:
-  - Using [QMK Toolbox](https://github.com/qmk/qmk_toolbox)
-  - Using DFuseDemo.exe if STTub30 driver is used.
-  - Using dfu-util:
-
-        dfu-util --alt 0 --dfuse-address 0x08000000 --download ${NEW_QMK_BIN}
-
-You can short Boot0 to Vdd by shorting R21 to C27 on the sides closest to the processor, as shown:
-
-<img src="https://i.imgur.com/hvDnw5a.jpg" width="520" height="693" alt="Shorting Boot0 to Vdd on K320">
-
-### Subsequent Flashing
-
-For repeating Flashing you can use BootMagic:
-- BootMagic Lite has been enabled with Assigned "Esc" key 
-- Unplug USB Cable
-- Holding Esc Button 
-- Plug in USB Cable, Keyboard should be in ST-Bootloader state

+ 1 - 29
keyboards/durgod/k320/rules.mk

@@ -1,29 +1 @@
-# MCU name
-# Actually F070, but close enough
-MCU = STM32F072
-BOARD = DURGOD_STM32_F070
-
-# Bootloader selection
-BOOTLOADER = stm32-dfu
-
-# Do not put the microcontroller into power saving mode
-OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
-
-# Build Options
-#   change yes to no to disable
-#
-BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration
-MOUSEKEY_ENABLE = no        # Mouse keys
-EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = no         # Console for debug
-COMMAND_ENABLE = no         # Commands for debug and configuration
-# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
-# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-NKRO_ENABLE = yes           # USB Nkey Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-BLUETOOTH_ENABLE = no       # Enable Bluetooth
-AUDIO_ENABLE = no           # Audio output
-
-LAYOUTS = tkl_ansi tkl_iso
+DEFAULT_FOLDER=durgod/k3x0/k320

+ 7 - 7
keyboards/durgod/k320/config.h → keyboards/durgod/k3x0/config.h

@@ -1,4 +1,5 @@
-/* Copyright 2021 kuenhlee and Don Kjer
+/* Copyright 2021 kuenhlee, Don Kjer, Tyler Tidman
+ * Copyright 2021 Simon Arlott
  *
  *
  * This program is free software: you can redistribute it and/or modify
  * 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
  * it under the terms of the GNU General Public License as published by
@@ -20,16 +21,11 @@
 
 
 /* USB Device descriptor parameter */
 /* USB Device descriptor parameter */
 #define VENDOR_ID       0xD60D
 #define VENDOR_ID       0xD60D
-#define PRODUCT_ID      0x3200
-#define DEVICE_VER      0x0001
 #define MANUFACTURER    Hoksi Technology
 #define MANUFACTURER    Hoksi Technology
-#define PRODUCT         DURGOD Taurus K320 (QMK)
 
 
-/* key matrix size */
-#define MATRIX_ROWS 7
+/* key matrix size (rows in specific keyboard variant) */
 #define MATRIX_COLS 16
 #define MATRIX_COLS 16
 
 
-#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5, A6 }
 #define MATRIX_COL_PINS { C4, C5, B0, B1, B2, B10, B11, B12, B13, B14, B15, C6, C7, C10, C11, C12 }
 #define MATRIX_COL_PINS { C4, C5, B0, B1, B2, B10, B11, B12, B13, B14, B15, C6, C7, C10, C11, C12 }
 
 
 /* COL2ROW, ROW2COL*/
 /* COL2ROW, ROW2COL*/
@@ -42,6 +38,7 @@
 
 
 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 #define DEBOUNCE 5
 #define DEBOUNCE 5
+// #define USB_POLLING_INTERVAL_MS 1
 
 
 /* Bootmagic Lite key configuration */
 /* Bootmagic Lite key configuration */
 #define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
 #define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
@@ -54,3 +51,6 @@
 #define LED_WIN_LOCK_PIN    A9
 #define LED_WIN_LOCK_PIN    A9
 #define LED_MR_LOCK_PIN     A10
 #define LED_MR_LOCK_PIN     A10
 #define LED_PIN_ON_STATE    0
 #define LED_PIN_ON_STATE    0
+
+/* Original hardware "reset" button on pin D2 */
+#define HARDWARE_RESET_PIN  D2

+ 22 - 0
keyboards/durgod/k3x0/halconf.h

@@ -0,0 +1,22 @@
+/* Copyright 2021 Simon Arlott
+ *
+ * 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 HAL_USE_PAL                 TRUE
+#define PAL_USE_CALLBACKS           TRUE
+
+#include_next <halconf.h>

+ 23 - 0
keyboards/durgod/k3x0/k310/base/config.h

@@ -0,0 +1,23 @@
+/* Copyright 2021 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
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT         DURGOD Taurus K310 (QMK)
+#define DEVICE_VER      0x0001 // Base (no backlight)

+ 27 - 0
keyboards/durgod/k3x0/k310/base/readme.md

@@ -0,0 +1,27 @@
+# K310
+
+This is a standard off-the-shelf Durgod Taurus K310 full-sized 104/105-key
+keyboard without backlight.  This supports both the ANSI and ISO variants.
+
+* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert)
+* Hardware Supported: Durgod Taurus K310 board with STM32F070RBT6
+* Hardware Availability: K310 https://www.durgod.com/page9?product_id=53&_l=en
+
+## Instructions
+
+### Build
+
+Make command example for this keyboard (after setting up your build environment):
+
+    make durgod/k310:default
+
+Flashing example for this keyboard:
+
+    make durgod/k310: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/k3x0/k310/base/rules.mk

@@ -0,0 +1 @@
+# see common rules.mk

+ 36 - 0
keyboards/durgod/k3x0/k310/config.h

@@ -0,0 +1,36 @@
+/* Copyright 2021 Don Kjer and Tyler Tidman
+ * Copyright 2021 Simon Arlott
+ *
+ * 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
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID      0x3100
+// Taurus K310 models:
+//#define DEVICE_VER      0x0001 // Base (no backlight)
+//#define DEVICE_VER      0x0002 // Corona (white led matrix)
+//#define DEVICE_VER      0x0003 // Aurora (red & blue led matrix)
+//#define DEVICE_VER      0x0004 // Nebula (rgb led matrix)
+
+/* key matrix size (cols in generic keyboard config) */
+#define MATRIX_ROWS 8
+
+#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5, A6, A7 }
+
+/* LED indicator pins */
+#define LED_NUM_LOCK_PIN    C8

+ 60 - 9
keyboards/durgod/k320/info.json → keyboards/durgod/k3x0/k310/info.json

@@ -1,11 +1,11 @@
 {
 {
-  "keyboard_name": "DURGOD Taurus K320",
-  "url": "https://www.durgod.com/page9?product_id=47&_l=en",
-  "maintainer": "dkjer",
-  "width": 18.25,
+  "keyboard_name": "DURGOD Taurus K310",
+  "url": "https://www.durgod.com/page9?product_id=53&_l=en",
+  "maintainer": "tylert",
+  "width": 22.5,
   "height": 6.5,
   "height": 6.5,
     "layouts": {
     "layouts": {
-        "LAYOUT_tkl_ansi": {
+        "LAYOUT_fullsize_ansi": {
             "layout": [
             "layout": [
                 { "label": "Esc", "x": 0, "y": 0 },
                 { "label": "Esc", "x": 0, "y": 0 },
                 { "label": "F1", "x": 2, "y": 0 },
                 { "label": "F1", "x": 2, "y": 0 },
@@ -41,6 +41,10 @@
                 { "label": "Insert", "x": 15.25, "y": 1.5 },
                 { "label": "Insert", "x": 15.25, "y": 1.5 },
                 { "label": "Home", "x": 16.25, "y": 1.5 },
                 { "label": "Home", "x": 16.25, "y": 1.5 },
                 { "label": "PgUp", "x": 17.25, "y": 1.5 },
                 { "label": "PgUp", "x": 17.25, "y": 1.5 },
+                { "label": "Num Lock", "x": 18.5, "y": 1.5 },
+                { "label": "/", "x": 19.5, "y": 1.5 },
+                { "label": "*", "x": 20.5, "y": 1.5 },
+                { "label": "-", "x": 21.5, "y": 1.5 },
 
 
                 { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
                 { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
                 { "label": "Q", "x": 1.5, "y": 2.5 },
                 { "label": "Q", "x": 1.5, "y": 2.5 },
@@ -59,6 +63,10 @@
                 { "label": "Delete", "x": 15.25, "y": 2.5 },
                 { "label": "Delete", "x": 15.25, "y": 2.5 },
                 { "label": "End", "x": 16.25, "y": 2.5 },
                 { "label": "End", "x": 16.25, "y": 2.5 },
                 { "label": "PgDn", "x": 17.25, "y": 2.5 },
                 { "label": "PgDn", "x": 17.25, "y": 2.5 },
+                { "label": "7", "x": 18.5, "y": 2.5 },
+                { "label": "8", "x": 19.5, "y": 2.5 },
+                { "label": "9", "x": 20.5, "y": 2.5 },
+                { "label": "+", "x": 21.5, "y": 2.5, "h": 2 },
 
 
                 { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
                 { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
                 { "label": "A", "x": 1.75, "y": 3.5 },
                 { "label": "A", "x": 1.75, "y": 3.5 },
@@ -73,6 +81,9 @@
                 { "label": ":", "x": 10.75, "y": 3.5 },
                 { "label": ":", "x": 10.75, "y": 3.5 },
                 { "label": "\"", "x": 11.75, "y": 3.5 },
                 { "label": "\"", "x": 11.75, "y": 3.5 },
                 { "label": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 },
                 { "label": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 },
+                { "label": "4", "x": 18.5, "y": 3.5 },
+                { "label": "5", "x": 19.5, "y": 3.5 },
+                { "label": "6", "x": 20.5, "y": 3.5 },
 
 
                 { "label": "Shift", "x": 0, "y": 4.5, "w": 2.25 },
                 { "label": "Shift", "x": 0, "y": 4.5, "w": 2.25 },
                 { "label": "Z", "x": 2.25, "y": 4.5 },
                 { "label": "Z", "x": 2.25, "y": 4.5 },
@@ -87,6 +98,10 @@
                 { "label": "?", "x": 11.25, "y": 4.5 },
                 { "label": "?", "x": 11.25, "y": 4.5 },
                 { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
                 { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
                 { "label": "\u2191", "x": 16.25, "y": 4.5 },
                 { "label": "\u2191", "x": 16.25, "y": 4.5 },
+                { "label": "1", "x": 18.5, "y": 4.5 },
+                { "label": "2", "x": 19.5, "y": 4.5 },
+                { "label": "3", "x": 20.5, "y": 4.5 },
+                { "label": "Enter", "x": 21.5, "y": 4.5, "h": 2 },
 
 
                 { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
                 { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
                 { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
                 { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
@@ -98,10 +113,12 @@
                 { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
                 { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
                 { "label": "\u2190", "x": 15.25, "y": 5.5 },
                 { "label": "\u2190", "x": 15.25, "y": 5.5 },
                 { "label": "\u2193", "x": 16.25, "y": 5.5 },
                 { "label": "\u2193", "x": 16.25, "y": 5.5 },
-                { "label": "\u2192", "x": 17.25, "y": 5.5 }
+                { "label": "\u2192", "x": 17.25, "y": 5.5 },
+                { "label": "0", "x": 18.5, "y": 5.5, "w": 2 },
+                { "label": ".", "x": 20.5, "y": 5.5 }
             ]
             ]
         },
         },
-        "LAYOUT_tkl_iso": {
+        "LAYOUT_fullsize_iso": {
             "layout": [
             "layout": [
                 { "label": "Esc", "x": 0, "y": 0 },
                 { "label": "Esc", "x": 0, "y": 0 },
                 { "label": "F1", "x": 2, "y": 0 },
                 { "label": "F1", "x": 2, "y": 0 },
@@ -137,6 +154,10 @@
                 { "label": "Insert", "x": 15.25, "y": 1.5 },
                 { "label": "Insert", "x": 15.25, "y": 1.5 },
                 { "label": "Home", "x": 16.25, "y": 1.5 },
                 { "label": "Home", "x": 16.25, "y": 1.5 },
                 { "label": "PgUp", "x": 17.25, "y": 1.5 },
                 { "label": "PgUp", "x": 17.25, "y": 1.5 },
+                { "label": "Num Lock", "x": 18.5, "y": 1.5 },
+                { "label": "/", "x": 19.5, "y": 1.5 },
+                { "label": "*", "x": 20.5, "y": 1.5 },
+                { "label": "-", "x": 21.5, "y": 1.5 },
 
 
                 { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
                 { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
                 { "label": "Q", "x": 1.5, "y": 2.5 },
                 { "label": "Q", "x": 1.5, "y": 2.5 },
@@ -154,6 +175,10 @@
                 { "label": "Delete", "x": 15.25, "y": 2.5 },
                 { "label": "Delete", "x": 15.25, "y": 2.5 },
                 { "label": "End", "x": 16.25, "y": 2.5 },
                 { "label": "End", "x": 16.25, "y": 2.5 },
                 { "label": "PgDn", "x": 17.25, "y": 2.5 },
                 { "label": "PgDn", "x": 17.25, "y": 2.5 },
+                { "label": "7", "x": 18.5, "y": 2.5 },
+                { "label": "8", "x": 19.5, "y": 2.5 },
+                { "label": "9", "x": 20.5, "y": 2.5 },
+                { "label": "+", "x": 21.5, "y": 2.5, "h": 2 },
 
 
                 { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
                 { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
                 { "label": "A", "x": 1.75, "y": 3.5 },
                 { "label": "A", "x": 1.75, "y": 3.5 },
@@ -169,6 +194,9 @@
                 { "label": "\"", "x": 11.75, "y": 3.5 },
                 { "label": "\"", "x": 11.75, "y": 3.5 },
                 { "label": "#", "x": 12.75, "y": 3.5 },
                 { "label": "#", "x": 12.75, "y": 3.5 },
                 { "label": "Enter", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 },
                 { "label": "Enter", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 },
+                { "label": "4", "x": 18.5, "y": 3.5 },
+                { "label": "5", "x": 19.5, "y": 3.5 },
+                { "label": "6", "x": 20.5, "y": 3.5 },
 
 
                 { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 },
                 { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 },
                 { "label": "\\", "x": 1.25, "y": 4.5 },
                 { "label": "\\", "x": 1.25, "y": 4.5 },
@@ -184,6 +212,10 @@
                 { "label": "?", "x": 11.25, "y": 4.5 },
                 { "label": "?", "x": 11.25, "y": 4.5 },
                 { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
                 { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
                 { "label": "\u2191", "x": 16.25, "y": 4.5 },
                 { "label": "\u2191", "x": 16.25, "y": 4.5 },
+                { "label": "1", "x": 18.5, "y": 4.5 },
+                { "label": "2", "x": 19.5, "y": 4.5 },
+                { "label": "3", "x": 20.5, "y": 4.5 },
+                { "label": "Enter", "x": 21.5, "y": 4.5, "h": 2 },
 
 
                 { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
                 { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
                 { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
                 { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
@@ -195,7 +227,9 @@
                 { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
                 { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
                 { "label": "\u2190", "x": 15.25, "y": 5.5 },
                 { "label": "\u2190", "x": 15.25, "y": 5.5 },
                 { "label": "\u2193", "x": 16.25, "y": 5.5 },
                 { "label": "\u2193", "x": 16.25, "y": 5.5 },
-                { "label": "\u2192", "x": 17.25, "y": 5.5 }
+                { "label": "\u2192", "x": 17.25, "y": 5.5 },
+                { "label": "0", "x": 18.5, "y": 5.5, "w": 2 },
+                { "label": ".", "x": 20.5, "y": 5.5 }
             ]
             ]
         },
         },
         "LAYOUT_all": {
         "LAYOUT_all": {
@@ -234,6 +268,10 @@
                 { "label": "Insert", "x": 15.25, "y": 1.5 },
                 { "label": "Insert", "x": 15.25, "y": 1.5 },
                 { "label": "Home", "x": 16.25, "y": 1.5 },
                 { "label": "Home", "x": 16.25, "y": 1.5 },
                 { "label": "PgUp", "x": 17.25, "y": 1.5 },
                 { "label": "PgUp", "x": 17.25, "y": 1.5 },
+                { "label": "Num Lock", "x": 18.5, "y": 1.5 },
+                { "label": "/", "x": 19.5, "y": 1.5 },
+                { "label": "*", "x": 20.5, "y": 1.5 },
+                { "label": "-", "x": 21.5, "y": 1.5 },
 
 
                 { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
                 { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
                 { "label": "Q", "x": 1.5, "y": 2.5 },
                 { "label": "Q", "x": 1.5, "y": 2.5 },
@@ -252,6 +290,10 @@
                 { "label": "Delete", "x": 15.25, "y": 2.5 },
                 { "label": "Delete", "x": 15.25, "y": 2.5 },
                 { "label": "End", "x": 16.25, "y": 2.5 },
                 { "label": "End", "x": 16.25, "y": 2.5 },
                 { "label": "PgDn", "x": 17.25, "y": 2.5 },
                 { "label": "PgDn", "x": 17.25, "y": 2.5 },
+                { "label": "7", "x": 18.5, "y": 2.5 },
+                { "label": "8", "x": 19.5, "y": 2.5 },
+                { "label": "9", "x": 20.5, "y": 2.5 },
+                { "label": "+", "x": 21.5, "y": 2.5, "h": 2 },
 
 
                 { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
                 { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
                 { "label": "A", "x": 1.75, "y": 3.5 },
                 { "label": "A", "x": 1.75, "y": 3.5 },
@@ -267,6 +309,9 @@
                 { "label": "\"", "x": 11.75, "y": 3.5 },
                 { "label": "\"", "x": 11.75, "y": 3.5 },
                 { "label": "#", "x": 12.75, "y": 3.5 },
                 { "label": "#", "x": 12.75, "y": 3.5 },
                 { "label": "Enter", "x": 13.75, "y": 3.5, "w": 1.25 },
                 { "label": "Enter", "x": 13.75, "y": 3.5, "w": 1.25 },
+                { "label": "4", "x": 18.5, "y": 3.5 },
+                { "label": "5", "x": 19.5, "y": 3.5 },
+                { "label": "6", "x": 20.5, "y": 3.5 },
 
 
                 { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 },
                 { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 },
                 { "label": "\\", "x": 1.25, "y": 4.5 },
                 { "label": "\\", "x": 1.25, "y": 4.5 },
@@ -282,6 +327,10 @@
                 { "label": "?", "x": 11.25, "y": 4.5 },
                 { "label": "?", "x": 11.25, "y": 4.5 },
                 { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
                 { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
                 { "label": "\u2191", "x": 16.25, "y": 4.5 },
                 { "label": "\u2191", "x": 16.25, "y": 4.5 },
+                { "label": "1", "x": 18.5, "y": 4.5 },
+                { "label": "2", "x": 19.5, "y": 4.5 },
+                { "label": "3", "x": 20.5, "y": 4.5 },
+                { "label": "Enter", "x": 21.5, "y": 4.5, "h": 2 },
 
 
                 { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
                 { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
                 { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
                 { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
@@ -293,7 +342,9 @@
                 { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
                 { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
                 { "label": "\u2190", "x": 15.25, "y": 5.5 },
                 { "label": "\u2190", "x": 15.25, "y": 5.5 },
                 { "label": "\u2193", "x": 16.25, "y": 5.5 },
                 { "label": "\u2193", "x": 16.25, "y": 5.5 },
-                { "label": "\u2192", "x": 17.25, "y": 5.5 }
+                { "label": "\u2192", "x": 17.25, "y": 5.5 },
+                { "label": "0", "x": 18.5, "y": 5.5, "w": 2 },
+                { "label": ".", "x": 20.5, "y": 5.5 }
             ]
             ]
         }
         }
     }
     }

+ 78 - 0
keyboards/durgod/k3x0/k310/k310.h

@@ -0,0 +1,78 @@
+/* Copyright 2021 Don Kjer and Tyler Tidman
+ * Copyright 2021 Simon Arlott
+ *
+ * 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 XXX KC_NO
+
+// This a shortcut to help you visually see your layout.
+#define LAYOUT_fullsize_ansi( \
+      K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,                          \
+      K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,      K6A, K69, K68, K67, \
+      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,      K3D,  K3E,  K3F,      K7A, K79, K78, K6B, \
+      K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,        K4E,                            K7E, K7D, K7C,      \
+      K40,        K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,            K4F,            K6E, K6D, K6C, K7B, \
+      K50,  K51,  K52,                    K56,                    K5A,  K5B,  K5C,  K5D,      K5E,  K5F,  K6F,      K7F,      K77       \
+) { \
+    { K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,  K0E,  K0F },  \
+    { K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  XXX,  K1E,  K1F },  \
+    { K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,  K2E,  K2F },  \
+    { K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  XXX,  K3D,  K3E,  K3F },  \
+    { K40,  XXX,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,  XXX,  K4D,  K4E,  K4F },  \
+    { K50,  K51,  K52,  XXX,  XXX,  XXX,  K56,  XXX,  XXX,  XXX,  K5A,  K5B,  K5C,  K5D,  K5E,  K5F },  \
+    { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K67,  K68,  K69,  K6A,  K6B,  K6C,  K6D,  K6E,  K6F },  \
+    { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K77,  K78,  K79,  K7A,  K7B,  K7C,  K7D,  K7E,  K7F }   \
+}
+
+// This a shortcut to help you visually see your layout.
+#define LAYOUT_fullsize_iso( \
+      K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,                          \
+      K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,      K6A, K69, K68, K67, \
+      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,            K3D,  K3E,  K3F,      K7A, K79, K78, K6B, \
+      K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K4E,                            K7E, K7D, K7C,      \
+      K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,            K4F,            K6E, K6D, K6C, K7B, \
+      K50,  K51,  K52,                    K56,                    K5A,  K5B,  K5C,  K5D,      K5E,  K5F,  K6F,      K7F,      K77       \
+) { \
+    { K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,  K0E,  K0F },  \
+    { K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  XXX,  K1E,  K1F },  \
+    { K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  XXX,  K2E,  K2F },  \
+    { K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K3D,  K3E,  K3F },  \
+    { K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,  XXX,  K4D,  K4E,  K4F },  \
+    { K50,  K51,  K52,  XXX,  XXX,  XXX,  K56,  XXX,  XXX,  XXX,  K5A,  K5B,  K5C,  K5D,  K5E,  K5F },  \
+    { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K67,  K68,  K69,  K6A,  K6B,  K6C,  K6D,  K6E,  K6F },  \
+    { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K77,  K78,  K79,  K7A,  K7B,  K7C,  K7D,  K7E,  K7F }   \
+}
+
+// This a shortcut to help you visually see your layout.
+#define LAYOUT_all( \
+      K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,                          \
+      K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,      K6A, K69, K68, K67, \
+      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,      K3D,  K3E,  K3F,      K7A, K79, K78, K6B, \
+      K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K4E,                            K7E, K7D, K7C,      \
+      K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,            K4F,            K6E, K6D, K6C, K7B, \
+      K50,  K51,  K52,                    K56,                    K5A,  K5B,  K5C,  K5D,      K5E,  K5F,  K6F,      K7F,      K77       \
+) { \
+    { K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,  K0E,  K0F },  \
+    { K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  XXX,  K1E,  K1F },  \
+    { K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,  K2E,  K2F },  \
+    { K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K3D,  K3E,  K3F },  \
+    { K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,  XXX,  K4D,  K4E,  K4F },  \
+    { K50,  K51,  K52,  XXX,  XXX,  XXX,  K56,  XXX,  XXX,  XXX,  K5A,  K5B,  K5C,  K5D,  K5E,  K5F },  \
+    { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K67,  K68,  K69,  K6A,  K6B,  K6C,  K6D,  K6E,  K6F },  \
+    { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K77,  K78,  K79,  K7A,  K7B,  K7C,  K7D,  K7E,  K7F }   \
+}
+

+ 10 - 0
keyboards/durgod/k3x0/k310/readme.md

@@ -0,0 +1,10 @@
+# Taurus K310
+
+This code is shared between all K310 variants.  Currently only the base model with no backlight is supported.
+
+* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert)
+* Hardware Supported: Durgod Taurus K310 board with STM32F070RBT6
+* Hardware Availability: Base https://www.durgod.com/page9?product_id=53&_l=en
+
+Instructions for building the K310 firmware can be found here:
+* [No Backlight](base/readme.md)

+ 4 - 0
keyboards/durgod/k3x0/k310/rules.mk

@@ -0,0 +1,4 @@
+# Default to the base model
+DEFAULT_FOLDER=durgod/k3x0/k310/base
+
+LAYOUTS = fullsize_ansi fullsize_iso

+ 23 - 0
keyboards/durgod/k3x0/k320/base/config.h

@@ -0,0 +1,23 @@
+/* Copyright 2021 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
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT         DURGOD Taurus K320 (QMK)
+#define DEVICE_VER      0x0001 // Base (no backlight)

+ 27 - 0
keyboards/durgod/k3x0/k320/base/readme.md

@@ -0,0 +1,27 @@
+# K320
+
+This is a standard off-the-shelf Durgod Taurus K320 TKL (87/88-key)
+keyboard without backlight.  This supports both the ANSI and ISO variants.
+
+* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert)
+* Hardware Supported: Durgod Taurus K320 board with STM32F070RBT6
+* Hardware Availability: https://www.durgod.com/page9?product_id=47&_l=en
+
+## Instructions
+
+### Build
+
+Make command example for this keyboard (after setting up your build environment):
+
+    make durgod/k320:default
+
+Flashing example for this keyboard:
+
+    make durgod/k320: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/k3x0/k320/base/rules.mk

@@ -0,0 +1 @@
+# see common rules.mk

+ 33 - 0
keyboards/durgod/k3x0/k320/config.h

@@ -0,0 +1,33 @@
+/* Copyright 2021 Don Kjer and Tyler Tidman
+ * Copyright 2021 Simon Arlott
+ *
+ * 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
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define PRODUCT_ID      0x3200
+// Taurus K320 models:
+//#define DEVICE_VER      0x0001 // Base (no backlight)
+//#define DEVICE_VER      0x0002 // Corona (white led matrix)
+//#define DEVICE_VER      0x0003 // Aurora (red & blue led matrix)
+//#define DEVICE_VER      0x0004 // Nebula (rgb led matrix)
+
+/* key matrix size (cols in generic keyboard config) */
+#define MATRIX_ROWS 7
+
+#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5, A6 }

+ 415 - 0
keyboards/durgod/k3x0/k320/info.json

@@ -0,0 +1,415 @@
+{
+  "keyboard_name": "DURGOD Taurus K320",
+  "url": "https://www.durgod.com/page9?product_id=47&_l=en",
+  "maintainer": "dkjer",
+  "width": 18.25,
+  "height": 6.5,
+    "layouts": {
+        "LAYOUT_tkl_ansi": {
+            "layout": [
+                { "label": "Esc", "x": 0, "y": 0 },
+                { "label": "F1", "x": 2, "y": 0 },
+                { "label": "F2", "x": 3, "y": 0 },
+                { "label": "F3", "x": 4, "y": 0 },
+                { "label": "F4", "x": 5, "y": 0 },
+                { "label": "F5", "x": 6.5, "y": 0 },
+                { "label": "F6", "x": 7.5, "y": 0 },
+                { "label": "F7", "x": 8.5, "y": 0 },
+                { "label": "F8", "x": 9.5, "y": 0 },
+                { "label": "F9", "x": 11, "y": 0 },
+                { "label": "F10", "x": 12, "y": 0 },
+                { "label": "F11", "x": 13, "y": 0 },
+                { "label": "F12", "x": 14, "y": 0 },
+                { "label": "PrtSc", "x": 15.25, "y": 0 },
+                { "label": "Scroll Lock", "x": 16.25, "y": 0 },
+                { "label": "Pause", "x": 17.25, "y": 0 },
+
+                { "label": "~", "x": 0, "y": 1.5 },
+                { "label": "!", "x": 1, "y": 1.5 },
+                { "label": "@", "x": 2, "y": 1.5 },
+                { "label": "#", "x": 3, "y": 1.5 },
+                { "label": "$", "x": 4, "y": 1.5 },
+                { "label": "%", "x": 5, "y": 1.5 },
+                { "label": "^", "x": 6, "y": 1.5 },
+                { "label": "&", "x": 7, "y": 1.5 },
+                { "label": "*", "x": 8, "y": 1.5 },
+                { "label": "(", "x": 9, "y": 1.5 },
+                { "label": ")", "x": 10, "y": 1.5 },
+                { "label": "_", "x": 11, "y": 1.5 },
+                { "label": "+", "x": 12, "y": 1.5 },
+                { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 },
+                { "label": "Insert", "x": 15.25, "y": 1.5 },
+                { "label": "Home", "x": 16.25, "y": 1.5 },
+                { "label": "PgUp", "x": 17.25, "y": 1.5 },
+
+                { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
+                { "label": "Q", "x": 1.5, "y": 2.5 },
+                { "label": "W", "x": 2.5, "y": 2.5 },
+                { "label": "E", "x": 3.5, "y": 2.5 },
+                { "label": "R", "x": 4.5, "y": 2.5 },
+                { "label": "T", "x": 5.5, "y": 2.5 },
+                { "label": "Y", "x": 6.5, "y": 2.5 },
+                { "label": "U", "x": 7.5, "y": 2.5 },
+                { "label": "I", "x": 8.5, "y": 2.5 },
+                { "label": "O", "x": 9.5, "y": 2.5 },
+                { "label": "P", "x": 10.5, "y": 2.5 },
+                { "label": "{", "x": 11.5, "y": 2.5 },
+                { "label": "}", "x": 12.5, "y": 2.5 },
+                { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 },
+                { "label": "Delete", "x": 15.25, "y": 2.5 },
+                { "label": "End", "x": 16.25, "y": 2.5 },
+                { "label": "PgDn", "x": 17.25, "y": 2.5 },
+
+                { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
+                { "label": "A", "x": 1.75, "y": 3.5 },
+                { "label": "S", "x": 2.75, "y": 3.5 },
+                { "label": "D", "x": 3.75, "y": 3.5 },
+                { "label": "F", "x": 4.75, "y": 3.5 },
+                { "label": "G", "x": 5.75, "y": 3.5 },
+                { "label": "H", "x": 6.75, "y": 3.5 },
+                { "label": "J", "x": 7.75, "y": 3.5 },
+                { "label": "K", "x": 8.75, "y": 3.5 },
+                { "label": "L", "x": 9.75, "y": 3.5 },
+                { "label": ":", "x": 10.75, "y": 3.5 },
+                { "label": "\"", "x": 11.75, "y": 3.5 },
+                { "label": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 },
+
+                { "label": "Shift", "x": 0, "y": 4.5, "w": 2.25 },
+                { "label": "Z", "x": 2.25, "y": 4.5 },
+                { "label": "X", "x": 3.25, "y": 4.5 },
+                { "label": "C", "x": 4.25, "y": 4.5 },
+                { "label": "V", "x": 5.25, "y": 4.5 },
+                { "label": "B", "x": 6.25, "y": 4.5 },
+                { "label": "N", "x": 7.25, "y": 4.5 },
+                { "label": "M", "x": 8.25, "y": 4.5 },
+                { "label": "<", "x": 9.25, "y": 4.5 },
+                { "label": ">", "x": 10.25, "y": 4.5 },
+                { "label": "?", "x": 11.25, "y": 4.5 },
+                { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
+                { "label": "\u2191", "x": 16.25, "y": 4.5 },
+
+                { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
+                { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
+                { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 },
+                { "x": 3.75, "y": 5.5, "w": 6.25 },
+                { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 },
+                { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 },
+                { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 },
+                { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
+                { "label": "\u2190", "x": 15.25, "y": 5.5 },
+                { "label": "\u2193", "x": 16.25, "y": 5.5 },
+                { "label": "\u2192", "x": 17.25, "y": 5.5 }
+            ]
+        },
+        "LAYOUT_tkl_iso": {
+            "layout": [
+                { "label": "Esc", "x": 0, "y": 0 },
+                { "label": "F1", "x": 2, "y": 0 },
+                { "label": "F2", "x": 3, "y": 0 },
+                { "label": "F3", "x": 4, "y": 0 },
+                { "label": "F4", "x": 5, "y": 0 },
+                { "label": "F5", "x": 6.5, "y": 0 },
+                { "label": "F6", "x": 7.5, "y": 0 },
+                { "label": "F7", "x": 8.5, "y": 0 },
+                { "label": "F8", "x": 9.5, "y": 0 },
+                { "label": "F9", "x": 11, "y": 0 },
+                { "label": "F10", "x": 12, "y": 0 },
+                { "label": "F11", "x": 13, "y": 0 },
+                { "label": "F12", "x": 14, "y": 0 },
+                { "label": "PrtSc", "x": 15.25, "y": 0 },
+                { "label": "Scroll Lock", "x": 16.25, "y": 0 },
+                { "label": "Pause", "x": 17.25, "y": 0 },
+
+                { "label": "~", "x": 0, "y": 1.5 },
+                { "label": "!", "x": 1, "y": 1.5 },
+                { "label": "@", "x": 2, "y": 1.5 },
+                { "label": "#", "x": 3, "y": 1.5 },
+                { "label": "$", "x": 4, "y": 1.5 },
+                { "label": "%", "x": 5, "y": 1.5 },
+                { "label": "^", "x": 6, "y": 1.5 },
+                { "label": "&", "x": 7, "y": 1.5 },
+                { "label": "*", "x": 8, "y": 1.5 },
+                { "label": "(", "x": 9, "y": 1.5 },
+                { "label": ")", "x": 10, "y": 1.5 },
+                { "label": "_", "x": 11, "y": 1.5 },
+                { "label": "+", "x": 12, "y": 1.5 },
+                { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 },
+                { "label": "Insert", "x": 15.25, "y": 1.5 },
+                { "label": "Home", "x": 16.25, "y": 1.5 },
+                { "label": "PgUp", "x": 17.25, "y": 1.5 },
+
+                { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
+                { "label": "Q", "x": 1.5, "y": 2.5 },
+                { "label": "W", "x": 2.5, "y": 2.5 },
+                { "label": "E", "x": 3.5, "y": 2.5 },
+                { "label": "R", "x": 4.5, "y": 2.5 },
+                { "label": "T", "x": 5.5, "y": 2.5 },
+                { "label": "Y", "x": 6.5, "y": 2.5 },
+                { "label": "U", "x": 7.5, "y": 2.5 },
+                { "label": "I", "x": 8.5, "y": 2.5 },
+                { "label": "O", "x": 9.5, "y": 2.5 },
+                { "label": "P", "x": 10.5, "y": 2.5 },
+                { "label": "{", "x": 11.5, "y": 2.5 },
+                { "label": "}", "x": 12.5, "y": 2.5 },
+                { "label": "Delete", "x": 15.25, "y": 2.5 },
+                { "label": "End", "x": 16.25, "y": 2.5 },
+                { "label": "PgDn", "x": 17.25, "y": 2.5 },
+
+                { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
+                { "label": "A", "x": 1.75, "y": 3.5 },
+                { "label": "S", "x": 2.75, "y": 3.5 },
+                { "label": "D", "x": 3.75, "y": 3.5 },
+                { "label": "F", "x": 4.75, "y": 3.5 },
+                { "label": "G", "x": 5.75, "y": 3.5 },
+                { "label": "H", "x": 6.75, "y": 3.5 },
+                { "label": "J", "x": 7.75, "y": 3.5 },
+                { "label": "K", "x": 8.75, "y": 3.5 },
+                { "label": "L", "x": 9.75, "y": 3.5 },
+                { "label": ":", "x": 10.75, "y": 3.5 },
+                { "label": "\"", "x": 11.75, "y": 3.5 },
+                { "label": "#", "x": 12.75, "y": 3.5 },
+                { "label": "Enter", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 },
+
+                { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 },
+                { "label": "\\", "x": 1.25, "y": 4.5 },
+                { "label": "Z", "x": 2.25, "y": 4.5 },
+                { "label": "X", "x": 3.25, "y": 4.5 },
+                { "label": "C", "x": 4.25, "y": 4.5 },
+                { "label": "V", "x": 5.25, "y": 4.5 },
+                { "label": "B", "x": 6.25, "y": 4.5 },
+                { "label": "N", "x": 7.25, "y": 4.5 },
+                { "label": "M", "x": 8.25, "y": 4.5 },
+                { "label": "<", "x": 9.25, "y": 4.5 },
+                { "label": ">", "x": 10.25, "y": 4.5 },
+                { "label": "?", "x": 11.25, "y": 4.5 },
+                { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
+                { "label": "\u2191", "x": 16.25, "y": 4.5 },
+
+                { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
+                { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
+                { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 },
+                { "x": 3.75, "y": 5.5, "w": 6.25 },
+                { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 },
+                { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 },
+                { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 },
+                { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
+                { "label": "\u2190", "x": 15.25, "y": 5.5 },
+                { "label": "\u2193", "x": 16.25, "y": 5.5 },
+                { "label": "\u2192", "x": 17.25, "y": 5.5 }
+            ]
+        },
+        "LAYOUT_tkl": {
+            "layout": [
+                { "label": "Esc", "x": 0, "y": 0 },
+                { "label": "F1", "x": 2, "y": 0 },
+                { "label": "F2", "x": 3, "y": 0 },
+                { "label": "F3", "x": 4, "y": 0 },
+                { "label": "F4", "x": 5, "y": 0 },
+                { "label": "F5", "x": 6.5, "y": 0 },
+                { "label": "F6", "x": 7.5, "y": 0 },
+                { "label": "F7", "x": 8.5, "y": 0 },
+                { "label": "F8", "x": 9.5, "y": 0 },
+                { "label": "F9", "x": 11, "y": 0 },
+                { "label": "F10", "x": 12, "y": 0 },
+                { "label": "F11", "x": 13, "y": 0 },
+                { "label": "F12", "x": 14, "y": 0 },
+                { "label": "PrtSc", "x": 15.25, "y": 0 },
+                { "label": "Scroll Lock", "x": 16.25, "y": 0 },
+                { "label": "Pause", "x": 17.25, "y": 0 },
+
+                { "label": "~", "x": 0, "y": 1.5 },
+                { "label": "!", "x": 1, "y": 1.5 },
+                { "label": "@", "x": 2, "y": 1.5 },
+                { "label": "#", "x": 3, "y": 1.5 },
+                { "label": "$", "x": 4, "y": 1.5 },
+                { "label": "%", "x": 5, "y": 1.5 },
+                { "label": "^", "x": 6, "y": 1.5 },
+                { "label": "&", "x": 7, "y": 1.5 },
+                { "label": "*", "x": 8, "y": 1.5 },
+                { "label": "(", "x": 9, "y": 1.5 },
+                { "label": ")", "x": 10, "y": 1.5 },
+                { "label": "_", "x": 11, "y": 1.5 },
+                { "label": "+", "x": 12, "y": 1.5 },
+                { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 },
+                { "label": "Insert", "x": 15.25, "y": 1.5 },
+                { "label": "Home", "x": 16.25, "y": 1.5 },
+                { "label": "PgUp", "x": 17.25, "y": 1.5 },
+
+                { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
+                { "label": "Q", "x": 1.5, "y": 2.5 },
+                { "label": "W", "x": 2.5, "y": 2.5 },
+                { "label": "E", "x": 3.5, "y": 2.5 },
+                { "label": "R", "x": 4.5, "y": 2.5 },
+                { "label": "T", "x": 5.5, "y": 2.5 },
+                { "label": "Y", "x": 6.5, "y": 2.5 },
+                { "label": "U", "x": 7.5, "y": 2.5 },
+                { "label": "I", "x": 8.5, "y": 2.5 },
+                { "label": "O", "x": 9.5, "y": 2.5 },
+                { "label": "P", "x": 10.5, "y": 2.5 },
+                { "label": "{", "x": 11.5, "y": 2.5 },
+                { "label": "}", "x": 12.5, "y": 2.5 },
+                { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 },
+                { "label": "Delete", "x": 15.25, "y": 2.5 },
+                { "label": "End", "x": 16.25, "y": 2.5 },
+                { "label": "PgDn", "x": 17.25, "y": 2.5 },
+
+                { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
+                { "label": "A", "x": 1.75, "y": 3.5 },
+                { "label": "S", "x": 2.75, "y": 3.5 },
+                { "label": "D", "x": 3.75, "y": 3.5 },
+                { "label": "F", "x": 4.75, "y": 3.5 },
+                { "label": "G", "x": 5.75, "y": 3.5 },
+                { "label": "H", "x": 6.75, "y": 3.5 },
+                { "label": "J", "x": 7.75, "y": 3.5 },
+                { "label": "K", "x": 8.75, "y": 3.5 },
+                { "label": "L", "x": 9.75, "y": 3.5 },
+                { "label": ":", "x": 10.75, "y": 3.5 },
+                { "label": "\"", "x": 11.75, "y": 3.5 },
+                { "label": "#", "x": 12.75, "y": 3.5 },
+                { "label": "Enter", "x": 13.75, "y": 3.5, "w": 1.25 },
+
+                { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 },
+                { "label": "\\", "x": 1.25, "y": 4.5 },
+                { "label": "Z", "x": 2.25, "y": 4.5 },
+                { "label": "X", "x": 3.25, "y": 4.5 },
+                { "label": "C", "x": 4.25, "y": 4.5 },
+                { "label": "V", "x": 5.25, "y": 4.5 },
+                { "label": "B", "x": 6.25, "y": 4.5 },
+                { "label": "N", "x": 7.25, "y": 4.5 },
+                { "label": "M", "x": 8.25, "y": 4.5 },
+                { "label": "<", "x": 9.25, "y": 4.5 },
+                { "label": ">", "x": 10.25, "y": 4.5 },
+                { "label": "?", "x": 11.25, "y": 4.5 },
+                { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
+                { "label": "\u2191", "x": 16.25, "y": 4.5 },
+
+                { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
+                { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
+                { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 },
+                { "x": 3.75, "y": 5.5, "w": 6.25 },
+                { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 },
+                { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 },
+                { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 },
+                { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
+                { "label": "\u2190", "x": 15.25, "y": 5.5 },
+                { "label": "\u2193", "x": 16.25, "y": 5.5 },
+                { "label": "\u2192", "x": 17.25, "y": 5.5 }
+            ]
+        },
+        "LAYOUT_all": {
+            "layout": [
+                { "label": "Esc", "x": 0, "y": 0 },
+                { "label": "F1", "x": 2, "y": 0 },
+                { "label": "F2", "x": 3, "y": 0 },
+                { "label": "F3", "x": 4, "y": 0 },
+                { "label": "F4", "x": 5, "y": 0 },
+                { "label": "F5", "x": 6.5, "y": 0 },
+                { "label": "F6", "x": 7.5, "y": 0 },
+                { "label": "F7", "x": 8.5, "y": 0 },
+                { "label": "F8", "x": 9.5, "y": 0 },
+                { "label": "F9", "x": 11, "y": 0 },
+                { "label": "F10", "x": 12, "y": 0 },
+                { "label": "F11", "x": 13, "y": 0 },
+                { "label": "F12", "x": 14, "y": 0 },
+                { "label": "PrtSc", "x": 15.25, "y": 0 },
+                { "label": "Scroll Lock", "x": 16.25, "y": 0 },
+                { "label": "Pause", "x": 17.25, "y": 0 },
+
+                { "label": "~", "x": 0, "y": 1.5 },
+                { "label": "!", "x": 1, "y": 1.5 },
+                { "label": "@", "x": 2, "y": 1.5 },
+                { "label": "#", "x": 3, "y": 1.5 },
+                { "label": "$", "x": 4, "y": 1.5 },
+                { "label": "%", "x": 5, "y": 1.5 },
+                { "label": "^", "x": 6, "y": 1.5 },
+                { "label": "&", "x": 7, "y": 1.5 },
+                { "label": "*", "x": 8, "y": 1.5 },
+                { "label": "(", "x": 9, "y": 1.5 },
+                { "label": ")", "x": 10, "y": 1.5 },
+                { "label": "_", "x": 11, "y": 1.5 },
+                { "label": "+", "x": 12, "y": 1.5 },
+                { "label": "Backspace", "x": 13, "y": 1.5, "w": 2 },
+                { "label": "Insert", "x": 15.25, "y": 1.5 },
+                { "label": "Home", "x": 16.25, "y": 1.5 },
+                { "label": "PgUp", "x": 17.25, "y": 1.5 },
+                { "label": "Num Lock", "x": 18.5, "y": 1.5 },
+                { "label": "/", "x": 19.5, "y": 1.5 },
+                { "label": "*", "x": 20.5, "y": 1.5 },
+                { "label": "-", "x": 21.5, "y": 1.5 },
+
+                { "label": "Tab", "x": 0, "y": 2.5, "w": 1.5 },
+                { "label": "Q", "x": 1.5, "y": 2.5 },
+                { "label": "W", "x": 2.5, "y": 2.5 },
+                { "label": "E", "x": 3.5, "y": 2.5 },
+                { "label": "R", "x": 4.5, "y": 2.5 },
+                { "label": "T", "x": 5.5, "y": 2.5 },
+                { "label": "Y", "x": 6.5, "y": 2.5 },
+                { "label": "U", "x": 7.5, "y": 2.5 },
+                { "label": "I", "x": 8.5, "y": 2.5 },
+                { "label": "O", "x": 9.5, "y": 2.5 },
+                { "label": "P", "x": 10.5, "y": 2.5 },
+                { "label": "{", "x": 11.5, "y": 2.5 },
+                { "label": "}", "x": 12.5, "y": 2.5 },
+                { "label": "|", "x": 13.5, "y": 2.5, "w": 1.5 },
+                { "label": "Delete", "x": 15.25, "y": 2.5 },
+                { "label": "End", "x": 16.25, "y": 2.5 },
+                { "label": "PgDn", "x": 17.25, "y": 2.5 },
+                { "label": "7", "x": 18.5, "y": 2.5 },
+                { "label": "8", "x": 19.5, "y": 2.5 },
+                { "label": "9", "x": 20.5, "y": 2.5 },
+                { "label": "+", "x": 21.5, "y": 2.5, "h": 2 },
+
+                { "label": "Caps Lock", "x": 0, "y": 3.5, "w": 1.75 },
+                { "label": "A", "x": 1.75, "y": 3.5 },
+                { "label": "S", "x": 2.75, "y": 3.5 },
+                { "label": "D", "x": 3.75, "y": 3.5 },
+                { "label": "F", "x": 4.75, "y": 3.5 },
+                { "label": "G", "x": 5.75, "y": 3.5 },
+                { "label": "H", "x": 6.75, "y": 3.5 },
+                { "label": "J", "x": 7.75, "y": 3.5 },
+                { "label": "K", "x": 8.75, "y": 3.5 },
+                { "label": "L", "x": 9.75, "y": 3.5 },
+                { "label": ":", "x": 10.75, "y": 3.5 },
+                { "label": "\"", "x": 11.75, "y": 3.5 },
+                { "label": "#", "x": 12.75, "y": 3.5 },
+                { "label": "Enter", "x": 13.75, "y": 3.5, "w": 1.25 },
+                { "label": "4", "x": 18.5, "y": 3.5 },
+                { "label": "5", "x": 19.5, "y": 3.5 },
+                { "label": "6", "x": 20.5, "y": 3.5 },
+
+                { "label": "Shift", "x": 0, "y": 4.5, "w": 1.25 },
+                { "label": "\\", "x": 1.25, "y": 4.5 },
+                { "label": "Z", "x": 2.25, "y": 4.5 },
+                { "label": "X", "x": 3.25, "y": 4.5 },
+                { "label": "C", "x": 4.25, "y": 4.5 },
+                { "label": "V", "x": 5.25, "y": 4.5 },
+                { "label": "B", "x": 6.25, "y": 4.5 },
+                { "label": "N", "x": 7.25, "y": 4.5 },
+                { "label": "M", "x": 8.25, "y": 4.5 },
+                { "label": "<", "x": 9.25, "y": 4.5 },
+                { "label": ">", "x": 10.25, "y": 4.5 },
+                { "label": "?", "x": 11.25, "y": 4.5 },
+                { "label": "Shift", "x": 12.25, "y": 4.5, "w": 2.75 },
+                { "label": "\u2191", "x": 16.25, "y": 4.5 },
+                { "label": "1", "x": 18.5, "y": 4.5 },
+                { "label": "2", "x": 19.5, "y": 4.5 },
+                { "label": "3", "x": 20.5, "y": 4.5 },
+                { "label": "Enter", "x": 21.5, "y": 4.5, "h": 2 },
+
+                { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.25 },
+                { "label": "Win", "x": 1.25, "y": 5.5, "w": 1.25 },
+                { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.25 },
+                { "x": 3.75, "y": 5.5, "w": 6.25 },
+                { "label": "Alt", "x": 10, "y": 5.5, "w": 1.25 },
+                { "label": "Fn", "x": 11.25, "y": 5.5, "w": 1.25 },
+                { "label": "Menu", "x": 12.5, "y": 5.5, "w": 1.25 },
+                { "label": "Ctrl", "x": 13.75, "y": 5.5, "w": 1.25 },
+                { "label": "\u2190", "x": 15.25, "y": 5.5 },
+                { "label": "\u2193", "x": 16.25, "y": 5.5 },
+                { "label": "\u2192", "x": 17.25, "y": 5.5 },
+                { "label": "0", "x": 18.5, "y": 5.5, "w": 2 },
+                { "label": ".", "x": 20.5, "y": 5.5 }
+            ]
+        }
+    }
+}

+ 22 - 22
keyboards/durgod/k320/k320.h → keyboards/durgod/k3x0/k320/k320.h

@@ -1,4 +1,5 @@
-/* Copyright 2021 kuenhlee and Don Kjer
+/* Copyright 2021 Don Kjer and Tyler Tidman
+ * Copyright 2021 Simon Arlott
  *
  *
  * This program is free software: you can redistribute it and/or modify
  * 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
  * it under the terms of the GNU General Public License as published by
@@ -13,25 +14,8 @@
  * You should have received a copy of the GNU General Public License
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
  */
-#pragma once
-
-#include "quantum.h"
-
-#ifndef WINLOCK_DISABLED
-// Define the TGUI key here so it is available in QMK configurator
-enum K320_keycodes {
-    KC_TGUI = SAFE_RANGE,   // Toggle between GUI Lock or Unlock
-    NEW_SAFE_RANGE
-};
-
-#undef SAFE_RANGE
-#define SAFE_RANGE NEW_SAFE_RANGE
-#endif /* WINLOCK_DISABLED */
-
-/* Function Prototype */
-void off_all_leds(void);
-void on_all_leds(void);
 
 
+#pragma once
 
 
 #define XXX KC_NO
 #define XXX KC_NO
 
 
@@ -53,7 +37,6 @@ void on_all_leds(void);
     { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K6F }   \
     { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K6F }   \
 }
 }
 
 
-
 // This a shortcut to help you visually see your layout.
 // This a shortcut to help you visually see your layout.
 #define LAYOUT_tkl_iso( \
 #define LAYOUT_tkl_iso( \
       K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,  \
       K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,  \
@@ -72,9 +55,8 @@ void on_all_leds(void);
     { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K6F }   \
     { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K6F }   \
 }
 }
 
 
-
 // This a shortcut to help you visually see your layout.
 // This a shortcut to help you visually see your layout.
-#define LAYOUT_all( \
+#define LAYOUT_tkl( \
       K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,  \
       K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,  \
       K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,  \
       K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,  \
       K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,      K3D,  K3E,  K3F,  \
       K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,      K3D,  K3E,  K3F,  \
@@ -90,3 +72,21 @@ void on_all_leds(void);
     { K50,  K51,  K52,  XXX,  XXX,  XXX,  K56,  XXX,  XXX,  XXX,  K5A,  K5B,  K5C,  K5D,  K5E,  K5F },  \
     { K50,  K51,  K52,  XXX,  XXX,  XXX,  K56,  XXX,  XXX,  XXX,  K5A,  K5B,  K5C,  K5D,  K5E,  K5F },  \
     { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K6F }   \
     { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K6F }   \
 }
 }
+
+// This a shortcut to help you visually see your layout.
+#define LAYOUT_all( \
+      K00,        K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,      K0D,  K0E,  K0F,                          \
+      K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  K1E,      K2E,  K2F,  K1F,      K6A, K69, K68, K67, \
+      K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,      K3D,  K3E,  K3F,      K7A, K79, K78, K6B, \
+      K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K4E,                            K7E, K7D, K7C,      \
+      K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,        K4D,            K4F,            K6E, K6D, K6C, K7B, \
+      K50,  K51,  K52,                    K56,                    K5A,  K5B,  K5C,  K5D,      K5E,  K5F,  K6F,      K7F,      K77       \
+) { \
+    { K00,  K01,  K02,  K03,  K04,  K05,  K06,  K07,  K08,  K09,  K0A,  K0B,  K0C,  K0D,  K0E,  K0F },  \
+    { K10,  K11,  K12,  K13,  K14,  K15,  K16,  K17,  K18,  K19,  K1A,  K1B,  K1C,  XXX,  K1E,  K1F },  \
+    { K20,  K21,  K22,  K23,  K24,  K25,  K26,  K27,  K28,  K29,  K2A,  K2B,  K2C,  K2D,  K2E,  K2F },  \
+    { K30,  K31,  K32,  K33,  K34,  K35,  K36,  K37,  K38,  K39,  K3A,  K3B,  K3C,  K3D,  K3E,  K3F },  \
+    { K40,  K41,  K42,  K43,  K44,  K45,  K46,  K47,  K48,  K49,  K4A,  K4B,  XXX,  K4D,  K4E,  K4F },  \
+    { K50,  K51,  K52,  XXX,  XXX,  XXX,  K56,  XXX,  XXX,  XXX,  K5A,  K5B,  K5C,  K5D,  K5E,  K5F },  \
+    { XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  XXX,  K67,  K68,  K69,  K6A,  K6B,  K6C,  K6D,  K6E,  K6F }   \
+}

+ 0 - 0
keyboards/durgod/k320/keymaps/kuenhlee/keymap.c → keyboards/durgod/k3x0/k320/keymaps/kuenhlee/keymap.c


+ 0 - 0
keyboards/durgod/k320/keymaps/kuenhlee/readme.md → keyboards/durgod/k3x0/k320/keymaps/kuenhlee/readme.md


+ 0 - 0
keyboards/durgod/k320/keymaps/kuenhlee/rules.mk → keyboards/durgod/k3x0/k320/keymaps/kuenhlee/rules.mk


+ 10 - 0
keyboards/durgod/k3x0/k320/readme.md

@@ -0,0 +1,10 @@
+# Taurus K320
+
+This code is shared between all K320 variants.  Currently only the base model with no backlight is supported.
+
+* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert)
+* Hardware Supported: Durgod Taurus K320 board with STM32F070RBT6
+* Hardware Availability: Base https://www.amazon.com/Durgod-Taurus-Corona-Mechanical-Keyboard/dp/B078H3WPHM
+
+Instructions for building the K320 firmware can be found here:
+* [No Backlight](base/readme.md)

+ 4 - 0
keyboards/durgod/k3x0/k320/rules.mk

@@ -0,0 +1,4 @@
+# Default to the base model
+DEFAULT_FOLDER=durgod/k3x0/k320/base
+
+LAYOUTS = tkl_ansi tkl_iso

+ 37 - 3
keyboards/durgod/k320/k320.c → keyboards/durgod/k3x0/k3x0.c

@@ -1,4 +1,5 @@
-/* Copyright 2021 kuenhlee and Don Kjer
+/* Copyright 2021 kuenhlee, Don Kjer, Tyler Tidman
+ * Copyright 2021 Simon Arlott
  *
  *
  * This program is free software: you can redistribute it and/or modify
  * 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
  * it under the terms of the GNU General Public License as published by
@@ -14,10 +15,15 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
  */
 
 
-#include "k320.h"
+#include "k3x0.h"
+#include <ch.h>
+#include <hal.h>
 
 
 /* Private Functions */
 /* Private Functions */
 void off_all_leds(void) {
 void off_all_leds(void) {
+#ifdef LED_NUM_LOCK_PIN
+    writePinHigh(LED_NUM_LOCK_PIN);
+#endif
     writePinHigh(LED_CAPS_LOCK_PIN);
     writePinHigh(LED_CAPS_LOCK_PIN);
     writePinHigh(LED_SCROLL_LOCK_PIN);
     writePinHigh(LED_SCROLL_LOCK_PIN);
     writePinHigh(LED_WIN_LOCK_PIN);
     writePinHigh(LED_WIN_LOCK_PIN);
@@ -25,6 +31,9 @@ void off_all_leds(void) {
 }
 }
 
 
 void on_all_leds(void) {
 void on_all_leds(void) {
+#ifdef LED_NUM_LOCK_PIN
+    writePinLow(LED_NUM_LOCK_PIN);
+#endif
     writePinLow(LED_CAPS_LOCK_PIN);
     writePinLow(LED_CAPS_LOCK_PIN);
     writePinLow(LED_SCROLL_LOCK_PIN);
     writePinLow(LED_SCROLL_LOCK_PIN);
     writePinLow(LED_WIN_LOCK_PIN);
     writePinLow(LED_WIN_LOCK_PIN);
@@ -33,6 +42,9 @@ void on_all_leds(void) {
 
 
 /* WinLock and MR LEDs are non-standard. Need to override led init */
 /* WinLock and MR LEDs are non-standard. Need to override led init */
 void led_init_ports(void) {
 void led_init_ports(void) {
+#ifdef LED_NUM_LOCK_PIN
+    setPinOutput(LED_NUM_LOCK_PIN);
+#endif
     setPinOutput(LED_CAPS_LOCK_PIN);
     setPinOutput(LED_CAPS_LOCK_PIN);
     setPinOutput(LED_SCROLL_LOCK_PIN);
     setPinOutput(LED_SCROLL_LOCK_PIN);
     setPinOutput(LED_WIN_LOCK_PIN);
     setPinOutput(LED_WIN_LOCK_PIN);
@@ -40,7 +52,6 @@ void led_init_ports(void) {
     off_all_leds();
     off_all_leds();
 }
 }
 
 
-
 #ifndef WINLOCK_DISABLED
 #ifndef WINLOCK_DISABLED
 static bool win_key_locked = false;
 static bool win_key_locked = false;
 
 
@@ -60,3 +71,26 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
     return process_record_user(keycode, record);
     return process_record_user(keycode, record);
 }
 }
 #endif /* WINLOCK_DISABLED */
 #endif /* WINLOCK_DISABLED */
+
+#ifndef HW_RESET_PIN_DISABLED
+static void hardware_reset_cb(void *arg) {
+    chSysLockFromISR();
+    bootloader_jump();
+    chSysUnlockFromISR();
+}
+#endif
+
+void keyboard_pre_init_kb(void) {
+    setPinInputHigh(HARDWARE_RESET_PIN);
+
+#ifndef HW_RESET_PIN_DISABLED
+    /* Jump to bootloader when the hardware reset button is pressed */
+    palEnablePadEvent(PAL_PORT(HARDWARE_RESET_PIN), PAL_PAD(HARDWARE_RESET_PIN), PAL_EVENT_MODE_FALLING_EDGE);
+    palSetPadCallback(PAL_PORT(HARDWARE_RESET_PIN), PAL_PAD(HARDWARE_RESET_PIN), hardware_reset_cb, NULL);
+
+    /* The interrupt is edge-triggered so check that it's not already pressed */
+    if (!readPin(HARDWARE_RESET_PIN)) {
+        bootloader_jump();
+    }
+#endif
+}

+ 47 - 0
keyboards/durgod/k3x0/k3x0.h

@@ -0,0 +1,47 @@
+/* Copyright 2021 kuenhlee, Don Kjer, Tyler Tidman
+ * Copyright 2021 Simon Arlott
+ *
+ * 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
+
+#include "quantum.h"
+
+#ifdef KEYBOARD_durgod_k3x0_k310
+#   include "k310.h"
+#elif KEYBOARD_durgod_k3x0_k320
+#   include "k320.h"
+#endif
+
+#ifndef WINLOCK_DISABLED
+// Define the TGUI key here so it is available in QMK configurator
+enum K3x0_keycodes {
+#ifdef VIA_ENABLE
+    KC_TGUI = USER00,   // Toggle between GUI Lock or Unlock
+    NEW_SAFE_RANGE = SAFE_RANGE
+#else
+    KC_TGUI = SAFE_RANGE,   // Toggle between GUI Lock or Unlock
+    NEW_SAFE_RANGE
+#endif
+};
+
+#undef SAFE_RANGE
+#define SAFE_RANGE NEW_SAFE_RANGE
+#endif /* WINLOCK_DISABLED */
+
+/* Function Prototype */
+void off_all_leds(void);
+void on_all_leds(void);
+

+ 373 - 0
keyboards/durgod/k3x0/keymaps/chimera/keymap.c

@@ -0,0 +1,373 @@
+/* Copyright 2021 Don Kjer and Tyler Tidman
+ *
+ * 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
+
+// Layer shorthand
+enum _layer {
+    _WBL,
+    _WFL,
+    _WSL,
+    _MBL,
+    _MFL,
+    _MSL
+};
+
+#ifndef DEFAULT_LAYOUT
+# define DEFAULT_LAYOUT _WBL // Change to _MBL to boot into Mac layout.
+#endif
+#ifndef ALT_LAYOUT
+# define ALT_LAYOUT     _MBL // Layout to display 'MR' led when active.
+#endif
+
+static bool win_key_locked = false;
+static bool mac_media_locked = false;
+static bool win_appkey_pressed = false;
+static bool mac_fnkey_pressed = false;
+
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+    KC_TGUI = SAFE_RANGE,  // Toggle between GUI Lock or Unlock (Windows)
+    KC_TMED,               // Toggle between Fx keys or Media keys (Mac)
+    KC_WFN,                // Windows function key
+    KC_MFN,                // Mac function key
+    MO_WSL,                // Windows system key
+    MO_MSL,                // Mac system key
+    DF_W2MBL,              // Change layout from Windows to Mac
+    DF_M2WBL               // Change layout from Mac to Windows
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* Keymap _WBL: Windows Base Layer (Default Layer)
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Esc│   │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Slk│Pse│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ │Del│End│PgD│ │ 7 │ 8 │ 9 │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │
+   * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│               │ 4 │ 5 │ 6 │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
+   * │Ctrl│GUI │Alt │                        │ Alt│Func│ App│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+    [_WBL] = LAYOUT_all( /* Windows Base Layer */
+        KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,     KC_PSCR, KC_SLCK, KC_PAUS,
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,    KC_INS,  KC_HOME, KC_PGUP,    KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,    KC_DEL,  KC_END,  KC_PGDN,    KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+        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_P4,   KC_P5,   KC_P6,
+        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_P1,   KC_P2,   KC_P3,   KC_PENT,
+        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, KC_WFN,  KC_APP,  KC_RCTL,    KC_LEFT, KC_DOWN, KC_RGHT,    KC_P0,            KC_PDOT
+    ),
+  /* Keymap _WFL: Windows Function Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │   │   │Ply│Stp│Prv│Nxt│ │Mut│Vo+│Vo-│   │ │   │   │   │   │ │   │   │Mut│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │Vo+│ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │Vo-│ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │Lock│    │                        │    │Func│ Sys│    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+  [_WFL] = LAYOUT_all( /* Windows Function Layer */
+        _______,          KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______,    _______, _______, KC_MUTE,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_VOLU,    _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_VOLD,    _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                                  _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,             _______,             _______, _______, _______, _______,
+        _______, KC_TGUI, _______,                            _______,                            _______, _______, MO_WSL,  _______,    _______, _______, _______,    _______,          _______
+    ),
+  /* Keymap _WSL: Windows System Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Rst│   │Slp│   │   │Pwr│ │   │   │   │   │ │   │   │   │MAC│ │   │   │   │
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │   │ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │   │ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │DBG│   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │    │    │                        │    │    │    │    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+    [_WSL] = LAYOUT_all( /* Windows Second / System Layer */
+        RESET,            KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL,   XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, DEBUG,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                                  XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,             XXXXXXX,             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX,                            XXXXXXX,                            XXXXXXX, _______, _______, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,          XXXXXXX
+    ),
+
+  /* Keymap _MBL: Mac Base Layer (Alternate Layout)
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Esc│   │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │F13│F14│F15│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ │Del│End│PgD│ │ 7 │ 8 │ 9 │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │
+   * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│               │ 4 │ 5 │ 6 │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
+   * │Ctrl│Alt │GUI │                        │ GUI│ Alt│Func│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+    [_MBL] = LAYOUT_all( /* Mac Base Layer */
+        KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,     KC_F13,  KC_F14,  KC_F15,
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,    KC_INS,  KC_HOME, KC_PGUP,    KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,    KC_DEL,  KC_END,  KC_PGDN,    KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+        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_P4,   KC_P5,   KC_P6,
+        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_P1,   KC_P2,   KC_P3,   KC_PENT,
+        KC_LCTL, KC_LALT, KC_LGUI,                            KC_SPC,                             KC_RGUI, KC_RALT, KC_MFN,  KC_RCTL,    KC_LEFT, KC_DOWN, KC_RGHT,    KC_P0,            KC_PDOT
+    ),
+  /* Keymap _MFL: Mac Function Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │   │   │Br-│Br+│   │   │ │   │   │Prv│Ply│ │Nxt│Mut│Vo-│Vo+│ │TMd│   │Mut│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │Vo+│ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │Vo-│ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │    │    │                        │    │ Sys│Func│    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+  [_MFL] = LAYOUT_all( /* Mac Function Layer */
+        _______,          KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU,    KC_TMED, _______, KC_MUTE,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_VOLU,     _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_VOLD,     _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                                   _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,             _______,              _______, _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, MO_MSL,  _______, _______,    _______, _______, _______,     _______,          _______
+    ),
+  /* Keymap _MSL: Mac System Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Rst│   │   │   │   │Slp│ │   │   │   │   │ │   │   │   │WIN│ │   │   │   │
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │   │ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │   │ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │DBG│   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │    │    │                        │    │ Sys│Func│    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+    [_MSL] = LAYOUT_all( /* Mac Second / System Layer */
+        RESET,            XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL,   XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, DEBUG,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                                  XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,             XXXXXXX,             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX,                            XXXXXXX,                            XXXXXXX, _______, _______, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,          XXXXXXX
+    )
+};
+
+void unlock_win_key(void) {
+    win_key_locked = false;
+    mac_media_locked = false;
+    writePinHigh(LED_WIN_LOCK_PIN);
+}
+
+void toggle_lock_win_key(void) {
+    win_key_locked = !win_key_locked;
+    writePin(LED_WIN_LOCK_PIN, !win_key_locked);
+}
+
+void toggle_lock_media_key(void) {
+    mac_media_locked = !mac_media_locked;
+    writePin(LED_WIN_LOCK_PIN, !mac_media_locked);
+}
+
+#ifdef CONSOLE_ENABLE
+void dprint_global_layers(void) {
+    dprint("Global Layers:");
+    if (IS_LAYER_ON(_WFL)) { dprint(" _WFL"); }
+    if (IS_LAYER_ON(_WSL)) { dprint(" _WSL"); }
+    if (IS_LAYER_ON(_MFL)) { dprint(" _MFL"); }
+    if (IS_LAYER_ON(_MSL)) { dprint(" _MSL"); }
+    dprintf("\n");
+}
+
+void dprint_layers(layer_state_t state) {
+    dprint("Layers:");
+    if (IS_LAYER_ON_STATE(state, _WFL)) { dprint(" _WFL"); }
+    if (IS_LAYER_ON_STATE(state, _WSL)) { dprint(" _WSL"); }
+    if (IS_LAYER_ON_STATE(state, _MFL)) { dprint(" _MFL"); }
+    if (IS_LAYER_ON_STATE(state, _MSL)) { dprint(" _MSL"); }
+    dprintf("\n");
+}
+#endif
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+#ifdef CONSOLE_ENABLE
+    dprintf("default_layer_state_set_user: 0x%x\n", state);
+    dprint_global_layers();
+#endif
+    // Disable windows key lock on default layer transition.
+    unlock_win_key();
+    win_appkey_pressed = false;
+    mac_fnkey_pressed = false;
+    writePin(LED_MR_LOCK_PIN, !IS_LAYER_ON_STATE(state, ALT_LAYOUT));
+    return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef CONSOLE_ENABLE
+    dprintf("layer_state_set_user: 0x%x\n", state);
+    dprint_layers(state);
+#endif
+    return state;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+        case KC_TGUI:
+            if (!record->event.pressed) {
+                // Toggle GUI lock on key release
+                toggle_lock_win_key();
+            }
+            break;
+        case KC_TMED:
+            // Only trigger when Fn key is also held down, to avoid accidental unlock.
+            if (!mac_fnkey_pressed) { return false; }
+            if (!record->event.pressed) {
+                // Toggle Media Lock on key release
+                toggle_lock_media_key();
+            }
+            break;
+        case KC_LGUI:
+            if (win_key_locked) { return false; }
+            break;
+        case KC_WFN:
+            // Like MO(_WFL), but also enables _WSL if KC_APP is already pressed down.
+            if (record->event.pressed) {
+                layer_on(_WFL);
+                if (win_appkey_pressed) {
+                    // Also enable Secondary layer if App key is being held down.
+                    win_appkey_pressed = false;
+                    layer_on(_WSL);
+                }
+            } else {
+                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
+                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
+            }
+            break;
+        case KC_APP:
+            if (record->event.pressed) {
+                // Don't actually press down the app menu key
+                win_appkey_pressed = true;
+            } else {
+                if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
+                if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
+                if (win_appkey_pressed) {
+                    win_appkey_pressed = false;
+                    // Tap the KC_APP key on key release.
+                    tap_code(KC_APP);
+                }
+            }
+            return false;
+            break;
+        case KC_MFN:
+            // Mac Fn key.  Emit Fn keycode, and also transition layers similar to KC_WFN.
+            if (record->event.pressed) {
+                mac_fnkey_pressed = true;
+                layer_on(_MFL);
+                // Also enable Secondary layer if Right-Alt key is being held down.
+                if (get_mods() & MOD_BIT(KC_RALT)) {
+                    layer_on(_MSL);
+                }
+            } else {
+                mac_fnkey_pressed = false;
+                if (!mac_media_locked) {
+                    if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
+                    if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
+                }
+            }
+            break;
+        case KC_RALT:
+            // Disable MSL/WFL layer on key-up.
+            if (!record->event.pressed) {
+                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
+                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
+            }
+            break;
+        case MO_WSL:
+            if (record->event.pressed) {
+                layer_on(_WSL);
+            } else {
+                if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
+                if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
+            }
+            break;
+        case MO_MSL:
+            if (record->event.pressed) {
+                layer_on(_MSL);
+            } else {
+                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
+                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
+            }
+            break;
+        case DF_W2MBL:
+            if (!record->event.pressed) {
+                // Switch base layer, but preserve first/secondary layers.
+                default_layer_set(1UL<<_MBL);
+                layer_state_set(1UL<<_MFL | 1UL<<_MSL);
+            }
+            break;
+        case DF_M2WBL:
+            if (!record->event.pressed) {
+                // Switch base layer, but preserve first/secondary layers.
+                default_layer_set(1UL<<_WBL);
+                layer_state_set(1UL<<_WFL | 1UL<<_WSL);
+            }
+            break;
+        case RESET:
+            if (record->event.pressed) {
+                // Flash LEDs to indicate bootloader mode is enabled.
+                on_all_leds();
+            }
+            break;
+    }
+    return true;
+}
+
+void keyboard_post_init_user(void) {
+    default_layer_set(1UL<<DEFAULT_LAYOUT);
+}

+ 5 - 5
keyboards/durgod/k320/keymaps/default_toggle_mac_windows/readme.md → keyboards/durgod/k3x0/keymaps/chimera/readme.md

@@ -1,8 +1,8 @@
-# A keymap for Durgod Taurus K320 that supports toggling between Mac and Windows
+# A keymap for Durgod Taurus K310/K320 that supports toggling between Mac and Windows
 
 
 Supports both ANSI and ISO layouts.
 Supports both ANSI and ISO layouts.
 
 
-Layer 0 : Standard 87/88 keys TKL layout (Windows)
+Layer 0 : Standard layout (Windows)
 
 
 Layer 1 : Media control and Windows lock key (Windows)
 Layer 1 : Media control and Windows lock key (Windows)
 - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
 - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
@@ -14,7 +14,7 @@ Layer 2 : System layer (Windows)
 - Fn + Menu + F4  : Turning Off System
 - Fn + Menu + F4  : Turning Off System
 - Fn + Menu + F12 : Switch to Mac layout
 - Fn + Menu + F12 : Switch to Mac layout
 
 
-Layer 3 : Mac 87/88 keys TKL layout
+Layer 3 : Mac layout
 
 
 Layer 4 : Media control and Media lock key (Mac)
 Layer 4 : Media control and Media lock key (Mac)
  - Standard Mac Media keys for Fn + F1 ~ Fn + F12.
  - Standard Mac Media keys for Fn + F1 ~ Fn + F12.
@@ -39,14 +39,14 @@ You can change the default & alternate layout by setting the following flags to
 
 
 For example, to configure Mac as the default layer, and Windows to be the alternate layout, compile with these flags:
 For example, to configure Mac as the default layer, and Windows to be the alternate layout, compile with these flags:
 
 
-    make EXTRAFLAGS="-DDEFAULT_LAYOUT=_MBL -DALT_LAYOUT=_WBL" durgod/k320:default_toggle_mac_windows
+    make EXTRAFLAGS="-DDEFAULT_LAYOUT=_MBL -DALT_LAYOUT=_WBL" durgod/k3x0/k310:chimera
 
 
 ## Windows key lock
 ## Windows key lock
 
 
 In windows layout, you can hold down Fn + Windows key to disable the Windows key while in locked mode.  The 'Lock' LED
 In windows layout, you can hold down Fn + Windows key to disable the Windows key while in locked mode.  The 'Lock' LED
 indicates if the Windows key is locked.
 indicates if the Windows key is locked.
 
 
-This is similar to the stock K320 Windows key lock functionality.
+This is similar to the stock K310/K320 Windows key lock functionality.
 
 
 ## Mac Media Lock
 ## Mac Media Lock
 
 

+ 0 - 0
keyboards/durgod/k320/keymaps/default_toggle_mac_windows/rules.mk → keyboards/durgod/k3x0/keymaps/chimera/rules.mk


+ 26 - 0
keyboards/durgod/k3x0/keymaps/default/keymap.json

@@ -0,0 +1,26 @@
+{
+  "keyboard": "durgod/k3x0",
+  "keymap": "default",
+  "layout": "LAYOUT_all",
+  "layers": [
+    [
+      "KC_ESC",             "KC_F1",   "KC_F2",   "KC_F3",   "KC_F4",   "KC_F5",   "KC_F6",   "KC_F7",   "KC_F8",   "KC_F9",   "KC_F10",  "KC_F11",  "KC_F12",     "KC_PSCR", "KC_SLCK", "KC_PAUS",
+      "KC_GRV",  "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",    "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "KC_MINS", "KC_EQL",  "KC_BSPC",    "KC_INS",  "KC_HOME", "KC_PGUP",    "KC_NLCK", "KC_PSLS", "KC_PAST", "KC_PMNS",
+      "KC_TAB",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",    "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_LBRC", "KC_RBRC", "KC_BSLS",    "KC_DEL",  "KC_END",  "KC_PGDN",    "KC_P7",   "KC_P8",   "KC_P9",   "KC_PPLS",
+      "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_P4",   "KC_P5",   "KC_P6",
+      "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_P1",   "KC_P2",   "KC_P3",   "KC_PENT",
+      "KC_LCTL", "KC_LGUI", "KC_LALT",                                  "KC_SPC",                                   "KC_RALT", "MO(1)",   "KC_APP",  "KC_RCTL",    "KC_LEFT", "KC_DOWN", "KC_RGHT",    "KC_P0",              "KC_PDOT"
+    ],
+    [
+      "_______",            "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "_______", "_______", "_______", "_______", "_______",    "_______", "_______", "_______",
+      "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",    "_______", "_______", "_______",    "_______", "_______", "_______", "_______",
+      "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",    "_______", "_______", "_______",    "_______", "_______", "_______", "_______",
+      "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",                                        "_______", "_______", "_______",
+      "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",            "_______",               "_______",               "_______", "_______", "_______", "_______",
+      "_______", "KC_TGUI", "_______",                                  "_______",                                  "_______", "_______", "_______", "_______",    "_______", "_______", "_______",    "_______",            "_______"
+    ]
+  ],
+  "author": "tylert",
+  "notes": "",
+  "version": 1
+}

+ 3 - 3
keyboards/durgod/k320/keymaps/default/readme.md → keyboards/durgod/k3x0/keymaps/default/readme.md

@@ -1,8 +1,8 @@
-# The default keymap for Durgod Taurus K320.
+# The default keymap for Durgod Taurus K3X0 (K310, K320, etc.) without backlight
 
 
 Supports both ANSI and ISO layouts.
 Supports both ANSI and ISO layouts.
 
 
-Layer 0 : Standard 87/88 keys TKL layout (Windows)
+Layer 0 : Standard layout (Windows)
 
 
 Layer 1 : Media control and Windows lock key
 Layer 1 : Media control and Windows lock key
 - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
 - Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
@@ -13,4 +13,4 @@ Layer 1 : Media control and Windows lock key
 You can hold down Fn + Windows key to disable the Windows key while in locked mode.
 You can hold down Fn + Windows key to disable the Windows key while in locked mode.
 The 'Lock' LED indicates if the Windows key is locked.
 The 'Lock' LED indicates if the Windows key is locked.
 
 
-This is similar to the stock K320 Windows key lock functionality.
+This is similar to the stock K310/K320 Windows key lock functionality.

+ 11 - 11
keyboards/durgod/k320/keymaps/default_mac/keymap.json → keyboards/durgod/k3x0/keymaps/default_mac/keymap.json

@@ -1,23 +1,23 @@
 {
 {
-  "keyboard": "durgod/k320",
+  "keyboard": "durgod/k3x0",
   "keymap": "default_mac",
   "keymap": "default_mac",
   "layout": "LAYOUT_all",
   "layout": "LAYOUT_all",
   "layers": [
   "layers": [
     [
     [
       "KC_ESC",             "KC_F1",   "KC_F2",   "KC_F3",   "KC_F4",   "KC_F5",   "KC_F6",   "KC_F7",   "KC_F8",   "KC_F9",   "KC_F10",  "KC_F11",  "KC_F12",     "KC_F13",  "KC_F14",  "KC_F15",
       "KC_ESC",             "KC_F1",   "KC_F2",   "KC_F3",   "KC_F4",   "KC_F5",   "KC_F6",   "KC_F7",   "KC_F8",   "KC_F9",   "KC_F10",  "KC_F11",  "KC_F12",     "KC_F13",  "KC_F14",  "KC_F15",
-      "KC_GRV",  "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",    "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "KC_MINS", "KC_EQL",  "KC_BSPC",    "KC_INS",  "KC_HOME", "KC_PGUP",
-      "KC_TAB",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",    "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_LBRC", "KC_RBRC", "KC_BSLS",    "KC_DEL",  "KC_END",  "KC_PGDN",
-      "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_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_LCTL", "KC_LALT", "KC_LGUI",                                  "KC_SPC",                                   "KC_RGUI", "KC_RALT", "MO(1)",   "KC_RCTL",    "KC_LEFT", "KC_DOWN", "KC_RGHT"
+      "KC_GRV",  "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",    "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "KC_MINS", "KC_EQL",  "KC_BSPC",    "KC_INS",  "KC_HOME", "KC_PGUP",    "KC_NLCK", "KC_PSLS", "KC_PAST", "KC_PMNS",
+      "KC_TAB",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",    "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_LBRC", "KC_RBRC", "KC_BSLS",    "KC_DEL",  "KC_END",  "KC_PGDN",    "KC_P7",   "KC_P8",   "KC_P9",   "KC_PPLS",
+      "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_P4",   "KC_P5",   "KC_P6",
+      "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_P1",   "KC_P2",   "KC_P3",   "KC_PENT",
+      "KC_LCTL", "KC_LALT", "KC_LGUI",                                  "KC_SPC",                                   "KC_RGUI", "KC_RALT", "MO(1)",   "KC_RCTL",    "KC_LEFT", "KC_DOWN", "KC_RGHT",    "KC_P0",              "KC_PDOT"
     ],
     ],
     [
     [
       "KC_TRNS",            "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",
       "KC_TRNS",            "KC_MPLY", "KC_MSTP", "KC_MPRV", "KC_MNXT", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",            "KC_TRNS",               "KC_TRNS",
-      "KC_TRNS", "KC_TRNS", "KC_TRNS",                                  "KC_TRNS",                                  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS",  "KC_TRNS"
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",    "_______", "_______", "_______", "_______",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",    "_______", "_______", "_______", "_______",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",                                        "_______", "_______", "_______",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",            "KC_TRNS",               "KC_TRNS",               "_______", "_______", "_______", "_______",
+      "KC_TRNS", "KC_TRNS", "KC_TRNS",                                  "KC_TRNS",                                  "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",    "KC_TRNS", "KC_TRNS", "KC_TRNS",    "_______",            "_______"
     ]
     ]
   ],
   ],
   "author":"AlCutter",
   "author":"AlCutter",

+ 0 - 0
keyboards/durgod/k320/keymaps/default_mac/readme.md → keyboards/durgod/k3x0/keymaps/default_mac/readme.md


+ 373 - 0
keyboards/durgod/k3x0/keymaps/typhon/keymap.c

@@ -0,0 +1,373 @@
+/* Copyright 2021 Don Kjer and Tyler Tidman
+ *
+ * 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
+
+// Layer shorthand
+enum _layer {
+    _WBL,
+    _WFL,
+    _WSL,
+    _MBL,
+    _MFL,
+    _MSL
+};
+
+#ifndef DEFAULT_LAYOUT
+# define DEFAULT_LAYOUT _WBL // Change to _MBL to boot into Mac layout.
+#endif
+#ifndef ALT_LAYOUT
+# define ALT_LAYOUT     _MBL // Layout to display 'MR' led when active.
+#endif
+
+static bool win_key_locked = false;
+static bool mac_media_locked = false;
+static bool win_appkey_pressed = false;
+static bool mac_fnkey_pressed = false;
+
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+    KC_TGUI = SAFE_RANGE,  // Toggle between GUI Lock or Unlock (Windows)
+    KC_TMED,               // Toggle between Fx keys or Media keys (Mac)
+    KC_WFN,                // Windows function key
+    KC_MFN,                // Mac function key
+    MO_WSL,                // Windows system key
+    MO_MSL,                // Mac system key
+    DF_W2MBL,              // Change layout from Windows to Mac
+    DF_M2WBL               // Change layout from Mac to Windows
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* Keymap _WBL: Windows Base Layer (Default Layer)
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Esc│   │M1 │M3 │M2 │M4 │ │M1 │M3 │M2 │M4 │ │M1 │M3 │M2 │M4 │ │PSc│Slk│Pse│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ │Del│End│PgD│ │ 7 │ 8 │ 9 │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │
+   * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│               │ 4 │ 5 │ 6 │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
+   * │Ctrl│GUI │Alt │                        │ Alt│Func│ App│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+    [_WBL] = LAYOUT_all( /* Windows Base Layer */
+        KC_ESC,           KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4,    KC_PSCR, KC_SLCK, KC_PAUS,
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,    KC_INS,  KC_HOME, KC_PGUP,    KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,    KC_DEL,  KC_END,  KC_PGDN,    KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+        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_P4,   KC_P5,   KC_P6,
+        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_P1,   KC_P2,   KC_P3,   KC_PENT,
+        KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, KC_WFN,  KC_APP,  KC_RCTL,    KC_LEFT, KC_DOWN, KC_RGHT,    KC_P0,            KC_PDOT
+    ),
+  /* Keymap _WFL: Windows Function Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │   │   │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │   │   │Mut│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │Vo+│ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │Vo-│ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │Lock│    │                        │    │Func│ Sys│    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+  [_WFL] = LAYOUT_all( /* Windows Function Layer */
+        _______,          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_MUTE,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_VOLU,    _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_VOLD,    _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                                  _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,             _______,             _______, _______, _______, _______,
+        _______, KC_TGUI, _______,                            _______,                            _______, _______, MO_WSL,  _______,    _______, _______, _______,    _______,          _______
+    ),
+  /* Keymap _WSL: Windows System Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Rst│   │Slp│   │   │Pwr│ │   │   │   │   │ │   │   │   │MAC│ │   │   │   │
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │   │ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │   │ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │DBG│   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │    │    │                        │    │    │    │    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+    [_WSL] = LAYOUT_all( /* Windows Second / System Layer */
+        RESET,            KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL,   XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, DEBUG,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                                  XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,             XXXXXXX,             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX,                            XXXXXXX,                            XXXXXXX, _______, _______, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,          XXXXXXX
+    ),
+
+  /* Keymap _MBL: Mac Base Layer (Alternate Layout)
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Esc│   │M1 │M3 │M2 │M4 │ │M1 │M3 │M2 │M4 │ │M1 │M3 │M2 │M4 │ │F13│F14│F15│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ │Del│End│PgD│ │ 7 │ 8 │ 9 │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │
+   * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│               │ 4 │ 5 │ 6 │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
+   * │Ctrl│Alt │GUI │                        │ GUI│ Alt│Func│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+    [_MBL] = LAYOUT_all( /* Mac Base Layer */
+        KC_ESC,           KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN4,    KC_F13,  KC_F14,  KC_F15,
+        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,    KC_INS,  KC_HOME, KC_PGUP,    KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+        KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,    KC_DEL,  KC_END,  KC_PGDN,    KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+        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_P4,   KC_P5,   KC_P6,
+        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_P1,   KC_P2,   KC_P3,   KC_PENT,
+        KC_LCTL, KC_LALT, KC_LGUI,                            KC_SPC,                             KC_RGUI, KC_RALT, KC_MFN,  KC_RCTL,    KC_LEFT, KC_DOWN, KC_RGHT,    KC_P0,            KC_PDOT
+    ),
+  /* Keymap _MFL: Mac Function Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │   │   │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │TMd│   │Mut│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │Vo+│ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │Vo-│ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │    │    │                        │    │ Sys│Func│    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+  [_MFL] = LAYOUT_all( /* Mac Function Layer */
+        _______,          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_TMED, _______, KC_MUTE,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_VOLU,     _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, KC_VOLD,     _______, _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                                   _______, _______, _______,
+        _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,             _______,              _______, _______, _______, _______,
+        _______, _______, _______,                            _______,                            _______, MO_MSL,  _______, _______,    _______, _______, _______,     _______,          _______
+    ),
+  /* Keymap _MSL: Mac System Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Rst│   │   │   │   │Slp│ │   │   │   │   │ │   │   │   │WIN│ │   │   │   │
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │   │ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │   │ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │DBG│   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │    │    │                        │    │ Sys│Func│    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+    [_MSL] = LAYOUT_all( /* Mac Second / System Layer */
+        RESET,            XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL,   XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, DEBUG,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                                  XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,             XXXXXXX,             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+        XXXXXXX, XXXXXXX, XXXXXXX,                            XXXXXXX,                            XXXXXXX, _______, _______, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX,          XXXXXXX
+    )
+};
+
+void unlock_win_key(void) {
+    win_key_locked = false;
+    mac_media_locked = false;
+    writePinHigh(LED_WIN_LOCK_PIN);
+}
+
+void toggle_lock_win_key(void) {
+    win_key_locked = !win_key_locked;
+    writePin(LED_WIN_LOCK_PIN, !win_key_locked);
+}
+
+void toggle_lock_media_key(void) {
+    mac_media_locked = !mac_media_locked;
+    writePin(LED_WIN_LOCK_PIN, !mac_media_locked);
+}
+
+#ifdef CONSOLE_ENABLE
+void dprint_global_layers(void) {
+    dprint("Global Layers:");
+    if (IS_LAYER_ON(_WFL)) { dprint(" _WFL"); }
+    if (IS_LAYER_ON(_WSL)) { dprint(" _WSL"); }
+    if (IS_LAYER_ON(_MFL)) { dprint(" _MFL"); }
+    if (IS_LAYER_ON(_MSL)) { dprint(" _MSL"); }
+    dprintf("\n");
+}
+
+void dprint_layers(layer_state_t state) {
+    dprint("Layers:");
+    if (IS_LAYER_ON_STATE(state, _WFL)) { dprint(" _WFL"); }
+    if (IS_LAYER_ON_STATE(state, _WSL)) { dprint(" _WSL"); }
+    if (IS_LAYER_ON_STATE(state, _MFL)) { dprint(" _MFL"); }
+    if (IS_LAYER_ON_STATE(state, _MSL)) { dprint(" _MSL"); }
+    dprintf("\n");
+}
+#endif
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+#ifdef CONSOLE_ENABLE
+    dprintf("default_layer_state_set_user: 0x%x\n", state);
+    dprint_global_layers();
+#endif
+    // Disable windows key lock on default layer transition.
+    unlock_win_key();
+    win_appkey_pressed = false;
+    mac_fnkey_pressed = false;
+    writePin(LED_MR_LOCK_PIN, !IS_LAYER_ON_STATE(state, ALT_LAYOUT));
+    return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef CONSOLE_ENABLE
+    dprintf("layer_state_set_user: 0x%x\n", state);
+    dprint_layers(state);
+#endif
+    return state;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+        case KC_TGUI:
+            if (!record->event.pressed) {
+                // Toggle GUI lock on key release
+                toggle_lock_win_key();
+            }
+            break;
+        case KC_TMED:
+            // Only trigger when Fn key is also held down, to avoid accidental unlock.
+            if (!mac_fnkey_pressed) { return false; }
+            if (!record->event.pressed) {
+                // Toggle Media Lock on key release
+                toggle_lock_media_key();
+            }
+            break;
+        case KC_LGUI:
+            if (win_key_locked) { return false; }
+            break;
+        case KC_WFN:
+            // Like MO(_WFL), but also enables _WSL if KC_APP is already pressed down.
+            if (record->event.pressed) {
+                layer_on(_WFL);
+                if (win_appkey_pressed) {
+                    // Also enable Secondary layer if App key is being held down.
+                    win_appkey_pressed = false;
+                    layer_on(_WSL);
+                }
+            } else {
+                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
+                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
+            }
+            break;
+        case KC_APP:
+            if (record->event.pressed) {
+                // Don't actually press down the app menu key
+                win_appkey_pressed = true;
+            } else {
+                if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
+                if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
+                if (win_appkey_pressed) {
+                    win_appkey_pressed = false;
+                    // Tap the KC_APP key on key release.
+                    tap_code(KC_APP);
+                }
+            }
+            return false;
+            break;
+        case KC_MFN:
+            // Mac Fn key.  Emit Fn keycode, and also transition layers similar to KC_WFN.
+            if (record->event.pressed) {
+                mac_fnkey_pressed = true;
+                layer_on(_MFL);
+                // Also enable Secondary layer if Right-Alt key is being held down.
+                if (get_mods() & MOD_BIT(KC_RALT)) {
+                    layer_on(_MSL);
+                }
+            } else {
+                mac_fnkey_pressed = false;
+                if (!mac_media_locked) {
+                    if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
+                    if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
+                }
+            }
+            break;
+        case KC_RALT:
+            // Disable MSL/WFL layer on key-up.
+            if (!record->event.pressed) {
+                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
+                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
+            }
+            break;
+        case MO_WSL:
+            if (record->event.pressed) {
+                layer_on(_WSL);
+            } else {
+                if (IS_LAYER_ON(_WSL)) { layer_off(_WSL); }
+                if (IS_LAYER_ON(_MFL)) { layer_off(_MFL); }
+            }
+            break;
+        case MO_MSL:
+            if (record->event.pressed) {
+                layer_on(_MSL);
+            } else {
+                if (IS_LAYER_ON(_MSL)) { layer_off(_MSL); }
+                if (IS_LAYER_ON(_WFL)) { layer_off(_WFL); }
+            }
+            break;
+        case DF_W2MBL:
+            if (!record->event.pressed) {
+                // Switch base layer, but preserve first/secondary layers.
+                default_layer_set(1UL<<_MBL);
+                layer_state_set(1UL<<_MFL | 1UL<<_MSL);
+            }
+            break;
+        case DF_M2WBL:
+            if (!record->event.pressed) {
+                // Switch base layer, but preserve first/secondary layers.
+                default_layer_set(1UL<<_WBL);
+                layer_state_set(1UL<<_WFL | 1UL<<_WSL);
+            }
+            break;
+        case RESET:
+            if (record->event.pressed) {
+                // Flash LEDs to indicate bootloader mode is enabled.
+                on_all_leds();
+            }
+            break;
+    }
+    return true;
+}
+
+void keyboard_post_init_user(void) {
+    default_layer_set(1UL<<DEFAULT_LAYOUT);
+}

+ 65 - 0
keyboards/durgod/k3x0/keymaps/typhon/readme.md

@@ -0,0 +1,65 @@
+# A keymap for Durgod Taurus K310/K320 that supports toggling between Mac and Windows
+
+Supports both ANSI and ISO layouts.
+
+Layer 0 : Standard layout (Windows)
+
+Layer 1 : Media control and Windows lock key (Windows)
+- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7
+- Fn + Windows to toggle Windows lock key functionality
+
+Layer 2 : System layer (Windows)
+- Fn + Menu + Esc : Bootloader mode
+- Fn + Menu + F1  : System Sleep
+- Fn + Menu + F4  : Turning Off System
+- Fn + Menu + F12 : Switch to Mac layout
+
+Layer 3 : Mac layout
+
+Layer 4 : Media control and Media lock key (Mac)
+ - Standard Mac Media keys for Fn + F1 ~ Fn + F12.
+ - Fn + F13 to toggle Media lock key functionality
+
+Layer 5 : System layer (Mac)
+- Fn + R-ALT + Esc : Bootloader mode
+- Fn + R-ALT + F4  : Shutdown/Sleep (Hold down on Mac)
+- Fn + R-ALT + F12 : Switch to Windows layout
+
+## Toggle between Mac and Windows layout
+
+You can switch between Mac and Windows layout by doing the following:
+- Hold down Fn + Menu (Windows Layout) or Fn + Right-Alt (Mac layout)  (These are the same physical keys)
+- Press F12
+
+The 'M' led will be lit when you are using the alternate layout.  By default Mac is the alternate layout.
+
+You can change the default & alternate layout by setting the following flags to either '_WBL'(Windows) or '_MBL' (Mac)
+- DEFAULT_LAYOUT (initial layout to use on boot)
+- ALT_LAYOUT (layout that will light the 'M' LED when active)
+
+For example, to configure Mac as the default layer, and Windows to be the alternate layout, compile with these flags:
+
+    make EXTRAFLAGS="-DDEFAULT_LAYOUT=_MBL -DALT_LAYOUT=_WBL" durgod/k3x0/k310:typhon
+
+## Windows key lock
+
+In windows layout, you can hold down Fn + 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 K310/K320 Windows key lock functionality.
+
+## Mac Media Lock
+
+To switch between Function row and Media row in Mac layout, press Fn + PrtSc.  The 'Lock' LED indicator will be lit when in Media row mode.
+
+### Subsequent Flashing
+
+For repeating Flashing you have two options with this keymap:
+1. Use BootMagic
+- BootMagic Lite has been enabled with Assigned "Esc" key 
+- Unplug USB Cable
+- Holding Esc Button 
+- Plug in USB Cable, Keyboard should be in ST-Bootloader state
+2. Use key combination if using default keymap
+- Hold down Fn + Menu (Windows Layout) or Fn + Right-Alt (Mac layout)  (These are the same physical keys)
+- Press Esc.  Keyboard should go into booloader state.

+ 2 - 0
keyboards/durgod/k3x0/keymaps/typhon/rules.mk

@@ -0,0 +1,2 @@
+OPT_DEFS += -DWINLOCK_DISABLED
+MOUSEKEY_ENABLE = yes

+ 92 - 0
keyboards/durgod/k3x0/keymaps/via/keymap.c

@@ -0,0 +1,92 @@
+/* Copyright 2021 Maxime Coirault, Don Kjer, Tyler Tidman
+ *
+ * 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
+
+// Layer shorthand
+enum _layer {
+    _BASE,
+    _FN,
+    _LAYER3,
+    _LAYER4
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* Keymap _BASE: Base Layer (Default Layer)
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │Esc│   │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Slk│Pse│
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │  \  │ │Del│End│PgD│ │ 7 │ 8 │ 9 │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤ + │
+   * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Entr│               │ 4 │ 5 │ 6 │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │    Shift │     │ ↑ │     │ 1 │ 2 │ 3 │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
+   * │Ctrl│GUI │Alt │                        │ Alt│Func│ App│Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+  [_BASE] = LAYOUT_all( /* Base Layer */
+      KC_ESC,           KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,     KC_PSCR, KC_SLCK, KC_PAUS,
+      KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC,    KC_INS,  KC_HOME, KC_PGUP,    KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+      KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,    KC_DEL,  KC_END,  KC_PGDN,    KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
+      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_P4,   KC_P5,   KC_P6,
+      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_P1,   KC_P2,   KC_P3,   KC_PENT,
+      KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(_FN), KC_APP,  KC_RCTL,    KC_LEFT, KC_DOWN, KC_RGHT,    KC_P0,            KC_PDOT
+  ),
+  /* Keymap _FN: Function Layer
+   * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+   * │   │   │Ply│Stp│Prv│Nxt│ │Mut│Vo+│Vo-│   │ │   │   │   │   │ │   │   │   │
+   * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+   * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+   * │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │   │   │   │ │   │   │   │   │
+   * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+   * │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │   │   │   │ │   │   │   │   │
+   * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬┈┈┈┈┤ └───┴───┴───┘ ├───┼───┼───┤   │
+   * │      │   │   │   │   │   │   │   │   │   │   │   │   │    │               │   │   │   │   │
+   * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤     ┌───┐     ├───┼───┼───┼───┤
+   * │    │   │   │   │   │   │   │   │   │   │   │   │          │     │   │     │   │   │   │   │
+   * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤   │
+   * │    │Lock│    │                        │    │Func│ Sys│    │ │   │   │   │ │       │   │   │
+   * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+   */
+  [_FN] = LAYOUT_all( /* Function Layer */
+      _______,          KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______,    _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______,    _______, _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______,    _______, _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                                  _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,             _______,             _______, _______, _______, _______,
+      _______, KC_TGUI, _______,                            _______,                            _______, _______, _______, _______,    _______, _______, _______,    _______,          _______
+  ),
+  [_LAYER3] = LAYOUT_all( /* Layer 3 */
+      _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______,    _______, _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______,    _______, _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                                  _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,             _______,             _______, _______, _______, _______,
+      _______, _______, _______,                            _______,                            _______, _______, _______, _______,    _______, _______, _______,    _______,          _______
+  ),
+  [_LAYER4] = LAYOUT_all( /* Layer 4 */
+      _______,          _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______,    _______, _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______,    _______, _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                                  _______, _______, _______,
+      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,             _______,             _______, _______, _______, _______,
+      _______, _______, _______,                            _______,                            _______, _______, _______, _______,    _______, _______, _______,    _______,          _______
+  )
+};

+ 6 - 0
keyboards/durgod/k3x0/keymaps/via/readme.md

@@ -0,0 +1,6 @@
+# The via keymap for Durgod Taurus K310/K320.
+
+Layer 0 : Standard layout
+
+Layer 1 : Media control
+- Reusing Durgod's Original Media Control for Fn + F1 ~ Fn + F7

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

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

+ 51 - 0
keyboards/durgod/k3x0/readme.md

@@ -0,0 +1,51 @@
+# K3X0 = K310, K320, etc.
+
+This K3X0 code is shared between both the ANSI and ISO variants of both the
+K310 full-sized 104/105-key and K320 TKL 87/88-key keyboards.
+
+* Keyboard Maintainers: [dkjer](https://github.com/dkjer) and [tylert](https://github.com/tylert)
+* Hardware Supported: Durgod Taurus K310 or K320 board with STM32F070RBT6
+* Hardware Availability: K310 https://www.durgod.com/page9?product_id=53&_l=en
+                         and K320 https://www.durgod.com/page9?product_id=47&_l=en
+
+## Instructions
+
+### Build
+
+Instructions for building the K310 and K320 firmware can be found here:
+* [K310](k310/readme.md)
+* [K320](k320/readme.md)
+
+### Initial Flash
+
+For first Flashing from initial Stock Firmware
+
+1. Back up original Firmware Image:
+- Unplug
+- Short Boot0 to Vdd (See below)
+- Plug In USB
+- Make a Flash Image's Backup in case you wanted to restore the Keyboard to Stock's Image:
+  - Using dfu-util:
+
+        dfu-util --list
+        dfu-util --alt 0 --dfuse-address 0x08000000 --upload ${OLD_STOCK_BIN}
+
+2. Flash the QMK Firmware Image.
+- Put board into Bootloader mode, using the same method as when backing up the original Firmware (above)
+- Here are a few options for performing the initial Flash:
+  - Using [QMK Toolbox](https://github.com/qmk/qmk_toolbox)
+  - Using dfu-util:
+
+        dfu-util --alt 0 --dfuse-address 0x08000000 --download ${NEW_QMK_BIN}
+
+You can short Boot0 to Vdd by shorting R21 to C27 on the sides closest to the processor, as shown:
+
+<img src="https://i.imgur.com/hvDnw5a.jpg" width="520" height="693" alt="Shorting Boot0 to Vdd on K320">
+
+### Subsequent Flashing
+
+For repeating Flashing you can use BootMagic:
+- BootMagic Lite has been enabled with Assigned "Esc" key 
+- Unplug USB Cable
+- Holding Esc Button 
+- Plug in USB Cable, Keyboard should be in ST-Bootloader state

+ 28 - 0
keyboards/durgod/k3x0/rules.mk

@@ -0,0 +1,28 @@
+# Default to K310 variant, since it will also work on a K320
+DEFAULT_FOLDER=durgod/k3x0/k310
+
+# MCU name
+# Actually F070, but close enough
+MCU = STM32F072
+BOARD = DURGOD_STM32_F070
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = lite     # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = no        # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes           # USB Nkey Rollover
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no       # Enable Bluetooth
+AUDIO_ENABLE = no           # Audio output
+LTO_ENABLE = yes

+ 1 - 0
users/talljoe/talljoe.h

@@ -92,6 +92,7 @@ enum layers {
 #define MLT_E     LT(_NUM, KC_E)
 #define MLT_E     LT(_NUM, KC_E)
 
 
 #ifndef SWAP_HANDS_ENABLE
 #ifndef SWAP_HANDS_ENABLE
+#undef SH_T
 #define SH_T
 #define SH_T
 #endif
 #endif