OLED overhaul

- adjusted and consolidated font after playing around
- cleaned up luna code so its easier to read and configure
- overhauled the layout, making it less busy but still functional
- adjusted the combos to move tab and add back mb1
This commit is contained in:
Victor 2024-06-20 23:29:16 -05:00
parent 409bf5b702
commit 8a520c259d
Failed to generate hash of commit
9 changed files with 275 additions and 560 deletions

View file

@ -12,9 +12,4 @@
//Set common configuration for all keyboards //Set common configuration for all keyboards
#define OLED_TIMEOUT 60000 //1 min #define OLED_TIMEOUT 60000 //1 min
#define OLED_FONT_H "./lib/font.c"
#if defined(OLED_DISPLAY_128X64)
# define OLED_FONT_H "./lib/font.c"
#else
# define OLED_FONT_H "./lib/font_narrow.c"
#endif //OLED_DISPLAY_128X64

View file

@ -29,7 +29,7 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode
switch (combo_index) { switch (combo_index) {
// case MOUSE_BUTTON1: case MOUSE_BUTTON1:
// case MOUSE_BUTTON2: // case MOUSE_BUTTON2:
// case MOUSE_BUTTON3: // case MOUSE_BUTTON3:
// case MOUSE_BUTTON4: // case MOUSE_BUTTON4:

View file

@ -2,7 +2,7 @@
#include "t4corun.h" #include "t4corun.h"
//const uint16_t PROGMEM mou_btn1_combo[] = { KC_D, KC_F, COMBO_END }; const uint16_t PROGMEM mou_btn1_combo[] = { KC_D, KC_F, COMBO_END };
//const uint16_t PROGMEM mou_btn2_combo[] = { KC_S, KC_D, COMBO_END }; //const uint16_t PROGMEM mou_btn2_combo[] = { KC_S, KC_D, COMBO_END };
//const uint16_t PROGMEM mou_btn3_combo[] = { KC_F, KC_G, COMBO_END }; //const uint16_t PROGMEM mou_btn3_combo[] = { KC_F, KC_G, COMBO_END };
//const uint16_t PROGMEM mou_btn4_combo[] = { KC_F, KC_R, COMBO_END }; //const uint16_t PROGMEM mou_btn4_combo[] = { KC_F, KC_R, COMBO_END };
@ -12,11 +12,11 @@ const uint16_t PROGMEM mou_drg_combo[] = { KC_X, KC_C, COMBO_END };
const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END }; const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END };
const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END }; const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END };
const uint16_t PROGMEM key_tab_combo[] = { TR_COMM, TR_DOT, COMBO_END }; const uint16_t PROGMEM key_tab_combo[] = { KC_J, KC_V, COMBO_END };
enum combos { enum combos {
// MOUSE_BUTTON1, MOUSE_BUTTON1,
// MOUSE_BUTTON2, // MOUSE_BUTTON2,
// MOUSE_BUTTON3, // MOUSE_BUTTON3,
// MOUSE_BUTTON4, // MOUSE_BUTTON4,
@ -34,7 +34,7 @@ uint16_t COMBO_LEN = COMBO_LENGTH;
combo_t key_combos[COMBO_LENGTH] = { combo_t key_combos[COMBO_LENGTH] = {
// [MOUSE_BUTTON1] = COMBO(mou_btn1_combo, KC_BTN1), [MOUSE_BUTTON1] = COMBO(mou_btn1_combo, KC_BTN1),
// [MOUSE_BUTTON2] = COMBO(mou_btn2_combo, KC_BTN2), // [MOUSE_BUTTON2] = COMBO(mou_btn2_combo, KC_BTN2),
// [MOUSE_BUTTON3] = COMBO(mou_btn3_combo, KC_BTN3), // [MOUSE_BUTTON3] = COMBO(mou_btn3_combo, KC_BTN3),
// [MOUSE_BUTTON4] = COMBO(mou_btn4_combo, KC_BTN4), // [MOUSE_BUTTON4] = COMBO(mou_btn4_combo, KC_BTN4),

View file

@ -17,12 +17,12 @@ void render_luna(void) {
if (timer_elapsed32(luna_anim_timer) > OLED_LUNA_ANIM_FRAME_DURATION) { if (timer_elapsed32(luna_anim_timer) > OLED_LUNA_ANIM_FRAME_DURATION) {
luna_anim_timer = timer_read32(); luna_anim_timer = timer_read32();
animate_luna(OLED_LUNA_X, OLED_LUNA_Y); animate_luna(OLED_LUNA_COL, OLED_LUNA_LINE);
} }
} }
void animate_luna(int LUNA_X, int LUNA_Y) { void animate_luna(int col, int line) {
uint8_t current_mod = get_mods(); uint8_t current_mod = get_mods();
uint8_t current_osm = get_oneshot_mods(); uint8_t current_osm = get_oneshot_mods();
@ -31,16 +31,16 @@ void animate_luna(int LUNA_X, int LUNA_Y) {
// Only works when Luna is rendered on Master Slide // Only works when Luna is rendered on Master Slide
if (isLunaJumping() || !isJumpShown()) { if (isLunaJumping() || !isJumpShown()) {
/* clear */ /* clear */
oled_set_cursor(LUNA_X, LUNA_Y + 2); oled_set_cursor(col, line + 2);
oled_write(" ", false); oled_write(" ", false);
oled_set_cursor(LUNA_X, LUNA_Y - 1); oled_set_cursor(col, line - 1);
setLunaJumped(); setLunaJumped();
} else { } else {
/* clear */ /* clear */
oled_set_cursor(LUNA_X, LUNA_Y - 1); oled_set_cursor(col, line - 1);
oled_write(" ", false); oled_write(" ", false);
oled_set_cursor(LUNA_X, LUNA_Y); oled_set_cursor(col, line);
} }
luna_current_frame = (luna_current_frame + 1) % 2; luna_current_frame = (luna_current_frame + 1) % 2;

View file

@ -2,9 +2,22 @@
#include "t4corun.h" #include "t4corun.h"
// LUNA PET Variables
#if defined(OLED_DISPLAY_128X64)
# define OLED_LUNA_COL 15
# define OLED_LUNA_LINE 5
#else
# define OLED_LUNA_COL 0
# define OLED_LUNA_LINE 12
#endif
#define OLED_LUNA_MIN_WALK_SPEED 10
#define OLED_LUNA_MIN_RUN_SPEED 40
#define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
#define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024
void render_luna(void); void render_luna(void);
void animate_luna(int LUNA_X, int LUNA_Y); void animate_luna(int col, int line);
// Luna Sit // Luna Sit
static const char PROGMEM sit[2][OLED_LUNA_ANIM_SIZE] = { static const char PROGMEM sit[2][OLED_LUNA_ANIM_SIZE] = {

View file

@ -6,7 +6,10 @@
// Shows the currently enabled Layer name // Shows the currently enabled Layer name
void render_default_layer_state(void) { void render_default_layer_state(uint8_t col, uint8_t line, bool moveCursor) {
if(moveCursor) {
oled_set_cursor(col, line);
}
switch (get_highest_layer(default_layer_state)) { switch (get_highest_layer(default_layer_state)) {
case _DEFAULT_LAYER_2: case _DEFAULT_LAYER_2:
@ -19,230 +22,216 @@ void render_default_layer_state(void) {
oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER1), false); oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER1), false);
break; break;
} }
} }
// Shows the currently enabled Layer name // Shows the currently enabled Layer name
void render_layer_state(void) { // This only shows the name that is enabled
void render_layer_state(uint8_t col, uint8_t line, bool moveCursor) {
if(moveCursor) {
oled_set_cursor(col, line);
}
oled_write_P(PSTR(OLED_RENDER_LAYER_2), get_highest_layer(layer_state) == _NAVIGATION);
oled_write_P(PSTR(OLED_RENDER_LAYER_3), get_highest_layer(layer_state) == _NUMBER);
oled_write_P(PSTR(OLED_RENDER_LAYER_4), get_highest_layer(layer_state) == _SYMBOL);
oled_write_P(PSTR(OLED_RENDER_LAYER_5), get_highest_layer(layer_state) == _CONFIG);
/*
switch (get_highest_layer(layer_state)) { switch (get_highest_layer(layer_state)) {
case _NAVIGATION: case _NAVIGATION:
oled_write_P(PSTR(OLED_RENDER_LAYER_2), get_highest_layer(layer_state) == _NAVIGATION); oled_write_P(PSTR(OLED_RENDER_LAYER_2), false);
break; break;
case _NUMBER: case _NUMBER:
oled_write_P(PSTR(OLED_RENDER_LAYER_3), get_highest_layer(layer_state) == _NUMBER); oled_write_P(PSTR(OLED_RENDER_LAYER_3), false);
break; break;
case _SYMBOL: case _SYMBOL:
oled_write_P(PSTR(OLED_RENDER_LAYER_4), get_highest_layer(layer_state) == _SYMBOL); oled_write_P(PSTR(OLED_RENDER_LAYER_4), false);
break; break;
case _CONFIG: case _CONFIG:
oled_write_P(PSTR(OLED_RENDER_LAYER_5), get_highest_layer(layer_state) == _CONFIG); oled_write_P(PSTR(OLED_RENDER_LAYER_5), false);
break; break;
default: default:
oled_write_P(PSTR(OLED_RENDER_LAYER_1), false); oled_write_P(PSTR(OLED_RENDER_LAYER_1), false);
break; break;
} }
*/
} }
// Graphic to show which layer on the stack is enabled // Shows the currently enabled Layer name
void render_layer_state_graphic(void) { // Renders a list of all the layers and highlights the active one
void render_layer_state_list(uint8_t col, uint8_t line, bool moveCursor) {
switch (get_highest_layer(layer_state)) { if(moveCursor) {
case _NAVIGATION: oled_set_cursor(col, line);
oled_write_P(lyr_nav, false );
break;
case _NUMBER:
oled_write_P(lyr_num, false );
break;
case _SYMBOL:
oled_write_P(lyr_sym, false );
break;
case _CONFIG:
oled_write_P(lyr_cfg, false );
break;
default:
oled_write_P(lyr_def, false );
break;
} }
oled_write_P(PSTR(OLED_RENDER_LAYER_2), get_highest_layer(layer_state) == _NAVIGATION);
oled_write_P(PSTR(OLED_RENDER_LAYER_3), get_highest_layer(layer_state) == _NUMBER);
oled_write_P(PSTR(OLED_RENDER_LAYER_4), get_highest_layer(layer_state) == _SYMBOL);
oled_write_P(PSTR(OLED_RENDER_LAYER_5), get_highest_layer(layer_state) == _CONFIG);
} }
// Shows the Host LED State (Num lock, caps lock , scroll lock) // Shows the Host LED State (Num lock, caps lock , scroll lock)
void render_keylock_status(bool vertical) { void render_lock_status(uint8_t col, uint8_t line) {
oled_set_cursor(col, line);
/*
if (vertical) {
oled_write_ln_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false);
oled_write_P(PSTR(" "), false);
}
*/
host_keyboard_led_state().num_lock ? oled_write_P(num_on, false ) : oled_write_P(num_off, false ); host_keyboard_led_state().num_lock ? oled_write_P(num_on, false ) : oled_write_P(num_off, false );
host_keyboard_led_state().caps_lock || is_caps_word_on() ? oled_write_P(caps_on, false ) : oled_write_P(caps_off, false ); host_keyboard_led_state().caps_lock || is_caps_word_on() ? oled_write_P(caps_on, false ) : oled_write_P(caps_off, false );
host_keyboard_led_state().scroll_lock ? oled_write_P(scroll_on, false ) : oled_write_P(scroll_off, false ); host_keyboard_led_state().scroll_lock ? oled_write_P(scroll_on, false ) : oled_write_P(scroll_off, false );
} }
// Indicates which modifies are enabled
void render_mod_status(bool vertical) {
// Indicates which modifies are enabled
void render_mod_status(uint8_t col, uint8_t line) {
uint8_t current_mod = get_mods(); uint8_t current_mod = get_mods();
uint8_t current_osm = get_oneshot_mods(); uint8_t current_osm = get_oneshot_mods();
oled_set_cursor(1,1); // draw the top line
oled_set_cursor(col, line);
(current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on_upper, false) : oled_write_P(shift_off_upper, false ); (current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on_upper, false) : oled_write_P(shift_off_upper, false );
oled_set_cursor(1,2); oled_write_P(mod_sep, false);
(current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on_lower, false) : oled_write_P(shift_off_lower, false );
oled_set_cursor(1,4);
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on_upper, false ) : oled_write_P(ctrl_off_upper, false ); (current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on_upper, false ) : oled_write_P(ctrl_off_upper, false );
oled_set_cursor(1,5); oled_write_P(mod_sep, false);
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on_lower, false ) : oled_write_P(ctrl_off_lower, false );
oled_set_cursor(1,7);
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on_upper, false ) : oled_write_P(alt_off_upper, false ); (current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on_upper, false ) : oled_write_P(alt_off_upper, false );
oled_set_cursor(1,8); oled_write_P(mod_sep, false);
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on_lower, false ) : oled_write_P(alt_off_lower, false );
oled_set_cursor(1,10);
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on_upper, false ) : oled_write_P(gui_off_upper, false ); (current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on_upper, false ) : oled_write_P(gui_off_upper, false );
oled_set_cursor(1,11);
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on_lower, false ) : oled_write_P(gui_off_lower, false );
// draw the lower line
oled_set_cursor(col, line + 1);
(current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on_lower, false) : oled_write_P(shift_off_lower, false );
oled_write_P(mod_sep, false);
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on_lower, false ) : oled_write_P(ctrl_off_lower, false );
oled_write_P(mod_sep, false);
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on_lower, false ) : oled_write_P(alt_off_lower, false );
oled_write_P(mod_sep, false);
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on_lower, false ) : oled_write_P(gui_off_lower, false );
} }
// Indicates which features are turned on or off // Indicates which modifies are enabled
void render_feature_status(bool vertical) { void render_mod_status_vertical(uint8_t col, uint8_t line) {
uint8_t current_mod = get_mods();
uint8_t current_osm = get_oneshot_mods();
if (vertical) { oled_set_cursor(col,line);
oled_write_ln_P(PSTR(OLED_RENDER_FEATURE_NAME), false); (current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on_upper, false) : oled_write_P(shift_off_upper, false );
oled_write_P(PSTR(" "), false); oled_set_cursor(col,line+1);
} (current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on_lower, false) : oled_write_P(shift_off_lower, false );
oled_set_cursor(col,line+3);
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on_upper, false ) : oled_write_P(ctrl_off_upper, false );
oled_set_cursor(col,line+4);
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on_lower, false ) : oled_write_P(ctrl_off_lower, false );
oled_set_cursor(col,line+6);
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on_upper, false ) : oled_write_P(alt_off_upper, false );
oled_set_cursor(col,line+7);
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on_lower, false ) : oled_write_P(alt_off_lower, false );
oled_set_cursor(col,line+9);
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on_upper, false ) : oled_write_P(gui_off_upper, false );
oled_set_cursor(col,line+10);
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on_lower, false ) : oled_write_P(gui_off_lower, false );
}
void render_feature_status(uint8_t col, uint8_t line) {
oled_set_cursor(col,line);
#if defined(RGB_MATRIX_ENABLE) #if defined(RGB_MATRIX_ENABLE)
rgb_matrix_is_enabled() ? oled_write_P(rgb_on, false) : oled_write_P(rgb_off, false); rgb_matrix_is_enabled() ? oled_write_P(rgb_matrix_on, false) : oled_write_P(rgb_matrix_off, false);
#else #else
oled_write_P(rgb_off, false); oled_write_P(rgb_matrix_off, false);
#endif //RGB_MATRIX_ENABLED #endif //RGB_MATRIX_ENABLED
// only works on master side oled_set_cursor(col+3,line);
host_keyboard_led_state().scroll_lock ? oled_write_P(dragscr_on, false) : oled_write_P(dragscr_off, false);
if (vertical) {
oled_write_P(PSTR(" "), false);
}
#if defined(AUDIO_ENABLE) #if defined(AUDIO_ENABLE)
is_audio_on() ? oled_write_P(sound_on, false) : oled_write_P(sound_off, false); is_audio_on() ? oled_write_P(sound_on, false) : oled_write_P(sound_off, false);
#else #else
oled_write_P(sound_off, false); oled_write_P(sound_off, false);
#endif //AUDIO_ENABLE #endif //AUDIO_ENABLE
oled_set_cursor(col+6,line);
#if defined(HAPTIC_ENABLE) #if defined(HAPTIC_ENABLE)
haptic_get_enable() ? oled_write_P(haptic_on, false) : oled_write_P(haptic_off, false); haptic_get_enable() ? oled_write_P(haptic_on, false) : oled_write_P(haptic_off, false);
#else #else
oled_write_P(haptic_off, false); oled_write_P(haptic_off, false);
#endif //HAPTIC_ENABLE #endif //HAPTIC_ENABLE
}
void render_klor_face_small(uint8_t col, uint8_t line) {
oled_set_cursor(col,line);
oled_write_P(klor_small_face_1, false);
oled_set_cursor(col,line+1);
oled_write_P(klor_small_face_2, false);
} }
void render_oled_32x128(void) {
// Coordinate the OLED rendering //process_record_user is only processed on master side
bool oled_task_user(void) { //split side OLED does not respond to key presses custom behaviors
if (is_keyboard_master()) {
render_default_layer_state(0,1,true);
render_layer_state_list(0,2,true);
#if defined(WPM_ENABLE)
render_luna();
#endif //WPM_ENABLE
} else {
render_mod_status_vertical(1,1);
render_lock_status(1,14);
}
}
#if defined(OLED_DISPLAY_128X64)
// 21 x 8
void render_oled_128x64(void) {
if (is_keyboard_master()) { if (is_keyboard_master()) {
oled_set_cursor(0,0); /*
render_layer_state(); base lyr: current lyr
---------------------
mod mod mod mod
mod mod mod mod
-------------- xxxxx
NCS xx xx xx xxxxx
*/
render_default_layer_state(0,0, true);
render_layer_state(0,0, false);
oled_set_cursor(0,1); oled_set_cursor(0,1);
oled_write_P(sep_v, false); oled_write_P(sep_v, false);
oled_set_cursor(0,4); render_mod_status(1,3);
render_mod_status(false);
oled_set_cursor(0,5); oled_set_cursor(0,6);
oled_write_P(sep_v, false); oled_write_P(sep_short_v, false);
oled_set_cursor(0,7); render_lock_status(1,7);
render_keylock_status(false); render_feature_status(5,7);
render_klor_face_small(15,6);
oled_set_cursor(13,7);
render_feature_status(false);
oled_set_cursor(15,3);
oled_write_P(klor_small_face_1, false);
oled_set_cursor(15,4);
oled_write_P(klor_small_face_2, false);
} else { } else {
oled_set_cursor(0,0); oled_set_cursor(0,0);
oled_write_raw_P(klor_face, sizeof(klor_face)); oled_write_raw_P(klor_face, sizeof(klor_face));
} }
#else
//process_record_user is only processed on master side
//split side OLED does not respond to key presses custom behaviors
if (is_keyboard_master()) {
oled_set_cursor(0,0);
render_default_layer_state();
render_layer_state();
//render_keylock_status(true);
/*
oled_set_cursor(0,3);
render_feature_status(true);
*/
#if defined(WPM_ENABLE)
render_luna();
#endif //WPM_ENABLE
} else {
oled_set_cursor(0,0);
render_mod_status(true);
oled_set_cursor(1,14);
render_keylock_status(true);
}
#endif
return false;
} }
// Coordinate the OLED rendering
bool oled_task_user(void) {
#if defined(OLED_DISPLAY_128X64)
render_oled_128x64();
#else
render_oled_32x128();
#endif
return false;
}
oled_rotation_t oled_init_user(oled_rotation_t rotation) { oled_rotation_t oled_init_user(oled_rotation_t rotation) {
//OLED_ROTATION_270 for Rollow/Corne/Swoop
//OLED_ROTATION_180 for KLOR
#if defined(OLED_DISPLAY_128X64) #if defined(OLED_DISPLAY_128X64)
//OLED_ROTATION_180 for KLOR
return OLED_ROTATION_180; return OLED_ROTATION_180;
#else #else
//OLED_ROTATION_270 for Rollow/Corne/Swoop
return OLED_ROTATION_270; return OLED_ROTATION_270;
#endif #endif
} }

