summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--keyboards/9key/keymaps/bcat/keymap.c19
-rw-r--r--keyboards/9key/keymaps/bcat/readme.md6
-rw-r--r--keyboards/eco/keymaps/bcat/config.h2
-rw-r--r--keyboards/eco/keymaps/bcat/keymap.c19
-rw-r--r--keyboards/eco/keymaps/bcat/readme.md2
-rw-r--r--keyboards/keebio/bdn9/keymaps/bcat/keymap.c13
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/keymap.c13
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/readme.md2
-rw-r--r--keyboards/lily58/keymaps/bcat/config.h2
-rw-r--r--keyboards/lily58/keymaps/bcat/keymap.c33
-rw-r--r--keyboards/lily58/keymaps/bcat/readme.md2
-rw-r--r--keyboards/lily58/keymaps/bcat/rules.mk2
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c11
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/bcat/readme.md2
-rw-r--r--layouts/community/60_tsangan_hhkb/bcat/keymap.c11
-rw-r--r--layouts/community/60_tsangan_hhkb/bcat/readme.md2
-rw-r--r--layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c13
-rw-r--r--layouts/community/65_ansi_blocker_split_bs/bcat/readme.md2
-rw-r--r--layouts/community/split_3x6_3/bcat/config.h9
-rw-r--r--layouts/community/split_3x6_3/bcat/keymap.c33
-rw-r--r--layouts/community/split_3x6_3/bcat/readme.md2
-rw-r--r--layouts/community/split_3x6_3/bcat/rules.mk4
-rw-r--r--users/bcat/bcat.c10
-rw-r--r--users/bcat/bcat.h36
-rw-r--r--users/bcat/bcat_oled.c216
-rw-r--r--users/bcat/bcat_oled.h55
-rw-r--r--users/bcat/bcat_oled_pet.h73
-rw-r--r--users/bcat/bcat_oled_pet_isda.c134
-rw-r--r--users/bcat/bcat_oled_pet_luna.c168
-rw-r--r--users/bcat/bcat_rgblight.c22
-rwxr-xr-xusers/bcat/compile.sh51
-rw-r--r--users/bcat/config.h79
-rw-r--r--users/bcat/readme.md2
-rw-r--r--users/bcat/rules.mk43
34 files changed, 959 insertions, 134 deletions
diff --git a/keyboards/9key/keymaps/bcat/keymap.c b/keyboards/9key/keymaps/bcat/keymap.c
index 5c08a42a56..944a48c0d3 100644
--- a/keyboards/9key/keymaps/bcat/keymap.c
+++ b/keyboards/9key/keymaps/bcat/keymap.c
@@ -16,22 +16,21 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION,
-};
+#include "bcat.h"
-#define LY_FUNC MO(LAYER_FUNCTION)
-#define KY_LOCK LCA(KC_L) /* Cinnamon lock screen */
+#define KY_LOCK LGUI(KC_L) /* Chrome OS: Lock screen */
+#define KY_MICM LSG(KC_1) /* Meet Shortcuts: Mute mic */
+#define KY_MICU LSG(KC_2) /* Meet Shortcuts: Unmute mic */
+#define KY_RHAND LSG(KC_3) /* Meet Shortcuts: Raise/lower hand */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
[LAYER_DEFAULT] = LAYOUT(
- KC_MPLY, KC_VOLU, KC_MSTP,
- KC_MPRV, KC_VOLD, KC_MNXT,
- KY_LOCK, KC_MUTE, LY_FUNC
+ KC_MPLY, KC_VOLU, KY_RHAND,
+ KY_LOCK, KC_VOLD, KY_MICU,
+ LY_FN1, KC_MUTE, KY_MICM
),
- [LAYER_FUNCTION] = LAYOUT(
+ [LAYER_FUNCTION_1] = LAYOUT(
EEP_RST, _______, RESET,
_______, _______, _______,
_______, _______, _______
diff --git a/keyboards/9key/keymaps/bcat/readme.md b/keyboards/9key/keymaps/bcat/readme.md
index 2dee51de8b..d38ae5463b 100644
--- a/keyboards/9key/keymaps/bcat/readme.md
+++ b/keyboards/9key/keymaps/bcat/readme.md
@@ -1,5 +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).
+This is a super simple PCB-mount macropad with nine keys, used on my
+work-from-home Chromebox for media/volume control and to activate some global
+shortcuts for Google Meet.
diff --git a/keyboards/eco/keymaps/bcat/config.h b/keyboards/eco/keymaps/bcat/config.h
index dffdc7b40a..f2d51c324a 100644
--- a/keyboards/eco/keymaps/bcat/config.h
+++ b/keyboards/eco/keymaps/bcat/config.h
@@ -16,6 +16,8 @@
#pragma once
+#define BCAT_ORTHO_LAYERS
+
/* WS2812B RGB LED strip hand wired to Elite-C. */
#define RGB_DI_PIN B7
#define RGBLED_NUM 15
diff --git a/keyboards/eco/keymaps/bcat/keymap.c b/keyboards/eco/keymaps/bcat/keymap.c
index d46a7d416b..8c50a9ed55 100644
--- a/keyboards/eco/keymaps/bcat/keymap.c
+++ b/keyboards/eco/keymaps/bcat/keymap.c
@@ -18,21 +18,6 @@
#include "bcat.h"
-enum layer {
- LAYER_DEFAULT,
- LAYER_LOWER,
- LAYER_RAISE,
- LAYER_ADJUST,
-};
-
-#define LY_LWR MO(LAYER_LOWER)
-#define LY_RSE MO(LAYER_RAISE)
-
-#define KY_CSPC LCTL(KC_SPC)
-#define KY_ZMIN LCTL(KC_EQL)
-#define KY_ZMOUT LCTL(KC_MINS)
-#define KY_ZMRST LCTL(KC_0)
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
/* Default layer: http://www.keyboard-layout-editor.com/#/gists/2c11371c7a5f7cd08a0132631d3d3281 */
@@ -58,12 +43,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/b18aafa0327d7e83eaf485546c067a21 */
[LAYER_ADJUST] = LAYOUT(
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_VAI, RGB_MOD, RGB_SPI, _______,
_______, _______, _______, KC_MUTE, _______, _______, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, _______
),
// clang-format on
};
-
-layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); }
diff --git a/keyboards/eco/keymaps/bcat/readme.md b/keyboards/eco/keymaps/bcat/readme.md
index 85e2615512..fd9e1bea73 100644
--- a/keyboards/eco/keymaps/bcat/readme.md
+++ b/keyboards/eco/keymaps/bcat/readme.md
@@ -39,6 +39,6 @@ nothing really useful to bind them to anyway.
## Adjust layer
-![Adjust layer layout](https://i.imgur.com/J2rOshm.png)
+![Adjust layer layout](https://i.imgur.com/63vm0ke.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/b18aafa0327d7e83eaf485546c067a21))
diff --git a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
index c64f702b20..2028deb4f1 100644
--- a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
@@ -16,21 +16,16 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_FIRST,
- LAYER_SECOND,
-};
-
-#define LY_SECND MO(LAYER_SECOND)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
- [LAYER_FIRST] = LAYOUT(
- KC_MUTE, LY_SECND, BL_BRTG,
+ [LAYER_DEFAULT] = LAYOUT(
+ KC_MUTE, LY_FN1, BL_BRTG,
KC_F4, KC_F5, KC_F6,
KC_F1, KC_F2, KC_F3
),
- [LAYER_SECOND] = LAYOUT(
+ [LAYER_FUNCTION_1] = LAYOUT(
EEP_RST, _______, RESET,
KC_F10, KC_F11, KC_F12,
KC_F7, KC_F8, KC_F9
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
index d28a5083ac..3dd48623fa 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
@@ -16,12 +16,7 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION,
-};
-
-#define LY_FN MO(LAYER_FUNCTION)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -31,12 +26,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
- KC_LCTL, KC_LGUI, KC_LALT, LY_FN, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, LY_FN1, KC_SPC, KC_SPC, XXXXXXX, KC_RALT, LY_FN1, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */
- [LAYER_FUNCTION] = LAYOUT_65(
+ [LAYER_FUNCTION_1] = 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_CAPS, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RGB_SAI,
+ KC_CAPS, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RGB_SAI,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SAD,
_______, KC_APP, _______, 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 914aa84b6b..59a691654d 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/readme.md
+++ b/keyboards/keebio/quefrency/keymaps/bcat/readme.md
@@ -12,6 +12,6 @@ ESDF cluster), and RGB controls in the function layer (on the arrow/nav keys).
## Function layer
-![Function layer layout](https://i.imgur.com/Fzshl0F.png)
+![Function layer layout](https://i.imgur.com/7oCdN86.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d))
diff --git a/keyboards/lily58/keymaps/bcat/config.h b/keyboards/lily58/keymaps/bcat/config.h
index dbe724d56b..2ee0071bda 100644
--- a/keyboards/lily58/keymaps/bcat/config.h
+++ b/keyboards/lily58/keymaps/bcat/config.h
@@ -16,4 +16,6 @@
#pragma once
+#define BCAT_ORTHO_LAYERS
+
#define EE_HANDS
diff --git a/keyboards/lily58/keymaps/bcat/keymap.c b/keyboards/lily58/keymaps/bcat/keymap.c
index 69af2ca003..a0856d0fdd 100644
--- a/keyboards/lily58/keymaps/bcat/keymap.c
+++ b/keyboards/lily58/keymaps/bcat/keymap.c
@@ -18,20 +18,9 @@
#include "bcat.h"
-enum layer {
- LAYER_DEFAULT,
- LAYER_LOWER,
- LAYER_RAISE,
- LAYER_ADJUST,
-};
-
-#define LY_LWR MO(LAYER_LOWER)
-#define LY_RSE MO(LAYER_RAISE)
-
-#define KY_CSPC LCTL(KC_SPC)
-#define KY_ZMIN LCTL(KC_EQL)
-#define KY_ZMOUT LCTL(KC_MINS)
-#define KY_ZMRST LCTL(KC_0)
+#if defined(OLED_ENABLE)
+# include "bcat_oled.h"
+#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -62,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/8f6a3f08350a9bbe1d414b22bca4e6c7 */
[LAYER_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
@@ -70,4 +59,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
};
-layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); }
+#if defined(OLED_ENABLE)
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return is_keyboard_master() ? OLED_ROTATION_270 : OLED_ROTATION_180; }
+
+void oled_task_keymap(const oled_keyboard_state_t *keyboard_state) {
+ render_oled_layers();
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_indicators(keyboard_state->leds);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_wpm(keyboard_state->wpm);
+ render_oled_pet(/*col=*/0, /*line=*/12, keyboard_state);
+}
+#endif
diff --git a/keyboards/lily58/keymaps/bcat/readme.md b/keyboards/lily58/keymaps/bcat/readme.md
index de03526a8b..8b0e77e1b7 100644
--- a/keyboards/lily58/keymaps/bcat/readme.md
+++ b/keyboards/lily58/keymaps/bcat/readme.md
@@ -37,6 +37,6 @@ back/forward navigation keys.
## Adjust layer
-![Adjust layer layout](https://i.imgur.com/Q3PGsiK.png)
+![Adjust layer layout](https://i.imgur.com/XC2eR2M.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/8f6a3f08350a9bbe1d414b22bca4e6c7))
diff --git a/keyboards/lily58/keymaps/bcat/rules.mk b/keyboards/lily58/keymaps/bcat/rules.mk
index c87b447c1e..62d1007a54 100644
--- a/keyboards/lily58/keymaps/bcat/rules.mk
+++ b/keyboards/lily58/keymaps/bcat/rules.mk
@@ -1 +1,3 @@
+BCAT_OLED_PET = luna
+
BOOTLOADER = atmel-dfu # Elite-C
diff --git a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
index 6bfafc3325..b40148e995 100644
--- a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
@@ -16,14 +16,7 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION_1,
- LAYER_FUNCTION_2,
-};
-
-#define LY_FN1 MO(LAYER_FUNCTION_1)
-#define LY_FN2 MO(LAYER_FUNCTION_2)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -48,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Function 2 layer: http://www.keyboard-layout-editor.com/#/gists/6e1068e4f91bbacccaf5ac0acbeec79c */
[LAYER_FUNCTION_2] = LAYOUT_60_ansi_split_bs_rshift(
_______, 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,
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, BL_INC, _______, RGB_SPI, RGB_HUI, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_TOG,
_______, _______, _______, KC_MUTE, _______, BL_DEC, _______, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md b/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
index 2d578aa3d3..f6bcda9197 100644
--- a/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
+++ b/layouts/community/60_ansi_split_bs_rshift/bcat/readme.md
@@ -19,6 +19,6 @@ layout](https://github.com/qmk/qmk_firmware/tree/master/layouts/community/60_tsa
## Function 2 layer
-![Function 2 layer layout](https://i.imgur.com/vJaCzVo.png)
+![Function 2 layer layout](https://i.imgur.com/DW03vvJ.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/6e1068e4f91bbacccaf5ac0acbeec79c))
diff --git a/layouts/community/60_tsangan_hhkb/bcat/keymap.c b/layouts/community/60_tsangan_hhkb/bcat/keymap.c
index 05e6462d90..9ec75f3c4d 100644
--- a/layouts/community/60_tsangan_hhkb/bcat/keymap.c
+++ b/layouts/community/60_tsangan_hhkb/bcat/keymap.c
@@ -16,14 +16,7 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION_1,
- LAYER_FUNCTION_2,
-};
-
-#define LY_FN1 MO(LAYER_FUNCTION_1)
-#define LY_FN2 MO(LAYER_FUNCTION_2)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -46,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Function 2 layer: http://www.keyboard-layout-editor.com/#/gists/65ac939caec878401603bc36290852d4 */
[LAYER_FUNCTION_2] = LAYOUT_60_tsangan_hhkb(
_______, 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,
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, BL_INC, _______, RGB_SPI, RGB_HUI, RGB_SAI, RGB_RMOD, RGB_MOD, RGB_TOG,
_______, _______, _______, KC_MUTE, _______, BL_DEC, _______, RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/60_tsangan_hhkb/bcat/readme.md b/layouts/community/60_tsangan_hhkb/bcat/readme.md
index b7a3cde5d2..c8d0d72dd0 100644
--- a/layouts/community/60_tsangan_hhkb/bcat/readme.md
+++ b/layouts/community/60_tsangan_hhkb/bcat/readme.md
@@ -39,6 +39,6 @@ and/or blockers, so there aren't switches installed in those positions.
## Function 2 layer
-![Function 2 layer layout](https://i.imgur.com/vdNpFae.png)
+![Function 2 layer layout](https://i.imgur.com/4Jdw9eL.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/65ac939caec878401603bc36290852d4))
diff --git a/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c b/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c
index c91a1b0ead..c099d36e25 100644
--- a/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c
+++ b/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c
@@ -16,12 +16,7 @@
#include QMK_KEYBOARD_H
-enum layer {
- LAYER_DEFAULT,
- LAYER_FUNCTION,
-};
-
-#define LY_FN MO(LAYER_FUNCTION)
+#include "bcat.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -31,13 +26,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_PGUP,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_FN, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, LY_FN1, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44 */
- [LAYER_FUNCTION] = LAYOUT_65_ansi_blocker_split_bs(
+ [LAYER_FUNCTION_1] = LAYOUT_65_ansi_blocker_split_bs(
_______, 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_CAPS, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______,
+ KC_CAPS, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_APP, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/65_ansi_blocker_split_bs/bcat/readme.md b/layouts/community/65_ansi_blocker_split_bs/bcat/readme.md
index 0726cbecee..5777c7c38f 100644
--- a/layouts/community/65_ansi_blocker_split_bs/bcat/readme.md
+++ b/layouts/community/65_ansi_blocker_split_bs/bcat/readme.md
@@ -12,6 +12,6 @@ keys, an HHKB-style (split) backspace, and media controls in the function layer
## Function layer
-![Function layer layout](https://i.imgur.com/CsxfVfd.png)
+![Function layer layout](https://i.imgur.com/s4hS9ZK.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44))
diff --git a/layouts/community/split_3x6_3/bcat/config.h b/layouts/community/split_3x6_3/bcat/config.h
index b8743429cf..556fb90d5f 100644
--- a/layouts/community/split_3x6_3/bcat/config.h
+++ b/layouts/community/split_3x6_3/bcat/config.h
@@ -16,12 +16,13 @@
#pragma once
+#define BCAT_ORTHO_LAYERS
+
#if defined(KEYBOARD_crkbd_rev1)
# define EE_HANDS
-# if defined(RGB_MATRIX_ENABLE)
-/* Limit max RGB LED current to avoid tripping controller fuse. */
-# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+# if defined(OLED_ENABLE)
+# undef OLED_FONT_H
+# define OLED_FONT_H "lib/glcdfont.c"
# endif
#endif
diff --git a/layouts/community/split_3x6_3/bcat/keymap.c b/layouts/community/split_3x6_3/bcat/keymap.c
index 4f68c8f843..cfac93d1e3 100644
--- a/layouts/community/split_3x6_3/bcat/keymap.c
+++ b/layouts/community/split_3x6_3/bcat/keymap.c
@@ -18,20 +18,9 @@
#include "bcat.h"
-enum layer {
- LAYER_DEFAULT,
- LAYER_LOWER,
- LAYER_RAISE,
- LAYER_ADJUST,
-};
-
-#define LY_LWR MO(LAYER_LOWER)
-#define LY_RSE MO(LAYER_RAISE)
-
-#define KY_CSPC LCTL(KC_SPC)
-#define KY_ZMIN LCTL(KC_EQL)
-#define KY_ZMOUT LCTL(KC_MINS)
-#define KY_ZMRST LCTL(KC_0)
+#if defined(OLED_ENABLE)
+# include "bcat_oled.h"
+#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
@@ -58,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee */
[LAYER_ADJUST] = LAYOUT_split_3x6_3(
- _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, RGB_RMOD, RGB_VAD, RGB_VAI, RGB_MOD, RGB_SPI, _______,
_______, _______, _______, KC_MUTE, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______,
_______, _______, _______, RGB_TOG, _______, _______
@@ -66,4 +55,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
};
-layer_state_t layer_state_set_keymap(layer_state_t state) { return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); }
+#if defined(OLED_ENABLE)
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return is_keyboard_master() ? OLED_ROTATION_270 : OLED_ROTATION_180; }
+
+void oled_task_keymap(const oled_keyboard_state_t *keyboard_state) {
+ render_oled_layers();
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_indicators(keyboard_state->leds);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ oled_advance_page(/*clearPageRemainder=*/false);
+ render_oled_wpm(keyboard_state->wpm);
+ render_oled_pet(/*col=*/0, /*line=*/12, keyboard_state);
+}
+#endif
diff --git a/layouts/community/split_3x6_3/bcat/readme.md b/layouts/community/split_3x6_3/bcat/readme.md
index c4bf891c40..b7b5d3de7d 100644
--- a/layouts/community/split_3x6_3/bcat/readme.md
+++ b/layouts/community/split_3x6_3/bcat/readme.md
@@ -117,7 +117,7 @@ better location.
## Adjust layer
-![Adjust layer layout](https://i.imgur.com/fZouko5.png)
+![Adjust layer layout](https://i.imgur.com/Q4rN6cQ.png)
([KLE](http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee))
diff --git a/layouts/community/split_3x6_3/bcat/rules.mk b/layouts/community/split_3x6_3/bcat/rules.mk
index 5ee614b192..29e52b92db 100644
--- a/layouts/community/split_3x6_3/bcat/rules.mk
+++ b/layouts/community/split_3x6_3/bcat/rules.mk
@@ -1,5 +1,9 @@
+BCAT_OLED_PET = luna
+
ifeq ($(strip $(KEYBOARD)), crkbd/rev1)
BOOTLOADER = atmel-dfu # Elite-C
+ OLED_ENABLE = yes # dual 128x32 OLED screens
+ OLED_DRIVER = SSD1306
RGB_MATRIX_ENABLE = yes # per-key RGB and underglow
endif
diff --git a/users/bcat/bcat.c b/users/bcat/bcat.c
index f21d282e43..3a407cfac0 100644
--- a/users/bcat/bcat.c
+++ b/users/bcat/bcat.c
@@ -16,16 +16,15 @@
#include "bcat.h"
-#if defined(RGBLIGHT_ENABLE)
-/* Adjust RGB static hue ranges for shorter gradients than default. */
-const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 127, 63, 31, 15};
-#endif
+#include "quantum.h"
static int8_t alt_tab_layer = -1;
+__attribute__((weak)) void process_record_oled(uint16_t keycode, const keyrecord_t *record) {}
__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ process_record_oled(keycode, record);
if (!process_record_keymap(keycode, record)) {
return false;
}
@@ -51,6 +50,9 @@ __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state)
layer_state_t layer_state_set_user(layer_state_t state) {
state = layer_state_set_keymap(state);
+#if defined(BCAT_ORTHO_LAYERS)
+ state = update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST);
+#endif
if (alt_tab_layer >= 0 && !layer_state_cmp(state, alt_tab_layer)) {
unregister_code(KC_LALT);
alt_tab_layer = -1;
diff --git a/users/bcat/bcat.h b/users/bcat/bcat.h
index 0dae774ec5..4a88acba7d 100644
--- a/users/bcat/bcat.h
+++ b/users/bcat/bcat.h
@@ -16,9 +16,43 @@
#pragma once
-#include "quantum.h"
+#include <stdbool.h>
+#include "keymap.h"
+
+/* Layer numbers shared across keymaps. */
+enum user_layer {
+ /* Base layers: */
+ LAYER_DEFAULT,
+
+#if defined(BCAT_ORTHO_LAYERS)
+ /* Function layers for ortho (and ergo) boards: */
+ LAYER_LOWER,
+ LAYER_RAISE,
+ LAYER_ADJUST,
+#else
+ /* Function layers for traditional boards: */
+ LAYER_FUNCTION_1,
+ LAYER_FUNCTION_2,
+#endif
+};
+
+/* Custom keycodes shared across keymaps. */
enum user_keycode {
MC_ALTT = SAFE_RANGE,
KEYMAP_SAFE_RANGE,
};
+
+/* Keycode aliases shared across keymaps. */
+#define KY_CSPC LCTL(KC_SPC)
+#define KY_ZMIN LCTL(KC_EQL)
+#define KY_ZMOUT LCTL(KC_MINS)
+#define KY_ZMRST LCTL(KC_0)
+
+#if defined(BCAT_ORTHO_LAYERS)
+# define LY_LWR MO(LAYER_LOWER)
+# define LY_RSE MO(LAYER_RAISE)
+#else
+# define LY_FN1 MO(LAYER_FUNCTION_1)
+# define LY_FN2 MO(LAYER_FUNCTION_2)
+#endif
diff --git a/users/bcat/bcat_oled.c b/users/bcat/bcat_oled.c
new file mode 100644
index 0000000000..390c9127b4
--- /dev/null
+++ b/users/bcat/bcat_oled.c
@@ -0,0 +1,216 @@
+/* Copyright 2021 Jonathan Rascher
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "bcat_oled.h"
+
+#include "quantum.h"
+#include "bcat.h"
+
+#if defined(BCAT_OLED_PET)
+# include "bcat_oled_pet.h"
+#endif
+
+#define TRIANGLE_UP 0x1e
+#define TRIANGLE_DOWN 0x1f
+
+#if defined(BCAT_OLED_PET)
+static bool oled_pet_should_jump = false;
+#endif
+
+/* Should be overridden by the keymap to render the OLED contents. For split
+ * keyboards, this function is only called on the master side.