diff options
Diffstat (limited to 'users/drashna')
-rw-r--r-- | users/drashna/config.h | 36 | ||||
-rw-r--r-- | users/drashna/drashna.c | 35 | ||||
-rw-r--r-- | users/drashna/drashna.h | 4 | ||||
-rw-r--r-- | users/drashna/drashna_font.h | 1306 | ||||
-rw-r--r-- | users/drashna/drashna_transport.c | 508 | ||||
-rw-r--r-- | users/drashna/font_gmk_bad.h | 234 | ||||
-rw-r--r-- | users/drashna/hue_manitee_font.h | 234 | ||||
-rw-r--r-- | users/drashna/oled_stuff.c | 141 | ||||
-rw-r--r-- | users/drashna/oled_stuff.h | 22 | ||||
-rw-r--r-- | users/drashna/pimoroni_trackball.h | 8 | ||||
-rw-r--r-- | users/drashna/process_records.c | 6 | ||||
-rw-r--r-- | users/drashna/process_records.h | 1 | ||||
-rw-r--r-- | users/drashna/rgb_stuff.c | 52 | ||||
-rw-r--r-- | users/drashna/rules.mk | 24 | ||||
-rw-r--r-- | users/drashna/wrappers.h | 167 |
15 files changed, 2143 insertions, 635 deletions
diff --git a/users/drashna/config.h b/users/drashna/config.h index 8837ca0a56..8081af9cc3 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h @@ -22,8 +22,11 @@ /* Set Polling rate to 1000Hz */ #define USB_POLLING_INTERVAL_MS 1 -#if defined(SPLIT_KEYBOAD) +#if defined(SPLIT_KEYBOARD) # define SPLIT_MODS_ENABLE +// # define SPLIT_TRANSPORT_MIRROR +# define SERIAL_USE_MULTI_TRANSACTION +// # define SPLIT_NUM_TRANSACTIONS_KB 2 #endif #ifdef AUDIO_ENABLE @@ -111,6 +114,18 @@ # else # define OLED_UPDATE_INTERVAL 15 # endif +# define OLED_DISABLE_TIMEOUT +# define OLED_FONT_H "drashna_font.h" +# define OLED_FONT_END 255 +// # define OLED_FONT_5X5 +// # define OLED_FONT_AZTECH +// # define OLED_FONT_BMPLAIN +// # define OLED_FONT_SUPER_DIGG +// # define OLED_LOGO_GMK_BAD +// # define OLED_LOGO_HUE_MANITEE +// # define OLED_LOGO_CORNE +// # define OLED_LOGO_GOTHAM +# define OLED_LOGO_SCIFI #endif #ifndef ONESHOT_TAP_TOGGLE @@ -162,3 +177,22 @@ #ifdef LOCKING_RESYNC_ENABLE # undef LOCKING_RESYNC_ENABLE #endif + +#ifdef CONVERT_TO_PROTON_C +// pins that are available but not present on Pro Micro +# define A3 PAL_LINE(GPIOA, 3) +# define A4 PAL_LINE(GPIOA, 4) +# define A5 PAL_LINE(GPIOA, 5) +# define A6 PAL_LINE(GPIOA, 6) +# define A7 PAL_LINE(GPIOA, 7) +# define A8 PAL_LINE(GPIOA, 8) +# define A13 PAL_LINE(GPIOA, 13) +# define A14 PAL_LINE(GPIOA, 14) +# define A15 PAL_LINE(GPIOA, 15) +# define B10 PAL_LINE(GPIOB, 10) +# define B11 PAL_LINE(GPIOB, 11) +# define B12 PAL_LINE(GPIOB, 12) +# define C13 PAL_LINE(GPIOC, 13) +# define C14 PAL_LINE(GPIOC, 14) +# define C15 PAL_LINE(GPIOC, 15) +#endif diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index 95c9d2f625..6a13f0d9b2 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c @@ -111,7 +111,12 @@ void shutdown_user(void) { __attribute__((weak)) void suspend_power_down_keymap(void) {} -void suspend_power_down_user(void) { suspend_power_down_keymap(); } +void suspend_power_down_user(void) { +#ifdef OLED_DRIVER_ENABLE + oled_off(); +#endif + suspend_power_down_keymap(); +} __attribute__((weak)) void suspend_wakeup_init_keymap(void) {} @@ -146,17 +151,34 @@ void matrix_scan_user(void) { matrix_scan_keymap(); } +#ifdef AUDIO_ENABLE +float doom_song[][2] = SONG(E1M1_DOOM); +#endif + __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } // on layer change, no matter where the change was initiated // Then runs keymap's layer change check layer_state_t layer_state_set_user(layer_state_t state) { - if (!is_keyboard_master()) { return state; } - + if (!is_keyboard_master()) { + return state; + } + state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); #if defined(RGBLIGHT_ENABLE) state = layer_state_set_rgb_light(state); #endif // RGBLIGHT_ENABLE +#if defined(AUDIO_ENABLE) && !defined(__arm__) + static bool is_gamepad_on = false; + if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) { + is_gamepad_on = layer_state_cmp(state, _GAMEPAD); + if (is_gamepad_on) { + PLAY_LOOP(doom_song); + } else { + stop_all_notes(); + } + } +#endif return layer_state_set_keymap(state); } @@ -164,7 +186,9 @@ __attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t // Runs state check and changes underglow color and animation layer_state_t default_layer_state_set_user(layer_state_t state) { - if (!is_keyboard_master()) { return state; } + if (!is_keyboard_master()) { + return state; + } state = default_layer_state_set_keymap(state); #if 0 @@ -189,6 +213,9 @@ void eeconfig_init_user(void) { userspace_config.rgb_layer_change = true; eeconfig_update_user(userspace_config.raw); eeconfig_init_keymap(); +#ifdef VIA_ENABLE + via_eeprom_reset(); +#endif keyboard_init(); } diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h index 35d11101d6..9a18a82965 100644 --- a/users/drashna/drashna.h +++ b/users/drashna/drashna.h @@ -105,3 +105,7 @@ We use custom codes here, so we can substitute the right stuff # define KC_D3_3 KC_3 # define KC_D3_4 KC_4 #endif // TAP_DANCE_ENABLE + +#if defined(DRASHNA_CUSTOM_TRANSPORT) && defined(POINTING_DEVICE_ENABLE) +void master_mouse_send(int8_t x, int8_t y); +#endif diff --git a/users/drashna/drashna_font.h b/users/drashna/drashna_font.h new file mode 100644 index 0000000000..6a3865a44d --- /dev/null +++ b/users/drashna/drashna_font.h @@ -0,0 +1,1306 @@ +#pragma once + +// additional fonts from +// https://github.com/datacute/TinyOLED-Fonts + +#include "progmem.h" + +static const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 0 + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, // 0x01 1 + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, // 0x02 2 + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, // 0x03 3 ♥ + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, // 0x04 4 ♦ + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, // 0x05 5 ♧ + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, // 0x06 6 ♤ + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, // 0x07 7 + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, // 0x08 8 + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, // 0x09 9 + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, // 0x0A 10 + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, // 0x0B 11 ♂ + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, // 0x0C 12 ♀ + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, // 0x0D 13 ♪ + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, // 0x0E 14 ♫ + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, // 0x0F 15 + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, // 0x10 16 + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, // 0x11 17 + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, // 0x12 18 ↕ + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, // 0x13 19 ‼ + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, // 0x14 20 ¶ + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, // 0x15 21 § + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, // 0x16 22 _ + 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, // 0x17 23 ↨ + 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, // 0x18 24 ↑ + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, // 0x19 25 ↓ + 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, // 0x1A 26 → + 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, // 0x1B 27 ← + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, // 0x1C 28 ⌙h + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, // 0x1D 29 ↭ + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, // 0x1E 30 + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, // 0x1F 31 +#if defined(OLED_FONT_5X5) + 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 + 0x5c,0x00,0x00,0x00,0x00,0x00, // 0x21 33 ! + 0x06,0x00,0x06,0x00,0x00,0x00, // 0x22 34 " + 0x28,0x7c,0x28,0x7c,0x28,0x00, // 0x23 35 # + 0x5c,0x54,0xfe,0x54,0x74,0x00, // 0x24 36 $ + 0x44,0x20,0x10,0x08,0x44,0x00, // 0x25 37 % + 0x28,0x54,0x54,0x20,0x50,0x00, // 0x26 38 & + 0x06,0x00,0x00,0x00,0x00,0x00, // 0x27 39 ' + 0x38,0x44,0x00,0x00,0x00,0x00, // 0x28 40 ( + 0x44,0x38,0x00,0x00,0x00,0x00, // 0x29 41 ) + 0x02,0x07,0x02,0x00,0x00,0x00, // 0x2A 42 * + 0x10,0x10,0x7c,0x10,0x10,0x00, // 0x2B 43 + + 0xc0,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 , + 0x10,0x10,0x10,0x10,0x10,0x00, // 0x2D 45 - + 0x40,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 . + 0x60,0x10,0x0c,0x00,0x00,0x00, // 0x2F 47 / + 0x7c,0x64,0x54,0x4c,0x7c,0x00, // 0x30 48 0 + 0x48,0x7c,0x40,0x00,0x00,0x00, // 0x31 49 1 + 0x64,0x54,0x54,0x54,0x48,0x00, // 0x32 50 2 + 0x44,0x54,0x54,0x54,0x6c,0x00, // 0x33 51 3 + 0x3c,0x20,0x70,0x20,0x20,0x00, // 0x34 52 4 + 0x5c,0x54,0x54,0x54,0x24,0x00, // 0x35 53 5 + 0x7c,0x54,0x54,0x54,0x74,0x00, // 0x36 54 6 + 0x04,0x04,0x64,0x14,0x0c,0x00, // 0x37 55 7 + 0x7c,0x54,0x54,0x54,0x7c,0x00, // 0x38 56 8 + 0x5c,0x54,0x54,0x54,0x7c,0x00, // 0x39 57 9 + 0x44,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 : + 0xc4,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ; + 0x10,0x28,0x44,0x00,0x00,0x00, // 0x3C 60 < + 0x28,0x28,0x28,0x28,0x28,0x00, // 0x3D 61 = + 0x44,0x28,0x10,0x00,0x00,0x00, // 0x3E 62 > + 0x08,0x04,0x54,0x08,0x00,0x00, // 0x3F 63 ? + 0x7c,0x44,0x54,0x54,0x5c,0x00, // 0x40 64 @ + 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x41 65 A + 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x42 66 B + 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x43 67 C + 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x44 68 D + 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x45 69 E + 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x46 70 F + 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x47 71 G + 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x48 72 H + 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x49 73 I + 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x4A 74 J + 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x4B 75 K + 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x4C 76 L + 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x4D 77 M + 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x4E 78 N + 0x38,0x44,0x44,0x44,0x38,0x00, // 0x4F 79 O + 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x50 80 P + 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x51 81 Q + 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x52 82 R + 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x53 83 S + 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x54 84 T + 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x55 85 U + 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x56 86 V + 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x57 87 W + 0x44,0x28,0x10,0x28,0x44,0x00, // 0x58 88 X + 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x59 89 Y + 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x5A 90 Z + 0x7c,0x44,0x00,0x00,0x00,0x00, // 0x5B 91 [ + 0x0c,0x10,0x60,0x00,0x00,0x00, // 0x5C 92 \ backslash + 0x44,0x7c,0x00,0x00,0x00,0x00, // 0x5D 93 ] + 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^ + 0x40,0x40,0x40,0x40,0x40,0x40, // 0x5F 95 _ + 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 ` + 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x61 97 a + 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x62 98 b + 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x63 99 c + 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x64 100 d + 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x65 101 e + 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x66 102 f + 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x67 103 g + 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x68 104 h + 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x69 105 i + 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x6A 106 j + 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x6B 107 k + 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x6C 108 l + 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x6D 109 m + 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x6E 110 n + 0x38,0x44,0x44,0x44,0x38,0x00, // 0x6F 111 o + 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x70 112 p + 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x71 113 q + 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x72 114 r + 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x73 115 s + 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x74 116 t + 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x75 117 u + 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x76 118 v + 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x77 119 w + 0x44,0x28,0x10,0x28,0x44,0x00, // 0x78 120 x + 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x79 121 y + 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x7A 122 z + 0x10,0x7c,0x44,0x00,0x00,0x00, // 0x7B 123 { + 0x6c,0x00,0x00,0x00,0x00,0x00, // 0x7C 124 | + 0x44,0x7c,0x10,0x00,0x00,0x00, // 0x7D 125 } + 0x02,0x01,0x02,0x01,0x00,0x00, // 0x7E 126 ~ + 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 +#elif defined(OLED_FONT_AZTECH) + 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 + 0x00,0x2e,0x00,0x00,0x00,0x00, // 0x21 33 ! + 0x00,0x02,0x00,0x02,0x00,0x00, // 0x22 34 " + 0x00,0x0a,0x1e,0x0a,0x1e,0x00, // 0x23 35 # + 0x00,0x0e,0x2a,0x6b,0x2a,0x3a, // 0x24 36 $ + 0x00,0x06,0x06,0x26,0x18,0x06, // 0x25 37 % + 0x38,0x3e,0x2a,0x2a,0x28,0x38, // 0x26 38 & + 0x18,0x02,0x00,0x00,0x00,0x00, // 0x27 39 ' + 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x28 40 ( + 0x00,0x22,0x3e,0x00,0x00,0x00, // 0x29 41 ) + 0x00,0x0e,0x0e,0x0e,0x04,0x00, // 0x2A 42 * + 0x00,0x08,0x1c,0x08,0x00,0x00, // 0x2B 43 + + 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2C 44 , + 0x00,0x08,0x08,0x08,0x00,0x00, // 0x2D 45 - + 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2E 46 . + 0x00,0x20,0x18,0x06,0x00,0x00, // 0x2F 47 / + 0x00,0x3e,0x22,0x2a,0x22,0x3e, // 0x30 48 0 + 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1 + 0x00,0x38,0x28,0x2a,0x2a,0x2e, // 0x32 50 2 + 0x00,0x22,0x2a,0x2e,0x38,0x00, // 0x33 51 3 + 0x00,0x0e,0x08,0x08,0x3e,0x08, // 0x34 52 4 + 0x00,0x2e,0x2a,0x2a,0x28,0x38, // 0x35 53 5 + 0x00,0x3e,0x2a,0x2a,0x28,0x38, // 0x36 54 6 + 0x00,0x06,0x02,0x02,0x0a,0x3e, // 0x37 55 7 + 0x00,0x38,0x2e,0x2a,0x2e,0x38, // 0x38 56 8 + 0x00,0x0e,0x0a,0x2a,0x2a,0x3e, // 0x39 57 9 + 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3A 58 : + 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3B 59 ; + 0x00,0x08,0x14,0x22,0x00,0x00, // 0x3C 60 < + 0x00,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 = + 0x00,0x22,0x14,0x08,0x00,0x00, // 0x3E 62 > + 0x00,0x06,0x02,0x2a,0x0a,0x06, // 0x3F 63 ? + 0x00,0x3e,0x02,0x3a,0x2a,0x0a, // 0x40 64 @ + 0x22,0x3e,0x02,0x0a,0x0a,0x3e, // 0x41 65 A + 0x00,0x3e,0x22,0x2a,0x2e,0x38, // 0x42 66 B + 0x00,0x3e,0x22,0x22,0x20,0x30, // 0x43 67 C + 0x00,0x3e,0x22,0x22,0x22,0x3c, // 0x44 68 D + 0x00,0x3e,0x2a,0x22,0x20,0x30, // 0x45 69 E + 0x00,0x3e,0x0a,0x0a,0x06,0x02, // 0x46 70 F + 0x00,0x3e,0x22,0x2a,0x28,0x38, // 0x47 71 G + 0x00,0x3e,0x08,0x08,0x08,0x3e, // 0x48 72 H + 0x00,0x22,0x3e,0x22,0x00,0x00, // 0x49 73 I + 0x00,0x30,0x20,0x20,0x22,0x3e, // 0x4A 74 J + 0x00,0x3e,0x08,0x08,0x0e,0x38, // 0x4B 75 K + 0x00,0x3e,0x20,0x20,0x20,0x30, // 0x4C 76 L + 0x00,0x3e,0x02,0x3e,0x20,0x3e, // 0x4D 77 M + 0x3e,0x3e,0x02,0x3e,0x20,0x3e, // 0x4E 78 N + 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x4F 79 O + 0x00,0x3e,0x02,0x0a,0x0a,0x0e, // 0x50 80 P + 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x51 81 Q + 0x00,0x3e,0x02,0x0a,0x0e,0x38, // 0x52 82 R + 0x00,0x0e,0x0a,0x2a,0x2a,0x3a, // 0x53 83 S + 0x00,0x06,0x02,0x3e,0x02,0x06, // 0x54 84 T + 0x00,0x3e,0x20,0x20,0x20,0x3e, // 0x55 85 U + 0x00,0x3e,0x20,0x20,0x3e,0x00, // 0x56 86 V + 0x00,0x3e,0x20,0x3e,0x02,0x3e, // 0x57 87 W + 0x3e,0x3a,0x0e,0x08,0x0e,0x3a, // 0x58 88 X + 0x00,0x0e,0x08,0x08,0x28,0x3e, // 0x59 89 Y + 0x00,0x3a,0x2a,0x2a,0x0a,0x0e, // 0x5A 90 Z + 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x5B 91 [ + 0x00,0x02,0x0c,0x30,0x00,0x00, // 0x5C 92 \ backslash + 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ] + 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^ + 0x00,0x20,0x20,0x20,0x00,0x00, // 0x5F 95 _ + 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 ` + 0x00,0x38,0x28,0x28,0x08,0x38, // 0x61 97 a + 0x00,0x3e,0x20,0x28,0x28,0x38, // 0x62 98 b + 0x00,0x38,0x28,0x28,0x20,0x30, // 0x63 99 c + 0x00,0x38,0x28,0x28,0x20,0x3e, // 0x64 100 d + 0x00,0xf8,0x88,0x28,0x28,0x38, // 0x65 101 e + 0x00,0xf8,0x28,0x28,0x18,0x08, // 0x66 102 f + 0x00,0x38,0x28,0xa8,0x88,0xf8, // 0x67 103 g + 0x00,0x3c,0x08,0x08,0x08,0x38, // 0x68 104 h + 0x00,0x3a,0x00,0x00,0x00,0x00, // 0x69 105 i + 0x80,0xfa,0x00,0x00,0x00,0x00, // 0x6A 106 j + 0x00,0x3e,0x08,0x08,0x38,0x2c, // 0x6B 107 k + 0x00,0x3e,0x20,0x00,0x00,0x00, // 0x6C 108 l + 0x00,0x38,0x08,0x38,0x20,0x38, // 0x6D 109 m + 0x38,0x38,0x08,0x38,0x20,0x38, // 0x6E 110 n + 0x00,0x38,0x28,0x28,0x28,0x38, // 0x6F 111 o + 0x00,0xf8,0x08,0x28,0x28,0x38, // 0x70 112 p + 0x00,0x38,0x28,0x28,0x08,0xf8, // 0x71 113 q + 0x00,0x38,0x08,0x08,0x18,0x08, // 0x72 114 r + 0x00,0x38,0x28,0xa8,0xa8,0xe8, // 0x73 115 s + 0x00,0x3e,0x28,0x28,0x20,0x30, // 0x74 116 t + 0x00,0x38,0x20,0x20,0x20,0x38, // 0x75 117 u + 0x00,0x38,0x20,0x38,0x00,0x00, // 0x76 118 v + 0x00,0x38,0x20,0x38,0x08,0x38, // 0x77 119 w + 0x38,0x28,0x38,0x10,0x38,0x28, // 0x78 120 x + 0x00,0x38,0x20,0xa0,0xa0,0xf8, // 0x79 121 y + 0x00,0xe8,0xa8,0xa8,0x28,0x38, // 0x7A 122 z + 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 { + 0x00,0x3f,0x00,0x00,0x00,0x00, // 0x7C 124 | + 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 } + 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7E 126 ~ + 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 +#elif defined(OLED_FONT_BMPLAIN) + 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 + 0x2e,0x00,0x00,0x00,0x00,0x00, // 0x21 33 ! + 0x03,0x00,0x03,0x00,0x00,0x00, // 0x22 34 " + 0x0a,0x1f,0x0a,0x1f,0x0a,0x00, // 0x23 35 # + 0x2e,0x2a,0x6b,0x2a,0x3a,0x00, // 0x24 36 $ + 0x0e,0x2a,0x1e,0x08,0x3c,0x2a, // 0x25 37 % + 0x3e,0x2a,0x2a,0x22,0x38,0x08, // 0x26 38 & + 0x03,0x00,0x00,0x00,0x00,0x00, // 0x27 39 ' + 0x1c,0x22,0x00,0x00,0x00,0x00, // 0x28 40 ( + 0x22,0x1c,0x00,0x00,0x00,0x00, // 0x29 41 ) + 0x15,0x0e,0x04,0x0e,0x15,0x00, // 0x2A 42 * + 0x08,0x08,0x3e,0x08,0x08,0x00, // 0x2B 43 + + 0x60,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 , + 0x08,0x08,0x08,0x08,0x08,0x00, // 0x2D 45 - + 0x20,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 . + 0x20,0x10,0x08,0x04,0x02,0x00, // 0x2F 47 / + 0x3e,0x22,0x2a,0x22,0x3e,0x00, // 0x30 48 0 + 0x04,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1 + 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x32 50 2 + 0x2a,0x2a,0x2a,0x2a,0x3e,0x00, // 0x33 51 3 + 0x0e,0x08,0x08,0x08,0x3e,0x00, // 0x34 52 4 + 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x35 53 5 + 0x3e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x36 54 6 + 0x02,0x02,0x02,0x02,0x3e,0x00, // 0x37 55 7 + 0x3e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x38 56 8 + 0x2e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x39 57 9 + 0x14,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 : + 0x34,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ; + 0x08,0x14,0x22,0x00,0x00,0x00, // 0x3C 60 < + 0x14,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 = + 0x22,0x14,0x08,0x00,0x00,0x00, // 0x3E 62 > + 0x06,0x02,0x2a,0x0a,0x0e,0x00, // 0x3F 63 ? + 0x3e,0x02,0x3a,0x2a,0x3e,0x00, // 0x40 64 @ + 0x3e,0x12,0x12,0x12,0x3e,0x00, // 0x41 65 A + 0x3e,0x2a,0x2a,0x2a,0x36,0x00, // 0x42 66 B + 0x3e,0x22,0x22,0x22,0x22,0x00, // 0x43 67 C + 0x3e,0x22,0x22,0x22,0x1c,0x00, // 0x44 68 D + 0x3e,0x2a,0x2a,0x2a,0x22,0x00, // 0x45 69 E + 0x3e,0x0a,0x0a,0x0a,0x02,0x00, // 0x46 70 F + 0x3e,0x22,0x2a,0x2a,0x3a,0x00, // 0x47 71 G + 0x3e,0x08,0x08,0x08,0x3e,0x00, // 0x48 72 H + 0x22,0x3e,0x22,0x00,0x00,0x00, // 0x49 73 I + 0x38,0x20,0x20,0x20,0x3e,0x00, // 0x4A 74 J + 0x3e,0x08,0x08,0x14,0x22,0x00, // 0x4B 75 K + 0x3e,0x20,0x20,0x20,0x20,0x00, // 0x4C 76 L + 0x3e,0x04,0x38,0x04,0x3e,0x00, // 0x4D 77 M + 0x3e,0x04,0x08,0x10,0x3e,0x00, // 0x4E 78 N + 0x3e,0x22,0x22,0x22,0x3e,0x00, // 0x4F 79 O + 0x3e,0x0a,0x0a,0x0a,0x0e,0x00, // 0x50 80 P + 0x3e,0x22,0x72,0x22,0x3e,0x00, // 0x51 81 Q + 0x3e,0x0a,0x0a,0x1a,0x2e,0x00, // 0x52 82 R + 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x53 83 S + 0x02,0x02,0x3e,0x02,0x02,0x00, // 0x54 84 T + 0x1e,0x20,0x20,0x20,0x1e,0x00, // 0x55 85 U + 0x0e,0x10,0x20,0x10,0x0e,0x00, // 0x56 86 V + 0x3e,0x10,0x0e,0x10,0x3e,0x00, // 0x57 87 W + 0x22,0x14,0x08,0x14,0x22,0x00, // 0x58 88 X + 0x02,0x04,0x38,0x04,0x02,0x00, // 0x59 89 Y + 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x5A 90 Z + 0x3e,0x22,0x00,0x00,0x00,0x00, // 0x5B 91 [ + 0x3f,0x21,0x3f,0x00,0x00,0x00, // 0x5C 92 \ backslash + 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ] + 0x0c,0x1e,0x3c,0x1e,0x0c,0x00, // 0x5E 94 ^ + 0x20,0x20,0x20,0x20,0x20,0x00, // 0x5F 95 _ + 0x1c,0x3e,0x3e,0x3e,0x1c,0x00, // 0x60 96 ` + 0x3c,0x24,0x24,0x24,0x3c,0x20, // 0x61 97 a + 0x3e,0x24,0x24,0x24,0x3c,0x00, // 0x62 98 b + 0x3c,0x24,0x24,0x24,0x24,0x00, // 0x63 99 c + 0x3c,0x24,0x24,0x24,0x3e,0x00, // 0x64 100 d + 0x3c,0x24,0x34,0x2c,0x24,0x00, // 0x65 101 e + 0x08,0x3e,0x0a,0x0a,0x00,0x00, // 0x66 102 f + 0x1c,0x54,0x54,0x54,0x7c,0x00, // 0x67 103 g + 0x3e,0x04,0x04,0x04,0x3c,0x00, // 0x68 104 h + 0x3a,0x00,0x00,0x00,0x00,0x00, // 0x69 105 i + 0x7a,0x00,0x00,0x00,0x00,0x00, // 0x6A 106 j + 0x3e,0x08,0x14,0x22,0x00,0x00, // 0x6B 107 k + 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x6C 108 l + 0x3c,0x04,0x3c,0x04,0x3c,0x00, // 0x6D 109 m + 0x3c,0x04,0x04,0x04,0x3c,0x00, // 0x6E 110 n + 0x3c,0x24,0x24,0x24,0x3c,0x00, // 0x6F 111 o + 0x7c,0x24,0x24,0x24,0x3c,0x00, // 0x70 112 p + 0x3c,0x24,0x24,0x24,0x7c,0x00, // 0x71 113 q + 0x3c,0x04,0x04,0x04,0x00,0x00, // 0x72 114 r + 0x24,0x2c,0x34,0x24,0x00,0x00, // 0x73 115 s + 0x04,0x3e,0x24,0x24,0x00,0x00, // 0x74 116 t + 0x3c,0x20,0x20,0x20,0x3c,0x00, // 0x75 117 u + 0x0c,0x10,0x20,0x10,0x0c,0x00, // 0x76 118 v + 0x3c,0x20,0x3c,0x20,0x3c,0x00, // 0x77 119 w + 0x24,0x24,0x18,0x24,0x24,0x00, // 0x78 120 x + 0x1c,0x50,0x50,0x50,0x7c,0x00, // 0x79 121 y + 0x24,0x34,0x2c,0x24,0x00,0x00, // 0x7A 122 z + 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 { + 0x1c,0x22,0x22,0x22,0x1c,0x00, // 0x7C 124 | + 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 } + 0x01,0x01,0x01,0x00,0x00,0x00, // 0x7E 126 ~ + 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 +#elif defined(OLED_FONT_SUPER_DIGG) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32 + 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00, // 0x21 33 ! + 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, // 0x22 34 " + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 # + 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00, // 0x24 36 $ + 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60, // 0x25 37 % + 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50, // 0x26 38 & + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // 0x27 39 ' + 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00, // 0x28 40 ( + 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x29 41 ) + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 * + 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00, // 0x2B 43 + + 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, // 0x2C 44 , + 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, // 0x2D 45 - + 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // 0x2E 46 . + 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00, // 0x2F 47 / + 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C, // 0x30 48 0 + 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00, // 0x31 49 1 + 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x32 50 2 + 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70, // 0x33 51 3 + 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00, // 0x34 52 4 + 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x35 53 5 + 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00, // 0x36 54 6 + 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70, // 0x37 55 7 + 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00, // 0x38 56 8 + 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C, // 0x39 57 9 + 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, // 0x3A 58 : + 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00, // 0x3B 59 ; + 0x18, 0x18, 0x24, 0x42, 0x00, 0x00, // 0x3C 60 < + 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, // 0x3D 61 = + 0x42, 0x24, 0x18, 0x18, 0x00, 0x00, // 0x3E 62 > + 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C, // 0x3F 63 ? + 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54, // 0x40 64 @ + 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x41 65 A + 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x42 66 B + 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x43 67 C + 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x44 68 D + 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x45 69 E + 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x46 70 F + 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x47 71 G + 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x48 72 H + 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x49 73 I + 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x4A 74 J + 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x4B 75 K + 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x4C 76 L + 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x4D 77 M + 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x4E 78 N + 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x4F 79 O + 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x50 80 P + 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x51 81 Q + 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x52 82 R + 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x53 83 S + 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x54 84 T + 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x55 85 U + 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x56 86 V + 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x57 87 W + 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x58 88 X + 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x59 89 Y + 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x5A 90 Z + 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00, // 0x5B 91 [ + 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x5C 92 \ backslash + 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00, // 0x5D 93 ] + 0x04, 0x02, 0x01, 0x06, 0x04, 0x00, // 0x5E 94 ^ + 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, // 0x5F 95 _ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 96 ` + 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x61 97 a + 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x62 98 b + 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x63 99 c + 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x64 100 d + 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x65 101 e + 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x66 102 f + 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x67 103 g + 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x68 104 h + 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x69 105 i + 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x6A 106 j + 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x6B 107 k + 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x6C 108 l + 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x6D 109 m + 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x6E 110 n + 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x6F 111 o + 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x70 112 p + 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x71 113 q + 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x72 114 r + 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x73 115 s + 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x74 116 t + 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x75 117 u + 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x76 118 v + 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x77 119 w + 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x78 120 x + 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x79 121 y + 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x7A 122 z + 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00, // 0x7B 123 { + 0x00, 0x44, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 | + 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00, // 0x7D 125 } + 0x02, 0x01, 0x03, 0x04, 0x06, 0x02, // 0x7E 126 ~ + 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00, // 0x7F 127 +#else // default font + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32 + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, // 0x21 33 ! + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // 0x22 34 " + 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 # + 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, // 0x24 36 $ + 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, // 0x25 37 % + 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, // 0x26 38 & + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, // 0x27 39 ' + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, // 0x28 40 ( + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, // 0x29 41 ) + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 * + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, // 0x2B 43 + + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, // 0x2C 44 , + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // 0x2D 45 - + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // 0x2E 46 . + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, // 0x2F 47 / + 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, // 0x30 48 0 + 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, // 0x31 49 1 + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, // 0x32 50 2 + 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, // 0x33 51 3 + 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, // 0x34 52 4 + 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, // 0x35 53 5 + 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, // 0x36 54 6 + 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, // 0x37 55 7 + 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x38 56 8 + 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, // 0x39 57 9 + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 0x3A 58 : + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, // 0x3B 59 ; + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x3C 60 < + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, // 0x3D 61 = + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, // 0x3E 62 > + 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, // 0x3F 63 ? + 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, // 0x40 64 @ + 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, // 0x41 65 A + 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x42 66 B + 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, // 0x43 67 C + 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x44 68 D + 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, // 0x45 69 E + 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, // 0x46 70 F + 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, // 0x47 71 G + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, // 0x48 72 H + 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, // 0x49 73 I + 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, // 0x4A 74 J + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x4B 75 K + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x4C 76 L + 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, // 0x4D 77 M + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, // 0x4E 78 N + 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x4F 79 O + 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, // 0x50 80 P + 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, // 0x51 81 Q + 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, // 0x52 82 R + 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, // 0x53 83 S + 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, // 0x54 84 T + 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, // 0x55 85 U + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, // 0x56 86 V + 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, // 0x57 87 W + 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, // 0x58 88 X + 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, // 0x59 89 Y + 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, // 0x5A 90 Z + 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, // 0x5B 91 [ + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, // 0x5C 92 \ backslash + 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0x5D 93 ] + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, // 0x5E 94 ^ + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x5F 95 _ + 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, // 0x60 96 ` + 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, // 0x61 97 a + 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, // 0x62 98 b + 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, // 0x63 99 c + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, // 0x64 100 d + 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, // 0x65 101 e + 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, // 0x66 102 f + 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, // 0x67 103 g + 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x68 104 h + 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, // 0x69 105 i + 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, // 0x6A 106 j + 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, // 0x6B 107 k + 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, // 0x6C 108 l + 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, // 0x6D 109 m + 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x6E 110 n + 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, // 0x6F 111 o + 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, // 0x70 112 p + 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, // 0x71 113 q + 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, // 0x72 114 r + 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, // 0x73 115 s + 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, // 0x74 116 t + 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, // 0x75 117 u + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, // 0x76 118 v + 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, // 0x77 119 w + 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, // 0x78 120 x + 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, // 0x79 121 y + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, // 0x7A 122 z + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, // 0x7B 123 { + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 | + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, // 0x7D 125 } + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, // 0x7E 126 ~ + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, // 0x7F 127 +#endif + +#if defined(OLED_LOGO_GMK_BAD) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 + 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, // 0x81 + 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, // 0x82 + 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, // 0x83 + 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, // 0x84 + 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, // 0x85 + 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, // 0x86 + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x87 + 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, // 0x88 + 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, // 0x89 + 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // 0x8A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8B + 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, // 0x8C + 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, // 0x8D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x91 + 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, // 0x92 + 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, // 0x93 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x94 + 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, // 0x95 + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, // 0x96 + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, // 0x97 + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, // 0x98 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x99 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9A + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9B + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9C + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9D + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9E + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9F + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, // 0xA0 + 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, // 0xA1 + 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, // 0xA2 + 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, // 0xA3 + 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, // 0xA4 + 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, // 0xA5 + 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, // 0xA6 + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xA7 + 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, // 0xA8 + 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, // 0xA9 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xAA + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xAB + 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, // 0xAC + 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, // 0xAD + 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, // 0xAE + 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, // 0xAF + 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, // 0xB0 + 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, // 0xB1 + 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, // 0xB2 + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xB3 + 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, // 0xB4 + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, // 0xB5 + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, // 0xB6 + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, // 0xB7 + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, // 0xB8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB9 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBA + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBB + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBC + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBD + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBE + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBF + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 + 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, // 0xC1 + 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, // 0xC2 + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC3 + 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, // 0xC4 + 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, // 0xC5 + 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, // 0xC6 + 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xC7 + 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 0xC8 + 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, // 0xC9 + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCA + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xCB + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // 0xCC + 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, // 0xCD + 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, // 0xCE + 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, // 0xCF + 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, // 0xD0 + 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, // 0xD1 + 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, // 0xD2 + 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, // 0xD3 + 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, // 0xD4 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD5 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD6 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD7 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD9 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDA + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDB + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDC + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDD + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDE + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, + 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, + 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, + 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, + 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, + 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, + 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, + 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, + 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, + 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, + 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xC8, 0xEE, 0xF9, 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, 0x00, 0x00, 0x00, 0x00, + #elif defined(OLED_LOGO_HUE_MANITEE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 + 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, + 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4, + 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4, + 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C, + 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, // 0x90 + 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, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 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, 0xF0, // 0xA0 + 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15, + 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0, + 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF, + 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, + 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC, + 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, // 0xB0 + 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 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, 0x01, // 0xC0 + 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, + 0x03, 0x00, 0x00, 0x02, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, // 0xD0 + 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, + 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, + 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, + 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, + 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, + 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, + 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, + 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, + 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, + 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, + 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xC8, 0xEE, 0xF9, 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, 0x00, 0x00, 0x00, 0x00, + #elif defined(OLED_LOGO_CORNE) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, + 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0, + 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, + 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, + 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, + 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, // 0x90 + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, + 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, + 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 + 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, + 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, + 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // 0xB0 + 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, + 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, + 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, + 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, + 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 + 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, + 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, + 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, + 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, // 0xD0 + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x03, 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, // 0xDF + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, + 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, + 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, + 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, + 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, + 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, + 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, + 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, + 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, + 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, + 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xC8, 0xEE, 0xF9, 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, 0x00, 0x00, 0x00, 0x00, + +#elif defined(OLED_LOGO_GOTHAM) // see /keyboards/crkbd/keymaps/gotham/oled.c + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 + 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, + 0xF8, 0x18, 0x00, 0xC0, 0x70, 0x1C, + 0x06, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0xC3, 0x7E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x08, 0x08, 0x08, 0x00, 0x1C, + 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C, + 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, + 0x0C, 0x04, 0xE7, 0xE4, 0xE4, 0x07, + 0x04, 0xE4, 0xE7, 0xE4, 0x04, 0x07, + 0xE4, 0xE4, 0xE7, 0x04, 0x0C, 0xF8, + 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, // 0x90 + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, + 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, + 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, + 0x70, 0x3E, 0x1F, 0x19, 0x18, 0x0C, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0x0C, 0x06, 0x07, 0xFC, // 0xA0 + 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0xFF, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1C, + 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, + 0x00, 0x1C, 0x22, 0x00, 0x00, 0x1C, + 0x3E, 0x7F, 0x63, 0x41, 0x22, 0x1C, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x49, 0x49, 0xFF, + 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x38, + 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x38, + 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0xFF, + 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, + 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, // 0xB0 + 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, + 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, + 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, + 0x00, 0x00, 0xFC, 0x24, 0x24, 0xFC, + 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, + 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, + 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, + 0x24, 0x24, 0xFC, 0x00, 0x00, 0x00, + 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x90, + 0xF0, 0x98, 0x9C, 0xF2, 0x22, 0x21, + 0xE1, 0x01, 0x01, 0x01, 0xF1, 0x91, + 0x91, 0xFA, 0x4C, 0x4C, 0xF8, 0x48, + 0x48, 0xF8, 0x48, 0x48, 0xF8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x0E, 0x18, 0x30, 0x21, // 0xC0 + 0x21, 0x31, 0x18, 0x10, 0x30, 0x20, + 0x60, 0x41, 0x60, 0x20, 0x30, 0x18, + 0x30, 0x60, 0x40, 0x40, 0x47, 0x4C, + 0x48, 0x68, 0x38, 0x1C, 0x0F, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, + 0x22, 0x41, 0x63, 0x7F, 0x3E, 0x1C, + 0x00, 0x00, 0x22, 0x1C, 0x00, 0x00, + 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F, + 0x18, 0x10, 0x70, 0x10, 0x10, 0x70, + 0x10, 0x13, 0x73, 0x13, 0x10, 0x70, + 0x10, 0x10, 0x70, 0x10, 0x18, 0x0F, + 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, + 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, // 0xD0 + 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, + 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, + 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0x09, 0x09, 0x09, + 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09, + 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, + 0x07, 0x04, 0x04, 0x07, 0x04, 0x04, + 0x07, 0x04, 0x04, 0x0F, 0x09, 0x09, + 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04, + 0x04, 0x07, 0x02, 0x02, 0x03, 0x02, + 0x02, 0x03, 0x02, 0x02, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, + 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, + 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, + 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, + 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, + 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, + 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, + 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, + 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, + 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, + 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xC8, 0xEE, 0xF9, 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, 0x00, 0x00, 0x00, 0x00, + +#elif defined(OLED_LOGO_SCIFI) + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60, + 0x70, 0x30, 0x38, 0x18, 0x0C, 0x0C, + 0x1E, 0x0C, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0E, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 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, 0x80, 0x80, 0x80, + 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, + 0xC0, 0x60, 0x60, 0x30, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, + 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, + 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x30, 0x30, 0x70, 0x78, 0x78, 0x7C, + 0x7C, 0x7E, 0x3E, 0x3F, 0x3F, 0x3B, + 0x3B, 0x39, 0x39, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x3C, 0x38, + 0x18, 0x8F, 0xDF, 0xF8, 0x7C, 0xBE, + 0xDF, 0xF7, 0xFB, 0xFD, 0xFE, 0xEF, + 0x73, 0x3B, 0x1B, 0x1F, 0xEF, 0xF7, + 0xFF, 0x7E, 0x6F, 0x6F, 0x6F, 0x6F, + 0x6D, 0xBD, 0xE1, 0xF9, 0x3F, 0x3F, + 0x39, 0x79, 0x79, 0x7D, 0xED, 0xED, + 0xCD, 0xC7, 0xC7, 0x87, 0xC7, 0xE3, + 0xE0, 0xF8, 0x7E, 0x3F, 0x37, 0x33, + 0x3B, 0x1B, 0x19, 0x19, 0x0D, 0xED, + 0xFF, 0xBF, 0xC7, 0xE7, 0xE3, 0xF0, + 0x7C, 0xDE, 0xE7, 0xFB, 0x3E, 0x3F, + 0xFC, 0xE0, 0xF8, 0x3E, 0xCF, 0xF3, + 0xFC, 0x3F, 0x1F, 0x1F, 0x3C, 0x7E, + 0x76, 0xF3, 0xE3, 0x81, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, + 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, + 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, + 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x30, 0x18, 0x1E, + 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xE1, 0x79, 0x3E, 0x1F, + 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, + 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, + 0x30, 0x20, 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, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, + 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, + 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, + 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, + 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, + 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, + 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, + 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, + 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, + 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, + 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xC8, 0xEE, 0xF9, 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, 0x00, 0x00, 0x00, 0x00 +#else + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 + 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, + 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F, + 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, + 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, + 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, + 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, + 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 + 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, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, + 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, + 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, + 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 + 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00, + 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, + 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00, + 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E, + 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, + 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, + 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E, + 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, + 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E, + 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F, + 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70, + 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, // 0xB0 + 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, + 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69, + 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, + 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, + 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, + 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, + 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 + 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, + 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E, + 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, + 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 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, // 0xD0 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, + 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, + 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, + 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, + 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, + 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, + 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, + 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, + 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, + 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, + 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, + 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, + 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x70, 0xC8, 0xEE, 0xF9, 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, 0x00, 0x00, 0x00, 0x00, + +#endif + }; diff --git a/users/drashna/drashna_transport.c b/users/drashna/drashna_transport.c new file mode 100644 index 0000000000..f0908b4900 --- /dev/null +++ b/users/drashna/drashna_transport.c @@ -0,0 +1,508 @@ +/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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 <string.h> +#include <stddef.h> + +#include "matrix.h" +#include QMK_KEYBOARD_H + +#define ROWS_PER_HAND (MATRIX_ROWS / 2) + +#ifdef RGBLIGHT_ENABLE +# include "rgblight.h" +#endif + +#ifdef BACKLIGHT_ENABLE +# include "backlight.h" +#endif + +#ifdef ENCODER_ENABLE +# include "encoder.h" +static pin_t encoders_pad[] = ENCODERS_PAD_A; +# define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t)) +#endif + +#ifdef POINTING_DEVICE_ENABLE +static int8_t split_mouse_x = 0, split_mouse_y = 0; +#endif + +#ifdef OLED_DRIVER_ENABLE +# include "oled_driver.h" +#endif + +#if defined(USE_I2C) + +# include "i2c_master.h" +# include "i2c_slave.h" + +typedef struct _I2C_slave_buffer_t { + matrix_row_t smatrix[ROWS_PER_HAND]; +# ifdef SPLIT_MODS_ENABLE + uint8_t real_mods; + uint8_t weak_mods; +# ifndef NO_ACTION_ONESHOT + uint8_t oneshot_mods; +# endif +# endif +# ifdef BACKLIGHT_ENABLE + uint8_t backlight_level; +# endif +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + rgblight_syncinfo_t rgblight_sync; +# endif +# ifdef ENCODER_ENABLE + uint8_t encoder_state[NUMBER_OF_ENCODERS]; +# endif +# ifdef WPM_ENABLE + uint8_t current_wpm; +# endif + int8_t mouse_x; + int8_t mouse_y; + bool oled_on; + layer_state_t t_layer_state; + layer_state_t t_default_layer_state; + bool is_rgb_matrix_suspended; +} __attribute__((packed)) I2C_slave_buffer_t; + +static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg; + +# define I2C_BACKLIGHT_START offsetof(I2C_slave_buffer_t, backlight_level) +# define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync) +# define I2C_KEYMAP_START offsetof(I2C_slave_buffer_t, smatrix) +# define I2C_REAL_MODS_START offsetof(I2C_slave_buffer_t, real_mods) +# define I2C_WEAK_MODS_START offsetof(I2C_slave_buffer_t, weak_mods) +# define I2C_ONESHOT_MODS_START offsetof(I2C_slave_buffer_t, oneshot_mods) +# define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state) +# define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm) +# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x) +# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y) +# define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on) +# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state) +# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state) +# define I2C_RGB_MATRIX_SUSPEND_START offsetof(I2C_slave_buffer_t, is_rgb_matrix_suspended) + +# define TIMEOUT 100 + +# ifndef SLAVE_I2C_ADDRESS +# define SLAVE_I2C_ADDRESS 0x32 +# endif + +// Get rows from other half over i2c +bool transport_master(matrix_row_t matrix[]) { + i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_START, (void *)matrix, sizeof(i2c_buffer->smatrix), TIMEOUT); + + // write backlight info +# ifdef BACKLIGHT_ENABLE + uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0; + if (level != i2c_buffer->backlight_level) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIGHT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) { + i2c_buffer->backlight_level = level; + } + } +# endif + +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + if (rgblight_get_change_flags()) { + rgblight_syncinfo_t rgblight_sync; + rgblight_get_syncinfo(&rgblight_sync); + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgblight_sync, sizeof(rgblight_sync), TIMEOUT) >= 0) { + rgblight_clear_change_flags(); + } + } +# endif + +# ifdef ENCODER_ENABLE + i2c_readReg(SLAVE_I2C_ADDRESS, I2C_ENCODER_START, (void *)i2c_buffer->encoder_state, sizeof(i2c_buffer->encoder_state), TIMEOUT); + encoder_update_raw(i2c_buffer->encoder_state); +# endif + +# ifdef WPM_ENABLE + uint8_t current_wpm = get_current_wpm(); + if (current_wpm != i2c_buffer->current_wpm) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) { + i2c_buffer->current_wpm = current_wpm; + } + } +# endif + +# ifdef POINTING_DEVICE_ENABLE + if (is_keyboard_left()) { + report_mouse_t temp_report = pointing_device_get_report(); + i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT); + temp_report.x = i2c_buffer->mouse_x; + i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT); + temp_report.y = i2c_buffer->mouse_y; + pointing_device_set_report(temp_report); + } +# endif + +# ifdef SPLIT_MODS_ENABLE + uint8_t real_mods = get_mods(); + if (real_mods != i2c_buffer->real_mods) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_REAL_MODS_START, (void *)&real_mods, sizeof(real_mods), TIMEOUT) >= 0) { + i2c_buffer->real_mods = real_mods; + } + } + + uint8_t weak_mods = get_weak_mods(); + if (weak_mods != i2c_buffer->weak_mods) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WEAK_MODS_START, (void *)&weak_mods, sizeof(weak_mods), TIMEOUT) >= 0) { + i2c_buffer->weak_mods = weak_mods; + } + } + +# ifndef NO_ACTION_ONESHOT + uint8_t oneshot_mods = get_oneshot_mods(); + if (oneshot_mods != i2c_buffer->oneshot_mods) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_ONESHOT_MODS_START, (void *)&oneshot_mods, sizeof(oneshot_mods), TIMEOUT) >= 0) { + i2c_buffer->oneshot_mods = oneshot_mods; + } + } +# endif +# endif + + if (layer_state != i2c_buffer->t_layer_state) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&layer_state, sizeof(layer_state), TIMEOUT) >= 0) { + i2c_buffer->t_layer_state = layer_state; + } + } + + if (default_layer_state != i2c_buffer->t_default_layer_state) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_DEFAULT_LAYER_STATE_START, (void *)&default_layer_state, sizeof(default_layer_state), TIMEOUT) >= 0) { + i2c_buffer->t_default_layer_state = default_layer_state; + } + } + +# ifdef OLED_DRIVER_ENABLE + bool is_oled = is_oled_on(); + if (is_oled != i2c_buffer->oled_on) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled, sizeof(is_oled), TIMEOUT) >= 0) { + i2c_buffer->oled_on = is_oled; + } + } +# endif + +# ifdef RGB_MATRIX_ENABLE + bool sus_state = rgb_matrix_get_suspend_state(); + if (sus_state != i2c_buffer->is_rgb_matrix_suspended) { + if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_SUSPEND_START, (void *)&sus_state, sizeof(sus_state), TIMEOUT) >= 0) { + i2c_buffer->is_rgb_matrix_suspended = sus_state; + } + } +# endif + + return true; +} + +void transport_slave(matrix_row_t matrix[]) { + // Copy matrix to I2C buffer + memcpy((void *)i2c_buffer->smatrix, (void *)matrix, sizeof(i2c_buffer->smatrix)); + +// Read Backlight Info +# ifdef BACKLIGHT_ENABLE + backlight_set(i2c_buffer->backlight_level); +# endif + +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + // Update the RGB with the new data + if (i2c_buffer->rgblight_sync.status.change_flags != 0) { + rgblight_update_sync(&i2c_buffer->rgblight_sync, false); + i2c_buffer->rgblight_sync.status.change_flags = 0; + } +# endif + +# ifdef ENCODER_ENABLE + encoder_state_raw(i2c_buffer->encoder_state); +# endif + +# ifdef WPM_ENABLE + set_current_wpm(i2c_buffer->current_wpm); +# endif + +# ifdef POINTING_DEVICE_ENABLE + if (!is_keyboard_left()) { + i2c_buffer->mouse_x = split_mouse_x; + i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT); + i2c_buffer->mouse_y = split_mouse_y; + i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT); + } + +# endif + +# ifdef SPLIT_MODS_ENABLE + set_mods(i2c_buffer->real_mods); + set_weak_mods(i2c_buffer->weak_mods); +# ifndef NO_ACTION_ONESHOT + set_oneshot_mods(i2c_buffer->oneshot_mods); +# endif +# endif + + if (layer_state != i2c_buffer->t_layer_state) { + layer_state = i2c_buffer->t_layer_state; + } + if (default_layer_state != i2c_buffer->t_default_layer_state) { + default_layer_state = i2c_buffer->t_default_layer_state; + } + +# ifdef OLED_DRIVER_ENABLE + if (i2c_buffer->oled_on) { + oled_on(); + } else { + oled_off(); + } +# endif + +# ifdef RGB_MATRIX_ENABLE + rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended); +# endif +} + +void transport_master_init(void) { i2c_init(); } + +void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); } + +#else // USE_SERIAL + +# include "serial.h" + +typedef struct _Serial_s2m_buffer_t { + // TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack + matrix_row_t smatrix[ROWS_PER_HAND]; +# ifdef ENCODER_ENABLE + uint8_t encoder_state[NUMBER_OF_ENCODERS]; +# endif + int8_t mouse_x; + int8_t mouse_y; +} __attribute__((packed)) Serial_s2m_buffer_t; + +typedef struct _Serial_m2s_buffer_t { +# ifdef SPLIT_MODS_ENABLE + uint8_t real_mods; + uint8_t weak_mods; +# ifndef NO_ACTION_ONESHOT + uint8_t oneshot_mods; +# endif +# endif +# ifdef BACKLIGHT_ENABLE + uint8_t backlight_level; +# endif +# ifdef WPM_ENABLE + uint8_t current_wpm; +# endif + bool oled_on; + layer_state_t t_layer_state; + layer_state_t t_default_layer_state; + bool is_rgb_matrix_suspended; +} __attribute__((packed)) Serial_m2s_buffer_t; + +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) +// When MCUs on both sides drive their respective RGB LED chains, +// it is necessary to synchronize, so it is necessary to communicate RGB +// information. In that case, define RGBLIGHT_SPLIT with info on the number +// of LEDs on each half. +// +// Otherwise, if the master side MCU drives both sides RGB LED chains, +// there is no need to communicate. + +typedef struct _Serial_rgblight_t { + rgblight_syncinfo_t rgblight_sync; +} Serial_rgblight_t; + +volatile Serial_rgblight_t serial_rgblight = {}; +uint8_t volatile status_rgblight = 0; +# endif + +volatile Serial_s2m_buffer_t serial_s2m_buffer = {}; +volatile Serial_m2s_buffer_t serial_m2s_buffer = {}; +uint8_t volatile status0 = 0; + +enum serial_transaction_id { + GET_SLAVE_MATRIX = 0, +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + PUT_RGBLIGHT, +# endif +}; + +SSTD_t transactions[] = { + [GET_SLAVE_MATRIX] = + { + (uint8_t *)&status0, + sizeof(serial_m2s_buffer), + (uint8_t *)&serial_m2s_buffer, + sizeof(serial_s2m_buffer), + (uint8_t *)&serial_s2m_buffer, + }, +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + [PUT_RGBLIGHT] = + { + (uint8_t *)&status_rgblight, sizeof(serial_rgblight), (uint8_t *)&serial_rgblight, 0, NULL // no slave to master transfer + }, +# endif +}; + +void transport_master_init(void) { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); } + +void transport_slave_init(void) { soft_serial_target_init(transactions, TID_LIMIT(transactions)); } + +# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) + +// rgblight synchronization information communication. + +void transport_rgblight_master(void) { + if (rgblight_get_change_flags()) { + rgblight_get_syncinfo((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync); + if (soft_serial_transaction(PUT_RGBLIGHT) == TRANSACTION_END) { + rgblight_clear_change_flags(); + } + } +} + +void transport_rgblight_slave(void) { + if (status_rgblight == TRANSACTION_ACCEPTED) { + rgblight_update_sync((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync, false); + status_rgblight = TRANSACTION_END; + } +} + +# else +# define transport_rgblight_master() +# define transport_rgblight_slave() +# endif + +bool transport_master(matrix_row_t matrix[]) { +# ifndef SERIAL_USE_MULTI_TRANSACTION + if (soft_serial_transaction() != TRANSACTION_END) { + return false; + } +# else + transport_rgblight_master(); + if (soft_serial_transaction(GET_SLAVE_MATRIX) != TRANSACTION_END) { + return false; + } +# endif + + // TODO: if MATRIX_COLS > 8 change to unpack() + for (int i = 0; i < ROWS_PER_HAND; ++i) { + matrix[i] = serial_s2m_buffer.smatrix[i]; + } + +# ifdef BACKLIGHT_ENABLE + // Write backlight level for slave to read + serial_m2s_buffer.backlight_level = is_backlight_enabled() ? get_backlight_level() : 0; +# endif + +# ifdef ENCODER_ENABLE + encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state); +# endif + +# ifdef WPM_ENABLE + // Write wpm to slave + serial_m2s_buffer.current_wpm = get_current_wpm(); +# endif + +# ifdef SPLIT_MODS_ENABLE + serial_m2s_buffer.real_mods = get_mods(); + serial_m2s_buffer.weak_mods = get_weak_mods(); +# ifndef NO_ACTION_ONESHOT + serial_m2s_buffer.oneshot_mods = get_oneshot_mods(); +# endif +# endif + +# ifdef POINTING_DEVICE_ENABLE + if (is_keyboard_left()) { + report_mouse_t temp_report = pointing_device_get_report(); + temp_report.x = serial_s2m_buffer.mouse_x; + temp_report.y = serial_s2m_buffer.mouse_y; + pointing_device_set_report(temp_report); + } +# endif + + serial_m2s_buffer.t_layer_state = layer_state; + serial_m2s_buffer.t_default_layer_state = default_layer_state; +# ifdef OLED_DRIVER_ENABLE + serial_m2s_buffer.oled_on = is_oled_on(); +# endif + +# ifdef RGB_MATRIX_ENABLE + serial_m2s_buffer.is_rgb_matrix_suspended = rgb_matrix_get_suspend_state(); +# endif + + return true; +} + +void transport_slave(matrix_row_t matrix[]) { + transport_rgblight_slave(); + + // TODO: if MATRIX_COLS > 8 change to pack() + for (int i = 0; i < ROWS_PER_HAND; ++i) { + serial_s2m_buffer.smatrix[i] = matrix[i]; + } + +# ifdef BACKLIGHT_ENABLE + backlight_set(serial_m2s_buffer.backlight_level); +# endif + +# ifdef ENCODER_ENABLE + encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state); +# endif + +# ifdef WPM_ENABLE + set_current_wpm(serial_m2s_buffer.current_wpm); +# endif + +# ifdef SPLIT_MODS_ENABLE + set_mods(serial_m2s_buffer.real_mods); + set_weak_mods(serial_m2s_buffer.weak_mods); +# ifndef NO_ACTION_ONESHOT + set_oneshot_mods(serial_m2s_buffer.oneshot_mods); +# endif +# endif + +# ifdef POINTING_DEVICE_ENABLE + if (!is_keyboard_left()) { + serial_s2m_buffer.mouse_x = split_mouse_x; + serial_s2m_buffer.mouse_y = split_mouse_y; + } +# endif + + if (layer_state != serial_m2s_buffer.t_layer_state) { + layer_state = serial_m2s_buffer.t_layer_state; + } + if (default_layer_state != serial_m2s_buffer.t_default_layer_state) { + default_layer_state = serial_m2s_buffer.t_default_layer_state; + } +# ifdef OLED_DRIVER_ENABLE + if (serial_m2s_buffer.oled_on) { + oled_on(); + } else { + oled_off(); + } +# endif + +# ifdef RGB_MATRIX_ENABLE + rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended); +# endif +} + +#endif + +#ifdef POINTING_DEVICE_ENABLE +void master_mouse_send(int8_t x, int8_t y) { + split_mouse_x = x; + split_mouse_y = y; +} +#endif diff --git a/users/drashna/font_gmk_bad.h b/users/drashna/font_gmk_bad.h deleted file mode 100644 index 2f660d7eb5..0000000000 --- a/users/drashna/font_gmk_bad.h +++ /dev/null @@ -1,234 +0,0 @@ -#pragma once - -#include "progmem.h" - -// Corne 8x6 font with QMK Firmware Logo -// Online editor: https://helixfonteditor.netlify.com/ - -// clang-format off -const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, - 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, - 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, - 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, - 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, - 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, - 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, - 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, - 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, - 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, - 0x00, 0x00, 0x00, 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, 0xFC, 0xFC, - 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 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, 0x3C, - 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, - 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, - 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, - 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, - 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, - 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, - 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, - 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, - 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, - 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, - 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, - 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, - 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 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, 0x01, 0x03, 0x03, 0x03, 0x07, - 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, - 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, - 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, - 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, - 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, - 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, - 0x07, 0x07, 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, -}; diff --git a/users/drashna/hue_manitee_font.h b/users/drashna/hue_manitee_font.h deleted file mode 100644 index 2deb4d32dc..0000000000 --- a/users/drashna/hue_manitee_font.h +++ /dev/null @@ -1,234 +0,0 @@ -#pragma once - -#include "progmem.h" - -// Corne 8x6 font with QMK Firmware Logo -// Online editor: https://helixfonteditor.netlify.com/ - -// clang-format off -const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, - 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, - 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4, - 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4, - 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C, - 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, - 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, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, - 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 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, 0xF0, - 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, - 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15, - 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0, - 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF, - 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, - 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC, - 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, - 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 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, 0x01, - 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, - 0x03, 0x00, 0x00, 0x02, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c index 30eb068f77..4abf5f05f5 100644 --- a/users/drashna/oled_stuff.c +++ b/users/drashna/oled_stuff.c @@ -15,6 +15,7 @@ */ #include "drashna.h" +#include <stdio.h> #ifndef KEYLOGGER_LENGTH // # ifdef OLED_DISPLAY_128X64 @@ -24,7 +25,7 @@ // # endif #endif -static uint32_t oled_timer = 0; +uint32_t oled_timer = 0; static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"}; static uint16_t log_timer = 0; @@ -132,28 +133,26 @@ void render_layer_state(void) { oled_write_P(PSTR(" "), false); #endif oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE)); -#if _MODS -# ifdef OLED_DISPLAY_128X64 - oled_write_P(PSTR(" "), false); -# endif - oled_write_P(PSTR(OLED_RENDER_LAYER_MODS), layer_state_is(_MODS)); -#endif #ifdef OLED_DISPLAY_128X64 oled_advance_page(true); + oled_write_P(PSTR(" "), false); + oled_write_P(PSTR("GamePad"), layer_state_is(_GAMEPAD)); + oled_write_P(PSTR(" "), false); + oled_write_P(PSTR("Diablo"), layer_state_is(_DIABLO)); + oled_write_P(PSTR(" "), false); + oled_write_P(PSTR("Mouse"), layer_state_is(_MOUSE)); #endif } void render_keylock_status(uint8_t led_usb_state) { oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false); +#if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); +#endif oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK)); -#ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(" "), false); -#endif oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK)); -#ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(" "), false); -#endif oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK)); #ifndef OLED_DISPLAY_128X64 oled_advance_page(true); @@ -161,20 +160,18 @@ void render_keylock_status(uint8_t led_usb_state) { } void render_mod_status(uint8_t modifiers) { + static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}}; oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); - oled_write_P(PSTR(OLED_RENDER_MODS_SFT), (modifiers & MOD_MASK_SHIFT)); -#ifdef OLED_DISPLAY_128X64 + oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT)); + oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI)); +#if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); #endif - oled_write_P(PSTR(OLED_RENDER_MODS_CTL), (modifiers & MOD_MASK_CTRL)); -#ifdef OLED_DISPLAY_128X64 - oled_write_P(PSTR(" "), false); -#endif - oled_write_P(PSTR(OLED_RENDER_MODS_ALT), (modifiers & MOD_MASK_ALT)); -#ifdef OLED_DISPLAY_128X64 - oled_write_P(PSTR(" "), false); + oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT)); + oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL)); +#if defined(OLED_DISPLAY_128X64) + oled_advance_page(true); #endif - oled_write_P(PSTR(OLED_RENDER_MODS_GUI), (modifiers & MOD_MASK_GUI)); } void render_bootmagic_status(void) { @@ -204,41 +201,71 @@ void render_bootmagic_status(void) { #endif oled_write_P(logo[0][0], !is_bootmagic_on); } +#ifndef OLED_DISPLAY_128X64 + oled_write_P(PSTR(" "), false); + oled_write_P(logo[1][1], is_bootmagic_on); + oled_write_P(logo[0][1], !is_bootmagic_on); +#endif oled_write_P(PSTR(" "), false); -#ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); oled_write_P(PSTR(" "), false); - oled_write_ln_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); - oled_write_P(PSTR("Magic "), false); - if (keymap_config.swap_lctl_lgui) -#endif - { - oled_write_P(logo[1][1], is_bootmagic_on); + oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); #ifdef OLED_DISPLAY_128X64 + oled_advance_page(true); + oled_write_P(PSTR("Magic"), false); + oled_write_P(PSTR(" "), false); + if (keymap_config.swap_lctl_lgui) { + oled_write_P(logo[1][1], is_bootmagic_on); } else { -#endif oled_write_P(logo[0][1], !is_bootmagic_on); } +#endif oled_write_P(PSTR(" "), false); -#ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc); - oled_write_P(PSTR(" "), false); + oled_write_P(PSTR(" "), false); + oled_write_P(PSTR(" "), false); oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock); +#ifdef OLED_DISPLAY_128X64 oled_advance_page(true); -#else - oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); #endif } +#if defined(POINTING_DEVICE_ENABLE) +extern bool tap_toggling; +#endif + void render_user_status(void) { oled_write_P(PSTR(OLED_RENDER_USER_NAME), false); +#if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); +#endif +#if defined(RGB_MATRIX_ENABLE) oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim); +# if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_USER_LAYR), userspace_config.rgb_layer_change); +# endif +#elif defined(POINTING_DEVICE_ENABLE) + static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0}; + oled_write_P(mouse_lock, tap_toggling); +#endif +#ifdef AUDIO_ENABLE + static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}}; + oled_write_P(audio_status[is_audio_on()], false); + +# ifdef AUDIO_CLICKY + static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}}; + oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false); +# if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); - oled_write_P(PSTR(OLED_RENDER_USER_NUKE), userspace_config.nuke_switch); -#ifdef OLED_DISPLAY_128X64 +# endif +# endif +#endif + + static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}}; + oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false); + static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}}; + oled_write_P(nukem_good[0], userspace_config.nuke_switch); +#if defined(OLED_DISPLAY_128X64) oled_advance_page(true); #endif } @@ -253,23 +280,55 @@ __attribute__((weak)) void oled_driver_render_logo(void) { oled_write_P(qmk_logo, false); } +void render_wpm(void) { +#ifdef WPM_ENABLE +# ifdef OLED_DISPLAY_128X64 + char wpm_counter[4]; +# else + char wpm_counter[6]; +# endif + snprintf(wpm_counter, sizeof(wpm_counter), "%3u", get_current_wpm()); + oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); + oled_write(wpm_counter, false); +#endif +} + +#ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball +extern keyboard_config_t keyboard_config; +extern uint16_t dpi_array[]; + +void render_pointing_dpi_status(void) { + char dpi_status[6]; + snprintf(dpi_status, sizeof(dpi_status), "%5u", dpi_array[keyboard_config.dpi_config]); + oled_write_P(PSTR(" DPI: "), false); + oled_write(dpi_status, false); +} +#endif + void render_status_secondary(void) { -#if !defined(SPLIT_TRANSPORT_MIRROR) || defined(OLED_DISPLAY_128X64) +#if defined(OLED_DISPLAY_128X64) oled_driver_render_logo(); #endif /* Show Keyboard Layout */ render_default_layer_state(); render_layer_state(); render_mod_status(get_mods() | get_oneshot_mods()); - render_keylogger_status(); - + // render_keylogger_status(); + render_keylock_status(host_keyboard_leds()); } -// clang-format on void render_status_main(void) { +#if defined(OLED_DISPLAY_128X64) oled_driver_render_logo(); - /* Show Keyboard Layout */ + render_wpm(); +# ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball + render_pointing_dpi_status(); +# endif + oled_write_P(PSTR("\n"), false); +#else render_default_layer_state(); +#endif + /* Show Keyboard Layout */ // render_keylock_status(host_keyboard_leds()); render_bootmagic_status(); render_user_status(); diff --git a/users/drashna/oled_stuff.h b/users/drashna/oled_stuff.h index 7f2786d00c..2224cd90ea 100644 --- a/users/drashna/oled_stuff.h +++ b/users/drashna/oled_stuff.h @@ -21,6 +21,7 @@ void oled_driver_render_logo(void); bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); +extern uint32_t oled_timer; #ifdef OLED_DISPLAY_128X64 # define OLED_RENDER_KEYLOGGER "Keylogger: " @@ -35,7 +36,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn" # define OLED_RENDER_LAYOUT_CARPLAX "Carplax" -# define OLED_RENDER_LAYER_NAME "Layer:\n" +# define OLED_RENDER_LAYER_NAME "Layer:" # define OLED_RENDER_LAYER_LOWER "Lower" # define OLED_RENDER_LAYER_RAISE "Raise" # define OLED_RENDER_LAYER_ADJUST "Adjust" @@ -46,7 +47,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_LOCK_CAPS "CAPS" # define OLED_RENDER_LOCK_SCLK "SCLK" -# define OLED_RENDER_MODS_NAME "Mods: " +# define OLED_RENDER_MODS_NAME "Mods:" # define OLED_RENDER_MODS_SFT "Sft" # define OLED_RENDER_MODS_CTL "Ctl" # define OLED_RENDER_MODS_ALT "Alt" @@ -63,6 +64,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_USER_LAYR "Layr" # define OLED_RENDER_USER_NUKE "Nuke" +# define OLED_RENDER_WPM_COUNTER "WPM: " #else # define OLED_RENDER_KEYLOGGER "KLogr" @@ -83,15 +85,15 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_LAYER_MODS " Mods" # define OLED_RENDER_LOCK_NAME "Lock:" -# define OLED_RENDER_LOCK_NUML "N" -# define OLED_RENDER_LOCK_CAPS "C" -# define OLED_RENDER_LOCK_SCLK "S" +# define OLED_RENDER_LOCK_NUML "NumL" +# define OLED_RENDER_LOCK_CAPS "CapL" +# define OLED_RENDER_LOCK_SCLK "ScrL" # define OLED_RENDER_MODS_NAME "Mods: " -# define OLED_RENDER_MODS_SFT "S" -# define OLED_RENDER_MODS_CTL "C" -# define OLED_RENDER_MODS_ALT "A" -# define OLED_RENDER_MODS_GUI "G" +# define OLED_RENDER_MODS_SFT "Shft" +# define OLED_RENDER_MODS_CTL "Ctrl" +# define OLED_RENDER_MODS_ALT "Alt\n" +# define OLED_RENDER_MODS_GUI "GUI\n" # define OLED_RENDER_BOOTMAGIC_NAME "BTMGK" # define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" @@ -104,4 +106,6 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_USER_LAYR "Layr" # define OLED_RENDER_USER_NUKE "Nuke" +# define OLED_RENDER_WPM_COUNTER "WPM: " + #endif diff --git a/users/drashna/pimoroni_trackball.h b/users/drashna/pimoroni_trackball.h index 83d248d3ff..a30fb0bb8c 100644 --- a/users/drashna/pimoroni_trackball.h +++ b/users/drashna/pimoroni_trackball.h @@ -23,13 +23,13 @@ # define TRACKBALL_ADDRESS 0x0A #endif #define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE) -#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ) +#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ) void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white); void trackball_check_click(bool pressed, report_mouse_t *mouse); void trackball_register_button(bool pressed, enum mouse_buttons button); float trackball_get_precision(void); -void trackball_set_precision(float precision); -bool trackball_is_scrolling(void); -void trackball_set_scrolling(bool scroll); +void trackball_set_precision(float precision); +bool trackball_is_scrolling(void); +void trackball_set_scrolling(bool scroll); diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c index 14fda92dea..ef901226e0 100644 --- a/users/drashna/process_records.c +++ b/users/drashna/process_records.c @@ -36,12 +36,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record) #ifdef RGB_MATRIX_ENABLE - && process_record_user_rgb_matrix(keycode, record) + && process_record_user_rgb_matrix(keycode, record) #endif #ifdef RGBLIGHT_ENABLE - && process_record_user_rgb_light(keycode, record) + && process_record_user_rgb_light(keycode, record) #endif - && true)) { + && true)) { return false; } diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h index e59e2242ef..2e24670501 100644 --- a/users/drashna/process_records.h +++ b/users/drashna/process_records.h @@ -55,6 +55,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record); #define ADJUST MO(_ADJUST) #define TG_MODS TG(_MODS) #define TG_GAME TG(_GAMEPAD) +#define TG_DBLO TG(_DIABLO) #define OS_LWR OSL(_LOWER) #define OS_RSE OSL(_RAISE) diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c index b67f707b65..c8b2f4c726 100644 --- a/users/drashna/rgb_stuff.c +++ b/users/drashna/rgb_stuff.c @@ -14,15 +14,17 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "drashna.h" -#include "rgb_stuff.h" -#include "eeprom.h" +#ifdef RGBLIGHT_ENABLE + +# include "drashna.h" +# include "rgb_stuff.h" +# include "eeprom.h" -bool has_initialized; +bool has_initialized; void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); } -#ifdef RGBLIGHT_TWINKLE +# ifdef RGBLIGHT_TWINKLE static rgblight_fadeout lights[RGBLED_NUM]; /* Handler for fading/twinkling effect */ @@ -91,7 +93,7 @@ void start_rgb_light(void) { rgblight_sethsv_at(light->hue, 255, light->life, light_index); } -#endif +# endif bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { uint16_t temp_keycode = keycode; @@ -101,7 +103,7 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { } switch (temp_keycode) { -#ifdef RGBLIGHT_TWINKLE +# ifdef RGBLIGHT_TWINKLE case KC_A ... KC_SLASH: case KC_F1 ... KC_F12: case KC_INSERT ... KC_UP: @@ -112,20 +114,20 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { start_rgb_light(); } break; -#endif // RGBLIGHT_TWINKLE +# endif // RGBLIGHT_TWINKLE } return true; } -#if defined(RGBLIGHT_STARTUP_ANIMATION) -static bool is_enabled; -static bool is_rgblight_startup; -static uint8_t old_hue; +# if defined(RGBLIGHT_STARTUP_ANIMATION) +static bool is_enabled; +static bool is_rgblight_startup; +static uint8_t old_hue; static uint16_t rgblight_startup_loop_timer; -#endif +# endif void keyboard_post_init_rgb_light(void) { -#if defined(RGBLIGHT_STARTUP_ANIMATION) +# if defined(RGBLIGHT_STARTUP_ANIMATION) is_enabled = rgblight_is_enabled(); if (userspace_config.rgb_layer_change) { rgblight_enable_noeeprom(); @@ -136,7 +138,7 @@ void keyboard_post_init_rgb_light(void) { rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); is_rgblight_startup = true; } -#endif +# endif layer_state_set_rgb_light(layer_state); } @@ -145,7 +147,7 @@ void matrix_scan_rgb_light(void) { scan_rgblight_fadeout(); # endif // RGBLIGHT_ENABLE -#if defined(RGBLIGHT_STARTUP_ANIMATION) +# if defined(RGBLIGHT_STARTUP_ANIMATION) if (is_rgblight_startup && is_keyboard_master()) { if (timer_elapsed(rgblight_startup_loop_timer) > 10) { static uint8_t counter; @@ -163,7 +165,7 @@ void matrix_scan_rgb_light(void) { } } } -#endif +# endif } void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { @@ -173,16 +175,16 @@ void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mo } layer_state_t layer_state_set_rgb_light(layer_state_t state) { -#ifdef RGBLIGHT_ENABLE +# ifdef RGBLIGHT_ENABLE if (userspace_config.rgb_layer_change) { - uint8_t mode = layer_state_cmp(state,_MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT; - switch (get_highest_layer(state|default_layer_state)) { + uint8_t mode = layer_state_cmp(state, _MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT; + switch (get_highest_layer(state | default_layer_state)) { case _MACROS: -# ifdef RGBLIGHT_EFFECT_TWINKLE +# ifdef RGBLIGHT_EFFECT_TWINKLE rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5); -# else +# else rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); -# endif +# endif break; case _MEDIA: rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1); @@ -228,7 +230,9 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) { break; } } -#endif // RGBLIGHT_ENABLE +# endif // RGBLIGHT_ENABLE return state; } + +#endif diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk index b7523a436c..2ae01c62e5 100644 --- a/users/drashna/rules.mk +++ b/users/drashna/rules.mk @@ -66,3 +66,27 @@ ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes) SRC += pimoroni_trackball.c QUANTUM_LIB_SRC += i2c_master.c endif + + +ifeq ($(strip $(SPLIT_KEYBOARD)), yes) + ifneq ($(strip $(SPLIT_TRANSPORT)), custom) + SPLIT_TRANSPORT = custom + QUANTUM_LIB_SRC += drashna_transport.c + OPT_DEFS += -DDRASHNA_CUSTOM_TRANSPORT + # Unused functions are pruned away, which is why we can add multiple drivers here without bloat. + ifeq ($(PLATFORM),AVR) + ifneq ($(NO_I2C),yes) + QUANTUM_LIB_SRC += i2c_master.c \ + i2c_slave.c + endif + endif + + SERIAL_DRIVER ?= bitbang + OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]')) + ifeq ($(strip $(SERIAL_DRIVER)), bitbang) + QUANTUM_LIB_SRC += serial.c + else + QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c + endif + endif +endif diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h index d135f44af3..be8162dfa3 100644 --- a/users/drashna/wrappers.h +++ b/users/drashna/wrappers.h @@ -21,19 +21,6 @@ Since our quirky block definitions are basically a list of comma separated arguments, we need a wrapper in order for these definitions to be expanded before being used as arguments to the LAYOUT_xxx macro. */ -#if (!defined(LAYOUT) && defined(KEYMAP)) -# define LAYOUT KEYMAP -#endif - -// clang-format off -#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) -#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) -#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) -#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__) -#define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__) -#define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) /* Blocks for each of the four major keyboard layouts @@ -46,14 +33,14 @@ NOTE: These are all the same length. If you do a search/replace then you need to add/remove underscores to keep the lengths consistent. */ +// clang-format off +#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T +#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G +#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B -#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T -#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G -#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B - -#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P -#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN -#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH +#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P +#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT +#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH #define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G @@ -61,15 +48,15 @@ NOTE: These are all the same length. If you do a search/replace #define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B #define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O -#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH +#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT +#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH #define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B #define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G #define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V #define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN -#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O +#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT #define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH @@ -78,7 +65,7 @@ NOTE: These are all the same length. If you do a search/replace #define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X #define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S +#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH #define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z @@ -87,88 +74,106 @@ NOTE: These are all the same length. If you do a search/replace #define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X #define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L -#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S +#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH #define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z -#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B -#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G -#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V +#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B +#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G +#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V + +#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN +#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT +#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH + -#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN -#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I -#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH +#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K +#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G +#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B +#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN +#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT +#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH -#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K -#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G -#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B -#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN -#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U -#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH +#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B +#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F +#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM +#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L +#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT +#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X -#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B -#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F -#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM -#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L -#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R -#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X +#define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN +#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U +#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F +#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P +#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT +#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH -#define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q -#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U -#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_W +// Qwerty-like +#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W +#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R +#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X -#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P -#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N -#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SCLN +#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J +#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT +#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH +// Colemak like +#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W +#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R +#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J -#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W -#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X +#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN +#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT +#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH -#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J -#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN -#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH +// colemak like, zxcv fixed +#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W +#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R +#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J +#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN +#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT +#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH -#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J +// teeheehee +#define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L +#define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G +#define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A -#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN -#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H -#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH +#define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H +#define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT +#define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH -#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W -#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R -#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J +#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT +#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B +#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q -#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN -#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H -#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH +#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U +#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I +#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z -#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT -#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B -#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q +#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z +#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM +#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH -#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U -#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O // KC_I -#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z +#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J +#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE +#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y -#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z -#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM -#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH +#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z +#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM +#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH -#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J -#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I -#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y +#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J +#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE +#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y #define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 @@ -185,7 +190,7 @@ NOTE: These are all the same length. If you do a search/replace #define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN #define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR -#define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +#define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END @@ -195,7 +200,7 @@ NOTE: These are all the same length. If you do a search/replace #define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ #define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC -#define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END +#define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT |