diff --git a/keyboards/9key/keymaps/bcat/keymap.c b/keyboards/9key/keymaps/bcat/keymap.c
new file mode 100644
index 000000000..c42bc76c2
--- /dev/null
+++ b/keyboards/9key/keymaps/bcat/keymap.c
@@ -0,0 +1,26 @@
+#include QMK_KEYBOARD_H
+
+enum layer {
+    LAYER_DEFAULT,
+    LAYER_FUNCTION,
+};
+
+/* Switch to function layer when held. */
+#define LY_FUNC MO(LAYER_FUNCTION)
+
+/* Send Ctrl+Alt+L (Cinnamon screen lock shortcut) when pressed. */
+#define KY_LOCK LCA(KC_L)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [LAYER_DEFAULT] = LAYOUT(
+        KC_MPLY,  KC_VOLU,  KC_MSTP,
+        KC_MPRV,  KC_VOLD,  KC_MNXT,
+        KY_LOCK,  KC_MUTE,  LY_FUNC
+    ),
+
+    [LAYER_FUNCTION] = LAYOUT(
+        EEP_RST,  _______,  RESET,
+        _______,  _______,  _______,
+        _______,  _______,  _______
+    ),
+};
diff --git a/keyboards/9key/keymaps/bcat/readme.md b/keyboards/9key/keymaps/bcat/readme.md
new file mode 100644
index 000000000..2dee51de8
--- /dev/null
+++ b/keyboards/9key/keymaps/bcat/readme.md
@@ -0,0 +1,5 @@
+# bcat's 9-Key layout
+
+This is a super simple PCB-mount macropad with nine keys, used at work for
+media keys and quick access to screen lock on Linux (Cinnamon desktop
+environment).
diff --git a/keyboards/9key/keymaps/bcat/rules.mk b/keyboards/9key/keymaps/bcat/rules.mk
new file mode 100644
index 000000000..0ecc2bd66
--- /dev/null
+++ b/keyboards/9key/keymaps/bcat/rules.mk
@@ -0,0 +1 @@
+BOOTLOADER = caterina  # Pro Micro
diff --git a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
index 3507aaede..7eab72173 100644
--- a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
@@ -11,14 +11,14 @@ enum layer {
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     /* First layer (F1-F6) */
     [LAYER_FIRST] = LAYOUT(
-        KC_MUTE,  LY_SECND, BL_TOGG,
+        KC_MUTE,  LY_SECND, BL_BRTG,
         KC_F4,    KC_F5,    KC_F6,
         KC_F1,    KC_F2,    KC_F3
     ),
 
     /* Second layer (F7-F12) */
     [LAYER_SECOND] = LAYOUT(
-        _______,  _______,  _______,
+        EEP_RST,  _______,  RESET,
         KC_F10,   KC_F11,   KC_F12,
         KC_F7,    KC_F8,    KC_F9
     ),
diff --git a/users/bcat/config.h b/users/bcat/config.h
index 7d4200895..990fda68c 100644
--- a/users/bcat/config.h
+++ b/users/bcat/config.h
@@ -1,36 +1,66 @@
-/* Delay between tap_code register and unregister to fix flaky media keys. */
+/* Wait between tap_code register and unregister to fix flaky media keys. */
 #undef TAP_CODE_DELAY
 
-#define TAP_CODE_DELAY 10
+#define TAP_CODE_DELAY 20
 
-/* Turn off RGB lighting when the host goes to sleep. */
-#define RGBLIGHT_SLEEP
+#if defined(RGBLIGHT_ENABLE)
+  /* Turn off RGB underglow 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
+  /* Keep RGB underglow level increments consistent across keyboards. */
+  #undef RGBLIGHT_HUE_STEP
+  #undef RGBLIGHT_SAT_STEP
+  #undef RGBLIGHT_VAL_STEP
 
-#define BACKLIGHT_LEVELS 7
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
+  #define RGBLIGHT_HUE_STEP 8
+  #define RGBLIGHT_SAT_STEP 17
+  #define RGBLIGHT_VAL_STEP 17
+#endif
 
-/* Make mouse operation smoother. */
-#undef MOUSEKEY_DELAY
-#undef MOUSEKEY_INTERVAL
+#if defined(BACKLIGHT_ENABLE)
+  /* Enable backlight breathing across the board. */
+  #define BACKLIGHT_BREATHING
 
-#define MOUSEKEY_DELAY 0
-#define MOUSEKEY_INTERVAL 16
+  /* Keep backlight level increments consistent across keyboards. */
+  #undef BACKLIGHT_LEVELS
 
-/* 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 BACKLIGHT_LEVELS 7
+#endif
 
-#define MOUSEKEY_MAX_SPEED 7
-#define MOUSEKEY_TIME_TO_MAX 150
-#define MOUSEKEY_WHEEL_MAX_SPEED 3
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 150
+#if defined(MOUSEKEY_ENABLE)
+  /* 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
+#endif
+
+#if defined(KEYBOARD_cannonkeys_instant60)
+  /*
+   * Work around EEPROM incompatibility with VIA:
+   * https://github.com/qmk/qmk_firmware/issues/6589#issuecomment-524042457.
+   */
+  #undef EEPROM_MAGIC_ADDR
+  #undef EEPROM_VERSION_ADDR
+  #undef DYNAMIC_KEYMAP_EEPROM_ADDR
+  #undef EEPROM_CUSTOM_BACKLIGHT
+  #undef DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR
+
+  #define EEPROM_MAGIC_ADDR 34
+  #define EEPROM_VERSION_ADDR 36
+  #define DYNAMIC_KEYMAP_EEPROM_ADDR 37
+  #define EEPROM_CUSTOM_BACKLIGHT 637
+  #define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 638
+#endif
diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk
index 59f82709a..407729c82 100644
--- a/users/bcat/rules.mk
+++ b/users/bcat/rules.mk
@@ -9,3 +9,5 @@ EXTRAKEY_ENABLE = yes
 CONSOLE_ENABLE = no
 COMMAND_ENABLE = no
 NKRO_ENABLE = no
+UNICODE_ENABLE = no
+API_SYSEX_ENABLE = no