qmk_me

QMK Firmware userspace, keyboards, & keymaps
git clone git://git.pngu.org.org/qmk_me
Log | Files | Refs | Submodules | README | LICENSE

commit 32ee93df6b2191a05ee528981404c890ca1a5d5a
parent 560440c4f693f3a9dbc5eb04917b30a077fa7877
Author: Jack Sangdahl <jack@pngu.org>
Date:   Sun,  7 Dec 2025 09:55:02 +0100

Remove no longer used OLED functionality

Diffstat:
Mkeyboards/crkbd/keymaps/jack/keymap.c | 14--------------
Mkeyboards/splitkb/kyria/keymaps/jack/config.h | 7+++++--
Mkeyboards/splitkb/kyria/keymaps/jack/keymap.c | 38++++++++++++++++++++++++++++++++++++++
Mkeyboards/splitkb/kyria/keymaps/jack/rules.mk | 1+
Musers/jack/config.h | 18++----------------
Musers/jack/jack.c | 19+++++++++++++++++++
Musers/jack/jack.h | 6------
Dusers/jack/oled.c | 180-------------------------------------------------------------------------------
Dusers/jack/oled.h | 561-------------------------------------------------------------------------------
Dusers/jack/oledfont.h | 118-------------------------------------------------------------------------------
Musers/jack/rules.mk | 5-----
11 files changed, 65 insertions(+), 902 deletions(-)