View file

@ -2,16 +2,12 @@
#include "t4corun.h" #include "t4corun.h"
#define OLED_RENDER_KEYLOCK_NAME "Lock"
#define OLED_RENDER_MODS_NAME "Mods"
#define OLED_RENDER_FEATURE_NAME "Feat"
#define OLED_RENDER_WPM_NAME "Wpm"
#if defined(OLED_DISPLAY_128X64) #if defined(OLED_DISPLAY_128X64)
# define OLED_RENDER_DEFAULT_LAYER1 "QWERTY " # define OLED_RENDER_DEFAULT_LAYER1 "QWERTY :"
# define OLED_RENDER_DEFAULT_LAYER2 "COLEMAK DH" # define OLED_RENDER_DEFAULT_LAYER2 "COLEMAK DH:"
# define OLED_RENDER_DEFAULT_LAYER3 "GAME " # define OLED_RENDER_DEFAULT_LAYER3 "GAME :"
# define OLED_RENDER_LAYER_1 "Base "
# define OLED_RENDER_LAYER_2 "Navigation" # define OLED_RENDER_LAYER_2 "Navigation"
# define OLED_RENDER_LAYER_3 "Number " # define OLED_RENDER_LAYER_3 "Number "
# define OLED_RENDER_LAYER_4 "Symbol " # define OLED_RENDER_LAYER_4 "Symbol "
@ -29,31 +25,36 @@
# define OLED_RENDER_LAYER_5 " Cfg " # define OLED_RENDER_LAYER_5 " Cfg "
#endif #endif
// LUNA PET Variables void render_oled_128x64(void);
#if defined(WPM_ENABLE) void render_oled_32x128(void);
# define OLED_LUNA_X 0
# define OLED_LUNA_Y 13
# define OLED_LUNA_MIN_WALK_SPEED 10
# define OLED_LUNA_MIN_RUN_SPEED 40
# define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
# define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024
#endif //WPM_ENABLE
void render_layer_state(void); void render_default_layer_state(uint8_t col, uint8_t line, bool moveCursor);
void render_layer_state_graphic(void); void render_layer_state(uint8_t col, uint8_t line, bool moveCursor);
void render_keylock_status(bool vertical); void render_layer_state_list(uint8_t col, uint8_t line, bool moveCursor);
void render_mod_status(bool vertical);
void render_feature_status(bool vertical);
void render_keylock_status(uint8_t col, uint8_t line);
void render_mod_status(uint8_t col, uint8_t line);
void render_mod_status_vertical(uint8_t col, uint8_t line);
static const char PROGMEM scroll_off[] = {0xC0, 0}; void render_klor_face_small(uint8_t col, uint8_t line);
static const char PROGMEM scroll_on[] = {0xC1, 0};
static const char PROGMEM num_off[] = {0xC2, 0}; static const char PROGMEM scroll_off[] = {0xC0, 0};
static const char PROGMEM num_on[] = {0xC3, 0}; static const char PROGMEM scroll_on[] = {0xC1, 0};
static const char PROGMEM caps_off[] = {0xC4, 0}; static const char PROGMEM num_off[] = {0xC2, 0};
static const char PROGMEM caps_on[] = {0xC5, 0}; static const char PROGMEM num_on[] = {0xC3, 0};
static const char PROGMEM caps_off[] = {0xC4, 0};
static const char PROGMEM caps_on[] = {0xC5, 0};
static const char PROGMEM rgb_matrix_off[] = {0xCA, 0xCB, 0};
static const char PROGMEM rgb_matrix_on[] = {0xC8, 0xC9, 0};
static const char PROGMEM sound_off[] = {0xCE, 0xCF, 0};
static const char PROGMEM sound_on[] = {0xCC, 0xCD, 0};
static const char PROGMEM haptic_off[] = {0xD2, 0xD3, 0};
static const char PROGMEM haptic_on[] = {0xD0, 0xD1, 0};
static const char PROGMEM shift_off_upper[] = {0x80, 0x81, 0x82, 0}; static const char PROGMEM shift_off_upper[] = {0x80, 0x81, 0x82, 0};
static const char PROGMEM shift_off_lower[] = {0xA0, 0xA1, 0xA2, 0}; static const char PROGMEM shift_off_lower[] = {0xA0, 0xA1, 0xA2, 0};
@ -75,66 +76,18 @@ static const char PROGMEM gui_off_lower[] = {0xB2, 0xB3, 0xB4, 0};
static const char PROGMEM gui_on_upper[] = {0x95, 0x96, 0x97, 0}; static const char PROGMEM gui_on_upper[] = {0x95, 0x96, 0x97, 0};
static const char PROGMEM gui_on_lower[] = {0xB5, 0xB6, 0xB7, 0}; static const char PROGMEM gui_on_lower[] = {0xB5, 0xB6, 0xB7, 0};
static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; static const char PROGMEM klor_small_face_1[] = {0x98, 0x99, 0x9A, 0x9B, 0x9C, 0};
static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; static const char PROGMEM klor_small_face_2[] = {0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0};
static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; static const char PROGMEM mod_sep[] = {0xC7, 0xC7, 0};
static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; static const char PROGMEM sep_v[] = {
0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0
static const char PROGMEM sound_off[] = {0x8F, 0x90, 0};
static const char PROGMEM sound_on[] = {0xAF, 0xB0, 0};
static const char PROGMEM haptic_off[] = {0x91, 0x92, 0};
static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0};
static const char PROGMEM lyr_cfg[] = {
0xE1, 0xD1, 0xD2, 0xD3, 0xE1,
0xE1, 0xBA, 0xBB, 0xBC, 0xE1,
0xE1, 0xB7, 0xB8, 0xB9, 0xE1,
0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00
}; };
static const char PROGMEM lyr_sym[] = { static const char PROGMEM sep_short_v[] = {
0xE1, 0x97, 0x98, 0x99, 0xE1, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0
0xE1, 0xDA, 0xDB, 0xDC, 0xE1,
0xE1, 0xB7, 0xB8, 0xB9, 0xE1,
0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00
}; };
static const char PROGMEM lyr_num[] = {
0xE1, 0x97, 0x98, 0x99, 0xE1,
0xE1, 0x9A, 0x9B, 0x9C, 0xE1,
0xE1, 0xBA, 0xBB, 0xBC, 0xE1,
0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00
};
static const char PROGMEM lyr_nav[] = {
0xE1, 0x97, 0x98, 0x99, 0xE1,
0xE1, 0xB7, 0xB8, 0xB9, 0xE1,
0xE1, 0xDA, 0xDB, 0xDC, 0xE1,
0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00
};
static const char PROGMEM lyr_def[] = {
0xE1, 0x97, 0x98, 0x99, 0xE1,
0xE1, 0xB7, 0xB8, 0xB9, 0xE1,
0xE1, 0x9A, 0x9B, 0x9C, 0xE1,
0xE1, 0xD4, 0xD5, 0xD6, 0xE1, 0x00
};
static const char PROGMEM qmk_logo_small[] = {
0xE1, 0x9D, 0x9E, 0x9F, 0xE1,
0xE1, 0xBD, 0xBE, 0xBF, 0xE1,
0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00
};
#if defined(OLED_DISPLAY_128X64)
static const char PROGMEM sep_v[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0};
static const char PROGMEM klor_small_face_1[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0xE1, 0};
static const char PROGMEM klor_small_face_2[] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xE1, 0};
static const char PROGMEM klor_face[] = { static const char PROGMEM klor_face[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
@ -169,5 +122,3 @@ static const char PROGMEM klor_face[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 // OLED_DISPLAY_128X64

View file

@ -134,100 +134,100 @@ static const unsigned char PROGMEM font[] = {
0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
0x10, 0x08, 0x04, 0x04, 0x08, 0x10,
0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0,
0xF0, 0xF8, 0xFC, 0xFC, 0xF8, 0xF0,
0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
0x20, 0x10, 0x08, 0x08, 0x10, 0x20,
0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
0xE0, 0xF0, 0xF8, 0xF8, 0xF0, 0xE0,
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF8, 0x88, 0x88, 0x88, 0x88,
0x08, 0x10, 0x20, 0x40, 0x80, 0x00,
0x78, 0x48, 0x48, 0x48, 0x78, 0x00,
0x00, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x00,
0x78, 0x78, 0x78, 0x78, 0x78, 0x00,
0x00, 0x00, 0x7C, 0x44, 0x44, 0x44,
0x44, 0x7C, 0x00, 0x00, 0x7C, 0x44,
0x44, 0x44, 0x44, 0x7C, 0x00, 0x00,
0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C,
0x7C, 0x7C, 0x00, 0x00, 0x7C, 0x7C,
0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0,
0xF0, 0xFE, 0xFF, 0x9F, 0x0F, 0x0F, 0xF0, 0xFE, 0xFF, 0x9F, 0x0F, 0x0F,
0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F,
0x0F, 0x0F, 0x9F, 0xFF, 0xFE, 0xF0, 0x0F, 0x0F, 0x9F, 0xFF, 0xFE, 0xF0,
0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00,
0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7F, 0x7F, 0x77, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x73, 0x77, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 0x3E,
0x00, 0x00, 0x77, 0x77, 0x77, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x3E, 0x02, 0x02, 0x03, 0x00, 0x00,
0x7F, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x03, 0x03, 0x03, 0x3F,
0x08, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00, 0x3F, 0x03, 0x03, 0x03, 0x00, 0x00,
0x7F, 0x51, 0x55, 0x55, 0x45, 0x7F, 0x00, 0x3C, 0x22, 0x21, 0x20, 0x10,
0x00, 0x38, 0x00, 0x3E, 0x00, 0x38, 0x08, 0x04, 0x02, 0x02, 0x04, 0x08,
0x00, 0x3C, 0x00, 0x30, 0x00, 0x00, 0x10, 0x20, 0x21, 0x22, 0x3C, 0x00,
0x00, 0x24, 0x24, 0x12, 0x12, 0x24, 0x00, 0x3C, 0x3E, 0x3F, 0x3F, 0x1F,
0x24, 0x12, 0x12, 0x24, 0x00, 0x00, 0x0F, 0x07, 0x03, 0x03, 0x07, 0x0F,
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x1F, 0x3F, 0x3F, 0x3E, 0x3C, 0x00,
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0x01, 0x02, 0x04, 0x08, 0x10, 0x21,
0xE6, 0xF7, 0xF3, 0xF0, 0x60, 0x00, 0x22, 0x22, 0x22, 0x22, 0x3E, 0x00,
0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x10, 0x08, 0x08, 0x10, 0x10, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F,
0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00,
0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2, 0x00, 0x00, 0x3E, 0x22, 0x22, 0x22,
0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4, 0x22, 0x3E, 0x00, 0x00, 0x3E, 0x22,
0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88, 0x22, 0x22, 0x22, 0x3E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E,
0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x3E, 0x3E, 0x00, 0x00, 0x3E, 0x3E,
0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00,
0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F,
0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F,
0x87, 0xE1, 0xF9, 0xF9, 0xE1, 0x87, 0x87, 0xE1, 0xF9, 0xF9, 0xE1, 0x87,
0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00,
0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7F, 0x79, 0x79, 0x79, 0x73, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x4F, 0x19, 0x19, 0x19, 0x7F, 0x00, 0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00,
0x00, 0x60, 0x70, 0x38, 0x1C, 0x0E, 0x7F, 0x51, 0x55, 0x55, 0x45, 0x7F,
0x1C, 0x38, 0x70, 0x60, 0x00, 0x00,
0x7F, 0x1F, 0x0F, 0x47, 0x63, 0x71,
0x63, 0x47, 0x0F, 0x1F, 0x7F, 0x00,
0x00, 0x3E, 0x04, 0x08, 0x3E, 0x00, 0x00, 0x3E, 0x04, 0x08, 0x3E, 0x00,
0x7F, 0x41, 0x7B, 0x77, 0x41, 0x7F, 0x7F, 0x41, 0x7B, 0x77, 0x41, 0x7F,
0x7F, 0x43, 0x7F, 0x41, 0x7F, 0x47,
0x7F, 0x43, 0x7F, 0x4F, 0x7F, 0x00,
0x7F, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B,
0x5B, 0x6D, 0x6D, 0x5B, 0x7F, 0x00,
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00,
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00,
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x3F,
0x3F, 0x7F, 0x7F, 0x38, 0x10, 0x00,
0x88, 0x88, 0x55, 0x55, 0x22, 0x22,
0x44, 0x44, 0x88, 0x88, 0x44, 0x44,
0x22, 0x22, 0x55, 0x55, 0x88, 0x88,
0x88, 0x88, 0x55, 0x55, 0x23, 0x23,
0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47,
0x23, 0x23, 0x55, 0x55, 0x88, 0x88,
0x00, 0xA8, 0xA8, 0xFC, 0xFE, 0x07,
0xFE, 0xFF, 0xFE, 0x07, 0xFE, 0xFF,
0xFE, 0x07, 0xFE, 0xFC, 0xA8, 0xA8,
0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00,
0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x00,
0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00,
0x00, 0x00, 0x00, 0x1C, 0x62, 0x0A,
0x62, 0x1C, 0x00, 0x00, 0x00, 0x00,
0x7F, 0x57, 0x7D, 0x67, 0x02, 0x1B,
0x02, 0x67, 0x7D, 0x57, 0x7F, 0x00,
0x7F, 0x01, 0x01, 0x01, 0x01, 0x3F,
0x01, 0x01, 0x01, 0x01, 0x7F, 0x00,
0x7F, 0x7F, 0x7F, 0x7F, 0x03, 0x3B,
0x03, 0x7F, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x3E, 0x22, 0x22, 0x22, 0x00, 0x00, 0x3E, 0x22, 0x22, 0x22, 0x00,
0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x7F, 0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x7F,
0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7F, 0x41, 0x7D, 0x7F, 0x51, 0x55,
0x41, 0x7F, 0x41, 0x55, 0x63, 0x7F,
0x00, 0x3E, 0x02, 0x00, 0x2E, 0x2A,
0x3E, 0x00, 0x3E, 0x2A, 0x1C, 0x00,
0x7F, 0x43, 0x7F, 0x41, 0x7F, 0x47,
0x7F, 0x43, 0x7F, 0x4F, 0x7F, 0x7F,
0x00, 0x3C, 0x00, 0x3E, 0x00, 0x38,
0x00, 0x3C, 0x00, 0x30, 0x00, 0x00,
0x7F, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B,
0x5B, 0x6D, 0x6D, 0x5B, 0x5B, 0x7F,
0x00, 0x24, 0x24, 0x12, 0x12, 0x24,
0x24, 0x12, 0x12, 0x24, 0x24, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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, 0xC0, 0xC0, 0xE0, 0xE0,
0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0,
0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80,
0x00, 0x00, 0x01, 0x01, 0x03, 0x03,
0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07,
0x03, 0x03, 0x01, 0x01, 0x00, 0x00,
0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E,
0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C,
0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88,
0x00, 0x0A, 0x0A, 0x1F, 0x3F, 0xFE,
0x3D, 0xFB, 0x3B, 0xE0, 0x3B, 0xFB,
0x3D, 0xFE, 0x3F, 0x1F, 0x0A, 0x0A,
}; };

View file

@ -1,233 +0,0 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#pragma once
#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, 0xB6, 0xFF, 0xB6, 0x94, 0x00,
0x08, 0x0C, 0x7E, 0x0C, 0x08, 0x00,
0x10, 0x30, 0x7E, 0x30, 0x10, 0x00,
0x08, 0x08, 0x3E, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x3E, 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, 0x3E, 0x14, 0x3E, 0x14, 0x00,
0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00,
0x20, 0x12, 0x08, 0x24, 0x02, 0x00,
0x37, 0x49, 0x49, 0x37, 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,
0x7F, 0x51, 0x49, 0x45, 0x7F, 0x00,
0x08, 0x04, 0x02, 0x7F, 0x00, 0x00,
0x71, 0x49, 0x49, 0x49, 0x4F, 0x00,
0x41, 0x41, 0x49, 0x49, 0x77, 0x00,
0x0F, 0x10, 0x10, 0x10, 0x7F, 0x00,
0x4F, 0x49, 0x49, 0x49, 0x71, 0x00,
0x7E, 0x49, 0x49, 0x49, 0x70, 0x00,
0x01, 0x01, 0x71, 0x09, 0x07, 0x00,
0x77, 0x49, 0x49, 0x49, 0x77, 0x00,
0x07, 0x49, 0x49, 0x49, 0x3F, 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,
0x01, 0x01, 0x59, 0x09, 0x0F, 0x00,
0x7F, 0x41, 0x5D, 0x59, 0x4F, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x7F, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x76, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x41, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x7E, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x49, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x09, 0x00,
0x7F, 0x41, 0x41, 0x49, 0x7B, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
0x70, 0x40, 0x40, 0x40, 0x7F, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x77, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
0x7F, 0x01, 0x1F, 0x01, 0x7F, 0x00,
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x0F, 0x00,
0x7F, 0x41, 0x71, 0x41, 0x7F, 0x00,
0x7F, 0x09, 0x09, 0x19, 0x6F, 0x00,
0x47, 0x49, 0x49, 0x49, 0x79, 0x00,
0x01, 0x01, 0x7F, 0x01, 0x01, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x7F, 0x00,
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
0x7F, 0x40, 0x7F, 0x40, 0x7F, 0x00,
0x77, 0x08, 0x08, 0x08, 0x77, 0x00,
0x4F, 0x48, 0x48, 0x48, 0x7F, 0x00,
0x61, 0x51, 0x49, 0x45, 0x43, 0x00,
0x00, 0x7F, 0x41, 0x41, 0x00, 0x00,
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
0x00, 0x41, 0x41, 0x7F, 0x00, 0x00,
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
0x00, 0x00, 0x07, 0x08, 0x00, 0x00,
0x60, 0x54, 0x54, 0x54, 0x7C, 0x00,
0x7F, 0x44, 0x44, 0x44, 0x78, 0x00,
0x7C, 0x44, 0x44, 0x44, 0x44, 0x00,
0x78, 0x44, 0x44, 0x44, 0x7F, 0x00,
0x7C, 0x54, 0x54, 0x54, 0x5C, 0x00,
0x08, 0x7F, 0x09, 0x09, 0x09, 0x00,
0x38, 0xA4, 0xA4, 0xA4, 0xFC, 0x00,
0x7F, 0x04, 0x04, 0x04, 0x78, 0x00,
0x00, 0x00, 0x7D, 0x00, 0x00, 0x00,
0x70, 0x40, 0x40, 0x7D, 0x00, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x76, 0x00,
0x00, 0x00, 0x7F, 0x40, 0x00, 0x00,
0x7C, 0x04, 0x7C, 0x04, 0x7C, 0x00,
0x7C, 0x04, 0x04, 0x04, 0x78, 0x00,
0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00,
0xFC, 0x24, 0x24, 0x24, 0x38, 0x00,
0x38, 0x24, 0x24, 0x24, 0xFC, 0x00,
0x7C, 0x04, 0x04, 0x04, 0x04, 0x00,
0x5C, 0x54, 0x54, 0x54, 0x74, 0x00,
0x04, 0x04, 0x7F, 0x04, 0x04, 0x00,
0x7C, 0x40, 0x40, 0x40, 0x7C, 0x00,
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
0x7C, 0x40, 0x7C, 0x40, 0x7C, 0x00,
0x6C, 0x10, 0x10, 0x10, 0x6C, 0x00,
0xBC, 0xA0, 0xA0, 0xA0, 0xFC, 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, 0x80, 0x40, 0x20,
0x10, 0x08, 0x04, 0x04, 0x08, 0x10,
0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0,
0xF0, 0xF8, 0xFC, 0xFC, 0xF8, 0xF0,
0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
0x20, 0x10, 0x08, 0x08, 0x10, 0x20,
0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
0xE0, 0xF0, 0xF8, 0xF8, 0xF0, 0xE0,
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x78, 0x48, 0x48, 0x48, 0x48,
0x90, 0x20, 0x40, 0x80, 0x00, 0x00,
0x78, 0x48, 0x48, 0x48, 0x78, 0x00,
0x00, 0x78, 0x78, 0x78, 0x78, 0x78,
0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
0x78, 0x78, 0x78, 0x78, 0x78, 0x00,
0x00, 0x00, 0x7C, 0x44, 0x44, 0x44,
0x44, 0x7C, 0x00, 0x00, 0x7C, 0x44,
0x44, 0x44, 0x44, 0x7C, 0x00, 0x00,
0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C,
0x7C, 0x7C, 0x00, 0x00, 0x7C, 0x7C,
0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 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, 0x02, 0x02, 0x3E,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x3E, 0x02, 0x02, 0x03, 0x00, 0x00,
0x00, 0x00, 0x03, 0x03, 0x03, 0x3F,
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x03, 0x03, 0x03, 0x00, 0x00,
0x00, 0x3C, 0x22, 0x21, 0x20, 0x10,
0x08, 0x04, 0x02, 0x02, 0x04, 0x08,
0x10, 0x20, 0x21, 0x22, 0x3C, 0x00,
0x00, 0x3C, 0x3E, 0x3F, 0x3F, 0x1F,
0x0F, 0x07, 0x03, 0x03, 0x07, 0x0F,
0x1F, 0x3F, 0x3F, 0x3E, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x02, 0x04, 0x09, 0x12,
0x24, 0x24, 0x24, 0x24, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x03, 0x07, 0x0F, 0x1E,
0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00,
0x00, 0x00, 0x3E, 0x22, 0x22, 0x22,
0x22, 0x3E, 0x00, 0x00, 0x3E, 0x22,
0x22, 0x22, 0x22, 0x3E, 0x00, 0x00,
0x00, 0x00, 0x3E, 0x3E, 0x3E, 0x3E,
0x3E, 0x3E, 0x00, 0x00, 0x3E, 0x3E,
0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00,
0x7F, 0x51, 0x55, 0x55, 0x45, 0x7F,
0x00, 0x3E, 0x04, 0x08, 0x3E, 0x00,
0x7F, 0x41, 0x7B, 0x77, 0x41, 0x7F,
0x00, 0x3E, 0x22, 0x22, 0x22, 0x00,
0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};