summaryrefslogtreecommitdiff
path: root/keyboards/crkbd
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/crkbd')
-rw-r--r--keyboards/crkbd/crkbd.h4
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/README.md7
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/config.h60
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/keymap.c489
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/rules.mk15
-rw-r--r--keyboards/crkbd/keymaps/default/config.h21
-rw-r--r--keyboards/crkbd/keymaps/default/rules.mk7
-rwxr-xr-xkeyboards/crkbd/keymaps/ericgebhart/config.h24
-rwxr-xr-xkeyboards/crkbd/keymaps/ericgebhart/keymap.c60
-rw-r--r--keyboards/crkbd/keymaps/mb_via/config.h26
-rw-r--r--keyboards/crkbd/keymaps/mb_via/keymap.c71
-rw-r--r--keyboards/crkbd/keymaps/mb_via/readme.md12
-rw-r--r--keyboards/crkbd/keymaps/mb_via/rules.mk3
-rw-r--r--keyboards/crkbd/keymaps/soundmonster/config.h30
-rw-r--r--keyboards/crkbd/keymaps/soundmonster/keymap.c45
-rw-r--r--keyboards/crkbd/keymaps/soundmonster/rules.mk5
-rw-r--r--keyboards/crkbd/keymaps/via/config.h24
-rw-r--r--keyboards/crkbd/keymaps/via/rules.mk12
-rw-r--r--keyboards/crkbd/post_config.h6
-rw-r--r--keyboards/crkbd/r2g/config.h78
-rw-r--r--keyboards/crkbd/r2g/r2g.c240
-rw-r--r--keyboards/crkbd/r2g/r2g.h60
-rw-r--r--keyboards/crkbd/r2g/readme.md28
-rw-r--r--keyboards/crkbd/r2g/rules.mk9
-rw-r--r--keyboards/crkbd/readme.md6
-rw-r--r--keyboards/crkbd/rev1/config.h4
-rw-r--r--keyboards/crkbd/rules.mk5
27 files changed, 1262 insertions, 89 deletions
diff --git a/keyboards/crkbd/crkbd.h b/keyboards/crkbd/crkbd.h
index 4ba9397043..3fae1a400c 100644
--- a/keyboards/crkbd/crkbd.h
+++ b/keyboards/crkbd/crkbd.h
@@ -20,5 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef KEYBOARD_crkbd_rev1
# include "rev1.h"
#endif
+#ifdef KEYBOARD_crkbd_r2g
+# include "r2g.h"
+#endif
+
#include "quantum.h"
diff --git a/keyboards/crkbd/keymaps/ardakilic/README.md b/keyboards/crkbd/keymaps/ardakilic/README.md
new file mode 100644
index 0000000000..5e620f03f0
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ardakilic/README.md
@@ -0,0 +1,7 @@
+# Ardakilic's Corne Layout
+
+This layout is optimised to use Turkish characters on Corne on macOS.
+
+Also, some size optimisations enabled in `rules.mk` and `config.h`.
+
+Bongo cat animation implemented from: https://github.com/nwii/oledbongocat
diff --git a/keyboards/crkbd/keymaps/ardakilic/config.h b/keyboards/crkbd/keymaps/ardakilic/config.h
new file mode 100644
index 0000000000..7a3bb76b38
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ardakilic/config.h
@@ -0,0 +1,60 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+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/>.
+*/
+
+#pragma once
+
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+
+#define SPLIT_WPM_ENABLE
+
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 200
+#define PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+#define RETRO_TAPPING
+
+
+
+#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
+
+// size optimisations
+// #define NO_DEBUG
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* CONSOLE_ENABLE = no achieves this
+// Size optimisations
+#ifndef NO_DEBUG
+#define NO_DEBUG
+#endif // !NO_DEBUG
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
+#define NO_PRINT
+#endif // !NO_PRINT
+
+#define NO_ACTION_ONESHOT
+// Size optimisations END
+*/
diff --git a/keyboards/crkbd/keymaps/ardakilic/keymap.c b/keyboards/crkbd/keymaps/ardakilic/keymap.c
new file mode 100644
index 0000000000..a611c59223
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ardakilic/keymap.c
@@ -0,0 +1,489 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Arda Kilicdagi <GH: @ardakilic, TW: @ardadev>
+
+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 QMK_KEYBOARD_H
+
+// Layers
+enum {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _SPACE,
+ _NUMPAD,
+ _SODA,
+ _ADJUST
+};
+
+//KC_NONUS_BSLASH (\|) is equivalent to ["é] key in Turkish keyboards.
+//KC_GRV (~ `) is equivalent to [<>|] key in Turkish keyboards.
+// KC_SCLN is Turkish s [şŞ] key
+// KC_QUOT is Turkish i [iİ] key
+// KC_COMM is Turkish o [öÖ] key
+// KC_DOT is Turkish c [çÇ] key
+
+// Custom shortcuts specific to Turkish layout
+#define CURLY_OPEN RALT(KC_7)
+#define CURLY_CLOSE RALT(KC_0)
+#define SQUARE_OPEN RALT(KC_8)
+#define SQUARE_CLOSE RALT(KC_9)
+#define DOLLAR_SIGN RALT(KC_4)
+#define BACKSLASH RALT(KC_MINS)
+#define VERTICAL_PIPE RALT(KC_EQL)
+#define BACKTICK RALT(KC_BSLS)
+#define TILDE RALT(KC_RBRC)
+#define NUMBER_SIGN RALT(KC_3) //hashtag sign
+#define LOCKSCREEN LCTL(LSFT(KC_POWER)) // Screen Lock shortcut for OSX
+
+/*
+// Unicode Turkish characters, in case it's needed
+enum {
+ TR_C, // ç
+ TR_C_L, // Ç
+ TR_I, // ı
+ TR_I_L, // İ
+ TR_G, // ğ
+ TR_G_L, // Ğ
+ TR_S, // ş
+ TR_S_L, // Ş
+ TR_U, // ü
+ TR_U_L, // Ü
+ TR_O, // ö
+ TR_O_L, // Ö
+};
+
+// clang-format off
+const uint32_t PROGMEM unicode_map[] = {
+ [TR_C] = 0x00c7,
+ [TR_C_L] = 0x00e7,
+ [TR_I] = 0x0130,
+ [TR_I_L] = 0x0131,
+ [TR_G] = 0x011e,
+ [TR_G_L] = 0x011f,
+ [TR_S] = 0x015e,
+ [TR_S_L] = 0x015f,
+ [TR_U] = 0x00dc,
+ [TR_U_L] = 0x00fc,
+ [TR_O] = 0x00d6,
+ [TR_O_L] = 0x00f6,
+};
+// clang-format on
+*/
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * BASE LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | NpdESC | A | S | D | F | G | | H | J | K | L | Ş | İ |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | SftCaps| Z | X | C | V | B | | N | M | Ö | Ç | . | CtlEnt|
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | OS|. | Lwr|, | Space*| |Sda|Ent|Raise|"| LAlt|.|
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_QWERTY] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LT(_NUMPAD, KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ LSFT_T(KC_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, LCTL_T(KC_ENT), /*KC_ENT*/
+ LGUI_T(KC_SLSH), LT(_LOWER, KC_BSLS),LT(_SPACE, KC_SPC), LT(_SODA, KC_ENT), LT(_RAISE, KC_NONUS_BSLASH), LALT_T(KC_SLSH)
+
+ ),
+
+/*
+ * LOWER LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | > | ! | ' | ^ | + | % | | & | / | ( | ) | = | Bksp |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | F1 | F2 | F3 | F4 | F5 | F6 | | "$" | ? | _ | Ğ | Ü | - |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | F7 | F8 | F9 | F10 | F11 | F12 | | "[" | "]" | "{" | "}" | < | ">" |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | | ADJUST| |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_LOWER] = LAYOUT_split_3x6_3(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, DOLLAR_SIGN, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_EQL,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, SQUARE_OPEN, SQUARE_CLOSE, CURLY_OPEN, CURLY_CLOSE, KC_GRV, LSFT(KC_GRV),
+ _______, _______, _______, _______, MO(_ADJUST), _______
+ ),
+
+/*
+ * RAISE LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | Tab | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | F1 | F2 | F3 | F4 | F5 | F6 | | | * | - | "\" | "|" | , |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | F7 | F8 | F9 | F10 | F11 | F12 | | ' | # | " | "~" | "`" | <>| |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | | | |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_RAISE] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_MINS, KC_EQL, BACKSLASH, VERTICAL_PIPE, KC_BSLS,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_AT, NUMBER_SIGN, KC_NUBS, TILDE, BACKTICK, KC_GRV,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ * SPACE LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | | CMD+1 | CMD+2 | CMD+3 | CMD+4 | CMD+5 | | CMD+6 | CMD+7 | CMD+8 | CMD+9 | CMD+0 | LCKOSX|
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | Brght▼ | Brght▲ | | | | | Left | Down | Up | Right | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | | | | | | | | Prev | Next | Vol- | Vol+ | Play |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | | | |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_SPACE] = LAYOUT_split_3x6_3(
+ _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LOCKSCREEN,
+ _______, KC_BRMD, KC_BRMU, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ * NUMPAD LAYER
+ * KC_PDOT is comma on the Turkish layout ¯\_(ツ)_/¯
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | | | | | | | | = | Num7 | Num8 | Num9 | - | Bksp |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | | | | | | | . | Num4 | Num5 | Num6 | + | * |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | | | | | | | , | Num1 | Num2 | Num3 | . | / |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | Ent | Num0 | Num0 |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_NUMPAD] = LAYOUT_split_3x6_3(
+ _______, _______, _______, _______, _______, _______, KC_PEQL, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_BSPC,
+ _______, _______, _______, _______, _______, _______, KC_SLSH, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_PAST,
+ _______, _______, _______, _______, _______, _______, KC_PDOT, KC_P1, KC_P2, KC_P3, KC_SLSH, KC_PSLS,
+ _______, _______, _______, KC_PENT, KC_P0, KC_P0
+ ),
+
+
+ /*
+ * SODA LAYER
+ * KC_PDOT is comma on the Turkish layout ¯\_(ツ)_/¯
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | | | Up | | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | Left | Down | Right | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | | | | | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | | | | | | | |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_SODA] = LAYOUT_split_3x6_3(
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+
+
+/*
+ * ADJUST LAYER
+ [_TPL] = LAYOUT_wrapper( \
+ //,-----------------------------------------------------. ,----------------------------------------------------.
+ | RESET | EEPRST | | | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | RGBTog | HUE▲ | SAT▲ | BRGHT▲ | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ | RGBMOD | HUE▼ | SAt▼ | BRGHT▼ | | | | | | | | | |
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
+ ,-----------------------, ,-----------------------.
+ | OS | | Space | | Ent | | ALT |
+ /|-------+-------+-------' +-------+-------+-------|\
+ ),
+*/
+ [_ADJUST] = LAYOUT_split_3x6_3(
+ RESET, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ )
+};
+
+
+#ifdef OLED_ENABLE
+// #include <stdio.h>
+
+// bongo cat
+// Taken from
+// https://github.com/nwii/oledbongocat
+// char wpm_str[10]; // sprintf changed with more optimized code
+
+
+// WPM-responsive animation stuff here
+# define IDLE_FRAMES 5
+# define IDLE_SPEED 20 // below this wpm value your animation will idle
+
+// #define PREP_FRAMES 1 // uncomment if >1
+
+# define TAP_FRAMES 2
+# define TAP_SPEED 40 // above this wpm value typing animation to trigger
+
+# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
+# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+uint32_t anim_timer = 0;
+uint32_t anim_sleep = 0;
+uint8_t current_idle_frame = 0;
+// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
+uint8_t current_tap_frame = 0;
+
+// Code containing pixel art, contains:
+// 5 idle frames, 1 prep frame, and 2 tap frames
+
+// To make your own pixel art:
+// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw )
+// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display-
+// replace numbers in brackets with your own
+// if you start getting errors when compiling make sure you didn't accedentally delete a bracket
+static void render_anim(void) {
+ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
+ static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
+ static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ };
+
+ // assumes 1 frame prep stage
+ void animation_phase(void) {
+ if (get_current_wpm() <= IDLE_SPEED) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
+ }
+ if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
+ // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
+ oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
+ }
+ if (get_current_wpm() >= TAP_SPEED) {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
+ }
+ }
+ if (get_current_wpm() != 000) {
+ oled_on(); // not essential but turns on animation OLED with any alpha keypress
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ anim_sleep = timer_read32();
+ } else {
+ if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ }
+ }
+}
+
+// bongop cat
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ }
+ return rotation;
+}
+
+
+void oled_render_layer_state(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_ln_P(PSTR("Default"), false);
+ break;
+ case _LOWER:
+ oled_write_ln_P(PSTR("Lower"), false);
+ break;
+ case _RAISE:
+ oled_write_ln_P(PSTR("Raise"), false);
+ break;
+ case _SPACE:
+ oled_write_ln_P(PSTR("Space"), false);
+ break;
+ case _NUMPAD:
+ oled_write_ln_P(PSTR("Numpad"), false);
+ break;
+ case _SODA:
+ oled_write_ln_P(PSTR("Soda"), false);
+ break;
+ case _ADJUST:
+ // case _ADJUST|_LOWER:
+ // case _ADJUST|_RAISE:
+ // case _ADJUST|_LOWER|_RAISE:
+ // case _ADJUST|_LOWER|_RAISE|_SPACE:
+ // case _ADJUST|_LOWER|_RAISE|_SPACE|_NUMPAD|_SODA:
+ oled_write_ln_P(PSTR("Adjust"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("?????"), false);
+ }
+}
+
+
+char keylog_str[24] = {};
+
+const char code_to_name[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
+ '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+void set_keylog(uint16_t keycode, keyrecord_t *record) {
+ char name = ' ';
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+ (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
+ if (keycode < 60) {
+ name = code_to_name[keycode];
+ }
+
+ // update keylog
+ snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
+ record->event.key.row, record->event.key.col,
+ keycode, name);
+}
+
+void oled_render_keylog(void) {
+ oled_write(keylog_str, false);
+}
+
+void render_bootmagic_status(bool status) {
+ /* Show Ctrl-Gui Swap options */
+ static const char PROGMEM logo[][2][3] = {
+ {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
+ {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
+ };
+ if (status) {
+ oled_write_ln_P(logo[0][0], false);
+ oled_write_ln_P(logo[0][1], false);
+ } else {
+ oled_write_ln_P(logo[1][0], false);
+ oled_write_ln_P(logo[1][1], false);
+ }
+}
+
+// void oled_render_logo(void) {
+// static const char PROGMEM crkbd_logo[] = {
+// 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
+// 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
+// 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
+// 0};
+// oled_write_P(crkbd_logo, false);
+// }
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ oled_render_layer_state();
+ oled_render_keylog();
+ } else {
+ // bongo cat
+ render_anim(); // renders pixelart
+
+ oled_set_cursor(0, 0); // sets cursor to (row, column) using charactar spacing (5 rows on 128x32 screen, anything more will overflow back to the top)
+ // sprintf(wpm_str, "WPM:%03d", get_current_wpm()); // edit the string to change wwhat shows up, edit %03d to change how many digits show up
+ // oled_write(wpm_str, false); // writes wpm on top left corner of string
+
+ // This way it's more size efficient than calling sprintf
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // This way it's more size efficient than calling sprintf
+
+ led_t led_state = host_keyboard_led_state(); // caps lock stuff, prints CAPS on new line if caps led is on
+
+ oled_set_cursor(0, 1);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
+ // bongo cat
+
+ //oled_render_logo();
+ }
+ return false;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ set_keylog(keycode, record);
+ }
+ return true;
+}
+#endif // OLED_DRIVER_ENABLE
diff --git a/keyboards/crkbd/keymaps/ardakilic/rules.mk b/keyboards/crkbd/keymaps/ardakilic/rules.mk
new file mode 100644
index 0000000000..0453ca573a
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ardakilic/rules.mk
@@ -0,0 +1,15 @@
+OLED_ENABLE = yes
+EXTRAKEY_ENABLE = yes # for media keys
+
+# bongo cat
+WPM_ENABLE = yes
+# bongo cat
+
+# Size optimisations
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+LTO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+GRAVE_ESCAPE_ENABLE = no
+MOUSEKEY_ENABLE = no
+# Size optimisations END
diff --git a/keyboards/crkbd/keymaps/default/config.h b/keyboards/crkbd/keymaps/default/config.h
index 937d67e25f..8f4d73ca22 100644
--- a/keyboards/crkbd/keymaps/default/config.h
+++ b/keyboards/crkbd/keymaps/default/config.h
@@ -28,19 +28,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#define USE_SERIAL_PD2
-
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 100
+//#define TAPPING_FORCE_HOLD
+//#define TAPPING_TERM 100
#ifdef RGBLIGHT_ENABLE
- #undef RGBLED_NUM
- #define RGBLIGHT_ANIMATIONS
- #define RGBLED_NUM 27
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ #define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ #define RGBLIGHT_EFFECT_RGB_TEST
+ #define RGBLIGHT_EFFECT_ALTERNATING
+ #define RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
#define RGBLIGHT_VAL_STEP 17
#endif
-#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" \ No newline at end of file
+#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/default/rules.mk b/keyboards/crkbd/keymaps/default/rules.mk
index d34d066ded..c14c202fae 100644
--- a/keyboards/crkbd/keymaps/default/rules.mk
+++ b/keyboards/crkbd/keymaps/default/rules.mk
@@ -1,2 +1,5 @@
-OLED_ENABLE = yes
-OLED_DRIVER = SSD1306
+MOUSEKEY_ENABLE = yes # Mouse keys
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
diff --git a/keyboards/crkbd/keymaps/ericgebhart/config.h b/keyboards/crkbd/keymaps/ericgebhart/config.h
new file mode 100755
index 0000000000..d1844f6807
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ericgebhart/config.h
@@ -0,0 +1,24 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+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/>.
+*/
+
+#pragma once
+
+// otherwise the other promicro v3 isn't found
+#define SPLIT_USB_DETECT
diff --git a/keyboards/crkbd/keymaps/ericgebhart/keymap.c b/keyboards/crkbd/keymaps/ericgebhart/keymap.c
new file mode 100755
index 0000000000..e893ec596b
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ericgebhart/keymap.c
@@ -0,0 +1,60 @@
+/*
+ Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+
+ 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 "ericgebhart.h"
+
+#define Crkbd_base(...) Base_3x6_3(__VA_ARGS__)
+#define Crkbd_bepo(...) Base_bepo_3x6_3(__VA_ARGS__)
+#define Crkbd_bepo6(...) Base_bepo6_3x6_3(__VA_ARGS__)
+#define Crkbd_transient(...) Transient6_3x6_3(__VA_ARGS__)
+
+/*
+ * The `Crkbd_base` macro is a template to allow the use of identical
+ * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
+ * that there is no need to set them up for each layout, and modify all of
+ * them if I want to change them. This helps to keep consistency and ease
+ * of use. K## is a placeholder to pass through the individual keycodes
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // Qwerty based Base layers
+ [_DVORAK] = Crkbd_base(___DVORAK___),
+ [_BEAKL] = Crkbd_base(___BEAKL15___),
+ [_COLEMAK] = Crkbd_base(___COLEMAK_DH___),
+ [_QWERTY] = Crkbd_base(___QWERTY___),
+
+ // Bepo base layers
+ [_BEAKL_BP] = Crkbd_bepo(___BEAKL15_FR___),
+ [_DVORAK_BP] = Crkbd_bepo(___DVORAK_FR___),
+ [_BEPO] = Crkbd_bepo6(___BEPO6___),
+
+ // Transient layers.
+ [_SYMB] = Crkbd_transient(___SYMB_BEAKLB_3x12___),
+ [_SYMB_BP] = Crkbd_transient(___SYMB_BEAKLB_BP_3x12___),
+
+ [_KEYPAD] = Crkbd_transient(___KP_C_3x12___),
+ [_KEYPAD_BP] = Crkbd_transient(___KP_C_BP_3x12___),
+
+ [_TOPROWS] = Crkbd_transient(___TOPROWS_3x12___),
+ [_TOPROWS_BP] = Crkbd_transient(___TOPROWS_BP_3x12___),
+
+ [_NAV] = Crkbd_transient(___NAV_3x12___),
+
+ [_LAYERS] = Crkbd_transient(___LAYERS_3x12___),
+ //[_RGB] = Crkbd_transient(___RGB_3x12___),
+ [_ADJUST] = Crkbd_transient(___ADJUST_3x12___),
+ ///HPT_TOG, KC_NUKE, ___, ___, TG_MODS, HPT_FBK
+};
diff --git a/keyboards/crkbd/keymaps/mb_via/config.h b/keyboards/crkbd/keymaps/mb_via/config.h
new file mode 100644
index 0000000000..cdc04f6908
--- /dev/null
+++ b/keyboards/crkbd/keymaps/mb_via/config.h
@@ -0,0 +1,26 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Elliot Powell <@e11i0t23>
+
+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/>.
+*/
+
+#pragma once
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
diff --git a/keyboards/crkbd/keymaps/mb_via/keymap.c b/keyboards/crkbd/keymaps/mb_via/keymap.c
new file mode 100644
index 0000000000..b7fbc1c290
--- /dev/null
+++ b/keyboards/crkbd/keymaps/mb_via/keymap.c
@@ -0,0 +1,71 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Elliot Powell <@e11i0t23>
+
+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 QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ 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_LCTL, 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_ESC,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, FN_MO13, KC_SPC, KC_ENT, FN_MO23, KC_RALT
+ //`--------------------------' `--------------------------'
+
+ ),
+
+ [1] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ [2] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ [3] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ )
+};
diff --git a/keyboards/crkbd/keymaps/mb_via/readme.md b/keyboards/crkbd/keymaps/mb_via/readme.md
new file mode 100644
index 0000000000..048927073b
--- /dev/null
+++ b/keyboards/crkbd/keymaps/mb_via/readme.md
@@ -0,0 +1,12 @@
+# Default Via keyboard for the Corne R2G by Mechboards UK
+
+![r2g](https://cdn.shopify.com/s/files/1/0582/0242/3501/products/HelidoxCorneR2GPCB_1800x1800.png)
+
+Corne R2G is an eddition of the classic CRKBD by footsan remade to feature a full smd assembly
+
+In this fold can be found the default via enabled keymap that can be in conjunction
+
+Flash example for this Keymap:
+```sh
+qmk flash -kb crkbd/r2g -km mb_via
+```
diff --git a/keyboards/crkbd/keymaps/mb_via/rules.mk b/keyboards/crkbd/keymaps/mb_via/rules.mk
new file mode 100644
index 0000000000..cda04c7ce7
--- /dev/null
+++ b/keyboards/crkbd/keymaps/mb_via/rules.mk
@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = no # Mouse keys
+VIA_ENABLE = yes # Enable VIA
+
diff --git a/keyboards/crkbd/keymaps/soundmonster/config.h b/keyboards/crkbd/keymaps/soundmonster/config.h
index 0687f9c5c8..3a31f8613f 100644
--- a/keyboards/crkbd/keymaps/soundmonster/config.h
+++ b/keyboards/crkbd/keymaps/soundmonster/config.h
@@ -51,9 +51,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_VAL_STEP 17
#endif
-#define OLED_FONT_H "keyboards/crkbd/keymaps/soundmonster/glcdfont.c"
-// #define OLED_FONT_WIDTH 5
-// #define OLED_FONT_HEIGHT 7
+
+#ifdef OLED_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+# define SPLIT_MODS_ENABLE
+# define SPLIT_OLED_ENABLE
+# define OLED_FONT_H "keyboards/crkbd/keymaps/soundmonster/glcdfont.c"
+# define OLED_TIMEOUT 30000
+#endif
#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
@@ -71,12 +77,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Disable the animations you don't want/need. You will need to disable a good number of these *
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
-// # undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# undef ENABLE_RGB_MATRIX_BREATHING
-// # undef ENABLE_RGB_MATRIX_BAND_SAT
+# undef ENABLE_RGB_MATRIX_BAND_SAT
# undef ENABLE_RGB_MATRIX_BAND_VAL
-# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
@@ -85,26 +91,26 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-// # undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# undef ENABLE_RGB_MATRIX_DUAL_BEACON
# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// # undef ENABLE_RGB_MATRIX_RAINDROPS
+# undef ENABLE_RGB_MATRIX_RAINDROPS
# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// # undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-// # undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-// # undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
# undef ENABLE_RGB_MATRIX_SPLASH
-// # undef ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#endif
diff --git a/keyboards/crkbd/keymaps/soundmonster/keymap.c b/keyboards/crkbd/keymaps/soundmonster/keymap.c
index 98afe3685f..70fe50e967 100644
--- a/keyboards/crkbd/keymaps/soundmonster/keymap.c
+++ b/keyboards/crkbd/keymaps/soundmonster/keymap.c
@@ -1,3 +1,6 @@
+// Copyright 2022 Soundmonster (@soundmonster)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
@@ -7,10 +10,6 @@ extern keymap_config_t keymap_config;
extern rgblight_config_t rgblight_config;
#endif
-#ifdef OLED_ENABLE
-static uint32_t oled_timer = 0;
-#endif
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -278,53 +277,19 @@ void render_layer_state(void) {
}
}
-void render_status_main(void) {
- render_logo();
- render_space();
- render_layer_state();
- render_space();
- render_mod_status_gui_alt(get_mods()|get_oneshot_mods());
- render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods());
-}
-
-void render_status_secondary(void) {
+bool oled_task_user(void) {
+ // Renders the current keyboard state (layers and mods)
render_logo();
render_space();
render_layer_state();
render_space();
render_mod_status_gui_alt(get_mods()|get_oneshot_mods());
render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods());
-}
-
-void suspend_power_down_user() {
- oled_off();
-}
-
-bool oled_task_user(void) {
- if (timer_elapsed32(oled_timer) > 30000) {
- oled_off();
- return;
- }
-#ifndef SPLIT_KEYBOARD
- else { oled_on(); }
-#endif
-
- if (is_keyboard_master()) {
- render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
- } else {
- render_status_secondary();
- }
return false;
}
#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
-#ifdef OLED_ENABLE
- oled_timer = timer_read32();
-#endif
- // set_timelog();
- }
static uint16_t my_colon_timer;
switch (keycode) {
diff --git a/keyboards/crkbd/keymaps/soundmonster/rules.mk b/keyboards/crkbd/keymaps/soundmonster/rules.mk
index 62971258e9..d3a964424f 100644
--- a/keyboards/crkbd/keymaps/soundmonster/rules.mk
+++ b/keyboards/crkbd/keymaps/soundmonster/rules.mk
@@ -2,6 +2,7 @@ RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = yes
MOUSEKEY_ENABLE = no
NKRO_ENABLE = yes
-OLED_ENABLE = yes
-OLED_DRIVER = SSD1306
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
diff --git a/keyboards/crkbd/keymaps/via/config.h b/keyboards/crkbd/keymaps/via/config.h
index fc8e7c4781..806b77d013 100644
--- a/keyboards/crkbd/keymaps/via/config.h
+++ b/keyboards/crkbd/keymaps/via/config.h
@@ -25,16 +25,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define EE_HANDS
#ifdef RGBLIGHT_ENABLE
-# undef RGBLED_NUM
-# define RGBLIGHT_ANIMATIONS
-# define RGBLED_NUM 54
-# undef RGBLED_SPLIT
-# define RGBLED_SPLIT \
- { 27, 27 }
-# define RGBLIGHT_LIMIT_VAL 120
-# define RGBLIGHT_HUE_STEP 10
-# define RGBLIGHT_SAT_STEP 17
-# define RGBLIGHT_VAL_STEP 17
+ #define RGBLIGHT_EFFECT_BREATHING
+ #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ #define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// #define RGBLIGHT_EFFECT_RGB_TEST
+// #define RGBLIGHT_EFFECT_ALTERNATING
+// #define RGBLIGHT_EFFECT_TWINKLE
+ #define RGBLIGHT_LIMIT_VAL 120
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
#endif
#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/via/rules.mk b/keyboards/crkbd/keymaps/via/rules.mk
index 69841c2358..ee593dcbb7 100644
--- a/keyboards/crkbd/keymaps/via/rules.mk
+++ b/keyboards/crkbd/keymaps/via/rules.mk
@@ -1,6 +1,6 @@
-MOUSEKEY_ENABLE = no # Mouse keys
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
-VIA_ENABLE = yes # Enable VIA
-OLED_ENABLE = yes
-OLED_DRIVER = SSD1306
-LTO_ENABLE = yes
+MOUSEKEY_ENABLE = no # Mouse keys
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+VIA_ENABLE = yes # Enable VIA
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
diff --git a/keyboards/crkbd/post_config.h b/keyboards/crkbd/post_config.h
index 00034a163c..133014b02a 100644
--- a/keyboards/crkbd/post_config.h
+++ b/keyboards/crkbd/post_config.h
@@ -41,3 +41,9 @@
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
# endif
#endif
+
+#ifdef OLED_ENABLE
+ #ifndef OLED_FONT_H
+ #define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
+ #endif
+#endif
diff --git a/keyboards/crkbd/r2g/config.h b/keyboards/crkbd/r2g/config.h
new file mode 100644
index 0000000000..e451612484
--- /dev/null
+++ b/keyboards/crkbd/r2g/config.h
@@ -0,0 +1,78 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Elliot Powell @e11i0t23
+
+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/>.
+*/
+
+#pragma once
+
+#define USE_SERIAL
+#define SOFT_SERIAL_PIN D2
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#ifdef RGBLIGHT_ENABLE
+
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+# define RGBLIGHT_EFFECT_TWINKLE
+
+# define RGBLED_NUM 54
+# define RGBLED_SPLIT \
+ { 27, 27 }
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGBLED_NUM 54 // Number of LEDs
+# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_SPLIT \
+ { 27, 27 }
+# define SPLIT_TRANSPORT_MIRROR
+
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#endif
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_USB_DETECT
+
diff --git a/keyboards/crkbd/r2g/r2g.c b/keyboards/crkbd/r2g/r2g.c
new file mode 100644
index 0000000000..7fb95c043c
--- /dev/null
+++ b/keyboards/crkbd/r2g/r2g.c
@@ -0,0 +1,240 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 Elliot Powell @e11i0t23
+
+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 "r2g.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+ // Logical Layout
+ // Columns
+ // Left
+ // 0 1 2 3 4 5
+ // ROWS
+ // 25 24 19 18 11 10 0
+ // 03 02 01
+ // 26 23 20 17 12 09 1
+ // 04 05 06
+ // 27 22 21 16 13 08 2
+ //
+ // 15 14 07 3
+ //
+ // Right
+ // 0 1 2 3 4 5
+ // ROWS
+ // 25 24 19 18 11 10 4
+ // 03 02 01
+ // 26 23 20 17 12 09 5
+ // 04 05 06
+ // 27 22 21 16 13 08 6
+ //
+ // 15 14 07 7
+ //
+ // Physical Layout
+ // Columns
+ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13
+ // ROWS
+ // 25 24 19 18 11 10 10 11 18 19 24 25 0
+ // 03 02 01 01 02 03
+ // 26 23 20 17 12 09 09 12 17 20 23 26 1
+ // 04 04
+ // 27 22 21 16 13 08 08 13 16 21 22 27 2
+ // 05 06 06 05
+ // 15 14 07 07 14 15 3
+
+led_config_t g_led_config = { {
+ { 24, 23, 18, 17, 10, 9 },
+ { 25, 22, 19, 16, 11, 8 },
+ { 26, 21, 20, 15, 12, 7 },
+ { NO_LED, NO_LED, NO_LED, 14, 13, 6 },
+ { 51, 50, 45, 44, 37, 36 },
+ { 52, 49, 46, 43, 38, 35 },
+ { 53, 48, 47, 42, 39, 34 },
+ { NO_LED, NO_LED, NO_LED, 41, 40, 33 }
+}, {
+ { 85, 16 }, { 50, 13 }, { 16, 20 }, { 16, 38 }, { 50, 48 }, { 85, 52 }, { 95, 63 },
+ { 85, 39 }, { 85, 21 }, { 85, 4 }, { 68, 2 }, { 68, 19 }, { 68, 37 }, { 80, 58 },
+ { 60, 55 }, { 50, 35 }, { 50, 13 }, { 50, 0 }, { 33, 3 }, { 33, 20 }, { 33, 37 },
+ { 16, 42 }, { 16, 24 }, { 16, 7 }, { 0, 7 }, { 0, 24 }, { 0, 41 }, { 139, 16 },
+ { 174, 13 }, { 208, 20 }, { 208, 38 }, { 174, 48 }, { 139, 52 }, { 129, 63 }, { 139, 39 },
+ { 139, 21 }, { 139, 4 }, { 156, 2 }, { 156, 19 }, { 156, 37 }, { 144, 58 }, { 164, 55 },
+ { 174, 35 }, { 174, 13 }, { 174, 0 }, { 191, 3 }, { 191, 20 }, { 191, 37 }, { 208, 42 },
+ { 208, 24 }, { 208, 7 }, { 224, 7 }, { 224, 24 }, { 224, 41 }
+}, {
+ 2, 2, 2, 2, 2, 2, 1,
+ 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 1, 2,
+ 2, 2, 2, 2, 2, 1, 4,
+ 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 1, 1, 1
+} };
+
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ }
+ return rotation;
+}
+
+enum Layers{
+ L_BASE, L_LOWER, L_RAISE, L_ADJUST
+};
+
+void oled_render_layer_state_r2g(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case L_BASE:
+ oled_write_ln_P(PSTR("Default"), false);
+ break;
+ case L_LOWER:
+ oled_write_ln_P(PSTR("Lower"), false);
+ break;
+ case L_RAISE:
+ oled_write_ln_P(PSTR("Raise"), false);
+ break;
+ case L_ADJUST:
+ oled_write_ln_P(PSTR("Adjust"), false);
+ break;
+ }
+}
+
+//char keylog_str_r2g[24] = {};
+
+const char code_to_name_r2g[60] = {
+ ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
+ 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
+ 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
+ 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
+ '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+char key_name_r2g = ' ';
+uint16_t last_keycode_r2g;
+uint8_t last_row_r2g;
+uint8_t last_col_r2g;
+
+void set_keylog_r2g(uint16_t keycode, keyrecord_t *record) {
+ key_name_r2g = ' ';
+ last_keycode_r2g = keycode;
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
+ (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { last_keycode_r2g = keycode & 0xFF; }
+ if (keycode < 60) {
+ key_name_r2g = code_to_name_r2g[keycode];
+ }
+ last_row_r2g = record->event.key.row;
+ last_col_r2g = record->event.key.col;
+}
+
+const char *depad_str(const char *depad_str, char depad_char) {
+ while (*depad_str == depad_char) ++depad_str;
+ return depad_str;
+}
+
+void oled_render_keylog_r2g(void) {
+ //oled_write(keylog_str_r2g, false);
+ const char *last_row_r2g_str = get_u8_str(last_row_r2g, ' ');
+ oled_write(depad_str(last_row_r2g_str, ' '), false);
+ oled_write_P(PSTR("x"), false);
+ const char *last_col_r2g_str = get_u8_str(last_col_r2g, ' ');
+ oled_write(depad_str(last_col_r2g_str, ' '), false);
+ oled_write_P(PSTR(", k"), false);
+ const char *last_keycode_r2g_str = get_u16_str(last_keycode_r2g, ' ');
+ oled_write(depad_str(last_keycode_r2g_str, ' '), false);
+ oled_write_P(PSTR(":"), false);
+ oled_write_char(key_name_r2g, false);
+}
+
+void render_bootmagic_status_r2g(bool status) {
+ /* Show Ctrl-Gui Swap options */
+ static const char PROGMEM logo[][2][3] = {
+ {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
+ {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
+ };
+ if (status) {
+ oled_write_ln_P(logo[0][0], false);
+ oled_write_ln_P(logo[0][1], false);
+ } else {
+ oled_write_ln_P(logo[1][0], false);
+ oled_write_ln_P(logo[1][1], false);
+ }
+}
+
+void oled_render_logo_r2g(void) {
+ static const char PROGMEM mb_logo[] = {
+0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f,
+0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff,
+0x83, 0x83, 0x83, 0x83, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff, 0x83, 0x83, 0x83,
+0x83, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff, 0xff, 0xff, 0x82, 0x82, 0x82, 0x82,
+0x82, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff, 0x83, 0x83, 0x83, 0x83, 0x83, 0xff, 0xff,
+0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfc, 0xfc, 0xfc,
+0x9c, 0x9c, 0xfc, 0xfc, 0xf8, 0xf8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x7c, 0x3c,
+0x9c, 0xfc, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xf8, 0x3c, 0x3c,
+0x9c, 0xbc, 0xfc, 0xb8, 0xb8, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0xff, 0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41,
+0x41, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0xff, 0xff,
+0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x3f,
+0x03, 0x07, 0x0f, 0x3f, 0x3f, 0x3e, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x3e, 0x3f,
+0x3f, 0x3f, 0x3b, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1f, 0x3f, 0x3c, 0x38,
+0x3b, 0x3b, 0x3f, 0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0,
+0xf0, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff,
+0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+ oled_write_raw_P(mb_logo, sizeof(mb_logo));
+ //oled_set_cursor(oled_max_chars()/2,oled_max_lines()/2);
+ //oled_write_P(PSTR("R2G"), false);
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if (is_keyboard_master()) {
+ oled_render_layer_state_r2g();
+ oled_render_keylog_r2g();
+ } else {
+ oled_render_logo_r2g();
+ }
+ return false;
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ set_keylog_r2g(keycode, record);
+ }
+ return process_record_user(keycode, record);
+}
+#endif // OLED_ENABLE
+
diff --git a/keyboards/crkbd/r2g/r2g.h b/keyboards/crkbd/r2g/r2g.h
new file mode 100644
index 0000000000..126c4b8998
--- /dev/null
+++ b/keyboards/crkbd/r2g/r2g.h
@@ -0,0 +1,60 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+
+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/>.
+*/
+
+#pragma once
+
+#include "crkbd.h"
+#include "quantum.h"
+
+// clang-format off
+#define LAYOUT_split_3x6_3( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, R30, R31, R32 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { KC_NO, KC_NO, KC_NO, L30, L31, L32 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { KC_NO, KC_NO, KC_NO, R32, R31, R30 } \
+ }
+
+#define LAYOUT_split_3x5_3( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L30, L31, L32, R30, R31, R32 \
+ ) \
+ { \
+ { KC_NO, L00, L01, L02, L03, L04 }, \
+ { KC_NO, L10, L11, L12, L13, L14 }, \
+ { KC_NO, L20, L21, L22, L23, L24 }, \
+ { KC_NO, KC_NO, KC_NO, L30, L31, L32 }, \
+ { KC_NO, R04, R03, R02, R01, R00 }, \
+ { KC_NO, R14, R13, R12, R11, R10 }, \
+ { KC_NO, R24, R23, R22, R21, R20 }, \
+ { KC_NO, KC_NO, KC_NO, R32, R31, R30 } \
+ }
+
+
+#define LAYOUT LAYOUT_split_3x6_3
diff --git a/keyboards/crkbd/r2g/readme.md b/keyboards/crkbd/r2g/readme.md
new file mode 100644
index 0000000000..7a9db3845d
--- /dev/null
+++ b/keyboards/crkbd/r2g/readme.md
@@ -0,0 +1,28 @@
+# Corne R2G
+
+![r2g](https://cdn.shopify.com/s/files/1/0582/0242/3501/products/HelidoxCorneR2GPCB_1800x1800.png)
+
+An Eddition of the popular CRKBD featuring a full smd assembly
+
+Keyboard Maintainer: [e11i0t23](https://github.com/e11i0t23/), [Mechboards UK](https://mechboards.co.uk)
+Hardware Supported: CRKBD R2G PCB
+Hardware Availability: [Mechboards UK](https://mechboards.co.uk/products/helidox-corne-kit?variant=40391708213453)
+
+Make example for this keyboard (after setting up your build environment):
+
+```sh
+make crkbd/r2g:mb_via
+```
+
+Flash example for this keyboard:
+```sh
+qmk flash -kb crkbd/r2g -km mb_via
+```
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+These PCBs have a reset on the underside of the PCB next to the TRRS jack to enter in to the bootloader.
+
+Additionally, if you hold down the "Q" or "P" buttons when plugging in that half of the keyboard (per the default QWERTY layout), this will jump to the bootloader and reset the EEPROM (persistent storage).
diff --git a/keyboards/crkbd/r2g/rules.mk b/keyboards/crkbd/r2g/rules.mk
new file mode 100644
index 0000000000..a3ee1b46b3
--- /dev/null
+++ b/keyboards/crkbd/r2g/rules.mk
@@ -0,0 +1,9 @@
+BOOTLOADER = atmel-dfu
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+
+
+SPLIT_KEYBOARD = yes
+
diff --git a/keyboards/crkbd/readme.md b/keyboards/crkbd/readme.md
index 64b51f54f0..6c0e859663 100644
--- a/keyboards/crkbd/readme.md
+++ b/keyboards/crkbd/readme.md
@@ -27,7 +27,7 @@ The Corne PCBs have a reset button next to the TRRS jack to enter in to the boot
Additionally, if you hold down the "Q" or "P" buttons when plugging in that half of the keyboard (per the default QWERTY layout), this will jump to the bootloader and reset the EEPROM (persistent storage). This would normally be the very top corner-most position, but due to the breakaway column, it's left at Q and P for compatibility.
## RGB Matrix
-The Corne Keyboard also supports using the RGB Matrix feature, in place of RGB Light. This provids a better experience when using the keyboard, as it supports a number of per key effects properly. If you're not using the in switch LEDs, then you may want to pass on doing this.
+The Corne Keyboard also supports using the RGB Matrix feature, in place of RGB Light. This provides a better experience when using the keyboard, as it supports a number of per key effects properly. If you're not using the in switch LEDs, then you may want to pass on doing this.
In your keymap's `rules.mk` file, add the following:
@@ -54,8 +54,8 @@ And in your `config.h` file, add the following:
# define RGB_MATRIX_VAL_STEP 8
# define RGB_MATRIX_SPD_STEP 10
-/* Disable the animations you don't want/need. You will need to disable a good number of these *
- * because they take up a lot of space. Disable until you can successfully compile your firmware. */
+/* Enable the animations you want/need. You may need to enable only a small number of these because *
+ * they take up a lot of space. Enable and confirm that you can still successfully compile your firmware. */
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
diff --git a/keyboards/crkbd/rev1/config.h b/keyboards/crkbd/rev1/config.h
index 337859d05c..9f196a7166 100644
--- a/keyboards/crkbd/rev1/config.h
+++ b/keyboards/crkbd/rev1/config.h
@@ -25,9 +25,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN D3
#ifdef RGBLIGHT_ENABLE
-# define RGBLED_NUM 12 // Number of LEDs
+# define RGBLED_NUM 54 // Number of LEDs
# define RGBLED_SPLIT \
- { 6, 6 }
+ { 27, 27 }
# define RGBLIGHT_SPLIT
#endif
diff --git a/keyboards/crkbd/rules.mk b/keyboards/crkbd/rules.mk
index 8169e78ae8..4f373d53da 100644
--- a/keyboards/crkbd/rules.mk
+++ b/keyboards/crkbd/rules.mk
@@ -12,10 +12,7 @@ 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 = yes # USB Nkey Rollover
+NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output