From 88555d8e18e90c2571c5d6553aae46c697c3341b Mon Sep 17 00:00:00 2001
From: Jacqueline Liang <8636194+Bratzworth@users.noreply.github.com>
Date: Fri, 9 Sep 2022 05:41:18 -0700
Subject: [PATCH] Add via support for 6key (#18082)

---
 keyboards/handwired/6key/6key.c               | 38 +++++++++++--------
 keyboards/handwired/6key/6key.h               | 30 +++++++--------
 keyboards/handwired/6key/config.h             | 28 +++++++-------
 keyboards/handwired/6key/info.json            |  9 +++--
 .../handwired/6key/keymaps/default/keymap.c   | 27 +++----------
 keyboards/handwired/6key/keymaps/via/keymap.c | 35 +++++++++++++++++
 keyboards/handwired/6key/keymaps/via/rules.mk |  2 +
 keyboards/handwired/6key/rules.mk             |  2 +-
 8 files changed, 102 insertions(+), 69 deletions(-)
 create mode 100644 keyboards/handwired/6key/keymaps/via/keymap.c
 create mode 100644 keyboards/handwired/6key/keymaps/via/rules.mk

diff --git a/keyboards/handwired/6key/6key.c b/keyboards/handwired/6key/6key.c
index ab4263bde4..22c766a30f 100644
--- a/keyboards/handwired/6key/6key.c
+++ b/keyboards/handwired/6key/6key.c
@@ -1,16 +1,24 @@
- /* Copyright 2020 Bratzworth 
-  * 
-  * 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/>. 
-  */ 
+ /* Copyright 2020 Bratzworth
+  *
+  * 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 "6key.h"
+
+bool dip_switch_update_kb(uint8_t index, bool active) {
+    if (!dip_switch_update_user(index, active)) { return false; }
+    if (index == 0) {
+        default_layer_set(1UL << (active ? 1 : 0));
+    }
+    return true;
+}
diff --git a/keyboards/handwired/6key/6key.h b/keyboards/handwired/6key/6key.h
index fe02df44e9..f63abc35d2 100644
--- a/keyboards/handwired/6key/6key.h
+++ b/keyboards/handwired/6key/6key.h
@@ -1,17 +1,17 @@
- /* Copyright 2020 Bratzworth 
-  * 
-  * 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/>. 
+ /* Copyright 2020 Bratzworth
+  *
+  * 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
 
@@ -24,4 +24,4 @@
 { \
     { k00, k01, k02 },  \
     { k03, k04, k05 }   \
-} 
+}
diff --git a/keyboards/handwired/6key/config.h b/keyboards/handwired/6key/config.h
index b7d983d75f..42d7a5cb32 100644
--- a/keyboards/handwired/6key/config.h
+++ b/keyboards/handwired/6key/config.h
@@ -1,17 +1,17 @@
- /* Copyright 2020 Bratzworth 
-  * 
-  * 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/>. 
+ /* Copyright 2020 Bratzworth
+  *
+  * 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
diff --git a/keyboards/handwired/6key/info.json b/keyboards/handwired/6key/info.json
index 4b1e69de86..b069f067c5 100644
--- a/keyboards/handwired/6key/info.json
+++ b/keyboards/handwired/6key/info.json
@@ -1,16 +1,19 @@
 {
     "keyboard_name": "6key",
-    "manufacturer": "Bratzworth",
+    "manufacturer": "bratzworth",
     "url": "https://github.com/Bratzworth/6key",
     "maintainer": "bratzworth",
     "usb": {
-      "vid": "0xBEED",
+      "vid": "0xD143",
       "pid": "0x0007",
       "device_version": "0.0.1"
     },
     "layouts": {
       "LAYOUT": {
-        "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}]
+        "layout": [
+            {"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0},
+            {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}
+        ]
       }
     }
   }
diff --git a/keyboards/handwired/6key/keymaps/default/keymap.c b/keyboards/handwired/6key/keymaps/default/keymap.c
index ad73597bab..ab93024064 100644
--- a/keyboards/handwired/6key/keymaps/default/keymap.c
+++ b/keyboards/handwired/6key/keymaps/default/keymap.c
@@ -15,33 +15,18 @@
   */
 #include QMK_KEYBOARD_H
 
-#define _MAIN 0
-#define _FN 1
-
-#define KC_UNDO LCTL(KC_Z)
-#define KC_REDO LCTL(KC_Y)
+enum layers{
+  _MAIN,
+  _FN
+};
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   [_MAIN] = LAYOUT(
-    KC_UNDO,  KC_REDO,  KC_A,
-    KC_C,     KC_D,     KC_S
+    KC_Z, KC_Y, KC_A,
+    KC_C, KC_D, KC_S
   ),
-
   [_FN] = LAYOUT(
     KC_F13, KC_F14, KC_F15,
     KC_F16, KC_F17, KC_F18
   )
 };
-
-bool dip_switch_update_user(uint8_t index, bool active) {
-    switch (index) {
-        case 0: {
-            if (active) {
-                set_single_persistent_default_layer(_FN);
-            } else {
-                set_single_persistent_default_layer(_MAIN);
-            }
-        }
-    }
-    return true;
-}
diff --git a/keyboards/handwired/6key/keymaps/via/keymap.c b/keyboards/handwired/6key/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4e1922da56
--- /dev/null
+++ b/keyboards/handwired/6key/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+ /* Copyright 2022 Bratzworth
+  *
+  * 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT(
+        LCTL(KC_Z), LCTL(KC_Y), KC_A,
+        KC_C,       KC_D,       KC_S
+    ),
+    [1] = LAYOUT(
+        KC_F13, KC_F14, KC_F15,
+        KC_F16, KC_F17, KC_F18
+    ),
+    [2] = LAYOUT(
+        KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS
+        ),
+    [3] = LAYOUT(
+        KC_TRNS, KC_TRNS, KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS
+        ),
+};
diff --git a/keyboards/handwired/6key/keymaps/via/rules.mk b/keyboards/handwired/6key/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/handwired/6key/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/handwired/6key/rules.mk b/keyboards/handwired/6key/rules.mk
index 5be28d8a57..3cb12386cc 100644
--- a/keyboards/handwired/6key/rules.mk
+++ b/keyboards/handwired/6key/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
 # Build Options
 #   change yes to no to disable
 #
-BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes      # Enable Bootmagic Lite
 MOUSEKEY_ENABLE = yes       # Mouse keys
 EXTRAKEY_ENABLE = yes       # Audio control and System control
 CONSOLE_ENABLE = no         # Console for debug