From fd32861c9f9c27d0a577d54dacf10a6267f794e5 Mon Sep 17 00:00:00 2001
From: Ming-Gih Lam <dcpedit@hotmail.com>
Date: Mon, 29 Apr 2024 18:39:29 -0700
Subject: [PATCH] Masonry keyboard support (#23597)

---
 keyboards/dcpedit/masonry/info.json           | 79 +++++++++++++++++++
 .../masonry/keymaps/default/keymap.json       | 21 +++++
 .../dcpedit/masonry/keymaps/via/keymap.json   | 26 ++++++
 keyboards/dcpedit/masonry/readme.md           | 27 +++++++
 keyboards/dcpedit/masonry/rules.mk            |  1 +
 5 files changed, 154 insertions(+)
 create mode 100644 keyboards/dcpedit/masonry/info.json
 create mode 100644 keyboards/dcpedit/masonry/keymaps/default/keymap.json
 create mode 100644 keyboards/dcpedit/masonry/keymaps/via/keymap.json
 create mode 100644 keyboards/dcpedit/masonry/readme.md
 create mode 100644 keyboards/dcpedit/masonry/rules.mk

diff --git a/keyboards/dcpedit/masonry/info.json b/keyboards/dcpedit/masonry/info.json
new file mode 100644
index 0000000000..2d25f72621
--- /dev/null
+++ b/keyboards/dcpedit/masonry/info.json
@@ -0,0 +1,79 @@
+{
+    "manufacturer": "dcpedit",
+    "keyboard_name": "Masonry",
+    "maintainer": "dcpedit",
+    "bootloader": "stm32-dfu",
+    "diode_direction": "COL2ROW",
+    "dynamic_keymap": {
+        "layer_count": 2
+    },
+    "features": {
+        "bootmagic": true,
+        "extrakey": true,
+        "mousekey": true
+    },
+    "matrix_pins": {
+        "cols": ["A8", "B15", "B14", "B13", "B12", "A2"],
+        "rows": ["A9", "A0", "F0", "C15", "A10", "F1", "A1", "C14"]
+    },
+    "processor": "STM32F072",
+    "url": "https://github.com/dcpedit/masonry",
+    "usb": {
+        "device_version": "1.0.0",
+        "pid": "0x177A",
+        "vid": "0xDC9E"
+    },
+    "layouts": {
+        "LAYOUT": {
+            "layout": [
+                {"label": "0,0", "matrix": [0, 0], "x": 0, "y": 0},
+                {"label": "4,0", "matrix": [4, 0], "x": 1, "y": 0},
+                {"label": "0,1", "matrix": [0, 1], "x": 2, "y": 0},
+                {"label": "4,1", "matrix": [4, 1], "x": 3, "y": 0},
+                {"label": "0,2", "matrix": [0, 2], "x": 4, "y": 0},
+                {"label": "4,2", "matrix": [4, 2], "x": 5, "y": 0},
+                {"label": "0,3", "matrix": [0, 3], "x": 6, "y": 0},
+                {"label": "4,3", "matrix": [4, 3], "x": 7, "y": 0},
+                {"label": "0,4", "matrix": [0, 4], "x": 8, "y": 0},
+                {"label": "4,4", "matrix": [4, 4], "x": 9, "y": 0},
+                {"label": "0,5", "matrix": [0, 5], "x": 10, "y": 0},
+                {"label": "4,5", "matrix": [4, 5], "x": 11, "y": 0},
+
+                {"label": "1,0", "matrix": [1, 0], "x": 0, "y": 1.75},
+                {"label": "5,0", "matrix": [5, 0], "x": 1, "y": 1.5},
+                {"label": "1,1", "matrix": [1, 1], "x": 2, "y": 1.25},
+                {"label": "5,1", "matrix": [5, 1], "x": 3, "y": 1},
+                {"label": "1,2", "matrix": [1, 2], "x": 4, "y": 1.25},
+                {"label": "5,2", "matrix": [5, 2], "x": 5, "y": 1.25},
+                {"label": "1,3", "matrix": [1, 3], "x": 6, "y": 1.25},
+                {"label": "5,3", "matrix": [5, 3], "x": 7, "y": 1.25},
+                {"label": "1,4", "matrix": [1, 4], "x": 8, "y": 1},
+                {"label": "5,4", "matrix": [5, 4], "x": 9, "y": 1.25},
+                {"label": "1,5", "matrix": [1, 5], "x": 10, "y": 1.5},
+                {"label": "5,5", "matrix": [5, 5], "x": 11, "y": 1.75},
+
+                {"label": "2,0", "matrix": [2, 0], "x": 0, "y": 2.75},
+                {"label": "6,0", "matrix": [6, 0], "x": 1, "y": 2.5},
+                {"label": "2,1", "matrix": [2, 1], "x": 2, "y": 2.25},
+                {"label": "6,1", "matrix": [6, 1], "x": 3, "y": 2},
+                {"label": "2,2", "matrix": [2, 2], "x": 4, "y": 2.25},
+                {"label": "6,2", "matrix": [6, 2], "x": 5, "y": 2.25},
+                {"label": "2,3", "matrix": [2, 3], "x": 6, "y": 2.25},
+                {"label": "6,3", "matrix": [6, 3], "x": 7, "y": 2.25},
+                {"label": "2,4", "matrix": [2, 4], "x": 8, "y": 2},
+                {"label": "6,4", "matrix": [6, 4], "x": 9, "y": 2.25},
+                {"label": "2,5", "matrix": [2, 5], "x": 10, "y": 2.5},
+                {"label": "6,5", "matrix": [6, 5], "x": 11, "y": 2.75},
+
+                {"label": "3,1", "matrix": [3, 1], "x": 2, "y": 3.25},
+                {"label": "7,1", "matrix": [7, 1], "x": 3, "y": 3.25},
+                {"label": "3,2", "matrix": [3, 2], "x": 4, "y": 3.25},
+                {"label": "7,2", "matrix": [7, 2], "x": 5, "y": 3.25},
+                {"label": "3,3", "matrix": [3, 3], "x": 6, "y": 3.25},
+                {"label": "7,3", "matrix": [7, 3], "x": 7, "y": 3.25},
+                {"label": "3,4", "matrix": [3, 4], "x": 8, "y": 3.25},
+                {"label": "7,4", "matrix": [7, 4], "x": 9, "y": 3.25}
+            ]
+        }
+    }
+}
diff --git a/keyboards/dcpedit/masonry/keymaps/default/keymap.json b/keyboards/dcpedit/masonry/keymaps/default/keymap.json
new file mode 100644
index 0000000000..6da346bb91
--- /dev/null
+++ b/keyboards/dcpedit/masonry/keymaps/default/keymap.json
@@ -0,0 +1,21 @@
+{
+  "keyboard": "dcpedit/masonry",
+  "keymap": "default",
+  "author": "dcpedit",
+  "version": 1,
+  "layout": "LAYOUT",
+  "layers": [
+    [
+      "KC_ESC",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",    "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_QUOT",
+      "KC_TAB",  "KC_A",    "KC_S",    "KC_D",    "KC_F",    "KC_G",    "KC_H",    "KC_J",    "KC_K",    "KC_L",    "KC_SCLN", "KC_ENT",
+      "KC_LSFT", "KC_Z",    "KC_X",    "KC_C",    "KC_V",    "KC_B",    "KC_N",    "KC_M",    "KC_COMM", "KC_DOT",  "KC_SLSH", "KC_RSFT",
+                      "KC_LCTL", "KC_LGUI", "LT(1,KC_BSPC)", "KC_BSPC", "KC_SPC", "LT(1,KC_SPC)", "KC_RALT", "KC_RGUI"
+    ],
+    [
+      "KC_GRV" , "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",    "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "KC_RGUI",
+      "KC_LCTL", "KC_LEFT", "KC_DOWN", "KC_UP",   "KC_RGHT", "KC_HOME", "KC_END",  "KC_MINS", "KC_EQL",  "KC_LBRC", "KC_RBRC", "KC_RALT",
+      "_______", "_______", "_______", "_______", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", "_______", "KC_BSLS", "_______",
+                            "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/keyboards/dcpedit/masonry/keymaps/via/keymap.json b/keyboards/dcpedit/masonry/keymaps/via/keymap.json
new file mode 100644
index 0000000000..76dfde6565
--- /dev/null
+++ b/keyboards/dcpedit/masonry/keymaps/via/keymap.json
@@ -0,0 +1,26 @@
+{
+  "keyboard": "dcpedit/masonry",
+  "keymap": "default",
+  "author": "dcpedit",
+  "version": 1,
+  "config": {
+    "features": {
+      "via": true
+    }
+  },
+  "layout": "LAYOUT",
+  "layers": [
+    [
+      "KC_ESC",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",    "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_QUOT",
+      "KC_TAB",  "KC_A",    "KC_S",    "KC_D",    "KC_F",    "KC_G",    "KC_H",    "KC_J",    "KC_K",    "KC_L",    "KC_SCLN", "KC_ENT",
+      "KC_LSFT", "KC_Z",    "KC_X",    "KC_C",    "KC_V",    "KC_B",    "KC_N",    "KC_M",    "KC_COMM", "KC_DOT",  "KC_SLSH", "KC_RSFT",
+                      "KC_LCTL", "KC_LGUI", "LT(1,KC_BSPC)", "KC_BSPC", "KC_SPC", "LT(1,KC_SPC)", "KC_RALT", "KC_RGUI"
+    ],
+    [
+      "KC_GRV" , "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",    "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "KC_RGUI",
+      "KC_LCTL", "KC_LEFT", "KC_DOWN", "KC_UP",   "KC_RGHT", "KC_HOME", "KC_END",  "KC_MINS", "KC_EQL",  "KC_LBRC", "KC_RBRC", "KC_RALT",
+      "_______", "_______", "_______", "_______", "_______", "_______", "KC_PGDN", "KC_PGUP", "_______", "_______", "KC_BSLS", "_______",
+                            "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/keyboards/dcpedit/masonry/readme.md b/keyboards/dcpedit/masonry/readme.md
new file mode 100644
index 0000000000..9ba7a1597e
--- /dev/null
+++ b/keyboards/dcpedit/masonry/readme.md
@@ -0,0 +1,27 @@
+# Masonry
+
+![Masonry](https://i.imgur.com/gqx2FZW.jpg)
+
+Masonry is a 40% ergoish columnar keyboard projected on a rectangular keyboard shape.
+
+* Keyboard Maintainer: [dcpedit](https://github.com/dcpedit)
+* Hardware Supported: STM32F072
+* Hardware Availability: https://github.com/dcpedit/masonry
+
+Make example for this keyboard (after setting up your build environment):
+
+    make dcpedit/masonry:default
+
+Flashing example for this keyboard:
+
+    make dcpedit/masonry: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).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the ESC key (top-left key) and plug in the keyboard
+* **Physical reset button**: On the PCB, while holding down the BOOT button, press and release the RESET button
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
\ No newline at end of file
diff --git a/keyboards/dcpedit/masonry/rules.mk b/keyboards/dcpedit/masonry/rules.mk
new file mode 100644
index 0000000000..cfa2d9632f
--- /dev/null
+++ b/keyboards/dcpedit/masonry/rules.mk
@@ -0,0 +1 @@
+# Intentionally left blank
\ No newline at end of file