diff --git a/keyboards/crkbd/keymaps/jack/keymap.c b/keyboards/crkbd/keymaps/jack/keymap.c @@ -43,20 +43,6 @@ void keyboard_post_init_keymap(void) { oled_rotation_t oled_init_user(oled_rotation_t rotation) { return is_keyboard_master() ? OLED_ROTATION_180 : OLED_ROTATION_270; } - -bool oled_task_keymap(void) { - if (is_keyboard_master()) - oled_layer_anim(); - else { - oled_layer_status(); - oled_set_cursor(0, 3); - oled_felix_dog(); - oled_set_cursor(0, 7); - oled_wpm(); - oled_mod_status(); - } - return false; -} #endif // oled #ifdef RGB_MATRIX_ENABLE diff --git a/keyboards/splitkb/kyria/keymaps/jack/config.h b/keyboards/splitkb/kyria/keymaps/jack/config.h @@ -2,16 +2,19 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define WPM_GRAPH +#define SPLIT_WPM_ENABLE #define SPLIT_POINTING_ENABLE #define POINTING_DEVICE_RIGHT #define CIRQUE_PINNACLE_CURVED_OVERLAY #define CIRQUE_PINNACLE_TAP_ENABLE #define CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE #define CIRQUE_PINNACLE_DIAMETER_MM 35 -#define SPLIT_WATCHDOG_ENABLE + #undef RGB_MATRIX_MAXIMUM_BRIGHTNESS + #define I2C1_CLOCK_SPEED 1000000 +#define SPLIT_WATCHDOG_ENABLE + #define BOOTMAGIC_LITE_ROW 0 #define BOOTMAGIC_LITE_COLUMN 6 #define BOOTMAGIC_LITE_ROW_RIGHT 4 diff --git a/keyboards/splitkb/kyria/keymaps/jack/keymap.c b/keyboards/splitkb/kyria/keymaps/jack/keymap.c @@ -28,6 +28,44 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // clang-format on #ifdef OLED_ENABLE +void oled_wpm_graph(void) { + static uint8_t height = OLED_DISPLAY_HEIGHT - 1, vert_count = 0, + max_wpm = 160; + extern uint8_t oled_buffer[OLED_MATRIX_SIZE]; + extern OLED_BLOCK_TYPE oled_dirty; + static uint16_t graph_timer = 0; + if (timer_elapsed(graph_timer) > 100) { + height = 63 - ((get_current_wpm() / (float)max_wpm) * 63); + for (uint8_t i = 0; i <= 1; i++) + oled_write_pixel(3, height + i, true); + if (vert_count == 3) { + vert_count = 0; + while (height <= 63) { + oled_write_pixel(3, height, true); + height++; + } + } else { + for (uint8_t i = 63; i > height; i--) + if (!(i % 3)) + oled_write_pixel(3, i, true); + vert_count++; + } + for (uint16_t y = 0; y < 8; y++) { + for (uint16_t x = 124; x > 0; x--) { + uint16_t i = y * OLED_DISPLAY_WIDTH + x; + oled_buffer[i] = oled_buffer[i - 1]; + oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); + } + } + graph_timer = timer_read(); + } +} + +void oled_wpm(void) { + oled_write(PSTR("WPM: "), false); + oled_write_ln(get_u8_str(get_current_wpm(), ' '), false); +} + bool oled_task_keymap(void) { if (is_keyboard_left()) { oled_wpm_graph(); diff --git a/keyboards/splitkb/kyria/keymaps/jack/rules.mk b/keyboards/splitkb/kyria/keymaps/jack/rules.mk @@ -1,4 +1,5 @@ CONVERT_TO = blok +WPM_ENABLE = yes RGBLIGHT_ENABLE = no RGB_MATRIX_ENABLE = yes POINTING_DEVICE_ENABLE = yes diff --git a/users/jack/config.h b/users/jack/config.h @@ -10,33 +10,19 @@ #define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS #define ENABLE_COMPILE_KEYCODE #define LAYER_STATE_8BIT -#define SWITCHER_MACOS_APP_SWITCHER #undef LOCKING_SUPPORT_ENABLE #undef LOCKING_RESYNC_ENABLE #undef MANUFACTURER #define MANUFACTURER "jack" +#define THREE_MIN (1000 * 60) * 3 #ifdef OLED_ENABLE -#define OLED_FONT_H "users/jack/oledfont.h" -#define OLED_UPDATE_INTERVAL 50 #define OLED_DISABLE_TIMEOUT #endif -#ifdef SPLIT_KEYBOARD -#define MASTER_RIGHT -#ifdef OLED_ENABLE -#define SPLIT_OLED_ENABLE -#define SPLIT_MODS_ENABLE -#define SPLIT_WPM_ENABLE -#define SPLIT_LAYER_STATE_ENABLE -#define SPLIT_LED_STATE_ENABLE -#define SPLIT_ACTIVITY_ENABLE -#endif -#endif - #ifdef RGB_MATRIX_ENABLE #define RGB_MATRIX_SLEEP -#define LUMINO_LONG_TIMEOUT (1000 * 60) * 3 +#define LUMINO_LONG_TIMEOUT THREE_MIN #define LUMINO_SOON_TIMEOUT 0 #define RGB_MATRIX_KEYPRESSES #define PALETTEFX_ENABLE_ALL_EFFECTS diff --git a/users/jack/jack.c b/users/jack/jack.c @@ -49,6 +49,25 @@ bool process_detected_host_os_user(os_variant_t detected_os) { } #endif +#ifdef OLED_ENABLE +uint32_t oled_timer = 0; + +void oled_timer_reset(void) { oled_timer = timer_read32(); } + +__attribute__((weak)) bool oled_task_keymap(void) { return true; } +bool oled_task_user(void) { + if (is_keyboard_master()) { + if (timer_elapsed32(oled_timer) > THREE_MIN) { + oled_off(); + return false; + } else + oled_on(); + } + oled_task_keymap(); + return false; +} +#endif + #ifndef MAGIC_ENABLE uint16_t keycode_config(uint16_t keycode) { return keycode; } uint8_t mod_config(uint8_t mod) { return mod; } diff --git a/users/jack/jack.h b/users/jack/jack.h @@ -30,12 +30,6 @@ void housekeeping_task_qp(void); #ifdef OLED_ENABLE bool oled_task_keymap(void); void oled_timer_reset(void); -void oled_wpm_graph(void); -void oled_felix_dog(void); -void oled_layer_anim(void); -void oled_layer_status(void); -void oled_mod_status(void); -void oled_wpm(void); #endif void keyboard_pre_init_keymap(void); diff --git a/users/jack/oled.c b/users/jack/oled.c @@ -1,180 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#include "jack.h" -#include "oled.h" - -uint32_t oled_timer = 0; - -void oled_timer_reset(void) { oled_timer = timer_read32(); } - -__attribute__((weak)) bool oled_task_keymap(void) { return true; } -bool oled_task_user(void) { - if (is_keyboard_master()) { - if (timer_elapsed32(oled_timer) > 180000) { - oled_off(); - return false; - } else - oled_on(); - } - oled_task_keymap(); - return false; -} - -void anim_frame(uint16_t size, char const action[][size]) { - static uint8_t current_frame = 0; - current_frame = (current_frame + 1) & 1; - oled_write_raw(action[current_frame], size); -} - -void oled_wpm_graph(void) { - static uint8_t height = OLED_DISPLAY_HEIGHT - 1, vert_count = 0, - max_wpm = 160; - extern uint8_t oled_buffer[OLED_MATRIX_SIZE]; - extern OLED_BLOCK_TYPE oled_dirty; - static uint16_t graph_timer = 0; - if (timer_elapsed(graph_timer) > 100) { - height = 63 - ((get_current_wpm() / (float)max_wpm) * 63); - for (uint8_t i = 0; i <= 1; i++) - oled_write_pixel(3, height + i, true); - if (vert_count == 3) { - vert_count = 0; - while (height <= 63) { - oled_write_pixel(3, height, true); - height++; - } - } else { - for (uint8_t i = 63; i > height; i--) - if (!(i % 3)) - oled_write_pixel(3, i, true); - vert_count++; - } - for (uint16_t y = 0; y < 8; y++) { - for (uint16_t x = 124; x > 0; x--) { - uint16_t i = y * OLED_DISPLAY_WIDTH + x; - oled_buffer[i] = oled_buffer[i - 1]; - oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE)); - } - } - graph_timer = timer_read(); - } -} - -void oled_felix_dog(void) { - static uint16_t felix_anim_timer = 0; - if (timer_elapsed(felix_anim_timer) > 200) { - felix_anim_timer = timer_read(); - if (get_mods() & MOD_MASK_SHIFT || host_keyboard_led_state().caps_lock || - is_caps_word_on()) - anim_frame(FELIX_FRAME_SIZE, felix_bark); - else if (get_mods() & MOD_MASK_CAG) - anim_frame(FELIX_FRAME_SIZE, felix_sneak); - else if (get_current_wpm() > 60) - anim_frame(FELIX_FRAME_SIZE, felix_run); - else if (get_current_wpm() && get_current_wpm() <= 60) - anim_frame(FELIX_FRAME_SIZE, felix_walk); - else - anim_frame(FELIX_FRAME_SIZE, felix_sit); - } -} - -void oled_layer_anim(void) { - static uint16_t layer_anim_timer = 0; - if (timer_elapsed(layer_anim_timer) > 200) { - layer_anim_timer = timer_read(); - switch (get_highest_layer(layer_state)) { - case LAYER0: - anim_frame(520, tap_num); - break; - case LAYER1: - anim_frame(650, tap_sym); - break; - case LAYER3: - anim_frame(520, tap_sys); - break; - } - } -} - -void oled_layer_status(void) { - static const char PROGMEM base[] = {0x20, 0x94, 0x95, 0x96, 0x20, - 0x20, 0xb4, 0xb5, 0xb6, 0x20, - 0x20, 0xd4, 0xd5, 0xd6, 0x20}; - static const char PROGMEM lower[] = {0x20, 0x9a, 0x9b, 0x9c, 0x20, - 0x20, 0xba, 0xbb, 0xbc, 0x20, - 0x20, 0xda, 0xdb, 0xdc, 0x20}; - static const char PROGMEM raise[] = {0x20, 0x97, 0x98, 0x99, 0x20, - 0x20, 0xb7, 0xb8, 0xb9, 0x20, - 0x20, 0xd7, 0xd8, 0xd9, 0x20}; - switch (get_highest_layer(layer_state)) { - case LAYER1: - oled_write(lower, false); - break; - case LAYER3: - oled_write(raise, false); - break; - default: - oled_write(base, false); - } -} - -void oled_mod_status(void) { - const uint8_t mods = get_mods(); - static const char PROGMEM - gui_off_1[] = {0x85, 0x86}, - gui_off_2[] = {0xa5, 0xa6}, gui_on_1[] = {0x8d, 0x8e}, - gui_on_2[] = {0xad, 0xae}, alt_off_1[] = {0x87, 0x88}, - alt_off_2[] = {0xa7, 0xa8}, alt_on_1[] = {0x8f, 0x90}, - alt_on_2[] = {0xaf, 0xb0}, ctrl_off_1[] = {0x89, 0x8a}, - ctrl_off_2[] = {0xa9, 0xaa}, ctrl_on_1[] = {0x91, 0x92}, - ctrl_on_2[] = {0xb1, 0xb2}, shift_off_1[] = {0x8b, 0x8c}, - shift_off_2[] = {0xab, 0xac}, shift_on_1[] = {0xcd, 0xce}, - shift_on_2[] = {0xcf, 0xd0}, off_off_1[] = {0xc5}, off_off_2[] = {0xc6}, - on_off_1[] = {0xc7}, on_off_2[] = {0xc8}, off_on_1[] = {0xc9}, - off_on_2[] = {0xca}, on_on_1[] = {0xcb}, on_on_2[] = {0xcc}; - - oled_write(mods & MOD_MASK_GUI ? gui_on_1 : gui_off_1, false); - if ((mods & MOD_MASK_GUI) && (mods & MOD_MASK_ALT)) - oled_write(on_on_1, false); - else if (mods & MOD_MASK_GUI) - oled_write(on_off_1, false); - else if (mods & MOD_MASK_ALT) - oled_write(off_on_1, false); - else - oled_write(off_off_1, false); - oled_write(mods & MOD_MASK_ALT ? alt_on_1 : alt_off_1, false); - oled_write(mods & MOD_MASK_GUI ? gui_on_2 : gui_off_2, false); - if ((mods & MOD_MASK_GUI) && (mods & MOD_MASK_ALT)) - oled_write(on_on_2, false); - else if (mods & MOD_MASK_GUI) - oled_write(on_off_2, false); - else if (mods & MOD_MASK_ALT) - oled_write(off_on_2, false); - else - oled_write(off_off_2, false); - oled_write(mods & MOD_MASK_ALT ? alt_on_2 : alt_off_2, false); - oled_write(mods & MOD_MASK_CTRL ? ctrl_on_1 : ctrl_off_1, false); - if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_SHIFT)) - oled_write(on_on_1, false); - else if (mods & MOD_MASK_CTRL) - oled_write(on_off_1, false); - else if (mods & MOD_MASK_SHIFT) - oled_write(off_on_1, false); - else - oled_write(off_off_1, false); - oled_write(mods & MOD_MASK_SHIFT ? shift_on_1 : shift_off_1, false); - oled_write(mods & MOD_MASK_CTRL ? ctrl_on_2 : ctrl_off_2, false); - if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_SHIFT)) - oled_write(on_on_2, false); - else if (mods & MOD_MASK_CTRL) - oled_write(on_off_2, false); - else if (mods & MOD_MASK_SHIFT) - oled_write(off_on_2, false); - else - oled_write(off_off_2, false); - oled_write(mods & MOD_MASK_SHIFT ? shift_on_2 : shift_off_2, false); -} - -void oled_wpm(void) { - oled_write(PSTR("WPM: "), false); - oled_write_ln(get_u8_str(get_current_wpm(), ' '), false); -} diff --git a/users/jack/oled.h b/users/jack/oled.h @@ -1,561 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#pragma once - -#define FELIX_FRAME_SIZE 96 -#define TAP_NUM_SYS_FRAME_SIZE 520 -#define TAP_SYM_FRAME_SIZE 650 - -static const char PROGMEM felix_sit[][FELIX_FRAME_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xfc, 0xfe, 0xfd, 0xfe, 0xdc, 0xfc, 0xfc, 0xfe, 0x5d, - 0xfe, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xf0, 0xf8, 0x1c, 0xf0, 0xf8, 0xfc, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf9, 0xfd, 0x7f, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, - 0x07, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x37, 0x21, 0x13, 0x3f, 0x3f, - 0x3f, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xfe, 0xfd, 0xfe, 0xfc, 0xdc, 0xfc, 0xfe, 0xfd, 0x5e, - 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0xf0, 0xf8, 0xfc, 0x80, 0xf0, 0xf8, 0xfc, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf1, 0xfd, 0x7f, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, - 0x07, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x37, 0x21, 0x13, 0x3f, 0x3f, - 0x3f, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - -static const char PROGMEM felix_walk[][FELIX_FRAME_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf0, 0x70, 0x30, - 0x20, 0x00, 0x80, 0xc0, 0xc0, 0xf0, 0xf8, 0xf4, 0xf8, 0x70, 0xf0, 0xf0, - 0xf8, 0x74, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x0f, 0xff, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xe7, 0xf5, 0x1f, 0x0f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x1f, 0x3f, 0x3f, 0x3f, 0x0f, 0x11, 0x1f, 0x1f, 0x03, 0x07, 0x1f, 0x3f, - 0x3f, 0x0f, 0x13, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xc0, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xe8, 0xf0, 0xe0, 0xe0, 0xe0, - 0xf0, 0xe8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0x3f, 0xfb, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xef, 0xcf, 0xea, 0x3f, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x3f, 0x3f, 0x0f, 0x03, 0x07, 0x0f, 0x1f, 0x03, 0x1f, 0x1f, 0x17, 0x0f, - 0x1f, 0x3f, 0x3f, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - -static const char PROGMEM felix_run[][FELIX_FRAME_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xf8, 0xf8, 0xf8, 0xb0, 0xa0, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xfc, 0xf4, 0xe4, 0xf8, 0x70, - 0xf8, 0xe4, 0xf8, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x63, 0xe7, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x67, 0x37, 0x35, - 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x07, - 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x07, 0x0f, - 0x1f, 0x3f, 0x3b, 0x33, 0x07, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xf8, 0xe8, 0xc8, 0xf0, 0xe0, 0xf0, - 0xc8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x0f, 0x1f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xef, 0xcf, 0x6f, 0x6a, - 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x03, 0x0f, 0x1f, 0x3f, 0x3f, 0x37, 0x03, 0x1f, 0x3f, 0x3f, - 0x1f, 0x0f, 0x1f, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - -static const char PROGMEM felix_bark[][FELIX_FRAME_SIZE] = { - { - 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x80, 0xc0, 0xfc, 0xf4, 0xe4, 0xf8, 0x70, 0xf8, 0xe4, 0xf8, - 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, - 0x1f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf7, 0x37, 0x35, 0x1f, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x03, 0x0f, 0x1f, 0x3f, 0x3f, 0x37, 0x03, 0x03, 0x07, 0x0f, 0x1f, 0x3f, - 0x3b, 0x33, 0x07, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0xe0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xec, 0xf4, 0xe4, 0xf8, 0x70, 0xf8, 0xe4, - 0xf8, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, - 0x1f, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x77, 0x37, 0x35, 0x1f, 0x0f, - 0x20, 0x4a, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x03, 0x0f, 0x1f, 0x3f, 0x3f, 0x37, 0x03, 0x03, 0x07, 0x0f, 0x1f, 0x3f, - 0x3b, 0x33, 0x07, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - -static const char PROGMEM felix_sneak[][FELIX_FRAME_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, - 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x3f, 0xff, 0xfb, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, - 0xfc, 0xfe, 0xff, 0xff, 0xfe, 0xff, 0xf7, 0xff, 0x7e, 0x7f, 0x57, 0xfc, - 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1f, - 0x3f, 0x3f, 0x3f, 0x0f, 0x1f, 0x1f, 0x03, 0x07, 0x1f, 0x3f, 0x3f, 0x3f, - 0x0f, 0x1f, 0x1f, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0xc0, 0x80, 0xc0, - 0x20, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x7f, 0xf7, 0xfb, 0xfd, 0xfd, 0xfd, 0xfd, 0xfc, 0xfc, 0xfc, 0xfc, - 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xbf, 0xbf, 0xab, 0xfe, - 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, - 0x3f, 0x0f, 0x03, 0x07, 0x0f, 0x1f, 0x1f, 0x07, 0x1f, 0x1f, 0x0f, 0x1f, - 0x3f, 0x3f, 0x37, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - -static const char PROGMEM tap_num[][TAP_NUM_SYS_FRAME_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x9c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, - 0x10, 0x20, 0x20, 0x20, 0x11, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, - 0x0e, 0xf0, 0x20, 0xc0, 0x80, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x30, 0x0c, - 0x02, 0x11, 0x21, 0x40, 0x80, 0x04, 0x06, 0x09, 0x24, 0x24, 0x18, 0x80, - 0x81, 0x41, 0x42, 0x24, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x10, 0x8f, 0x48, 0xc4, - 0x84, 0x88, 0x08, 0x10, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80, - 0x80, 0x40, 0xc0, 0x30, 0x08, 0x44, 0x84, 0x02, 0x02, 0x01, 0x01, 0x78, - 0x28, 0x11, 0x21, 0x42, 0x06, 0x05, 0x08, 0x90, 0x60, 0x80, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x80, 0x40, 0x40, - 0x20, 0x20, 0x1f, 0x92, 0x8c, 0x08, 0x18, 0x14, 0x24, 0x7a, 0x46, 0x81, - 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x41, 0x44, 0x24, 0x23, 0x10, - 0x10, 0x08, 0x88, 0x84, 0x43, 0x5c, 0x20, 0x20, 0x10, 0x10, 0x20, 0x20, - 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x18, 0x27, 0x40, 0x80, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, - 0xc2, 0x21, 0x11, 0x10, 0x08, 0x0b, 0x05, 0x66, 0x42, 0x82, 0x04, 0x04, - 0x08, 0x18, 0x14, 0x2c, 0x43, 0x80, 0x04, 0x08, 0x10, 0x20, 0x41, 0x80, - 0x80, 0x8f, 0x44, 0x44, 0x20, 0x20, 0x10, 0x10, 0x09, 0x86, 0xb8, 0x40, - 0x40, 0x20, 0x20, 0x40, 0x40, 0x80, 0xe0, 0x18, 0x06, 0x01, 0x08, 0x10, - 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x88, 0x80, 0x40, 0x40, 0x20, 0x21, - 0x12, 0x0c, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, - 0x10, 0x20, 0x40, 0x40, 0x20, 0x60, 0x9c, 0x03, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x20, 0x20, 0x20, 0x11, 0x10, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x81, 0x8e, 0x70, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0xc8, 0x24, - 0x24, 0x42, 0x82, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x81, 0x41, 0x42, 0x24, 0x18, 0xe0, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, 0x27, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x70, 0x0c, 0x03, 0x00, 0x04, 0x08, 0x10, 0x20, - 0x41, 0x80, 0x80, 0x81, 0x46, 0x40, 0x20, 0x20, 0x10, 0x10, 0x09, 0x86, - 0xb8, 0x50, 0x60, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x40, 0xc0, 0x30, - 0x08, 0x44, 0x84, 0x02, 0x02, 0x11, 0x19, 0x24, 0x90, 0x91, 0x61, 0x03, - 0x04, 0x04, 0x08, 0x90, 0x60, 0x80, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x80, 0x60, 0x10, 0x88, 0x08, 0x04, 0x04, 0x23, 0x12, 0x71, - 0x21, 0x22, 0xc2, 0x04, 0x08, 0x08, 0x10, 0x20, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x30, 0x0c, 0x02, 0x11, 0x21, 0x40, 0x80, 0x00, 0x00, 0x1e, - 0x0a, 0x04, 0x08, 0x90, 0x81, 0x41, 0x42, 0x24, 0x18, 0xe0, 0x00, 0x01, - 0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0xc2, 0x21, 0x11, 0x10, - 0x08, 0x0b, 0x45, 0x26, 0x22, 0xc2, 0x04, 0x04, 0x0c, 0x1e, 0x11, 0x20, - 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x10, 0x11, 0x09, 0x08, 0x04, - 0x04, 0x02, 0x82, 0x81, 0x40, 0x47, 0x38, 0x20, 0x10, 0x10, 0x20, 0x20, - 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x02, 0x06, 0x09, 0x10, 0x20, - 0x40, 0x80, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, - 0xc0, 0x20, 0x10, 0x10, 0x08, 0x08, 0x07, 0x64, 0x42, 0x82, 0x04, 0x04, - 0x08, 0x10, 0x1c, 0x23, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, - 0x20, 0x23, 0x11, 0x11, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x0e, 0xf0, - 0x20, 0xc0, 0x80, 0x80, 0x40, 0x40, 0xe0, 0x18, 0x06, 0x01, 0x08, 0x10, - 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x88, 0x80, 0x40, 0x40, 0x20, 0x21, - 0x12, 0x0c, 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x10, 0x08, 0x68, 0x9c, 0x03, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x20, 0x20, 0x20, 0x11, 0x10, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x01, 0x0e, 0xf0, 0x20, 0xc0, 0x80, 0x40, 0x40, 0xa0, 0xa0, 0xd0, - 0x90, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x01, 0x03, 0x04, 0x04, 0x08, 0x90, 0x60, 0x80, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, 0x27, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x9c, 0x03, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, - 0x10, 0x20, 0x20, 0x20, 0x11, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x81, - 0x8e, 0x70, 0x40, 0x20, 0x20, 0x40, 0x40, 0x80, 0x00, 0xc0, 0x30, 0x0c, - 0x02, 0x11, 0x21, 0x40, 0x80, 0x04, 0x06, 0x09, 0x24, 0x24, 0x18, 0x80, - 0x81, 0x41, 0x42, 0x24, 0x18, 0xe0, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, - 0x02, 0x02, 0x81, 0x61, 0x10, 0x88, 0x08, 0x04, 0x05, 0x22, 0x12, 0x71, - 0x21, 0x22, 0xc2, 0x04, 0x08, 0x08, 0x10, 0x20, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x80, - 0x80, 0xc0, 0x30, 0x0c, 0x02, 0x11, 0x21, 0x40, 0x80, 0x00, 0x00, 0x1e, - 0x0a, 0x04, 0x08, 0x90, 0x81, 0x41, 0x42, 0x24, 0x18, 0xe0, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0xc0, 0x20, 0x10, 0x10, - 0x08, 0x08, 0x47, 0x24, 0x22, 0xc2, 0x04, 0x04, 0x08, 0x1e, 0x11, 0x20, - 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x10, 0x11, 0x09, 0x08, 0x04, - 0x04, 0x02, 0x02, 0x01, 0x00, 0x07, 0xf8, 0x80, 0x40, 0x40, 0x80, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x06, 0x09, 0x10, 0x20, - 0x40, 0x80, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, - 0x00, 0x80, 0x40, 0x40, 0x20, 0x20, 0x1f, 0x92, 0x0c, 0x08, 0x10, 0x10, - 0x28, 0x68, 0x5c, 0x83, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, - 0x20, 0x23, 0x11, 0x11, 0x08, 0x08, 0x04, 0x04, 0x02, 0x81, 0x8e, 0x70, - 0x60, 0x20, 0x20, 0x40, 0x40, 0xc0, 0xa0, 0x60, 0x18, 0x04, 0x22, 0x42, - 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x02, 0x82, 0x84, - 0x48, 0x30, 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, 0x00, 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, 0x02, - 0x04, 0x08, 0x10, 0x10, 0x08, 0x88, 0x74, 0x0c, 0x03, 0x00, 0x04, 0x08, - 0x10, 0x20, 0x40, 0x81, 0x81, 0x82, 0x44, 0x40, 0x20, 0x20, 0x10, 0x10, - 0x09, 0x86, 0xb8, 0x50, 0x60, 0x20, 0x20, 0x10, 0x10, 0x08, 0xc8, 0x24, - 0x24, 0x42, 0x82, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x81, 0x41, 0x42, 0x24, 0x18, 0xe0, 0x00, 0x01, 0x02, 0x04, - 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x81, 0x9e, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - -static const char PROGMEM tap_sym[][TAP_SYM_FRAME_SIZE] = { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, - 0x08, 0x0c, 0x0a, 0x09, 0x09, 0x09, 0x08, 0x04, 0x04, 0x04, 0x04, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20, 0x50, 0x40, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x22, 0x21, 0x21, 0x22, 0x2c, 0x30, 0xd0, - 0x10, 0x11, 0x21, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x20, 0x21, 0x12, 0x1c, 0xf0, 0x10, 0x18, 0x08, 0x08, 0x00, 0x00, - 0x01, 0x01, 0x02, 0x04, 0x08, 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0xc0, 0x20, 0x10, - 0x08, 0x04, 0x02, 0x81, 0x01, 0x00, 0x00, 0x40, 0x80, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x24, 0x24, 0x24, 0x18, 0x00, 0xc0, 0x30, 0x0e, - 0x80, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x20, 0x20, - 0x40, 0x40, 0x40, 0x20, 0x18, 0x00, 0x00, 0x00, 0x01, 0x82, 0x44, 0x78, - 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x07, 0x04, 0x04, 0x02, 0x02, - 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x81, 0x81, 0x81, 0x82, 0x02, 0x02, 0x02, 0x04, - 0x04, 0x08, 0x0b, 0x10, 0x10, 0x20, 0x60, 0x20, 0x30, 0x18, 0x0c, 0x04, - 0x03, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x08, 0x88, 0x85, - 0x4e, 0x74, 0xe2, 0x21, 0x21, 0x17, 0x18, 0x68, 0xc4, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x07, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, - 0x20, 0x10, 0x0c, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x30, 0x10, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x10, 0x30, 0x40, 0x80, 0x00, 0x0e, 0x03, 0x01, - 0x01, 0x00, 0xe0, 0x30, 0x19, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x04, 0x08, 0x10, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x01, - 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x10, - 0x10, 0x10, 0x10, 0x08, 0x08, 0x34, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x63, 0xc1, 0xc1, 0xbe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x1f, 0x20, 0x40, 0xc0, 0x8e, 0x11, 0x19, 0x0e, 0x03, - 0x86, 0x84, 0xc6, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x20, 0x18, 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, 0x03, 0x00, 0x02, 0x02, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0x80, - 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x18, - 0x14, 0x14, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x40, 0x60, 0x80, 0x80, 0x80, 0x00, 0x00, - 0x00, 0x1c, 0x22, 0x21, 0x21, 0x22, 0x2c, 0x30, 0x50, 0x90, 0x11, 0x11, - 0x20, 0x20, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, - 0x09, 0x0e, 0x78, 0x88, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x02, 0x0c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x10, - 0x08, 0x08, 0x04, 0x82, 0x01, 0x01, 0x00, 0x40, 0x80, 0x00, 0x80, 0x80, - 0x00, 0x00, 0x00, 0x30, 0x48, 0x48, 0x48, 0x30, 0x00, 0x80, 0x60, 0x18, - 0x04, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, - 0x80, 0x00, 0x00, 0x80, 0xe0, 0x01, 0x01, 0x02, 0x06, 0x08, 0x10, 0xe0, - 0x10, 0x20, 0x20, 0x20, 0x20, 0x21, 0x16, 0x18, 0x30, 0x50, 0x08, 0x08, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x30, 0x0c, 0x02, 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, 0xff, 0x00, 0x00, 0x00, 0x00, 0x08, 0x8c, 0xc5, - 0x4e, 0x74, 0xe2, 0x21, 0x21, 0x17, 0x18, 0x68, 0x84, 0x04, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x0e, 0x01, 0x00, 0x00, 0x07, 0x09, 0x08, 0x09, - 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0f, 0x00, 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, 0x04, 0x02, - 0x02, 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, 0x03, 0x04, 0x08, 0x10, 0x20, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x81, - 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x0a, 0x06, - 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x18, 0x60, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x78, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x02, 0x02, 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, 0x01, 0x02, 0x00, 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, 0x00, 0x00, 0x00, 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, 0x40, 0x40, 0x20, 0x10, - 0x10, 0x08, 0x04, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x80, 0xe0, 0x80, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x22, 0x21, 0x21, 0x23, 0x2c, 0x30, 0x70, 0x51, 0x91, 0x10, 0x10, - 0x10, 0x20, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x04, - 0x07, 0x3c, 0xc4, 0x04, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 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, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x18, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x05, 0x06, 0x03, - 0x01, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x20, 0x20, 0x20, 0x20, 0x21, 0x16, 0x1c, 0x38, 0x68, 0x04, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x30, 0x0c, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x40, - 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7e, 0x02, 0x01, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x04, 0x18, 0x30, 0x40, 0x80, - 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x02, 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, - }}; - -static const char PROGMEM tap_sys[][TAP_NUM_SYS_FRAME_SIZE] = { - { - 0x01, 0x80, 0x60, 0x10, 0x48, 0x08, 0x24, 0x04, 0x14, 0x84, 0x14, 0x04, - 0x28, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00, 0x04, 0x00, 0x80, 0x60, 0x10, - 0x08, 0x08, 0x04, 0x44, 0x84, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x60, - 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x02, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x41, - 0x21, 0x21, 0x21, 0xa1, 0x61, 0x41, 0xc1, 0x41, 0xc1, 0x81, 0x81, 0x81, - 0x81, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x81, 0x41, 0x21, 0x21, 0x21, 0xa2, 0xfc, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, - 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, - 0x20, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1f, 0x60, 0x85, - 0x10, 0x40, 0x00, 0x80, 0x06, 0x07, 0x00, 0x00, 0x00, 0x00, 0x82, 0x60, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x60, 0x80, 0x40, 0x20, 0x20, 0x10, - 0x93, 0x5c, 0x10, 0x20, 0x20, 0x40, 0x80, 0x60, 0x1f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0x02, 0x0c, 0x70, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x03, 0x00, 0xc0, 0x38, 0x06, 0x01, 0x80, - 0x70, 0x0c, 0x02, 0x03, 0x1c, 0xe0, 0x01, 0x06, 0x38, 0xc1, 0x02, 0x0c, - 0x70, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x03, 0x00, 0xc0, - 0x38, 0x06, 0x01, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x0c, 0xf0, 0x04, 0x00, 0x80, 0x80, 0x88, 0x80, 0x81, 0x81, 0x02, 0x02, - 0x12, 0x02, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, - 0x80, 0x80, 0x90, 0x80, 0x81, 0x81, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, - 0x01, 0x01, 0x00, 0x00, 0x80, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x41, 0x8e, 0xb0, 0xc0, 0x83, 0x9c, 0x60, 0xa0, 0x18, 0x07, 0x80, - 0x40, 0x30, 0x0e, 0x01, 0x80, 0x60, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x18, 0x20, 0x41, 0x8e, 0xb0, 0xc0, 0x83, 0x9c, 0x60, - 0xa0, 0x18, 0x07, 0x80, 0x40, 0x30, 0x0e, 0x01, 0x80, 0x60, 0x1c, 0x03, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x60, 0x90, 0x08, - 0x08, 0x04, 0x64, 0x04, 0x02, 0xf2, 0x52, 0x92, 0x13, 0x12, 0x12, 0xf2, - 0x02, 0x04, 0x64, 0x04, 0x08, 0x08, 0x90, 0x70, 0x18, 0x07, 0x00, 0x00, - 0x1f, 0x12, 0x99, 0x14, 0x12, 0x1f, 0x00, 0x04, 0x00, 0x00, 0x1f, 0x10, - 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x40, 0x00, 0x1f, 0x10, 0x10, 0x10, - 0x10, 0x1f, 0x00, 0x00, 0x00, 0x40, 0x0d, 0x0d, 0x00, 0x0c, 0x0c, 0x00, - 0x01, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x1f, 0x20, 0x40, 0x40, - 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x43, 0x42, 0x42, 0x42, 0x42, 0x41, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x43, 0x42, - 0x42, 0x42, 0x42, 0x41, 0x40, 0x40, 0x40, 0x20, 0x1f, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x02, 0x04, 0x04, 0x08, - 0x08, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x08, 0x08, 0x04, 0x44, - 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - }, - { - 0x04, 0x80, 0x60, 0x10, 0x48, 0x08, 0xa4, 0x04, 0x14, 0x04, 0x14, 0x04, - 0x28, 0x88, 0x10, 0x60, 0x80, 0x00, 0x04, 0x00, 0x00, 0x80, 0x60, 0x10, - 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0xc4, 0x04, 0x08, 0x08, 0x10, 0x60, - 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xfc, 0x02, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x41, - 0x21, 0x21, 0x21, 0xa1, 0x61, 0x41, 0xc1, 0x41, 0x41, 0x81, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x81, 0x41, 0x21, 0x21, 0x21, 0xa2, 0xfc, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, - 0x08, 0x04, 0x84, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, - 0x20, 0x42, 0x80, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1f, 0x60, 0x85, - 0x10, 0x40, 0x00, 0x81, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x82, 0x60, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x60, 0x80, 0x40, 0x20, 0x20, 0x10, - 0x50, 0x9e, 0x11, 0x20, 0x20, 0x40, 0x80, 0x60, 0x1f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x03, 0x00, 0xc0, 0x38, 0x06, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x1c, 0xe0, 0x01, 0x06, 0x38, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x03, 0x00, 0xc0, - 0x38, 0x06, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1e, - 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x0c, 0xf0, 0x00, 0x00, 0x80, 0x80, 0x90, 0x80, 0x81, 0x81, 0x02, 0x02, - 0x02, 0x02, 0x82, 0x82, 0x81, 0x81, 0x80, 0x88, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x88, 0x81, 0x81, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, - 0x01, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0xff, 0x41, 0x8e, 0xb0, 0xc0, 0x80, 0x80, 0x40, 0x20, 0x18, 0x07, 0x80, - 0x40, 0x30, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x18, 0x20, 0x41, 0x8e, 0xb0, 0xc0, 0x80, 0x80, 0x40, - 0x20, 0x18, 0x07, 0x80, 0x40, 0x30, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x60, 0x90, 0x08, - 0x08, 0x04, 0x64, 0x04, 0x02, 0xf2, 0x12, 0x92, 0x53, 0x92, 0x12, 0xf2, - 0x02, 0x04, 0x64, 0x04, 0x08, 0x08, 0x90, 0x70, 0x18, 0x07, 0x00, 0x00, - 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x80, 0x00, 0x00, 0x1f, 0x10, - 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, - 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x40, 0x01, 0x01, 0x80, 0x0d, 0x0d, 0x00, - 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0x40, 0x40, - 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x1f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, - 0x08, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x80, 0x60, 0x14, 0x48, 0x08, 0x24, 0x04, 0x14, 0x04, 0x14, 0x04, - 0x28, 0x88, 0x10, 0x60, 0x80, 0x00, 0x00, 0x08, 0x00, 0x80, 0x60, 0x10, - 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x88, 0x10, 0x60, - 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x02, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x41, - 0x21, 0x21, 0x21, 0x21, 0x21, 0x41, 0x81, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x81, 0x41, 0x21, 0x21, 0x21, 0x22, 0xfc, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x40, 0x20, 0x10, 0x10, 0x08, - 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, - 0x20, 0x40, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x60, 0x85, - 0x10, 0x44, 0x04, 0x84, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x82, 0x60, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x60, 0x80, 0x40, 0x20, 0x20, 0x10, - 0x10, 0x18, 0x14, 0x22, 0x21, 0x40, 0x80, 0x60, 0x1f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xf0, - 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x08, 0x30, 0x40, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x0c, 0xf0, 0x00, 0x00, 0x80, 0x80, 0x80, 0x90, 0x81, 0x81, 0x02, 0x12, - 0x02, 0x02, 0x82, 0x82, 0x81, 0x81, 0x80, 0x80, 0x00, 0x00, 0x08, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x02, 0x02, 0x02, 0x02, 0x02, 0x0a, - 0x01, 0x81, 0x80, 0x00, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, - 0xff, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x20, 0x18, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, - 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x60, 0x90, 0x08, - 0x08, 0x04, 0x64, 0x04, 0x02, 0xf2, 0x12, 0x13, 0x12, 0x92, 0x52, 0xf2, - 0x02, 0x04, 0x64, 0x04, 0x08, 0x08, 0x90, 0x70, 0x18, 0x07, 0x00, 0x00, - 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x80, 0x00, 0x1f, 0x10, - 0x16, 0x16, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, - 0x50, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x01, 0x01, 0x00, - 0x0d, 0x0d, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x1f, 0x20, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x1f, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, - 0x08, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; diff --git a/users/jack/oledfont.h b/users/jack/oledfont.h @@ -1,118 +0,0 @@ -// Copyright 2025 jack@pngu.org -// SPDX-License-Identifier: GPL-2.0-or-later -#include "progmem.h" - -static const unsigned char PROGMEM font[] = { - 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, 0x90, 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, 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, 0xF8, 0x04, 0x22, 0x52, 0xE2, - 0x42, 0x42, 0x42, 0xE2, 0x52, 0x22, 0x22, 0x22, 0x42, 0x82, 0x02, 0x02, - 0x22, 0x22, 0x02, 0x04, 0xF8, 0x00, 0x00, 0xF8, 0x04, 0x02, 0x02, 0x82, - 0x42, 0x22, 0x42, 0x82, 0x02, 0x02, 0x02, 0x82, 0x42, 0x22, 0x12, 0x22, - 0x42, 0x82, 0x02, 0x04, 0xF8, 0x00, 0x00, 0xF8, 0xFC, 0xDE, 0xAE, 0x1E, - 0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE, 0xDE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE, - 0xDE, 0xDE, 0xFE, 0xFC, 0xF8, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0x7E, - 0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, - 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, - 0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, - 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, - 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0, - 0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0, 0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80, - 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, 0x1F, 0x20, 0x44, 0x4A, 0x47, - 0x42, 0x42, 0x42, 0x47, 0x4A, 0x44, 0x40, 0x40, 0x40, 0x40, 0x41, 0x42, - 0x44, 0x44, 0x40, 0x20, 0x1F, 0x00, 0x00, 0x1F, 0x20, 0x40, 0x41, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x41, 0x40, 0x41, 0x41, 0x4F, 0x48, 0x48, 0x48, - 0x4F, 0x41, 0x41, 0x20, 0x1F, 0x00, 0x00, 0x1F, 0x3F, 0x7B, 0x75, 0x78, - 0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D, - 0x7B, 0x7B, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x3F, 0x7F, 0x7E, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E, 0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C, - 0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88, 0x88, 0x88, 0x55, 0x55, 0x23, 0x23, - 0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47, 0x23, 0x23, 0x55, 0x55, 0x88, 0x88, - 0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2, 0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4, - 0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88, 0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6, - 0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6, 0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88, - 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, 0x04, 0xF8, 0x00, 0x00, 0xF8, 0x04, - 0x20, 0x1F, 0x00, 0x00, 0x1F, 0x20, 0xFC, 0xF8, 0x00, 0x00, 0xF8, 0x04, - 0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x20, 0x04, 0xF8, 0x00, 0x00, 0xF8, 0xFC, - 0x20, 0x1F, 0x00, 0x00, 0x1F, 0x3F, 0xFC, 0xF8, 0x00, 0x00, 0xF8, 0xFC, - 0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x3F, 0xFE, 0x7E, 0xBE, 0xDE, 0xEE, 0xDE, - 0xBE, 0x7E, 0xFE, 0xFC, 0xF8, 0x00, 0x7E, 0x7E, 0x70, 0x77, 0x77, 0x77, - 0x70, 0x7E, 0x7E, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, - 0x04, 0x04, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07, - 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x02, - 0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, -}; diff --git a/users/jack/rules.mk b/users/jack/rules.mk @@ -19,11 +19,6 @@ INTROSPECTION_KEYMAP_C = user_introspection.c SRC += $(USER_PATH)/jack.c $(USER_PATH)/tapping.c -ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += $(USER_PATH)/oled.c - WPM_ENABLE = yes -endif - ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes) SRC += $(USER_PATH)/colour.c endif