From 9303b42e690f5668e29b874d88e2bb3564bd93a2 Mon Sep 17 00:00:00 2001
From: Kenneth Aloysius <krusli@users.noreply.github.com>
Date: Fri, 2 Feb 2018 17:30:47 +1100
Subject: [PATCH] Update personal layouts, free up matrix_scan_user for JJ40
 (#2319)

* Add NIU Mini keymap from Planck keymap

* Remove old keymap files

* Fix README, removed Planck references

* Add default layout, move Planck layout to separate folder

* Update README

* Add my XD60 keymap

* Change RShift to slash

* Fix keymap: stuck on MO(1)

* Move RESET to Fn+Enter

* Add: RGB saturation cycle

* Add numpad layer to keymap

* Fix last case

* Cleanup Mechmini keymap. Once the custom RGB function is defined, there is no need to manually handle RGB code.

* Change default to KEYMAP_MIT, not KEYMAP_OFFSET

* Add custom RGB code for JJ40

* Reset Mechmini advertised power draw to 500. Will have to test actual maximum power draw later.

* RGB working on JJ40.

* Fix: saturation increase/decrease flipped

* Add new directory for my custom keymap with RGB keycodes

* Swap LAlt and LGUI

* Update JJ40 max power draw with measured value

* Update: fun40 rules.mk to enable underglow; earlier failed Travis CI

* Fix: init RGB LEDs on boot. Also added HHKB-like keymap for XD60.

* Super rudimentary backlight test, init RGB LEDs on boot

* Backlighting works - stays on for now

* Toggling working

* Now can override backlight.c functions. Problem was functions in backlight.c weren't called before due to a lack of matrix_scan_quantum() in matrix.c

* Timers not working

* Delete global.h

* Cleanup

* Compiles

* Good sign: LEDs stop working again

* Handle timer1 overflow

* Progress: fix: forgot to init

* Backlighting fully working now except breathing.

* Revert keymap to original keycodes

* Update XD60 keymap README

* Update JJ40 keymap with backlight toggles

* Breathing working just fine.

* Update references

* Add backlight_set() call

* Cleanup code to disable backlight

* Fix: does not compile

* Fix: missing call to rgblight_task.

* Testing with BACKLIGHT_BREATHING

* Cleanup

* Cleanup comments

* More commenting cleanup.

* Do not enable BACKLIGHT_BREATHING by default

* Update XD60 keymap

* Update: move matrix_scan_kb out from matrix.c to jj40.c (kb-level)

* Cleanup for PR

* Fix conflict in readme.md for NIU mini

* Restore original power consumption figure

* Fix: matrix_scan_user() now has to be defined in the keymaps

* Add weak `matrix_scan_user` so it does not have to be defined in keymap

* Add weak matrix_init_user()
---
 keyboards/jj40/jj40.c                       | 18 ++++++++++++++++--
 keyboards/jj40/keymaps/default/keymap.c     |  5 +++++
 keyboards/jj40/keymaps/fun40/keymap.c       |  7 ++++++-
 keyboards/jj40/keymaps/krusli/config.h      |  1 +
 keyboards/jj40/keymaps/krusli/keymap.c      | 20 ++++++++++++++++----
 keyboards/jj40/keymaps/krusli/rules.mk      |  1 +
 keyboards/jj40/keymaps/oscillope/keymap.c   |  6 ++++++
 keyboards/jj40/matrix.c                     |  6 ------
 keyboards/jj40/rules.mk                     |  1 -
 keyboards/niu_mini/keymaps/default/keymap.c |  0
 keyboards/niu_mini/keymaps/readme.md        |  2 +-
 keyboards/xd60/keymaps/krusli/readme.md     |  9 +++++++--
 tmk_core/protocol/lufa/descriptor.c         |  2 +-
 13 files changed, 60 insertions(+), 18 deletions(-)
 create mode 100644 keyboards/jj40/keymaps/krusli/rules.mk
 mode change 100755 => 100644 keyboards/niu_mini/keymaps/default/keymap.c

diff --git a/keyboards/jj40/jj40.c b/keyboards/jj40/jj40.c
index 9c1775d6a1..4affe199b9 100644
--- a/keyboards/jj40/jj40.c
+++ b/keyboards/jj40/jj40.c
@@ -34,7 +34,7 @@ extern rgblight_config_t rgblight_config;
 // @Override
 void matrix_init_kb(void) {
   // call user level keymaps, if any
-  // matrix_init_user();
+  matrix_init_user();
 }
 
 #ifdef BACKLIGHT_ENABLE
@@ -67,7 +67,8 @@ void rgblight_set(void) {
 }
 
 bool rgb_init = false;
-void matrix_scan_user(void) {
+
+void matrix_scan_kb(void) {
   // if LEDs were previously on before poweroff, turn them back on
   if (rgb_init == false && rgblight_config.enable) {
     i2c_init();
@@ -76,5 +77,18 @@ void matrix_scan_user(void) {
   }
 
   rgblight_task();
+
+  matrix_scan_user();
   /* Nothing else for now. */
 }
+
+__attribute__((weak)) // overridable
+void matrix_init_user(void) {
+
+}
+
+
+__attribute__((weak)) // overridable
+void matrix_scan_user(void) {
+
+}
diff --git a/keyboards/jj40/keymaps/default/keymap.c b/keyboards/jj40/keymaps/default/keymap.c
index e02dd902a7..70c73c9669 100644
--- a/keyboards/jj40/keymaps/default/keymap.c
+++ b/keyboards/jj40/keymaps/default/keymap.c
@@ -66,3 +66,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
 )
 };
+
+// Loop
+void matrix_scan_user(void) {
+  // Empty
+};
diff --git a/keyboards/jj40/keymaps/fun40/keymap.c b/keyboards/jj40/keymaps/fun40/keymap.c
index f5641e2971..d6fcfe7c24 100644
--- a/keyboards/jj40/keymaps/fun40/keymap.c
+++ b/keyboards/jj40/keymaps/fun40/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |      |      |  
+ * |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  |      |      |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
  * | Shift|PrScr |ISO ~ |ISO | |      |      |      |      |      |bl_on |bl_stp| Enter|
  * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -121,3 +121,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
   }
   return MACRO_NONE;
 };
