From 12950db4d8ec1f294b1285e9b554a8fdc0a4bc6d Mon Sep 17 00:00:00 2001
From: Gerardo Nevarez <10030580+GerardoNevarez@users.noreply.github.com>
Date: Sun, 24 Apr 2022 16:55:25 -0400
Subject: [PATCH] Add VIAL support for Ferris Sweep (#148)

Co-authored-by: gerardo_nevarez <GerardoNevarez@users.noreply.github.com>
---
 keyboards/ferris/keymaps/vial/config.h  |   9 +
 keyboards/ferris/keymaps/vial/keymap.c  |  43 +++++
 keyboards/ferris/keymaps/vial/rules.mk  |   5 +
 keyboards/ferris/keymaps/vial/vial.json | 208 ++++++++++++++++++++++++
 4 files changed, 265 insertions(+)
 create mode 100644 keyboards/ferris/keymaps/vial/config.h
 create mode 100644 keyboards/ferris/keymaps/vial/keymap.c
 create mode 100644 keyboards/ferris/keymaps/vial/rules.mk
 create mode 100644 keyboards/ferris/keymaps/vial/vial.json

diff --git a/keyboards/ferris/keymaps/vial/config.h b/keyboards/ferris/keymaps/vial/config.h
new file mode 100644
index 0000000000..c662c70ba6
--- /dev/null
+++ b/keyboards/ferris/keymaps/vial/config.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x47, 0x97, 0x7E, 0x32, 0xC9, 0xAC, 0x13, 0xF3}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 2, 3, 0, 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 1, 0, 2, 4 }
+
diff --git a/keyboards/ferris/keymaps/vial/keymap.c b/keyboards/ferris/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..b1ccd84fee
--- /dev/null
+++ b/keyboards/ferris/keymaps/vial/keymap.c
@@ -0,0 +1,43 @@
+// this is the style you want to emulate.
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+
+#include QMK_KEYBOARD_H
+
+#define KC_CTSC RCTL_T(KC_SCLN)
+#define KC_CTLA LCTL_T(KC_A)
+#define KC_LSHZ LSFT_T(KC_Z)
+#define KC_RLSH RSFT_T(KC_SLSH)
+#define KC_SPM2 LT(2, KC_SPC)
+#define KC_BSM1 LT(1, KC_BSPC)
+#define KC_GUTA GUI_T(KC_TAB)
+#define KC_CLGV CTL_T(KC_GRV)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [0] = LAYOUT(
+    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,            KC_Y,    KC_U,  KC_I,    KC_O,   KC_P,
+    KC_CTLA, KC_S,    KC_D,    KC_F,    KC_G,            KC_H,    KC_J,  KC_K,    KC_L,   KC_SCLN,
+    KC_LSHZ, KC_X,    KC_C,    KC_V,    KC_B,            KC_N,    KC_M,  KC_COMM, KC_DOT, KC_RLSH,
+                                    KC_CLGV, KC_BSM1, KC_SPM2, KC_GUTA
+  ),
+
+  [1] = LAYOUT(
+    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,            KC_6,    KC_7,    KC_8,    KC_9,    KC_0,
+    KC_GESC, KC_HOME, KC_PGDN, KC_PGUP, KC_END,          KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_QUOT,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,         KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_ENT,
+                                    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS  
+  ),
+
+  [2] = LAYOUT(
+    KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,           KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,
+    KC_TAB,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,         KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_PIPE,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,         KC_UNDS, KC_PLUS, KC_TRNS, KC_TRNS, RESET,
+                                    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+  ),
+
+  [3] = LAYOUT(
+    KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+    KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+                                    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+  ),
+};
diff --git a/keyboards/ferris/keymaps/vial/rules.mk b/keyboards/ferris/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..1c86690e3e
--- /dev/null
+++ b/keyboards/ferris/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+QMK_SETTINGS = no
+
diff --git a/keyboards/ferris/keymaps/vial/vial.json b/keyboards/ferris/keymaps/vial/vial.json
new file mode 100644
index 0000000000..6698814515
--- /dev/null
+++ b/keyboards/ferris/keymaps/vial/vial.json
@@ -0,0 +1,208 @@
+{
+  "name": "Ferris Sweep",
+  "vendorId": "0xC2AB",
+  "productId": "0x3939",
+  "firmwareVersion": 0,
+  "lighting": "none",
+  "keycodes": [
+    "via/keycodes"
+  ],
+  "menus": [
+    "via/keymap",
+    "via/layouts",
+    "via/macros",
+    "via/save_load"
+  ],
+  "matrix": {
+    "rows": 8,
+    "cols": 5
+  },
+  "layouts": {
+    "keymap": [
+      [
+        {
+          "x": 2
+        },
+        "0,2",
+        {
+          "x": 5.75
+        },
+        "4,2"
+      ],
+      [
+        {
+          "y": -0.5,
+          "x": 1
+        },
+        "0,1",
+        {
+          "x": 1
+        },
+        "0,3",
+        {
+          "x": 3.75
+        },
+        "4,1",
+        {
+          "x": 1
+        },
+        "4,3"
+      ],
+      [
+        {
+          "y": -0.75,
+          "x": 4
+        },
+        "0,4",
+        {
+          "x": 1.75
+        },
+        "4,0"
+      ],
+      [
+        {
+          "y": -0.75,
+          "x": 2
+        },
+        "1,2",
+        {
+          "x": 5.75
+        },
+        "5,2"
+      ],
+      [
+        {
+          "y": -0.75
+        },
+        "0,0",
+        {
+          "x": 9.75
+        },
+        "4,4"
+      ],
+      [
+        {
+          "y": -0.75,
+          "x": 1
+        },
+        "1,1",
+        {
+          "x": 1
+        },
+        "1,3",
+        {
+          "x": 3.75
+        },
+        "5,1",
+        {
+          "x": 1
+        },
+        "5,3"
+      ],
+      [
+        {
+          "y": -0.75,
+          "x": 4
+        },
+        "1,4",
+        {
+          "x": 1.75
+        },
+        "5,0"
+      ],
+      [
+        {
+          "y": -0.75,
+          "x": 2
+        },
+        "2,2",
+        {
+          "x": 5.75
+        },
+        "6,2"
+      ],
+      [
+        {
+          "y": -0.75
+        },
+        "1,0",
+        {
+          "x": 9.75
+        },
+        "5,4"
+      ],
+      [
+        {
+          "y": -0.75,
+          "x": 1
+        },
+        "2,1",
+        {
+          "x": 1
+        },
+        "2,3",
+        {
+          "x": 3.75
+        },
+        "6,1",
+        {
+          "x": 1
+        },
+        "6,3"
+      ],
+      [
+        {
+          "y": -0.75,
+          "x": 4
+        },
+        "2,4",
+        {
+          "x": 1.75
+        },
+        "6,0"
+      ],
+      [
+        {
+          "y": -0.5
+        },
+        "2,0",
+        {
+          "x": 9.75
+        },
+        "6,4"
+      ],
+      [
+        {
+          "r": 15,
+          "y": -1.5099999999999998,
+          "x": 4.67
+        },
+        "3,0"
+      ],
+      [
+        {
+          "r": 30,
+          "y": -2.49,
+          "x": 6.5
+        },
+        "3,1"
+      ],
+      [
+        {
+          "r": -30,
+          "y": 4.92,
+          "x": 2.76
+        },
+        "7,0"
+      ],
+      [
+        {
+          "r": -15,
+          "y": -2.42,
+          "x": 5.75
+        },
+        "7,1"
+      ]
+    ]
+  }
+}
\ No newline at end of file