From 583094aa26edc4171bad84f22ce948c840797e6e Mon Sep 17 00:00:00 2001
From: yynmt <45400583+yynmt@users.noreply.github.com>
Date: Sun, 24 Nov 2019 18:35:03 +0900
Subject: [PATCH] Add RGB LED for Dozen0 (#7458)

* enable rgb led.

* add layer for default keymap

* Update keymap.c

* Update rules.mk

* Update rules.mk

* fix keymaps

remove backslashes.
---
 keyboards/dozen0/config.h                  |  16 ++--
 keyboards/dozen0/keymaps/default/keymap.c  | 106 +++++++++++++++++++--
 keyboards/dozen0/keymaps/default/readme.md |  45 ++++++++-
 keyboards/dozen0/keymaps/f12/keymap.c      |   4 +-
 keyboards/dozen0/rules.mk                  |  20 ++--
 5 files changed, 159 insertions(+), 32 deletions(-)

diff --git a/keyboards/dozen0/config.h b/keyboards/dozen0/config.h
index 9ea2c1795f..af6972e27b 100644
--- a/keyboards/dozen0/config.h
+++ b/keyboards/dozen0/config.h
@@ -52,14 +52,14 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // #define BACKLIGHT_BREATHING
 // #define BACKLIGHT_LEVELS 3
 
-// #define RGB_DI_PIN E2
-// #ifdef RGB_DI_PIN
-// #define RGBLIGHT_ANIMATIONS
-// #define RGBLED_NUM 16
-// #define RGBLIGHT_HUE_STEP 8
-// #define RGBLIGHT_SAT_STEP 8
-// #define RGBLIGHT_VAL_STEP 8
-// #endif
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 2
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
 
 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
 #define DEBOUNCE 5
diff --git a/keyboards/dozen0/keymaps/default/keymap.c b/keyboards/dozen0/keymaps/default/keymap.c
index da0aae0b02..fdc344f660 100644
--- a/keyboards/dozen0/keymaps/default/keymap.c
+++ b/keyboards/dozen0/keymaps/default/keymap.c
@@ -15,20 +15,110 @@
  */
 #include QMK_KEYBOARD_H
 
+#ifdef RGBLIGHT_ENABLE
+//Following line allows macro to read current RGB settings
+extern rgblight_config_t rgblight_config;
+#endif
 
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [0] = LAYOUT(
-    LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_UP, KC_DEL, KC_BSPC, \
-    KC_LCTRL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT \
-  ),
+enum layer_number {
+    _BASE = 0,
+    _LOWER,
+    _RAISE,
+    _ADJUST
 };
 
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  return true;
+enum custom_keycodes {
+  BASE = SAFE_RANGE,
+  LOWER,
+  RAISE,
+  ADJUST,
+  RGBRST
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* Base
+   * ,-----------------------------------------.
+   * |  Cut | Copy |Paste |  Up  |Delete| Bksp |
+   * |      |      |      |      |      |Raise |
+   * |------+------+------+------+------+------|
+   * | Ctrl |Shift | Left | Down |Right |Enter |
+   * |      |      |      |      |      |Lower |
+   * `-----------------------------------------'
+   */
+	[_BASE] = LAYOUT(
+    LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_UP, KC_DEL, LT(_RAISE,KC_BSPC),
+    KC_LCTL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, LT(_LOWER,KC_ENT)
+  ),
+
+  /* Lower
+   * ,-----------------------------------------.
+   * |      |      |      | Page |      |      |
+   * |      |      |      |  Up  |      |      |
+   * |------+------+------+------+------+------|
+   * |      |      | Home | Page | End  |      |
+   * |      |      |      | Down |      |      |
+   * `-----------------------------------------'
+   */
+  [_LOWER] = LAYOUT(
+    _______, _______, _______, KC_PGUP, _______, _______,
+    _______, _______, KC_HOME, KC_PGDN, KC_END, _______
+  ),
+
+  /* Raise
+   * ,-----------------------------------------.
+   * |      |      |      |      |      |      |
+   * |      |      |      |      |      |      |
+   * |------+------+------+------+------+------|
+   * |      |      |      |      |      |      |
+   * |      |      |      |      |      |      |
+   * `-----------------------------------------'
+   */
+  [_RAISE] = LAYOUT(
+    _______, _______, _______, _______, _______, _______,
+    _______, _______, _______, _______, _______, _______
+  ),
+
+  /* Adjust
+   * ,-----------------------------------------.
+   * | RGB  | RGB  | RGB  | RGB  | RGB  |      |
+   * |Toggle|Mode+ | Hue+ | Sat+ | Val+ |      |
+   * |------+------+------+------+------+------|
+   * | RGB  | RGB  | RGB  | RGB  | RGB  |      |
+   * |Reset |Mode- | Hue- | Sat- | Val- |      |
+   * `-----------------------------------------'
+   */
+  [_ADJUST] = LAYOUT(
+    RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______,
+    RGBRST, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______
+  )
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+    return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 }
 
-void matrix_init_user(void) {
+int RGB_current_mode;
 
+void matrix_init_user(void) {
+  #ifdef RGBLIGHT_ENABLE
+  RGB_current_mode = rgblight_config.mode;
+  #endif
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+  switch (keycode) {
+    case RGBRST:
+      #ifdef RGBLIGHT_ENABLE
+      if (record->event.pressed) {
+        eeconfig_update_rgblight_default();
+        rgblight_enable();
+        RGB_current_mode = rgblight_config.mode;
+      }
+      #endif
+      break;
+  }
+  return true;
 }
 
 void matrix_scan_user(void) {
diff --git a/keyboards/dozen0/keymaps/default/readme.md b/keyboards/dozen0/keymaps/default/readme.md
index bf63c1f1ae..832c720751 100644
--- a/keyboards/dozen0/keymaps/default/readme.md
+++ b/keyboards/dozen0/keymaps/default/readme.md
@@ -1,8 +1,45 @@
 # The default keymap for Dozen0
 
+## Base
 ```
- ,-------------------------------------------------.
-| Ctrl+X | Ctrl+C | Ctrl+V |  Up  | Delete | Bksp  |
-|  Ctrl  | Shift  |  Left  | Down | Right  | Enter |
-`--------------------------------------------------'
+,-----------------------------------------.
+|  Cut | Copy |Paste |  Up  |Delete| Bksp |
+|      |      |      |      |      |Raise |
+|------+------+------+------+------+------|
+| Ctrl |Shift | Left | Down |Right |Enter |
+|      |      |      |      |      |Lower |
+`-----------------------------------------'
+```
+
+## Lower
+```
+,-----------------------------------------.
+|      |      |      | Page |      |      |
+|      |      |      |  Up  |      |      |
+|------+------+------+------+------+------|
+|      |      | Home | Page | End  |      |
+|      |      |      | Down |      |      |
+`-----------------------------------------'
+```
+
+## Raise
+```
+,-----------------------------------------.
+|      |      |      |      |      |      |
+|      |      |      |      |      |      |
+|------+------+------+------+------+------|
+|      |      |      |      |      |      |
+|      |      |      |      |      |      |
+`-----------------------------------------'
+```
+
+## Adjust
+```
+,-----------------------------------------.
+| RGB  | RGB  | RGB  | RGB  | RGB  |      |
+|Toggle|Mode+ | Hue+ | Sat+ | Val+ |      |
+|------+------+------+------+------+------|
+| RGB  | RGB  | RGB  | RGB  | RGB  |      |
+|Reset |Mode- | Hue- | Sat- | Val- |      |
+`-----------------------------------------'
 ```
diff --git a/keyboards/dozen0/keymaps/f12/keymap.c b/keyboards/dozen0/keymaps/f12/keymap.c
index bc8cd4123d..167e29e106 100644
--- a/keyboards/dozen0/keymaps/f12/keymap.c
+++ b/keyboards/dozen0/keymaps/f12/keymap.c
@@ -18,8 +18,8 @@
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   [0] = LAYOUT(
-    KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \
-    KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12 \
+    KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+    KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
   ),
 };
 
diff --git a/keyboards/dozen0/rules.mk b/keyboards/dozen0/rules.mk
index 7218e1e1bf..ffeffc7fe0 100644
--- a/keyboards/dozen0/rules.mk
+++ b/keyboards/dozen0/rules.mk
@@ -9,25 +9,25 @@ MCU = atmega32u4
 #   QMK DFU      qmk-dfu
 #   ATmega32A    bootloadHID
 #   ATmega328P   USBasp
-BOOTLOADER = atmel-dfu
+BOOTLOADER = caterina
 
 # Build Options
 #   change yes to no to disable
 #
-BOOTMAGIC_ENABLE = no      # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
-CONSOLE_ENABLE = yes        # Console for debug(+400)
-COMMAND_ENABLE = yes        # Commands for debug and configuration
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes       # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 NKRO_ENABLE = no            # USB Nkey Rollover
-BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality on B7 by default
-RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
-MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
+MIDI_ENABLE = no            # MIDI support
 UNICODE_ENABLE = no         # Unicode
 BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 AUDIO_ENABLE = no           # Audio output on port C6
 FAUXCLICKY_ENABLE = no      # Use buzzer to emulate clicky switches
-HD44780_ENABLE = no 		# Enable support for HD44780 based LCDs (+400)
+HD44780_ENABLE = no         # Enable support for HD44780 based LCDs