~ruther/qmk_firmware

ed48c0bd8b681123073da08da150c6bb4e7c2706 — QMK Bot 3 years ago 5523f70 + 83ab7d4
Merge remote-tracking branch 'origin/master' into develop
M keyboards/handwired/tractyl_manuform/5x6_right/config.h => keyboards/handwired/tractyl_manuform/5x6_right/config.h +0 -2
@@ 41,8 41,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DYNAMIC_KEYMAP_LAYER_COUNT  16
#define LAYER_STATE_16BIT

/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5

/* disable action features */
//#define NO_ACTION_LAYER

M keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h => keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h +3 -3
@@ 44,11 44,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define WS2812_DMA_STREAM   STM32_DMA1_STREAM7  // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
#define WS2812_DMA_CHANNEL  3                   // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.

#define RGBLED_NUM          20
#define RGBLED_NUM          52
#define RGBLIGHT_SPLIT
#define RGBLED_SPLIT \
    { 10, 10 }
#define RGBLIGHT_LMIT_VAL 80
    { 26, 26 }
#define RGBLIGHT_LIMIT_VAL 150

#define DEBUG_LED_PIN      C13


M keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md => keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md +15 -4
@@ 1,16 1,21 @@
# Drashna's Blackpill Tractyl Manuform (5x6) with a right side trackball

* VBUS mod, using PB10
* System Timer on TIM5
* ~~VBUS mod, using PB10~~ (*doesn't seem to work for me*)
* Split Hand Pin, using PC14
* Full Duplex Serial/USART using PA3 and PA4 on USART2
* Full Duplex Serial/USART using PA2 and PA3 on USART2
* PWM Audio using PB1 and TIM3 and GPT on TIM4
* PWM RGB using PA1 TIM2
* pmw3360 sensor sharing PA5-PA7 on SPI1, with B0 as CS pin
* PWM WS2812 RGB using PA1 TIM2
* 8KB SPI EEPROM chip sharing PA5-PA7 on SPI1 with PA4 as CS pin
* pmw3360 sensor sharing PA5-PA7 on SPI1, with B0 as CS pin
* Encoder using PA13 and PA14
* SSD1306 OLED display (128x64) using PB8-PB9 on I2C1
* Pull-up resistor (22k) on PA10 to fix reset issue.
* Pull-up resistor (5.1k) on PA1 for WS2812 LED support, and wire it's VCC to the 5V pin.
* Pins PA9, PA11, A12 are not useable because they're used for USB connection, and can't be shared. 
* Pin PB2 is used by BOOT1, and is unusable

## Keyboard Info

* Keyboard Maintainer: [Drashna Jael're](https://github.com/drashna)
* Hardware Supported: [Design files](https://gitlab.com/keyboards1/dm_r_track/-/tree/master/boolean), [WeAct BlackPill (F411)](https://github.com/WeActTC/MiniSTM32F4x1), [PMW3360 Optical Sensor](https://www.tindie.com/products/jkicklighter/pmw3360-motion-sensor/)


@@ 24,3 29,9 @@ Flashing example for this keyboard:
    make handwired/tractyl_manuform/5x6_right/f411:default:flash

See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

## Bootloader 

* **Bootmagic reset**: Hold down the top right key on the right side, or the top left key on the left side while plugging in.
* **Physical reset button**: Briefly press the "USER" button on the BlackPill
* **Keycode in layout**: Press the key mapped to `RESET`.

M keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk => keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk +3 -0
@@ 6,8 6,11 @@ BOOTLOADER = stm32-dfu

KEYBOARD_SHARED_EP = yes
CONSOLE_ENABLE     = yes
MOUSE_SHARED_EP    = no

EEPROM_DRIVER = spi
WS2812_DRIVER = pwm
SERIAL_DRIVER = usart
AUDIO_DRIVER  = pwm_hardware

DEBOUNCE_TYPE = asym_eager_defer_pk

M keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h => keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h +1 -10
@@ 16,16 16,7 @@

#pragma once

// #define USE_I2C
// #define SELECT_SOFT_SERIAL_SPEED 1
// #define SERIAL_USE_MULTI_TRANSACTION
#define SPLIT_MODS_ENABLE
#define EE_HANDS

#define TRACKBALL_DPI_OPTIONS { 1200, 1800, 2600, 3400 }

#undef DEBOUNCE
#define DEBOUNCE 10

#define SOLENOID_PIN F1
#define SOLENOID_DEFAULT_DWELL 8
#define DEBOUNCE 15

M keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c => keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c +1 -9
@@ 348,16 348,8 @@ void render_kitty(void) {
                                                                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};

    // assumes 1 frame prep stage
#ifdef SWAP_HANDS_ENABLE
    extern bool swap_hands;
#endif
    void        animation_phase(void) {
#    ifdef SWAP_HANDS_ENABLE
        if (swap_hands)
#else
        if (tap_toggling)
#endif
        {
        if (tap_toggling) {
            anim_frame_duration = 300;
            current_rtogi_frame = (current_rtogi_frame + 1) % RTOGI_FRAMES;
            oled_write_raw_P(rtogi[abs((RTOGI_FRAMES - 1) - current_rtogi_frame)], ANIM_SIZE);

M keyboards/handwired/tractyl_manuform/config.h => keyboards/handwired/tractyl_manuform/config.h +0 -3
@@ 24,9 24,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define VENDOR_ID               0x44DD
#define MANUFACTURER            Drashna

/* Set 0 if debouncing isn't needed */
#define DEBOUNCE                5

#define USB_POLLING_INTERVAL_MS 1

/* disable debug print */

M users/drashna/config.h => users/drashna/config.h +9 -11
@@ 147,6 147,9 @@
// #    define OLED_FONT_5X5
// #    define OLED_FONT_AZTECH
// #    define OLED_FONT_BMPLAIN
// #    define OLED_FONT_CRACKERS
// #    define OLED_FONT_HISKYF21
#    define OLED_FONT_DEAD_MEAL
// #    define OLED_FONT_SUPER_DIGG
// #    define OLED_LOGO_GMK_BAD
// #    define OLED_LOGO_HUE_MANITEE


@@ 163,17 166,12 @@
#    define ONESHOT_TIMEOUT 3000
#endif  // !ONESHOT_TIMEOUT

// this makes it possible to do rolling combos (zx) with keys that
// convert to other keys on hold (z becomes ctrl when you hold it,
// and when this option isn't enabled, z rapidly followed by x
// actually sends Ctrl-x. That's bad.)
#define IGNORE_MOD_TAP_INTERRUPT
#undef PERMISSIVE_HOLD
//#define TAPPING_FORCE_HOLD_PER_KEY
//#define RETRO_TAPPING_PER_KEY
#if !defined(KEYBOARD_kyria) && !defined(KEYBOARD_splitkb_kyria)
#    define TAPPING_TERM_PER_KEY
#endif
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
#define PERMISSIVE_HOLD_PER_KEY
#define TAPPING_FORCE_HOLD_PER_KEY
#define RETRO_TAPPING_PER_KEY
#define TAPPING_TERM_PER_KEY


#ifndef TAPPING_TOGGLE
#    define TAPPING_TOGGLE 1

M users/drashna/drashna.c => users/drashna/drashna.c +58 -0
@@ 259,3 259,61 @@ void                       matrix_slave_scan_user(void) {
    matrix_slave_scan_keymap();
}
#endif

__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        default:
            return TAPPING_TERM;
    }
}

__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
    // Immediately select the hold action when another key is tapped:
    // return true;
    // Do not select the hold action when another key is tapped.
    // return false;
    switch (keycode) {
        default:
            return false;
    }
}

__attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
    // Immediately select the hold action when another key is pressed.
    // return true;
    // Do not select the hold action when another key is pressed.
    // return false;
    switch (keycode) {
        case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
            return true;
        default:
            return false;
    }
}

__attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
    // Do not force the mod-tap key press to be handled as a modifier
    // if any other key was pressed while the mod-tap key is held down.
    // return true;
    // Force the mod-tap key press to be handled as a modifier if any
    // other key was pressed while the mod-tap key is held down.
    // return false;
    switch (keycode) {
        default:
            return true;
    }
}

__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        default:
            return false;
    }
}

__attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        default:
            return false;
    }
}

M users/drashna/drashna_font.h => users/drashna/drashna_font.h +534 -14
@@ 338,6 338,297 @@ static const unsigned char font[] PROGMEM = {
    0x22, 0x3e, 0x08, 0x00, 0x00, 0x00,
    0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    elif defined(OLED_FONT_CRACKERS)
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x5E, 0x06, 0x06, 0x00, 0x00, 0x00,
    0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00,
    0x20, 0x7C, 0x38, 0x38, 0x7C, 0x08,
    0x48, 0xFE, 0x64, 0x64, 0x00, 0x00,
    0x64, 0x60, 0x60, 0x18, 0x0C, 0x0C,
    0x74, 0x4A, 0x4A, 0x7E, 0x48, 0x00,
    0x1E, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x3C, 0x7E, 0x7E, 0x42, 0x00, 0x00,
    0x42, 0x7E, 0x7E, 0x3C, 0x00, 0x00,
    0x04, 0x0C, 0x04, 0x06, 0x0C, 0x04,
    0x10, 0x3C, 0x3C, 0x3C, 0x10, 0x00,
    0x00, 0x60, 0xE0, 0x00, 0x00, 0x00,
    0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
    0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
    0x60, 0x78, 0x78, 0x1E, 0x06, 0x00,
    0x3C, 0x3C, 0x7E, 0x42, 0x7E, 0x7E,
    0x04, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
    0x76, 0x7A, 0x7E, 0x7E, 0x4C, 0x00,
    0x4A, 0x7E, 0x7E, 0x7C, 0x00, 0x00,
    0x0E, 0x08, 0x7E, 0x7E, 0x7E, 0x00,
    0x4E, 0x4E, 0x4E, 0x7A, 0x1A, 0x00,
    0x3C, 0x7E, 0x7E, 0x4A, 0x7A, 0x00,
    0x02, 0x02, 0x0A, 0x7E, 0x7E, 0x7E,
    0x7E, 0x7E, 0x7E, 0x4A, 0x7E, 0x00,
    0x0C, 0x4A, 0x7E, 0x7E, 0x3C, 0x00,
    0x66, 0x66, 0x66, 0x00, 0x00, 0x00,
    0x66, 0xE6, 0x00, 0x00, 0x00, 0x00,
    0x08, 0x3C, 0x7E, 0x7E, 0x62, 0x00,
    0x14, 0x14, 0x14, 0x00, 0x00, 0x00,
    0x62, 0x7E, 0x7E, 0x3C, 0x08, 0x00,
    0x02, 0x4A, 0x0E, 0x0E, 0x0C, 0x00,
    0x3C, 0x7E, 0x7E, 0x4A, 0x72, 0x30,
    0x7A, 0x4A, 0x7E, 0x7E, 0x7C, 0x00,
    0x7E, 0x7E, 0x7E, 0x4A, 0x24, 0x00,
    0x3C, 0x7E, 0x7E, 0x7E, 0x46, 0x00,
    0x7E, 0x7E, 0x7E, 0x62, 0x3C, 0x00,
    0x7E, 0x7E, 0x7E, 0x4A, 0x00, 0x00,
    0x7E, 0x7E, 0x7E, 0x0A, 0x00, 0x00,
    0x3C, 0x7E, 0x7E, 0x42, 0x62, 0x00,
    0x7E, 0x7E, 0x7E, 0x18, 0x7E, 0x00,
    0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00,
    0x40, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
    0x7E, 0x7E, 0x7E, 0x3C, 0x66, 0x00,
    0x7E, 0x7E, 0x7E, 0x40, 0x00, 0x00,
    0x7E, 0x3E, 0x3E, 0x7C, 0x3E, 0x3E,
    0x7E, 0x3E, 0x7E, 0x7C, 0x7E, 0x00,
    0x3C, 0x3C, 0x7E, 0x62, 0x7E, 0x7E,
    0x7E, 0x7E, 0x7E, 0x22, 0x0C, 0x00,
    0x3C, 0x7E, 0x7E, 0x62, 0x7E, 0x7C,
    0x7E, 0x7E, 0x7E, 0x0A, 0x64, 0x00,
    0x4C, 0x4E, 0x4E, 0x7A, 0x1A, 0x00,
    0x02, 0x7E, 0x7E, 0x7E, 0x02, 0x00,
    0x7E, 0x60, 0x7E, 0x7E, 0x7E, 0x00,
    0x3E, 0x60, 0x7E, 0x7E, 0x3E, 0x00,
    0x7E, 0x7C, 0x7C, 0x3E, 0x7C, 0x7C,
    0x46, 0x7E, 0x08, 0x7E, 0x62, 0x62,
    0x5E, 0x5E, 0x5E, 0x70, 0x3E, 0x00,
    0x66, 0x7A, 0x7A, 0x5E, 0x66, 0x00,
    0x7E, 0x7E, 0x7E, 0x42, 0x00, 0x00,
    0x06, 0x1E, 0x1E, 0x78, 0x60, 0x00,
    0x42, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
    0x0C, 0x06, 0x0C, 0x00, 0x00, 0x00,
    0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
    0x02, 0x06, 0x06, 0x04, 0x00, 0x00,
    0x78, 0x24, 0x7C, 0x7C, 0x78, 0x00,
    0x7C, 0x7C, 0x7C, 0x48, 0x20, 0x00,
    0x18, 0x7C, 0x7C, 0x7C, 0x4C, 0x00,
    0x20, 0x48, 0x7C, 0x7C, 0x7C, 0x00,
    0x18, 0x7C, 0x7C, 0x74, 0x4C, 0x00,
    0x78, 0x7C, 0x7C, 0x24, 0x00, 0x00,
    0x18, 0x7C, 0x7C, 0x44, 0x74, 0x00,
    0x7C, 0x7C, 0x7C, 0x08, 0x60, 0x00,
    0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00,
    0x40, 0x7C, 0x7C, 0x7C, 0x00, 0x00,
    0x7C, 0x7C, 0x7C, 0x20, 0x48, 0x00,
    0x7C, 0x7C, 0x7C, 0x40, 0x00, 0x00,
    0x7C, 0x3C, 0x3C, 0x78, 0x3C, 0x3C,
    0x7C, 0x7C, 0x7C, 0x04, 0x78, 0x00,
    0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C,
    0x7C, 0x7C, 0x7C, 0x24, 0x08, 0x00,
    0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C,
    0x7C, 0x7C, 0x7C, 0x04, 0x00, 0x00,
    0x5C, 0x7C, 0x7C, 0x74, 0x00, 0x00,
    0x08, 0x7C, 0x7C, 0x7C, 0x48, 0x00,
    0x7C, 0x60, 0x7C, 0x7C, 0x7C, 0x00,
    0x3C, 0x60, 0x7C, 0x7C, 0x3C, 0x00,
    0x7C, 0x78, 0x78, 0x3C, 0x78, 0x78,
    0x4C, 0x3C, 0x3C, 0x78, 0x64, 0x00,
    0x4C, 0x4C, 0x4C, 0x78, 0x3C, 0x00,
    0x5C, 0x74, 0x44, 0x5C, 0x74, 0x00,
    0x24, 0x7E, 0x42, 0x42, 0x00, 0x00,
    0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x42, 0x7E, 0x24, 0x00, 0x00, 0x00,
    0x04, 0x06, 0x06, 0x02, 0x04, 0x06,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    elif defined(OLED_FONT_EIN)
    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,
    0x00, 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, 0x00, 0x7F, 0x00, 0x00, 0x00,
    0x20, 0x40, 0x40, 0x3F, 0x00, 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,
    0x01, 0x01, 0x7F, 0x01, 0x01, 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,
    0x78, 0x14, 0x14, 0x78, 0x00, 0x00,
    0x7C, 0x54, 0x54, 0x28, 0x00, 0x00,
    0x38, 0x44, 0x44, 0x28, 0x00, 0x00,
    0x7C, 0x44, 0x44, 0x38, 0x00, 0x00,
    0x7C, 0x54, 0x54, 0x44, 0x00, 0x00,
    0x7C, 0x14, 0x14, 0x04, 0x00, 0x00,
    0x38, 0x44, 0x54, 0x34, 0x00, 0x00,
    0x7C, 0x10, 0x10, 0x7C, 0x00, 0x00,
    0x00, 0x7C, 0x00, 0x00, 0x00, 0x00,
    0x20, 0x40, 0x40, 0x3C, 0x00, 0x00,
    0x7C, 0x10, 0x28, 0x44, 0x00, 0x00,
    0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
    0x7C, 0x08, 0x70, 0x08, 0x7C, 0x00,
    0x7C, 0x08, 0x10, 0x7C, 0x00, 0x00,
    0x38, 0x44, 0x44, 0x38, 0x00, 0x00,
    0x7C, 0x14, 0x14, 0x08, 0x00, 0x00,
    0x38, 0x44, 0x24, 0x58, 0x00, 0x00,
    0x7C, 0x14, 0x34, 0x48, 0x00, 0x00,
    0x48, 0x54, 0x54, 0x24, 0x00, 0x00,
    0x04, 0x7C, 0x04, 0x00, 0x00, 0x00,
    0x3C, 0x40, 0x40, 0x3C, 0x00, 0x00,
    0x3C, 0x40, 0x20, 0x1C, 0x00, 0x00,
    0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
    0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
    0x0C, 0x10, 0x70, 0x10, 0x0C, 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,
#    elif defined(OLED_FONT_HISKYF21)
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x5C, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00,
    0x28, 0x7C, 0x28, 0x7C, 0x28, 0x00,
    0x48, 0x54, 0x54, 0xFE, 0x54, 0x54,
    0x44, 0x20, 0x10, 0x08, 0x44, 0x00,
    0x28, 0x54, 0x54, 0x54, 0x74, 0x10,
    0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x78, 0x84, 0x00, 0x00, 0x00, 0x00,
    0x84, 0x78, 0x00, 0x00, 0x00, 0x00,
    0x48, 0x30, 0x30, 0x48, 0x00, 0x00,
    0x10, 0x38, 0x10, 0x00, 0x00, 0x00,
    0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
    0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x60, 0x10, 0x0C, 0x00, 0x00, 0x00,
    0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
    0x08, 0x7C, 0x00, 0x00, 0x00, 0x00,
    0x64, 0x54, 0x54, 0x54, 0x48, 0x00,
    0x44, 0x54, 0x54, 0x54, 0x28, 0x00,
    0x1C, 0x10, 0x10, 0x10, 0x7C, 0x00,
    0x4C, 0x54, 0x54, 0x54, 0x24, 0x00,
    0x38, 0x54, 0x54, 0x54, 0x54, 0x20,
    0x44, 0x24, 0x14, 0x0C, 0x00, 0x00,
    0x28, 0x54, 0x54, 0x54, 0x54, 0x28,
    0x08, 0x54, 0x54, 0x54, 0x54, 0x38,
    0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xC8, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x10, 0x28, 0x44, 0x00, 0x00, 0x00,
    0x28, 0x28, 0x28, 0x28, 0x00, 0x00,
    0x44, 0x28, 0x10, 0x00, 0x00, 0x00,
    0x04, 0x54, 0x14, 0x14, 0x08, 0x00,
    0x38, 0x44, 0x5C, 0x54, 0x48, 0x00,
    0x60, 0x18, 0x14, 0x14, 0x18, 0x60,
    0x7C, 0x54, 0x54, 0x54, 0x58, 0x30,
    0x38, 0x44, 0x44, 0x44, 0x40, 0x00,
    0x7C, 0x44, 0x44, 0x44, 0x38, 0x00,
    0x7C, 0x54, 0x54, 0x54, 0x54, 0x40,
    0x7C, 0x14, 0x14, 0x14, 0x10, 0x00,
    0x38, 0x44, 0x44, 0x44, 0x70, 0x10,
    0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C,
    0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x20, 0x40, 0x40, 0x40, 0x40, 0x3C,
    0x7C, 0x10, 0x10, 0x28, 0x44, 0x00,
    0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
    0x7C, 0x08, 0x10, 0x60, 0x10, 0x08,
    0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00,
    0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
    0x7C, 0x24, 0x24, 0x24, 0x18, 0x00,
    0x38, 0x44, 0x64, 0x44, 0x38, 0x00,
    0x7C, 0x14, 0x14, 0x14, 0x68, 0x00,
    0x48, 0x54, 0x54, 0x54, 0x54, 0x20,
    0x04, 0x04, 0x7C, 0x04, 0x04, 0x00,
    0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00,
    0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00,
    0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20,
    0x74, 0x2C, 0x10, 0x28, 0x44, 0x00,
    0x04, 0x08, 0x70, 0x08, 0x04, 0x00,
    0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
    0xFC, 0x84, 0x00, 0x00, 0x00, 0x00,
    0x0C, 0x10, 0x60, 0x00, 0x00, 0x00,
    0x84, 0xFC, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
    0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
    0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
    0x60, 0x18, 0x14, 0x14, 0x18, 0x60,
    0x7C, 0x54, 0x54, 0x54, 0x58, 0x30,
    0x38, 0x44, 0x44, 0x44, 0x40, 0x00,
    0x7C, 0x44, 0x44, 0x44, 0x38, 0x00,
    0x7C, 0x54, 0x54, 0x54, 0x54, 0x40,
    0x7C, 0x14, 0x14, 0x14, 0x10, 0x00,
    0x38, 0x44, 0x44, 0x44, 0x70, 0x10,
    0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C,
    0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x20, 0x40, 0x40, 0x40, 0x40, 0x3C,
    0x7C, 0x10, 0x10, 0x28, 0x44, 0x00,
    0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
    0x7C, 0x08, 0x10, 0x60, 0x10, 0x08,
    0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00,
    0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
    0x7C, 0x24, 0x24, 0x24, 0x18, 0x00,
    0x38, 0x44, 0x64, 0x44, 0x38, 0x00,
    0x7C, 0x14, 0x14, 0x14, 0x68, 0x00,
    0x48, 0x54, 0x54, 0x54, 0x54, 0x20,
    0x04, 0x04, 0x7C, 0x04, 0x04, 0x00,
    0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00,
    0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00,
    0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20,
    0x74, 0x2C, 0x10, 0x28, 0x44, 0x00,
    0x04, 0x08, 0x70, 0x08, 0x04, 0x00,
    0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
    0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
    0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
    0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    elif defined(OLED_FONT_SUPER_DIGG)
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x58, 0x5C, 0x00, 0x00, 0x00, 0x00,


@@ 435,6 726,103 @@ static const unsigned char font[] PROGMEM = {
    0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00,
    0x02, 0x01, 0x03, 0x04, 0x06, 0x02,
    0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00,
#elif defined (OLED_FONT_ZXPIX)
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
    0x12, 0x3F, 0x12, 0x12, 0x3F, 0x12,
    0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00,
    0x23, 0x13, 0x08, 0x04, 0x32, 0x31,
    0x10, 0x2A, 0x25, 0x2A, 0x10, 0x20,
    0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
    0x1E, 0x21, 0x00, 0x00, 0x00, 0x00,
    0x21, 0x1E, 0x00, 0x00, 0x00, 0x00,
    0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x08,
    0x08, 0x08, 0x3E, 0x08, 0x08, 0x08,
    0x80, 0x60, 0x00, 0x00, 0x00, 0x00,
    0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
    0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
    0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
    0x1E, 0x31, 0x29, 0x25, 0x23, 0x1E,
    0x22, 0x21, 0x3F, 0x20, 0x20, 0x20,
    0x32, 0x29, 0x29, 0x29, 0x29, 0x26,
    0x12, 0x21, 0x21, 0x25, 0x25, 0x1A,
    0x18, 0x14, 0x12, 0x3F, 0x10, 0x10,
    0x17, 0x25, 0x25, 0x25, 0x25, 0x19,
    0x1E, 0x25, 0x25, 0x25, 0x25, 0x18,
    0x01, 0x01, 0x31, 0x09, 0x05, 0x03,
    0x1A, 0x25, 0x25, 0x25, 0x25, 0x1A,
    0x06, 0x29, 0x29, 0x29, 0x29, 0x1E,
    0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x80, 0x64, 0x00, 0x00, 0x00, 0x00,
    0x08, 0x14, 0x22, 0x00, 0x00, 0x00,
    0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
    0x22, 0x14, 0x08, 0x00, 0x00, 0x00,
    0x02, 0x01, 0x01, 0x29, 0x05, 0x02,
    0x1E, 0x21, 0x2D, 0x2B, 0x2D, 0x0E,
    0x3E, 0x09, 0x09, 0x09, 0x09, 0x3E,
    0x3F, 0x25, 0x25, 0x25, 0x25, 0x1A,
    0x1E, 0x21, 0x21, 0x21, 0x21, 0x12,
    0x3F, 0x21, 0x21, 0x21, 0x12, 0x0C,
    0x3F, 0x25, 0x25, 0x25, 0x25, 0x21,
    0x3F, 0x05, 0x05, 0x05, 0x05, 0x01,
    0x1E, 0x21, 0x21, 0x21, 0x29, 0x1A,
    0x3F, 0x04, 0x04, 0x04, 0x04, 0x3F,
    0x21, 0x21, 0x3F, 0x21, 0x21, 0x21,
    0x10, 0x20, 0x20, 0x20, 0x20, 0x1F,
    0x3F, 0x04, 0x0C, 0x0A, 0x11, 0x20,
    0x3F, 0x20, 0x20, 0x20, 0x20, 0x20,
    0x3F, 0x02, 0x04, 0x04, 0x02, 0x3F,
    0x3F, 0x02, 0x04, 0x08, 0x10, 0x3F,
    0x1E, 0x21, 0x21, 0x21, 0x21, 0x1E,
    0x3F, 0x09, 0x09, 0x09, 0x09, 0x06,
    0x1E, 0x21, 0x29, 0x31, 0x21, 0x1E,
    0x3F, 0x09, 0x09, 0x09, 0x19, 0x26,
    0x12, 0x25, 0x25, 0x25, 0x25, 0x18,
    0x01, 0x01, 0x01, 0x3F, 0x01, 0x01,
    0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F,
    0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F,
    0x1F, 0x20, 0x10, 0x10, 0x20, 0x1F,
    0x21, 0x12, 0x0C, 0x0C, 0x12, 0x21,
    0x01, 0x02, 0x0C, 0x38, 0x04, 0x02,
    0x21, 0x31, 0x29, 0x25, 0x23, 0x21,
    0x3F, 0x21, 0x00, 0x00, 0x00, 0x00,
    0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
    0x21, 0x3F, 0x00, 0x00, 0x00, 0x00,
    0x04, 0x02, 0x3F, 0x02, 0x04, 0x00,
    0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
    0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
    0x10, 0x30, 0x2A, 0x2A, 0x3C, 0x00,
    0x3F, 0x24, 0x24, 0x24, 0x18, 0x00,
    0x0C, 0x14, 0x22, 0x22, 0x00, 0x00,
    0x18, 0x24, 0x24, 0x24, 0x3F, 0x00,
    0x1C, 0x2C, 0x2A, 0x2A, 0x24, 0x00,
    0x3E, 0x05, 0x01, 0x00, 0x00, 0x00,
    0x18, 0x28, 0xA4, 0xA4, 0x7C, 0x00,
    0x3F, 0x04, 0x04, 0x0C, 0x30, 0x00,
    0x24, 0x3D, 0x20, 0x00, 0x00, 0x00,
    0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
    0x3F, 0x0C, 0x12, 0x20, 0x00, 0x00,
    0x1F, 0x20, 0x20, 0x00, 0x00, 0x00,
    0x3E, 0x02, 0x3C, 0x02, 0x3C, 0x00,
    0x3E, 0x02, 0x02, 0x02, 0x3C, 0x00,
    0x0C, 0x14, 0x22, 0x32, 0x0C, 0x00,
    0xFC, 0x24, 0x24, 0x24, 0x18, 0x00,
    0x18, 0x24, 0x24, 0x24, 0xFC, 0x80,
    0x3C, 0x04, 0x02, 0x02, 0x00, 0x00,
    0x24, 0x2C, 0x2A, 0x2A, 0x10, 0x00,
    0x02, 0x1F, 0x22, 0x20, 0x00, 0x00,
    0x1E, 0x20, 0x20, 0x20, 0x1E, 0x00,
    0x06, 0x18, 0x20, 0x18, 0x06, 0x00,
    0x1E, 0x30, 0x1C, 0x30, 0x0E, 0x00,
    0x22, 0x14, 0x08, 0x14, 0x22, 0x00,
    0x0C, 0x10, 0xA0, 0xA0, 0x7C, 0x00,
    0x22, 0x32, 0x2A, 0x26, 0x22, 0x22,
    0x0C, 0x3F, 0x21, 0x00, 0x00, 0x00,
    0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x21, 0x3F, 0x0C, 0x00, 0x00, 0x00,
    0x02, 0x01, 0x02, 0x01, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    else // default font
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,


@@ 525,7 913,7 @@ static const unsigned char font[] PROGMEM = {
    0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
    0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
    0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
    0x4C, 0x90, 0x10, 0x90, 0x7C, 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,


@@ 601,6 989,50 @@ static const unsigned char font[] PROGMEM = {
    0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    elif defined(OLED_LOGO_LOOSE)
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8,
    0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00,
    0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
    0x02, 0xF9, 0x01, 0x01, 0x05, 0x09,
    0x11, 0x22, 0x06, 0xFE, 0xFE, 0xFE,
    0xFE, 0xFE, 0xFE, 0xFE, 0x46, 0x46,
    0x44, 0x44, 0x45, 0x44, 0x29, 0x28,
    0x2A, 0x28, 0x11, 0x13, 0x05, 0x07,
    0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
    0xE5, 0xE7, 0xE5, 0x07, 0x05, 0x07,
    0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
    0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
    0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
    0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
    0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
    0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
    0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x07,
    0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7,
    0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    elif defined(OLED_LOGO_SKEEB)
    0xC0, 0x20, 0x10, 0x08, 0x04, 0x02,
    0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
    0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F,
    0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01,
    0xFF, 0xFF, 0x01, 0x01, 0xFF, 0xFF,
    0x01, 0x01, 0xFF, 0xFF, 0x19, 0x19,
    0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
    0x01, 0x01, 0xFF, 0xFF, 0x81, 0x81,
    0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
    0x19, 0x19, 0xFF, 0xFF, 0xF9, 0xF9,
    0xF9, 0xF9, 0x01, 0x01, 0xF9, 0xF9,
    0xF9, 0xF9, 0xFF, 0xFF, 0x99, 0x99,
    0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
    0xF9, 0xF9, 0xFF, 0xFF, 0x19, 0x19,
    0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
    0x67, 0x67, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F,
    0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01,
    0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
    0x02, 0x04, 0x08, 0x10, 0x20, 0xC0,
#    else
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8,


@@ 705,6 1137,50 @@ static const unsigned char font[] PROGMEM = {
    0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    elif defined(OLED_LOGO_LOOSE)
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0x00,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0x00, 0xFF, 0x00, 0x00, 0x80, 0x00,
    0x1C, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x22,
    0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
    0x22, 0x22, 0x22, 0x14, 0x14, 0x14,
    0x14, 0x14, 0x08, 0x08, 0x00, 0x00,
    0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80,
    0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
    0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xBE,
    0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
    0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xBD,
    0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
    0x8F, 0x9F, 0x9C, 0x9C, 0x9C, 0x9C,
    0x9C, 0x9C, 0x9C, 0xFC, 0xF8, 0x00,
    0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x9C,
    0x9C, 0x9C, 0x9C, 0x80, 0x80, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    elif defined(OLED_LOGO_SKEEB)
    0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
    0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08,
    0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F,
    0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08,
    0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
    0x08, 0x08, 0x0F, 0x0F, 0x09, 0x09,
    0x09, 0x09, 0xF9, 0xF9, 0x09, 0x09,
    0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F,
    0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F,
    0x0F, 0x0F, 0x0F, 0x0F, 0x09, 0x09,
    0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
    0x09, 0x09, 0x0F, 0x0F, 0x08, 0x08,
    0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
    0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F,
    0x07, 0x03, 0x01, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
#    else
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF,


@@ 738,7 1214,7 @@ static const unsigned char font[] PROGMEM = {
    0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
    0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
    0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x44, 0x28, 0xFF, 0x5A, 0x24,
    0xF0, 0xFE, 0xF1, 0x91, 0xF6, 0xF0,
    0xF0, 0xFC, 0xF2, 0x92, 0xFC, 0xF0,



@@ 809,16 1285,42 @@ static const unsigned char font[] PROGMEM = {
    0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#else
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F,
    0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E,
    0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F,
    0x0F, 0x07, 0x01, 0x01, 0x01, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
#    elif defined(OLED_LOGO_LOOSE)
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x01, 0x03, 0x07, 0x0F,
    0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00,
    0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
    0x20, 0x47, 0x48, 0x50, 0x40, 0x41,
    0x42, 0x24, 0x30, 0x3F, 0x3F, 0x3F,
    0x3F, 0x3F, 0x3F, 0x3F, 0x31, 0x31,
    0x11, 0x51, 0x11, 0x11, 0x4A, 0x0A,
    0x2A, 0x0A, 0x44, 0x64, 0x50, 0x70,
    0x50, 0x70, 0x50, 0x70, 0x50, 0x70,
    0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
    0x53, 0x73, 0x53, 0x73, 0x53, 0x70,
    0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
    0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
    0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
    0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
    0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
    0x53, 0x73, 0x53, 0x73, 0x51, 0x70,
    0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
    0x53, 0x73, 0x53, 0x73, 0x53, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#    elif defined(OLED_LOGO_SKEEB)
    0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xFF, 0x08, 0x08, 0x08, 0x08, 0x08,
    0x08, 0x08, 0x08, 0x08, 0x08, 0xFF,
    0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08,
    0x03, 0x04, 0x08, 0x10, 0x20, 0x40,
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
    0x40, 0x20, 0x10, 0x08, 0x04, 0x03,
    0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
    0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
    0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8,
    0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
    0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80,
    0x01, 0x02, 0xFC, 0xF8, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,


@@ 826,14 1328,18 @@ static const unsigned char font[] PROGMEM = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
#else
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F,
    0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E,
    0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F,
    0x0F, 0x07, 0x01, 0x01, 0x01, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#endif

// third icon section
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,


@@ 845,6 1351,20 @@ static const unsigned char font[] PROGMEM = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#endif

// third icon section
    0x1F, 0x05, 0x00, 0x02, 0x1F, 0x00,
    0x1F, 0x05, 0x00, 0x1D, 0x17, 0x00,
    0x1F, 0x05, 0x00, 0x15, 0x1F, 0x00,
    0x1F, 0x05, 0x00, 0x07, 0x1C, 0x00,
    0x1F, 0x05, 0x00, 0x17, 0x1D, 0x00,
    0x1F, 0x05, 0x00, 0x1F, 0x1D, 0x00,
    0x1F, 0x05, 0x00, 0x01, 0x1F, 0x00,
    0x1F, 0x05, 0x00, 0x1F, 0x1F, 0x00,
    0x1F, 0x05, 0x00, 0x07, 0x1F, 0x00,
    0x1F, 0x05, 0x00, 0x70, 0x77, 0x00,
    0x1F, 0x05, 0x00, 0x00, 0x77, 0x00,

// fourth icon section
    0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,


@@ 874,7 1394,7 @@ static const unsigned char font[] PROGMEM = {
    0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
    0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
    0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x1F, 0x05, 0x00, 0x10, 0x77, 0x40,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

M users/drashna/wrappers.h => users/drashna/wrappers.h +69 -6
@@ 167,13 167,76 @@ NOTE: These are all the same length.  If you do a search/replace
#define _________________HALMAK_R3_________________       KC_G,    KC_P,    KC_X,    KC_K,    KC_Y


#define _________________HALMAK_L1_________________       KC_W,    KC_L,    KC_R,    KC_B,    KC_Z
#define _________________HALMAK_L2_________________       KC_S,    KC_H,    KC_N,    KC_T,    KC_COMM
#define _________________HALMAK_L3_________________       KC_F,    KC_M,    KC_V,    KC_V,    KC_SLASH
#define __________________ISRT_L1__________________       KC_W,    KC_C,    KC_L,    KC_M,    KC_K
#define __________________ISRT_L2__________________       KC_I,    KC_S,    KC_R,    KC_T,    KC_G
#define __________________ISRT_L3__________________       KC_Q,    KC_V,    KC_W,    KC_D,    KC_J

#define _________________HALMAK_R1_________________       KC_SCLN, KC_Q,    KC_U,    KC_D,    KC_J
#define _________________HALMAK_R2_________________       KC_DOT,  KC_A,    KC_E,    KC_O,    KC_I,    KC_QUOTE
#define _________________HALMAK_R3_________________       KC_G,    KC_P,    KC_X,    KC_K,    KC_Y
#define __________________ISRT_R1__________________       KC_Z,    KC_F,    KC_U,    KC_COMM, KC_QUOTE
#define __________________ISRT_R2__________________       KC_P,    KC_N,    KC_E,    KC_A,    KC_O,    KC_SCLN
#define __________________ISRT_R3__________________       KC_B,    KC_H,    KC_SLSH, KC_DOT,  KC_X


#define __________________SOUL_L1__________________       KC_Q,    KC_W,    KC_L,    KC_D,    KC_P
#define __________________SOUL_L2__________________       KC_A,    KC_S,    KC_R,    KC_T,    KC_G
#define __________________SOUL_L3__________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_J

#define __________________SOUL_R1__________________       KC_K,    KC_M,    KC_U,    KC_Y,    KC_SCLN
#define __________________SOUL_R2__________________       KC_F,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOTE
#define __________________SOUL_R3__________________       KC_B,    KC_H,    KC_COMM, KC_DOT,  KC_SLSH


#define __________________NIRO_L1__________________       KC_Q,    KC_W,    KC_U,    KC_D,    KC_P
#define __________________NIRO_L2__________________       KC_A,    KC_S,    KC_E,    KC_T,    KC_G
#define __________________NIRO_L3__________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B

#define __________________NIRO_R1__________________       KC_J,    KC_F,    KC_Y,    KC_L,    KC_SCLN
#define __________________NIRO_R2__________________       KC_H,    KC_N,    KC_I,    KC_R,    KC_O,    KC_QUOTE
#define __________________NIRO_R3__________________       KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH


#define _________________ASSET_L1__________________       KC_Q,    KC_W,    KC_J,    KC_F,    KC_G
#define _________________ASSET_L2__________________       KC_A,    KC_S,    KC_E,    KC_T,    KC_D
#define _________________ASSET_L3__________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B

#define _________________ASSET_R1__________________       KC_Y,    KC_P,    KC_U,    KC_L,    KC_SCLN
#define _________________ASSET_R2__________________       KC_H,    KC_N,    KC_I,    KC_O,    KC_R,    KC_QUOTE
#define _________________ASSET_R3__________________       KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH


#define _________________MTGAP_L1__________________       KC_Y,    KC_P,    KC_O,    KC_U,    KC_J
#define _________________MTGAP_L2__________________       KC_I,    KC_N,    KC_E,    KC_A,    KC_COMM
#define _________________MTGAP_L3__________________       KC_Q,    KC_Z,    KC_SLSH, KC_DOT,  KC_SCLN

#define _________________MTGAP_R1__________________       KC_K,    KC_D,    KC_L,    KC_C,    KC_W
#define _________________MTGAP_R2__________________       KC_M,    KC_H,    KC_T,    KC_S,    KC_R,    KC_QUOTE
#define _________________MTGAP_R3__________________       KC_B,    KC_F,    KC_G,    KC_V,    KC_X


#define _________________MINIMAK_L1________________       KC_Q,    KC_W,    KC_D,    KC_R,    KC_K
#define _________________MINIMAK_L2________________       KC_A,    KC_S,    KC_T,    KC_F,    KC_G
#define _________________MINIMAK_L3________________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B

#define _________________MINIMAK_R1________________       KC_Y,    KC_U,    KC_I,    KC_O,    KC_P
#define _________________MINIMAK_R2________________       KC_H,    KC_J,    KC_E,    KC_L,    KC_SCLN, KC_QUOT
#define _________________MINIMAK_R3________________       KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH


#define ________________MINIMAK_8_L1_______________       KC_Q,    KC_W,    KC_D,    KC_R,    KC_K
#define ________________MINIMAK_8_L2_______________       KC_A,    KC_S,    KC_T,    KC_F,    KC_G
#define ________________MINIMAK_8_L3_______________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B

#define ________________MINIMAK_8_R1_______________       KC_Y,    KC_U,    KC_I,    KC_L,    KC_P
#define ________________MINIMAK_8_R2_______________       KC_H,    KC_N,    KC_E,    KC_O,    KC_SCLN, KC_QUOT
#define ________________MINIMAK_8_R3_______________       KC_J,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH


#define _______________MINIMAK_12_L1_______________       KC_Q,    KC_W,    KC_D,    KC_F,    KC_K
#define _______________MINIMAK_12_L2_______________       KC_A,    KC_S,    KC_T,    KC_R,    KC_G
#define _______________MINIMAK_12_L3_______________       KC_Z,    KC_X,    KC_C,    KC_V,    KC_B

#define _______________MINIMAK_12_R1_______________       KC_Y,    KC_U,    KC_I,    KC_L,    KC_SCLN
#define _______________MINIMAK_12_R2_______________       KC_H,    KC_N,    KC_E,    KC_O,    KC_P,    KC_QUOT
#define _______________MINIMAK_12_R3_______________       KC_J,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH


#define ________________NUMBER_LEFT________________       KC_1,    KC_2,    KC_3,    KC_4,    KC_5