+
+// Loop
+void matrix_scan_user(void) {
+  // Empty
+};
diff --git a/keyboards/jj40/keymaps/krusli/config.h b/keyboards/jj40/keymaps/krusli/config.h
index 11cafbefcb..52aaa8f24d 100644
--- a/keyboards/jj40/keymaps/krusli/config.h
+++ b/keyboards/jj40/keymaps/krusli/config.h
@@ -4,5 +4,6 @@
 #include "../../config.h"
 
 #define PREVENT_STUCK_MODIFIERS
+#define TAPPING_TERM 300
 
 #endif
diff --git a/keyboards/jj40/keymaps/krusli/keymap.c b/keyboards/jj40/keymaps/krusli/keymap.c
index 5a985199e4..df692cc484 100644
--- a/keyboards/jj40/keymaps/krusli/keymap.c
+++ b/keyboards/jj40/keymaps/krusli/keymap.c
@@ -11,6 +11,18 @@ enum custom_keycodes {
   RAISE,
 };
 
+void matrix_scan_user(void) {
+  // runs at every matrix scan.
+}
+
+enum {
+  TD_H_E = 0
+};
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [TD_H_E] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END)
+};
+
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 /* Qwerty
  * ,-----------------------------------------------------------------------------------.
@@ -24,10 +36,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_QWERTY] = KEYMAP( \
-  KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
-  KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
-  KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
-  _______, KC_LCTL, KC_LGUI, KC_LALT, MO(_LOWER),  KC_SPC,  MO(_RAISE),   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
+  KC_TAB,     KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \
+  KC_ESC,     KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+  KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT , \
+  TD(TD_H_E), KC_LCTL, KC_LGUI, KC_LALT, MO(_LOWER),  KC_SPC,  MO(_RAISE),   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT \
 ),
 
 /* Lower
diff --git a/keyboards/jj40/keymaps/krusli/rules.mk b/keyboards/jj40/keymaps/krusli/rules.mk
new file mode 100644
index 0000000000..e5ddcae8d9
--- /dev/null
+++ b/keyboards/jj40/keymaps/krusli/rules.mk
@@ -0,0 +1 @@
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/jj40/keymaps/oscillope/keymap.c b/keyboards/jj40/keymaps/oscillope/keymap.c
index 2eaecd7e4a..5d2f400a1b 100644
--- a/keyboards/jj40/keymaps/oscillope/keymap.c
+++ b/keyboards/jj40/keymaps/oscillope/keymap.c
@@ -107,3 +107,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   }
   return true;
 }
+
+
+// Loop
+void matrix_scan_user(void) {
+  // Empty
+};
diff --git a/keyboards/jj40/matrix.c b/keyboards/jj40/matrix.c
index a9e9cb5397..2932976dde 100644
--- a/keyboards/jj40/matrix.c
+++ b/keyboards/jj40/matrix.c
@@ -91,12 +91,6 @@ uint8_t matrix_scan(void) {
     return 1;
 }
 
-void matrix_scan_kb(void) {
-  // Looping keyboard code goes here
-  // This runs every cycle (a lot)
-  matrix_scan_user();
-};
-
 // declarations
 void matrix_set_row_status(uint8_t row) {
     DDRB = (1 << row);
diff --git a/keyboards/jj40/rules.mk b/keyboards/jj40/rules.mk
index 670967fbd9..42b3d11551 100644
--- a/keyboards/jj40/rules.mk
+++ b/keyboards/jj40/rules.mk
@@ -42,7 +42,6 @@ BACKLIGHT_CUSTOM_DRIVER = yes
 
 RGBLIGHT_ENABLE = yes
 RGBLIGHT_CUSTOM_DRIVER = yes
-# DISABLE_WS2812 = no
 
 KEY_LOCK_ENABLE = yes
 
diff --git a/keyboards/niu_mini/keymaps/default/keymap.c b/keyboards/niu_mini/keymaps/default/keymap.c
old mode 100755
new mode 100644
diff --git a/keyboards/niu_mini/keymaps/readme.md b/keyboards/niu_mini/keymaps/readme.md
index 804a657e7c..d4c2bbc805 100644
--- a/keyboards/niu_mini/keymaps/readme.md
+++ b/keyboards/niu_mini/keymaps/readme.md
@@ -18,6 +18,6 @@ When adding your keymap to this list, keep it organised alphabetically (select l
      * **folder_name** description
 
 # List of keymaps
-
 - **default** default layout from KBDFans
+- **mason**
 - **planck** Planck default layout
diff --git a/keyboards/xd60/keymaps/krusli/readme.md b/keyboards/xd60/keymaps/krusli/readme.md
index 7b6bce9c48..aefb23cca3 100644
--- a/keyboards/xd60/keymaps/krusli/readme.md
+++ b/keyboards/xd60/keymaps/krusli/readme.md
@@ -1,2 +1,7 @@
-# krusli's HHKB-style keymap for the XD60
-HHKB-style keymap for the XD60. The board was not built with split backspace but still has Backspace and |\\ swapped.
+# krusli's Keymap for XIUDI's 60% XD60 PCB
+
+## Additional Notes
+Keymap for the XD60 with 2.25u left shift and split backspace. HHKB-like function layer.
+
+## Build
+To build this keymap, simply run `make xd60:krusli` on the top-level directory for QMK.
diff --git a/tmk_core/protocol/lufa/descriptor.c b/tmk_core/protocol/lufa/descriptor.c
index e9f7f87308..bfa91f2551 100644
--- a/tmk_core/protocol/lufa/descriptor.c
+++ b/tmk_core/protocol/lufa/descriptor.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * Copyright 2012 Jun Wako <wakojun@gmail.com>
  * This file is based on:
  *     LUFA-120219/Demos/Device/Lowlevel/KeyboardMouse