From ff4d778d68ccba5f60092ded0d7e8656c2b2cd7c Mon Sep 17 00:00:00 2001
From: Ben <BenRoe@users.noreply.github.com>
Date: Thu, 7 Oct 2021 12:46:31 +0200
Subject: [PATCH] Plaid-Pad: update VIAL keymap (#62)

* Update Plaid-Pad VIAL keymap

- fix layout
- add encoder support

* Plaid-Pad: disable insecure option

* Add missing unlock_combo
---
 .../keycapsss/plaid_pad/keymaps/vial/config.h |   3 +
 .../keycapsss/plaid_pad/keymaps/vial/keymap.c | 119 ++++++++++++++++++
 .../keycapsss/plaid_pad/keymaps/vial/rules.mk |   5 +
 .../plaid_pad/keymaps/vial/vial.json          |  18 +++
 keyboards/keycapsss/plaid_pad/rules.mk        |   4 +-
 5 files changed, 147 insertions(+), 2 deletions(-)
 create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/vial/config.h
 create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/vial/keymap.c
 create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/vial/rules.mk
 create mode 100644 keyboards/keycapsss/plaid_pad/keymaps/vial/vial.json

diff --git a/keyboards/keycapsss/plaid_pad/keymaps/vial/config.h b/keyboards/keycapsss/plaid_pad/keymaps/vial/config.h
new file mode 100644
index 0000000000..185117d415
--- /dev/null
+++ b/keyboards/keycapsss/plaid_pad/keymaps/vial/config.h
@@ -0,0 +1,3 @@
+#define VIAL_KEYBOARD_UID {0xA2, 0xF1, 0x8A, 0x6F, 0xB1, 0xA5, 0x01, 0x03}
+#define VIAL_UNLOCK_COMBO_ROWS { 3, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 2 }
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/vial/keymap.c b/keyboards/keycapsss/plaid_pad/keymaps/vial/keymap.c
new file mode 100644
index 0000000000..b90fac1abf
--- /dev/null
+++ b/keyboards/keycapsss/plaid_pad/keymaps/vial/keymap.c
@@ -0,0 +1,119 @@
+/* Copyright 2020 Ben Roesner (keycapsss.com)
+ *
+ * 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
+
+#define ____ KC_TRNS
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * ,-----------------------,
+ * |  7  |  8  |  9  |  /  |
+ * |-----+-----+-----+-----|
+ * |  4  |  5  |  6  |  *  |
+ * |-----+-----+-----+-----|
+ * |  1  |  2  |  3  |  -  |
+ * |-----+-----+-----+-----|
+ * |  0  |  .  |  =  |  +  |
+ * `-----------------------'
+ */
+  [0] = LAYOUT_ortho_4x4(
+      KC_P7,   KC_P8,   KC_P9,   KC_PSLS,
+      KC_P4,   KC_P5,   KC_P6,   KC_PAST,
+      KC_P1,   KC_P2,   KC_P3,   KC_PMNS,
+      KC_P0,   KC_PDOT, KC_PEQL, KC_PPLS  ),
+  [1] = LAYOUT_ortho_4x4(
+      ____, ____, ____, ____,
+      ____, ____, ____, ____,
+      ____, ____, ____, ____,
+      ____, ____, ____, ____  ),
+  [2] = LAYOUT_ortho_4x4(
+      ____, ____, ____, ____,
+      ____, ____, ____, ____,
+      ____, ____, ____, ____,
+      ____, ____, ____, ____  ),
+  [3] = LAYOUT_ortho_4x4(
+      ____, ____, ____, ____,
+      ____, ____, ____, ____,
+      ____, ____, ____, ____,
+      ____, ____, ____, ____  ),
+};
+
+
+// Set led state during power-up
+// There is also a LED_GREEN
+// Only for Rev1 & Rev2
+#ifdef LED_RED
+void keyboard_post_init_user(void) {
+    writePinHigh(LED_RED);
+}
+#endif
+
+
+// Rev3 and above only
+#ifdef OLED_ENABLE
+void oled_task_user(void) {
+  oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false);
+}
+#endif
+
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+/*
+Rev1.1                      Rev1
+,-----------------------,   ,-----------------------,
+|  E1 |  E2 |  E3 |  E4 |   |  E1 |     |     |  E2 |
+|-----+-----+-----+-----|   |-----+-----+-----+-----|
+|     |     |     |  E3 |   |     |     |     |     |
+|-----+-----+-----+-----|   |-----+-----+-----+-----|
+|     |     |     |  E2 |   |     |     |     |     |
+|-----+-----+-----+-----|   |-----+-----+-----+-----|
+|     |     |     |  E1 |   |     |     |     |     |
+`-----------------------'   `-----------------------'
+ */
+
+  // First encoder (E1)
+  if (index == 0) {
+    if (clockwise) {
+      tap_code(KC_F17);
+    } else {
+      tap_code(KC_F18);
+    }
+  // Second encoder (E2)
+  } else if (index == 1) {
+    if (clockwise) {
+      tap_code(KC_F19);
+    } else {
+      tap_code(KC_F20);
+    }
+  // Third encoder (E3)
+  } else if (index == 2) {
+    if (clockwise) {
+      tap_code(KC_F21);
+    } else {
+      tap_code(KC_F22);
+    }
+  // Forth encoder (E4)
+  } else if (index == 3) {
+    if (clockwise) {
+      tap_code(KC_F23);
+    } else {
+      tap_code(KC_F24);
+    }
+  }
+    return true;
+}
+#endif
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/vial/rules.mk b/keyboards/keycapsss/plaid_pad/keymaps/vial/rules.mk
new file mode 100644
index 0000000000..098a7ba7f1
--- /dev/null
+++ b/keyboards/keycapsss/plaid_pad/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = yes
+VIAL_ENCODERS_ENABLE = yes
+VIAL_INSECURE = no
diff --git a/keyboards/keycapsss/plaid_pad/keymaps/vial/vial.json b/keyboards/keycapsss/plaid_pad/keymaps/vial/vial.json
new file mode 100644
index 0000000000..393ec19b15
--- /dev/null
+++ b/keyboards/keycapsss/plaid_pad/keymaps/vial/vial.json
@@ -0,0 +1,18 @@
+{
+    "name": "Plaid-Pad",
+    "vendorId": "0x7983",
+    "productId": "0x5050",
+    "lighting": "none",
+    "matrix": {
+        "rows": 4,
+        "cols": 4
+    },
+    "layouts": {
+      "keymap": [
+        [{"x":2},"0,0","0,1","0,2","0,3",{"x":0.5},"3,0\n\n\n\n\n\n\n\n\ne","3,1\n\n\n\n\n\n\n\n\ne"],
+        [{"x":2},"1,0","1,1","1,2","1,3",{"x":0.5},"2,0\n\n\n\n\n\n\n\n\ne","2,1\n\n\n\n\n\n\n\n\ne"],
+        [{"x":2},"2,0","2,1","2,2","2,3",{"x":0.5},"1,0\n\n\n\n\n\n\n\n\ne","1,1\n\n\n\n\n\n\n\n\ne"],
+        [{"x":2},"3,0","3,1","3,2","3,3",{"x":0.5},"0,0\n\n\n\n\n\n\n\n\ne","0,1\n\n\n\n\n\n\n\n\ne"]
+      ]
+    }
+}
diff --git a/keyboards/keycapsss/plaid_pad/rules.mk b/keyboards/keycapsss/plaid_pad/rules.mk
index cbbf17166e..159b308c58 100644
--- a/keyboards/keycapsss/plaid_pad/rules.mk
+++ b/keyboards/keycapsss/plaid_pad/rules.mk
@@ -2,7 +2,7 @@
 MCU = atmega328p
 
 # Bootloader selection
-BOOTLOADER = usbasploader
+BOOTLOADER = USBasp
 
 # Build Options
 #   change yes to no to disable
@@ -22,4 +22,4 @@ AUDIO_ENABLE = no           # Audio output
 
 LAYOUTS = ortho_4x4
 
-DEFAULT_FOLDER = keycapsss/plaid_pad/rev1
+DEFAULT_FOLDER = keycapsss/plaid_pad/rev3