From 46a69d1f3bb0275819a8f9f2cd0911b77db6eff0 Mon Sep 17 00:00:00 2001
From: Danny <nooges@users.noreply.github.com>
Date: Sun, 12 Apr 2020 16:09:09 -0400
Subject: [PATCH] [Keyboard] Quefrency Rev2 Caps Lock LED, set lighting
 defaults (#8729)

* Add support for Caps Lock LED

Currently ignores the fact that led_state is not synced between halves, so caps lock LED doesn't do anything if USB is plugged into right half

* Set initial backlight and RGB mode/values on blank EEPROM

* Set default VIA layout options

* Add backlight/RGB ifdefs

* Set bootloaders for each rev
---
 keyboards/keebio/quefrency/rev1/config.h |  3 +++
 keyboards/keebio/quefrency/rev1/rules.mk |  1 +
 keyboards/keebio/quefrency/rev2/config.h |  5 ++++
 keyboards/keebio/quefrency/rev2/rev2.c   | 31 ++++++++++++++++++++++++
 keyboards/keebio/quefrency/rev2/rules.mk |  1 +
 keyboards/keebio/quefrency/rules.mk      | 20 +++------------
 6 files changed, 44 insertions(+), 17 deletions(-)

diff --git a/keyboards/keebio/quefrency/rev1/config.h b/keyboards/keebio/quefrency/rev1/config.h
index 15771f5311..815a3e1971 100644
--- a/keyboards/keebio/quefrency/rev1/config.h
+++ b/keyboards/keebio/quefrency/rev1/config.h
@@ -55,3 +55,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define RGB_DI_PIN D3
 #define RGBLIGHT_ANIMATIONS
 #define RGBLED_NUM 16    // Number of LEDs
+
+// Set 65% column (option 1) and Macro (option 2) on by default
+#define VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT 0x06
diff --git a/keyboards/keebio/quefrency/rev1/rules.mk b/keyboards/keebio/quefrency/rev1/rules.mk
index e69de29bb2..58e9a76b23 100644
--- a/keyboards/keebio/quefrency/rev1/rules.mk
+++ b/keyboards/keebio/quefrency/rev1/rules.mk
@@ -0,0 +1 @@
+BOOTLOADER = caterina
diff --git a/keyboards/keebio/quefrency/rev2/config.h b/keyboards/keebio/quefrency/rev2/config.h
index d18b7be1ff..ba85dc0f6e 100644
--- a/keyboards/keebio/quefrency/rev2/config.h
+++ b/keyboards/keebio/quefrency/rev2/config.h
@@ -47,6 +47,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define DEBOUNCE 5
 
 #define BACKLIGHT_PIN B5
+#define CAPS_LOCK_LED_PIN B6
 
 /* serial.c configuration for split keyboard */
 #define SOFT_SERIAL_PIN D0
@@ -62,3 +63,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define RGBLED_NUM 16    // Number of LEDs
 #define RGBLED_SPLIT { 8, 8 }
 #define RGBLIGHT_LED_MAP { 1, 2, 3, 12, 13, 14, 15, 0, 7, 6, 5, 4, 11, 10, 9, 8 }
+
+// Set 65% column (option 3) and Macro (option 4) on by default
+#define VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT 0x0018
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
diff --git a/keyboards/keebio/quefrency/rev2/rev2.c b/keyboards/keebio/quefrency/rev2/rev2.c
index d713a0ff3a..69edfd415f 100644
--- a/keyboards/keebio/quefrency/rev2/rev2.c
+++ b/keyboards/keebio/quefrency/rev2/rev2.c
@@ -1 +1,32 @@
 #include "quefrency.h"
+#include "split_util.h"
+
+void matrix_init_kb(void) {
+    setPinOutput(CAPS_LOCK_LED_PIN);
+    matrix_init_user();
+}
+
+bool led_update_kb(led_t led_state) {
+    // Only update if left half
+    if (isLeftHand && led_update_user(led_state)) {
+        writePin(CAPS_LOCK_LED_PIN, !led_state.caps_lock);
+    }
+    return true;
+}
+
+void eeconfig_init_kb(void) {
+#ifdef BACKLIGHT_ENABLE
+    backlight_enable();
+    backlight_level(3);
+#endif
+#ifdef RGBLIGHT_ENABLE
+    rgblight_enable(); // Enable RGB by default
+    rgblight_sethsv(0, 255, 255);  // Set default HSV - red hue, full saturation, full brightness
+#ifdef RGBLIGHT_ANIMATIONS
+    rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); // set to RGB_RAINBOW_SWIRL by default
+#endif
+#endif
+
+    eeconfig_update_kb(0);
+    eeconfig_init_user();
+}
diff --git a/keyboards/keebio/quefrency/rev2/rules.mk b/keyboards/keebio/quefrency/rev2/rules.mk
index 32e7881599..0a368deb47 100644
--- a/keyboards/keebio/quefrency/rev2/rules.mk
+++ b/keyboards/keebio/quefrency/rev2/rules.mk
@@ -1,3 +1,4 @@
+BOOTLOADER = atmel-dfu
 BACKLIGHT_ENABLE = yes
 RGBLIGHT_ENABLE = yes
 ENCODER_ENABLE = yes
diff --git a/keyboards/keebio/quefrency/rules.mk b/keyboards/keebio/quefrency/rules.mk
index a13f0478b1..2c5ad0c36b 100644
--- a/keyboards/keebio/quefrency/rules.mk
+++ b/keyboards/keebio/quefrency/rules.mk
@@ -1,32 +1,18 @@
 # MCU name
 MCU = atmega32u4
 
-# Bootloader selection
-#   Teensy       halfkay
-#   Pro Micro    caterina
-#   Atmel DFU    atmel-dfu
-#   LUFA DFU     lufa-dfu
-#   QMK DFU      qmk-dfu
-#   ATmega32A    bootloadHID
-#   ATmega328P   USBasp
-BOOTLOADER = caterina
-
-# Build Options
-#   change to "no" to disable the options, or define them in the Makefile in
-#   the appropriate keymap folder that will get included automatically
-#
 BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration
 MOUSEKEY_ENABLE = no        # Mouse keys
 EXTRAKEY_ENABLE = yes       # Audio control and System control
-CONSOLE_ENABLE = yes         # Console for debug
-COMMAND_ENABLE = no        # Commands for debug and configuration
+CONSOLE_ENABLE = yes        # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
 NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 MIDI_ENABLE = no            # MIDI controls
 AUDIO_ENABLE = no           # Audio output on port C6
 UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight.
+RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend