Delete hackpads/layerspad/qmk-firmware directory

This commit is contained in:
aryan pathak 2025-02-16 19:31:43 +05:30 committed by GitHub
parent 11596cf11e
commit e49c852936
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 0 additions and 834 deletions

View file

@ -1,58 +0,0 @@
#pragma once
// OLED Configuration
#define OLED_DISPLAY_128X64
#define OLED_TIMEOUT 60000 // 1 minute timeout
#define OLED_BRIGHTNESS 128 // Medium brightness
// Matrix Configuration
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { GP26, GP27, GP28 } // Row pins
#define MATRIX_COL_PINS { GP29, GP6, GP7 } // Column pins
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
// Tap Dance Configuration
#define TAPPING_TERM 300
#define TAPPING_TERM_PER_KEY
// RGB Matrix Configuration
#ifdef RGB_MATRIX_ENABLE
#define RGB_MATRIX_LED_COUNT 12 // Number of LEDs
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // Maximum brightness level (0-255)
#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_MATRIX_TIMEOUT 0
#define RGB_DISABLE_WHEN_USB_SUSPENDED
// The pin connected to the data pin of the LEDs
#define RGB_DI_PIN GP0 // LED data pin
// Enable additional RGB matrix effects
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
// Enable animations
#define ENABLE_RGB_MATRIX_SOLID_COLOR
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
#define ENABLE_RGB_MATRIX_BREATHING
#define ENABLE_RGB_MATRIX_BAND_SAT
#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
#define ENABLE_RGB_MATRIX_CYCLE_ALL
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#endif
// Encoder Configuration
#define ENCODERS_PAD_A { GP26 } // Encoder A pin
#define ENCODERS_PAD_B { GP27 } // Encoder B pin
#define ENCODER_RESOLUTION 4 // Default resolution
#define ENCODER_DEFAULT_POS 0x3 // Default position
// General keyboard configuration
#define FORCE_NKRO // Enable NKRO
#define USB_POLLING_INTERVAL_MS 1 // 1000Hz polling rate

View file

@ -1,760 +0,0 @@
#include QMK_KEYBOARD_H
// Matrix size
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
static uint16_t tap_timer = 0; // Tracks time between taps
static uint8_t tap_count = 0; // Counts number of taps
#define TAPPING_TERM 300 // Window for taps (300ms)
// Pin configuration from your schematic
#define MATRIX_ROW_PINS { GP26, GP27, GP28 } // S1, S2, S3
#define MATRIX_COL_PINS { GP29, GP6, GP7 } // D1, 2, 3
// Diode direction (your diodes are pointing from switch to row)
#define DIODE_DIRECTION COL2ROW
// Basic debouncing
#define DEBOUNCE 5
enum layers {
_DEFAULT,
_GAME,
_DEVELOPER,
_ART,
};
enum custom_keycodes {
CYCLE_LAYERS = SAFE_RANGE,
//default layer
MAC_SPOTLIGHT, //command + space
MAC_PASTE, //command + v
MAC_NEXT, //f9
MAC_PREV, //f7
MAC_PLAY, //f8
MAC_MISSION, //ctrl + up arrow
APP_LEFT, //ctrl + left arrow
APP_RIGHT, //ctrl + right arrow
//game layer
W_KEY,
A_KEY,
S_KEY,
D_KEY,
JUMP, //space
SPRINT, //shift+w
R_KEY,
Q_KEY,
CROUCH, //ctrl
//developer layer
COMMENT, //command + /
TAB_KEY,
COPY_KEY, //command + c
PASTE_KEY, //command + v
UNDO_KEY, //command + z
AI_KEY, //command + k
//art layer
REDO_KEY, //command + shift + z
CUT_KEY, //command + x
HSB_KEY, //command + u
SELECTION, //S
LAYERS_KEY, //L
COLOR_KEY, //C
};
// Track current layer for cycling
static uint8_t current_layer = _DEFAULT;
// After the enum layers declaration, add:
// RGB color configurations for each layer
typedef struct {
uint8_t r;
uint8_t g;
uint8_t b;
} rgb_color;
// Define 3 colors per layer for transitions
const rgb_color layer_colors[][3] = {
// Default layer
{{255, 94, 94}, {255, 158, 94}, {255, 209, 94}},
// Game layer
{{119, 255, 0}, {0, 255, 191}, {0, 162, 255}},
// Developer layer
{{208, 0, 255}, {98, 0, 255}, {0, 229, 255}},
// Art layer
{{255, 21, 0}, {238, 255, 0}, {21, 255, 0}}
};
#define ANIMATION_SPEED 20 // Lower = faster
uint8_t current_color_index = 0;
uint8_t animation_step = 0;
bool increasing = true;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Layer 0: Main Layer - Common shortcuts
[_DEFAULT] = LAYOUT(
COPY_KEY, MAC_SPOTLIGHT, MAC_PASTE,
APP_LEFT, MAC_MISSION, APP_RIGHT,
MAC_PREV, MAC_PLAY, MAC_NEXT
),
[_GAME] = LAYOUT(
R_KEY, W_KEY, Q_KEY,
A_KEY, S_KEY, D_KEY,
SPRINT, JUMP, CROUCH
),
[_DEVELOPER] = LAYOUT(
COMMENT, COPY_KEY, PASTE_KEY,
APP_LEFT, AI_KEY, APP_RIGHT,
UNDO_KEY, TAB_KEY, REDO_KEY
),
[_ART] = LAYOUT(
UNDO_KEY, HSB_KEY, REDO_KEY,
CUT_KEY, PASTE_KEY, COPY_KEY,
SELECTION, LAYERS_KEY, COLOR_KEY
)
};
enum {
TD_MULTI_FUNCTION = 0,
};
void td_multi_function_finished(tap_dance_state_t *state, void *user_data) {
if (state->count == 3) { // Triple tap for layer switching
if (!state->pressed) {
current_layer = (current_layer + 1) % 4;
layer_clear();
layer_on(current_layer);
}
return;
}
// Single tap functions based on current layer
if (state->count == 1) {
switch (current_layer) {
case _DEFAULT:
if (state->pressed) {
register_code16(LCTL(KC_UP)); // Mission Control: ctrl + up
} else {
unregister_code16(LCTL(KC_UP));
}
break;
case _GAME:
if (state->pressed) {
register_code16(KC_LSFT); // Sprint: shift (hold)
register_code16(KC_W_KEY);
} else {
unregister_code16(KC_W_KEY);
unregister_code16(KC_LSFT);
}
break;
case _DEVELOPER:
if (state->pressed) {
register_code16(LGUI(KC_K)); // AI: cmd + k
} else {
unregister_code16(LGUI(KC_K));
}
break;
case _ART:
if (state->pressed) {
register_code16(KC_L); // Layers tool
} else {
unregister_code16(KC_L);
}
break;
}
}
}
tap_dance_action_t tap_dance_actions[] = {
[TD_MULTI_FUNCTION] = ACTION_TAP_DANCE_FN(td_multi_function_finished)
};
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
if (!rgb_matrix_is_enabled()) return;
// Calculate the current transition color
rgb_color start = layer_colors[current_layer][current_color_index];
rgb_color end = layer_colors[current_layer][(current_color_index + 1) % 3];
// Calculate interpolated color
float progress = (float)animation_step / 255.0f;
uint8_t r = start.r + (end.r - start.r) * progress;
uint8_t g = start.g + (end.g - start.g) * progress;
uint8_t b = start.b + (end.b - start.b) * progress;
// Set all LEDs to the calculated color
for (uint8_t i = led_min; i < led_max; i++) {
rgb_matrix_set_color(i, r, g, b);
}
// Update animation
if (increasing) {
animation_step++;
if (animation_step >= 255) {
increasing = false;
current_color_index = (current_color_index + 1) % 3;
}
} else {
animation_step--;
if (animation_step <= 0) {
increasing = true;
}
}
}
bool encoder_update_user(uint8_t index, bool clockwise) {
// Different actions based on current layer
switch (get_highest_layer(layer_state)) {
case _DEFAULT:
// Volume control
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
break;
case _GAME:
// Weapon switch or inventory scroll
if (clockwise) {
tap_code16(KC_MS_WH_UP);
} else {
tap_code16(KC_MS_WH_DOWN);
}
break;
case _DEVELOPER:
// App switching
if (clockwise) {
tap_code16(LCTL(KC_RIGHT)); // Next app (ctrl + right)
} else {
tap_code16(LCTL(KC_LEFT)); // Previous app (ctrl + left)
}
break;
case _ART:
// Brush size with [ and ]
if (clockwise) {
tap_code(KC_RBRC); // Increase size (])
} else {
tap_code(KC_LBRC); // Decrease size ([)
}
break;
}
return true;
}
// Optional: Add this if you want different speeds for the encoder based on layer
void encoder_layer_handler(void) {
// Customize encoder resolution/speed for different layers
switch (get_highest_layer(layer_state)) {
case _DEFAULT:
encoder_set_resolution(4); // Normal speed
break;
case _GAME:
encoder_set_resolution(2); // Faster response
break;
case _DEVELOPER:
encoder_set_resolution(4); // Normal speed
break;
case _ART:
encoder_set_resolution(8); // Fine control
break;
}
}
// Add this to your layer_state_set_user function (create it if it doesn't exist):
layer_state_t layer_state_set_user(layer_state_t state) {
encoder_layer_handler();
return state;
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// ---------- Layer Switching ----------
case CYCLE_LAYERS:
if (record->event.pressed) {
// Check if this is a new sequence (timer expired)
if (timer_elapsed(tap_timer) > TAPPING_TERM) {
tap_count = 0;
}
tap_timer = timer_read();
tap_count++;
if (tap_count == 3) {
current_layer = (current_layer + 1) % 4;
layer_clear();
layer_on(current_layer);
// Reset animation variables when switching layers
current_color_index = 0;
animation_step = 0;
increasing = true;
tap_count = 0;
}
}
return false;
// ---------- Default Layer Macros ----------
case MAC_SPOTLIGHT:
if (record->event.pressed) {
tap_code16(LGUI(KC_SPACE)); // command + space
}
return false;
case COPY_KEY:
if (record->event.pressed) {
tap_code16(LGUI(KC_C)); // command + c
}
return false;
case MAC_PASTE:
if (record->event.pressed) {
tap_code16(LGUI(KC_V)); // command + v
}
return false;
case MAC_NEXT:
if (record->event.pressed) {
tap_code16(KC_F9); // f9
}
return false;
case MAC_PREV:
if (record->event.pressed) {
tap_code16(KC_F7); // f7
}
return false;
case MAC_PLAY:
if (record->event.pressed) {
tap_code16(KC_F8); // f8
}
return false;
case MAC_MISSION:
if (record->event.pressed) {
tap_code16(LCTL(KC_UP)); // ctrl + up arrow
}
return false;
// APP_LEFT and APP_RIGHT appear also in Developer—using one case.
case APP_LEFT:
if (record->event.pressed) {
tap_code16(LCTL(KC_LEFT)); // ctrl + left arrow
}
return false;
case APP_RIGHT:
if (record->event.pressed) {
tap_code16(LCTL(KC_RIGHT)); // ctrl + right arrow
}
return false;
// ---------- Game Layer Keys ----------
case W_KEY:
if (record->event.pressed) {
tap_code16(KC_W_KEY);
}
return false;
case A_KEY:
if (record->event.pressed) {
tap_code16(KC_A_KEY);
}
return false;
case S_KEY:
if (record->event.pressed) {
tap_code16(KC_S_KEY);
}
return false;
case D_KEY:
if (record->event.pressed) {
tap_code16(KC_D_KEY);
}
return false;
case JUMP:
if (record->event.pressed) {
tap_code16(KC_SPACE); // space
}
return false;
case SPRINT:
if (record->event.pressed) {
tap_code16(LSFT(KC_W_KEY)); // shift + w
}
return false;
case R_KEY:
if (record->event.pressed) {
tap_code16(KC_R_KEY);
}
return false;
case Q_KEY:
if (record->event.pressed) {
tap_code16(KC_Q_KEY);
}
return false;
case CROUCH:
if (record->event.pressed) {
tap_code16(KC_LCTL); // ctrl
}
return false;
// ---------- Developer Layer Keys ----------
case COMMENT:
if (record->event.pressed) {
tap_code16(LGUI(KC_SLSH)); // command + /
}
return false;
case TAB_KEY:
if (record->event.pressed) {
tap_code16(KC_TAB);
}
return false;
case AI_KEY:
if (record->event.pressed) {
tap_code16(LGUI(KC_K_KEY)); // command + k
}
return false;
// ---------- Keys Shared Between Developer and Art Layers ----------
case COPY_KEY:
if (record->event.pressed) {
if (current_layer == _DEVELOPER || current_layer == _ART) {
tap_code16(LGUI(KC_C_KEY)); // command + c
}
}
return false;
case PASTE_KEY:
if (record->event.pressed) {
if (current_layer == _DEVELOPER || current_layer == _ART) {
tap_code16(LGUI(KC_V_KEY)); // command + v
}
}
return false;
case UNDO_KEY:
if (record->event.pressed) {
if (current_layer == _DEVELOPER || current_layer == _ART) {
tap_code16(LGUI(KC_Z_KEY)); // command + z
}
}
return false;
case REDO_KEY:
if (record->event.pressed) {
if (current_layer == _DEVELOPER || current_layer == _ART) {
tap_code16(LGUI(LSFT(KC_Z_KEY))); // command + shift + z
}
}
return false;
case CUT_KEY:
if (record->event.pressed) {
tap_code16(LGUI(KC_X_KEY)); // command + x
}
return false;
case HSB_KEY:
if (record->event.pressed) {
tap_code16(LGUI(KC_U_KEY)); // command + u
}
return false;
case SELECTION:
if (record->event.pressed) {
tap_code16(KC_S_KEY);
}
return false;
case LAYERS_KEY:
if (record->event.pressed) {
tap_code16(KC_L_KEY);
}
return false;
case COLOR_KEY:
if (record->event.pressed) {
tap_code16(KC_C_KEY);
}
return false;
default:
return true;
}
}
#ifdef OLED_ENABLE
bool oled_task_user() {
oled_set_cursor(0, 1);
switch(get_highest_layer(layer_state)) {
case _DEFAULT:
oled_write_raw_p(zero, sizeof(zero));
break;
case _GAME:
oled_write_raw_p(game, sizeof(game));
break;
case _DEVELOPER:
oled_write_raw_p(dev, sizeof(dev));
break;
case _ART:
oled_write_raw_p(art, sizeof(art));
break;
}
return false;
}
#endif
static const char zero [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x60, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xf0, 0x1f, 0xf0, 0x1f, 0x3e, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x60, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xf0, 0x7f, 0xf8, 0x1f, 0x7e, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x60, 0x00,
0x00, 0x00, 0x0f, 0xff, 0xf0, 0xff, 0xfc, 0x1f, 0xfe, 0x3f, 0xff, 0x00, 0x00, 0x01, 0xfc, 0x00,
0x00, 0x00, 0x07, 0xff, 0xf0, 0xf8, 0x7e, 0x1f, 0xfe, 0x7e, 0x1f, 0x80, 0x00, 0x03, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xe1, 0xf0, 0x3e, 0x1f, 0xc0, 0xfc, 0x0f, 0x80, 0x00, 0x07, 0xff, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xc1, 0xe0, 0x1f, 0x1f, 0x80, 0xf8, 0x0f, 0xc0, 0x00, 0x07, 0xff, 0x00,
0x00, 0x00, 0x00, 0x1f, 0x83, 0xe0, 0x1f, 0x1f, 0x80, 0xf8, 0x07, 0xc0, 0x00, 0x0f, 0xff, 0x80,
0x00, 0x00, 0x00, 0x3f, 0x03, 0xff, 0xff, 0x1f, 0x00, 0xf0, 0x07, 0xc0, 0x00, 0x0f, 0xff, 0x80,
0x00, 0x00, 0x00, 0x7e, 0x03, 0xff, 0xff, 0x1f, 0x01, 0xf0, 0x07, 0xc0, 0x00, 0x0f, 0xff, 0x80,
0x00, 0x00, 0x00, 0xfe, 0x03, 0xff, 0xff, 0x1f, 0x01, 0xf0, 0x07, 0xc0, 0x00, 0x0f, 0xff, 0x80,
0x00, 0x00, 0x01, 0xfc, 0x03, 0xe0, 0x00, 0x1f, 0x00, 0xf0, 0x07, 0xc0, 0x00, 0x0f, 0xff, 0x80,
0x00, 0x00, 0x03, 0xf8, 0x03, 0xe0, 0x00, 0x1f, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0x0f, 0xff, 0x80,
0x00, 0x00, 0x07, 0xf0, 0x01, 0xf0, 0x0e, 0x1f, 0x00, 0xf8, 0x0f, 0xc0, 0x00, 0x0f, 0xff, 0xc0,
0x00, 0x00, 0x0f, 0xe0, 0x01, 0xf0, 0x1e, 0x1f, 0x00, 0xfc, 0x0f, 0x80, 0x00, 0x07, 0xff, 0xc0,
0x00, 0x00, 0x0f, 0xff, 0xf0, 0xfc, 0xfe, 0x1f, 0x00, 0x7f, 0x3f, 0x00, 0x00, 0x07, 0xff, 0xc0,
0x00, 0x00, 0x0f, 0xff, 0xf0, 0xff, 0xfc, 0x1f, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x07, 0xff, 0xc0,
0x00, 0x00, 0x0f, 0xff, 0xf0, 0x3f, 0xf8, 0x1f, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x47, 0xfe, 0xc0,
0x00, 0x00, 0x0f, 0xff, 0xf0, 0x1f, 0xf0, 0x1f, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0xe7, 0xfe, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x38, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0};
static const char art [] PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0xc1, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00,
0x00, 0x07, 0xff, 0xf0, 0x00, 0xff, 0x0f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00,
0x00, 0x1f, 0xff, 0xfc, 0x00, 0xff, 0x1f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00,
0x00, 0x3f, 0xff, 0xfe, 0x00, 0xff, 0x3f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00,
0x00, 0x7f, 0xff, 0xff, 0x00, 0xff, 0x7f, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1e, 0xfc, 0x00,
0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x03, 0x7f, 0xf8, 0x00,
0x00, 0xff, 0x00, 0xff, 0x80, 0xff, 0xff, 0xe1, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xf0, 0x00,
0x01, 0xfe, 0x00, 0x7f, 0x80, 0xff, 0xff, 0xe1, 0xfe, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xe0, 0x00,
0x01, 0xfe, 0x00, 0x7f, 0x80, 0xff, 0xf0, 0x01, 0xfe, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xc0, 0x00,
0x01, 0xfe, 0x00, 0x7f, 0x80, 0xff, 0xe0, 0x01, 0xfe, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0x80, 0xff, 0xc0, 0x01, 0xfe, 0x00, 0x00, 0x3b, 0xff, 0xf9, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0x80, 0xff, 0x80, 0x01, 0xfe, 0x00, 0x00, 0x6f, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0x80, 0xff, 0x80, 0x01, 0xfe, 0x00, 0x00, 0xdf, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x01, 0xff, 0xff, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x01, 0xfe, 0x7f, 0xe0, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xff, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x7f, 0xff, 0xff, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x03, 0xef, 0xf0, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0x7f, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x07, 0xc7, 0xc0, 0x00, 0x00, 0x00,
0x01, 0xff, 0xe0, 0x7f, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0x00, 0x7f, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x0e, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x03, 0xfc, 0x00, 0x7f, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xfc, 0x00, 0x7f, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xfc, 0x00, 0x7f, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xfc, 0x00, 0xff, 0x80, 0xff, 0x00, 0x01, 0xfe, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xfc, 0x01, 0xff, 0x80, 0xff, 0x00, 0x01, 0xff, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xfe, 0x03, 0xff, 0x80, 0xff, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xff, 0xff, 0xff, 0x80, 0xff, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0xff, 0xff, 0x80, 0xff, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0x80, 0xff, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7f, 0xff, 0x3f, 0x80, 0xff, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0xfc, 0x3f, 0xc0, 0xff, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 dev [] PROGMEM = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0xf0, 0x00,
0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x10, 0x00,
0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00,
0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x18, 0x00,
0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00,
0x0f, 0xb8, 0x7c, 0x70, 0x70, 0xf8, 0x70, 0x3e, 0x0e, 0xf8, 0x0f, 0x87, 0x78, 0x00, 0x10, 0x00,
0x1f, 0xf9, 0xfe, 0x38, 0xe3, 0xfc, 0x70, 0xff, 0x0f, 0xfc, 0x3f, 0xc7, 0xf4, 0x00, 0x10, 0x00,
0x3c, 0x79, 0xcf, 0x38, 0xe3, 0x9e, 0x70, 0xe3, 0x8f, 0x1c, 0x39, 0xe7, 0xf2, 0x00, 0x20, 0x00,
0x38, 0x7b, 0x87, 0x38, 0xe7, 0x0e, 0x71, 0xc1, 0xce, 0x0e, 0x70, 0xe7, 0x82, 0x00, 0x20, 0x00,
0x38, 0x3b, 0xff, 0x1c, 0xc7, 0xfe, 0x71, 0xc1, 0xce, 0x0e, 0x7f, 0xe7, 0x01, 0x00, 0x40, 0x00,
0x38, 0x3b, 0xff, 0x1d, 0xc7, 0xfe, 0x71, 0xc1, 0xce, 0x0e, 0x7f, 0xe7, 0x00, 0x80, 0x80, 0x00,
0x38, 0x3b, 0x80, 0x1d, 0xc7, 0x00, 0x71, 0xc1, 0xce, 0x0e, 0x70, 0x07, 0x00, 0xc1, 0x80, 0x00,
0x38, 0x7b, 0x80, 0x0f, 0x87, 0x00, 0x71, 0xc1, 0xce, 0x0e, 0x70, 0x07, 0x00, 0xf7, 0x00, 0x00,
0x3c, 0x7b, 0xc7, 0x0f, 0x87, 0x8e, 0x70, 0xe3, 0x8f, 0x1e, 0x78, 0xe7, 0x00, 0x88, 0x80, 0x00,
0x1f, 0xf9, 0xfe, 0x0f, 0x83, 0xfc, 0x70, 0xff, 0x8f, 0xfc, 0x3f, 0xc7, 0x03, 0x00, 0x60, 0x00,
0x0f, 0xb8, 0xfc, 0x07, 0x01, 0xf8, 0x70, 0x3e, 0x0e, 0xf8, 0x1f, 0x87, 0x3f, 0x80, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x10,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0xcd, 0x80, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x88, 0xe0, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x03, 0x89, 0xe0, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0xd9, 0x80, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 game. [] PROGMEM = {// 'IMG_0311', 128x64px
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7e, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xdf, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xe7, 0xff, 0xff, 0xfe, 0x3c, 0x01, 0xf7, 0x81, 0xfc, 0x1d, 0xf1, 0xf0, 0x0f, 0xc0, 0x00,
0x03, 0xe7, 0xff, 0xff, 0xff, 0x3c, 0x03, 0xff, 0x87, 0xfe, 0x3f, 0xfb, 0xf8, 0x1f, 0xe0, 0x00,
0x03, 0xe7, 0xff, 0xff, 0xff, 0xfe, 0x07, 0xdf, 0x87, 0x8f, 0x3f, 0xff, 0xfc, 0x3f, 0xf0, 0x00,
0x03, 0x18, 0xff, 0xff, 0xf1, 0xe6, 0x0f, 0x07, 0x8f, 0x0f, 0x3e, 0x3e, 0x3c, 0x78, 0x78, 0x00,
0x07, 0x18, 0xff, 0xff, 0xf1, 0xe6, 0x0f, 0x07, 0x80, 0x0f, 0x3c, 0x3c, 0x1c, 0x70, 0x38, 0x00,
0x07, 0xe7, 0xef, 0xff, 0xbb, 0xfe, 0x0f, 0x07, 0x80, 0x7f, 0x3c, 0x1c, 0x1c, 0x7f, 0xf8, 0x00,
0x07, 0xe7, 0xff, 0xff, 0xff, 0x3f, 0x0f, 0x07, 0x87, 0xff, 0x3c, 0x1c, 0x1c, 0x7f, 0xf8, 0x00,
0x07, 0xe7, 0xff, 0xff, 0xfe, 0x3f, 0x0f, 0x07, 0x8f, 0x8f, 0x3c, 0x1c, 0x1c, 0x78, 0x00, 0x00,
0x0f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x0f, 0x07, 0x8f, 0x0f, 0x3c, 0x1c, 0x1c, 0x70, 0x00, 0x00,
0x0f, 0xff, 0x87, 0xff, 0x0f, 0xff, 0x07, 0x8f, 0x8e, 0x0f, 0x3c, 0x1c, 0x1c, 0x78, 0x38, 0x00,
0x0f, 0xff, 0x07, 0xfe, 0x0f, 0xff, 0x07, 0xff, 0x8f, 0x1f, 0x3c, 0x1c, 0x1c, 0x3e, 0xf8, 0x00,
0x0f, 0xff, 0x03, 0xfe, 0x0f, 0xff, 0x83, 0xf7, 0x8f, 0xff, 0x3c, 0x1c, 0x1c, 0x1f, 0xf0, 0x00,
0x0f, 0xff, 0x07, 0xfe, 0x0f, 0xff, 0x80, 0x47, 0x87, 0xe7, 0x3c, 0x1c, 0x1c, 0x0f, 0xe0, 0x00,
0x0f, 0xff, 0x87, 0xff, 0x1f, 0xff, 0x80, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xff, 0xfc, 0x03, 0xff, 0xff, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xfe, 0x78, 0x00, 0xe3, 0xff, 0x87, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xfe, 0x00, 0x00, 0x03, 0xff, 0x83, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xfc, 0x00, 0x00, 0x03, 0xff, 0x80, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xfc, 0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xf8, 0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xf8, 0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xf8, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xf0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xe0, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xc0, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

View file

@ -1,16 +0,0 @@
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
TAP_DANCE_ENABLE = yes # Enable tap dance feature
OLED_ENABLE = yes # Enable OLED display
OLED_DRIVER = SSD1306 # Add OLED driver specification
LTO_ENABLE = yes # Enable Link Time Optimization
RGB_MATRIX_ENABLE = yes # Enable per-key RGB
RGB_MATRIX_DRIVER = WS2812
ENCODER_ENABLE = yes # Enable encoder support
DEFERRED_EXEC_ENABLE = yes # Better handling of timed events