From fcb56534111652b9fa19d9d8e7bce635c7a63eb6 Mon Sep 17 00:00:00 2001
From: Jonathan Rascher <jon@bcat.name>
Date: Wed, 22 May 2019 23:08:48 -0500
Subject: [PATCH] [Keymap] Switch Quefrency keymap from I2C back to serial;
 factor common configs into userspace (#5951)

* Switch Quefrency from flaky I2C back to serial

* Lower mouse wheel speed on Quefrency slightly

* Migrate common settings to userspace

* Enable Bootmagic Lite for consistent reset to bootloader.

* Turn off some undesired features across all keyboards.

* Remove EEPROM reset keybinding from all keyboards since Bootmagic Lite
also does an EEPROM reset.

* Set backlight and underglow increments consistently across all
keyboards since lots of them like to override the deafults.

* Set mouse keys consistently across all keyboards.

* Update function layer keymap images
---
 .../kbd67/hotswap/keymaps/bcat/keymap.c       |  2 +-
 .../kbd67/hotswap/keymaps/bcat/readme.md      |  2 +-
 .../keebio/quefrency/keymaps/bcat/config.h    | 28 ++++++++---------
 .../keebio/quefrency/keymaps/bcat/keymap.c    |  2 +-
 .../keebio/quefrency/keymaps/bcat/readme.md   |  2 +-
 .../keebio/quefrency/keymaps/bcat/rules.mk    |  2 --
 users/bcat/config.h                           | 31 +++++++++++++++++++
 users/bcat/rules.mk                           | 11 +++++++
 8 files changed, 59 insertions(+), 21 deletions(-)
 create mode 100644 users/bcat/config.h
 create mode 100644 users/bcat/rules.mk

diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c
index ab2cfa80a2..6cb6afaea6 100644
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     /* Function layer: http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44 */
     [LAYER_FUNCTION] = 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_INS,   KC_DEL,   _______,
-        _______,  KC_MPLY,  KC_VOLU,  KC_MSTP,  _______,  _______,  EEP_RST,  _______,  KC_PSCR,  KC_SLCK,  KC_PAUS,  _______,  _______,  _______,  _______,
+        _______,  KC_MPLY,  KC_VOLU,  KC_MSTP,  _______,  _______,  _______,  _______,  KC_PSCR,  KC_SLCK,  KC_PAUS,  _______,  _______,  _______,  _______,
         KC_CAPS,  KC_MPRV,  KC_VOLD,  KC_MNXT,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
         _______,  _______,  KC_MUTE,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
         _______,  _______,  _______,  _______,  KC_APP,   _______,  _______,  _______,  _______
diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md
index 0aa6fa1366..d1779152f8 100644
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/bcat/readme.md
@@ -10,4 +10,4 @@ cluster.
 
 ## Function layer
 
-![Function layer layout](https://i.imgur.com/KScatX6.png)
+![Function layer layout](https://i.imgur.com/urDnuTC.png)
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/config.h b/keyboards/keebio/quefrency/keymaps/bcat/config.h
index 528cfd39ad..c9e836597a 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/config.h
+++ b/keyboards/keebio/quefrency/keymaps/bcat/config.h
@@ -1,10 +1,18 @@
 #pragma once
 
-/* Use I2C rather than serial communicaiton to reduce latency. */
-#define USE_I2C
-
-/* Turn off RGB lighting when the host goes to sleep. */
-#define RGBLIGHT_SLEEP
+/*
+ * I2C seems to randomly drop keystrokes. Not sure why. It seems a bit like
+ * https://github.com/qmk/qmk_firmware/issues/5037, but that issue is closed,
+ * and our problems happen even with underglow disabled.
+ *
+ * This issue occurs with multiple TRRS cables of different lengths from
+ * different companies, so it's most likely not a cable issue.  It may be that
+ * we are running into issues with long I2C runs, in which case stronger
+ * pull-up resistors might help:
+ * https://hackaday.com/2017/02/08/taking-the-leap-off-board-an-introduction-to-i2c-over-long-wires/.
+ * For now, just don't use I2C.
+ */
+#define USE_SERIAL
 
 /* Use an extra LED on the right side since it's wider on the 65% PCB. */
 #undef RGBLED_NUM
@@ -12,13 +20,3 @@
 
 /* Set up RGB lighting so it works with either side as master. */
 #define RGBLED_SPLIT { 8, 9 }
-
-/* Make mouse operation smoother. */
-#define MOUSEKEY_DELAY 0
-#define MOUSEKEY_INTERVAL 16
-
-/* Lower mouse speed to adjust for reduced MOUSEKEY_INTERVAL. */
-#define MOUSEKEY_MAX_SPEED 7
-#define MOUSEKEY_TIME_TO_MAX 150
-#define MOUSEKEY_WHEEL_MAX_SPEED 4
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 150
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
index 80e9345770..fc66ff1013 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     /* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */
     [LAYER_FUNCTION] = LAYOUT_65(
         _______,  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_INS,   KC_DEL,   RGB_HUI,
-        _______,  KC_MPLY,  KC_VOLU,  KC_MSTP,  _______,  _______,  EEP_RST,  _______,  KC_PSCR,  KC_SLCK,  KC_PAUS,  _______,  _______,  _______,  RGB_SAI,
+        _______,  KC_MPLY,  KC_VOLU,  KC_MSTP,  _______,  _______,  _______,  _______,  KC_PSCR,  KC_SLCK,  KC_PAUS,  _______,  _______,  _______,  RGB_SAI,
         KC_CAPS,  KC_MPRV,  KC_VOLD,  KC_MNXT,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  RGB_TOG,  RGB_SAD,
         _______,  _______,  KC_MUTE,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  RGB_VAI,  RGB_HUD,
         _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  RGB_RMOD, RGB_VAD,  RGB_MOD
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/readme.md b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
index 51e5f25987..2e9e0f6d76 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/readme.md
+++ b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
@@ -10,7 +10,7 @@ cluster, and mouse keys on their own layer centered around the arrow cluster.
 
 ## Function layer
 
-![Function layer layout](https://i.imgur.com/ISklbfF.png)
+![Function layer layout](https://i.imgur.com/4R1F72M.png)
 
 ## Mouse layer
 
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/rules.mk b/keyboards/keebio/quefrency/keymaps/bcat/rules.mk
index 274e217ca8..c87b447c1e 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/rules.mk
+++ b/keyboards/keebio/quefrency/keymaps/bcat/rules.mk
@@ -1,3 +1 @@
 BOOTLOADER = atmel-dfu  # Elite-C
-
-MOUSEKEY_ENABLE = yes
diff --git a/users/bcat/config.h b/users/bcat/config.h
new file mode 100644
index 0000000000..a29aded713
--- /dev/null
+++ b/users/bcat/config.h
@@ -0,0 +1,31 @@
+/* Turn off RGB lighting when the host goes to sleep. */
+#define RGBLIGHT_SLEEP
+
+/* Keep backlight and RGB level increments consistent across keyboards. */
+#undef BACKLIGHT_LEVELS
+#undef RGBLIGHT_HUE_STEP
+#undef RGBLIGHT_SAT_STEP
+#undef RGBLIGHT_VAL_STEP
+
+#define BACKLIGHT_LEVELS 7
+#define RGVLIGHT_HUE_STEP 8
+#define RGVLIGHT_SAT_STEP 17
+#define RGVLIGHT_VAL_STEP 17
+
+/* Make mouse operation smoother. */
+#undef MOUSEKEY_DELAY
+#undef MOUSEKEY_INTERVAL
+
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_INTERVAL 16
+
+/* Lower mouse speed to adjust for reduced MOUSEKEY_INTERVAL. */
+#undef MOUSEKEY_MAX_SPEED
+#undef MOUSEKEY_TIME_TO_MAX
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_TIME_TO_MAX 150
+#define MOUSEKEY_WHEEL_MAX_SPEED 3
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 150
diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk
new file mode 100644
index 0000000000..59f82709ad
--- /dev/null
+++ b/users/bcat/rules.mk
@@ -0,0 +1,11 @@
+# Enable Bootmagic Lite to consistently reset to bootloader and clear EEPROM.
+BOOTMAGIC_ENABLE = lite
+
+# Enable mouse and media keys on all keyboards.
+MOUSEKEY_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+
+# Disable some unwanted features on all keyboards.
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+NKRO_ENABLE = no