~ruther/qmk_firmware

ea70b361cee7ac8a1aa21daab758cc499db40447 — QMK Bot 2 years ago 0d574cd + eee9a53
Merge remote-tracking branch 'origin/master' into develop
A keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/.clang-format => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/.clang-format +1 -0
@@ 0,0 1,1 @@
ColumnLimit: 110

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h +4 -7
@@ 18,23 18,21 @@

/* Flash */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET              // Activates the double-tap behavior
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // In ms in which the double tap can occur

/* OLED */
#undef OLED_FONT_H
#define OLED_FONT_H "./oled/glcdfont.c"

#define  OLED_TIMEOUT 25000
#define OLED_BRIGHTNESS 60 // Protect my eyesss
#define OLED_TIMEOUT 25000
#define OLED_BRIGHTNESS 50 // Protect my eyesss
#define SPLIT_LAYER_STATE_ENABLE
#define SPLIT_MODS_ENABLE
#define SPLIT_OLED_ENABLE

/* Auto shift ♥ */
#define AUTO_SHIFT_TIMEOUT 115

/* Redefine CTRL + space (See space cadet shift) */
#define LCPO_KEYS KC_LCTL, KC_TRNS, KC_SPC
#define TAPPING_TERM 155

/* Unicode */
// #define UNICODE_SELECTED_MODES UC_LNX


@@ 61,7 59,6 @@
#define MK_C_OFFSET_2 25
#define MK_C_INTERVAL_2 10


#define MK_W_OFFSET_0 1
#define MK_W_INTERVAL_0 160


M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c +472 -167
@@ 7,193 7,498 @@
/* Only for basis letters
   Exceptions like Tab or Enter */
bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
  switch (keycode) {
  case KC_TAB:
    // case KC_ENT:

    switch (keycode) {

        case KC_TAB:
        case KC_ENT:

        // --
        case KC_A:
        case KC_B:
        case KC_C:
        case KC_D:
        case KC_E:
        case KC_F:
        case KC_G:
        case KC_H:
        case KC_I:
        case KC_J:
        case KC_K:
        case KC_L:
        case KC_M:
        case KC_N:
        case KC_O:
        case KC_P:
        case KC_Q:
        case KC_R:
        case KC_S:
        case KC_T:
        case KC_U:
        case KC_V:
        case KC_W:
        case KC_X:
        case KC_Y:
        case KC_Z:

            return true;
    }

    return get_custom_auto_shifted_key(keycode, record);
}
  case US_EACU:
  case US_CCED:
  case US_AE:
  case US_OE:

  // --
  case KC_A:
  case KC_B:
  case KC_C:
  case KC_D:
  case KC_E:
  case KC_F:
  case KC_G:
  case KC_H:
  case KC_I:
  case KC_J:
  case KC_K:
  case KC_L:
  case KC_M:
  case KC_N:
  case KC_O:
  case KC_P:
  case KC_Q:
  case KC_R:
  case KC_S:
  case KC_T:
  case KC_U:
  case KC_V:
  case KC_W:
  case KC_X:
  case KC_Y:
  case KC_Z:

    return true;
  }

  return get_custom_auto_shifted_key(keycode, record);
}

/* Custom auto shift
   I use this instead of tap dance because double tap is horrible
   Add here the letter or the custom enum, then add in press_user and press_release the actions */
bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
    switch(keycode) {
  switch (keycode) {
  case KC_BSPC:

        case KC_BSPC:
        case KC_LABK:  // Easy indent with vim
        case KC_RABK:
  // Double them !!!
  case KC_AMPERSAND:
  case KC_AT:
  case KC_BACKSLASH:
  case KC_CIRCUMFLEX:
  case KC_COLON:
  case KC_DOLLAR:
  case KC_EQUAL:
  case KC_EXCLAIM:
  case KC_GRAVE:
  case KC_HASH:
  case KC_MINUS:
  case KC_PERC:
  case KC_PIPE:
  case KC_PLUS:
  case KC_QUESTION:
  case KC_QUOTE:
  case KC_DOUBLE_QUOTE:
  case KC_SEMICOLON:
  case KC_SLASH:
  case KC_ASTERISK:
  case KC_TILDE:
  case KC_UNDERSCORE:

        /* French */
        case CS_E_ACUTE:
  case KC_LEFT_ANGLE_BRACKET: // Easy indent with vim
  case KC_RIGHT_ANGLE_BRACKET:

        case CS_A_GRAVE:
        case CS_E_GRAVE:
        case CS_I_GRAVE:
        case CS_O_GRAVE:
        case CS_U_GRAVE:
  case KC_LEFT_BRACKET:
  case KC_RIGHT_BRACKET:
  case KC_LEFT_CURLY_BRACE:
  case KC_RIGHT_CURLY_BRACE:
  case KC_LEFT_PAREN:
  case KC_RIGHT_PAREN:

        case CS_A_CIRCUMFLEX:
        case CS_E_CIRCUMFLEX:
        case CS_I_CIRCUMFLEX:
        case CS_O_CIRCUMFLEX:
        case CS_U_CIRCUMFLEX:
  /* French */
  case CS_A_GRAVE:
  case CS_E_GRAVE:
  case CS_U_GRAVE:

        case CS_A_DIAERESIS:
        case CS_E_DIAERESIS:
        case CS_I_DIAERESIS:
        case CS_O_DIAERESIS:
        case CS_U_DIAERESIS:
        case CS_Y_DIAERESIS:
  case CS_A_CIRCUMFLEX:
  case CS_E_CIRCUMFLEX:
  case CS_I_CIRCUMFLEX:
  case CS_O_CIRCUMFLEX:
  case CS_U_CIRCUMFLEX:

        case CS_C_CEDILLA:
        case CS_AE:
        case CS_OE:
  case CS_E_DIAERESIS:
  case CS_I_DIAERESIS:
  case CS_U_DIAERESIS:
  case CS_Y_DIAERESIS:
    return true;

            return true;

        default:
            return false;
    }
  default:
    return false;
  }
}

void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
    switch(keycode) {

        case KC_BSPC:
            register_code16((!shifted) ? KC_BSPC : KC_DEL);
            break;

        case KC_LABK:
            if (shifted) { send_unicode_string("<<"); }
            else         { send_unicode_string("<"); } break;

        case KC_RABK:
            if (shifted) { send_unicode_string(">>"); }
            else         { send_unicode_string(">"); } break;

        /* French
           Release is not necessary with 'send_unicode_string()' */
        case CS_E_ACUTE:
            if (shifted) { send_unicode_string("É"); }
            else         { send_unicode_string("é"); } break;

        case CS_A_GRAVE:
            if (shifted) { send_unicode_string("À"); }
            else         { send_unicode_string("à"); } break;
        case CS_E_GRAVE:
            if (shifted) { send_unicode_string("È"); }
            else         { send_unicode_string("è"); } break;
        case CS_I_GRAVE:
            if (shifted) { send_unicode_string("Ì"); }
            else         { send_unicode_string("ì"); } break;
        case CS_O_GRAVE:
            if (shifted) { send_unicode_string("Ò"); }
            else         { send_unicode_string("ò"); } break;
        case CS_U_GRAVE:
            if (shifted) { send_unicode_string("Ù"); }
            else         { send_unicode_string("ù"); } break;

        case CS_A_CIRCUMFLEX:
            if (shifted) { send_unicode_string("Â"); }
            else         { send_unicode_string("â"); }  break;
        case CS_E_CIRCUMFLEX:
            if (shifted) { send_unicode_string("Ê"); }
            else         { send_unicode_string("ê"); }  break;
        case CS_I_CIRCUMFLEX:
            if (shifted) { send_unicode_string("Î"); }
            else         { send_unicode_string("î"); }  break;
        case CS_O_CIRCUMFLEX:
            if (shifted) { send_unicode_string("Ô"); }
            else         { send_unicode_string("ô"); }  break;
        case CS_U_CIRCUMFLEX:
            if (shifted) { send_unicode_string("Û"); }
            else         { send_unicode_string("û"); }  break;

        case CS_A_DIAERESIS:
            if (shifted) { send_unicode_string("Ä"); }
            else         { send_unicode_string("ä"); }  break;
        case CS_E_DIAERESIS:
            if (shifted) { send_unicode_string("Ë"); }
            else         { send_unicode_string("ë"); }  break;
        case CS_I_DIAERESIS:
            if (shifted) { send_unicode_string("Ï"); }
            else         { send_unicode_string("ï"); }  break;
        case CS_O_DIAERESIS:
            if (shifted) { send_unicode_string("Ö"); }
            else         { send_unicode_string("ö"); }  break;
        case CS_U_DIAERESIS:
            if (shifted) { send_unicode_string("Ü"); }
            else         { send_unicode_string("ü"); }  break;
        case CS_Y_DIAERESIS:
            if (shifted) { send_unicode_string("Ÿ"); }
            else         { send_unicode_string("ÿ"); }  break;

        case CS_C_CEDILLA:
            if (shifted) { send_unicode_string("Ç"); }
            else         { send_unicode_string("ç"); } break;
        case CS_AE:
            if (shifted) { send_unicode_string("Æ"); }
            else         { send_unicode_string("æ"); } break;
        case CS_OE:
            if (shifted) { send_unicode_string("Œ"); }
            else         { send_unicode_string("œ"); } break;


        default:
            if (shifted) {
                add_weak_mods(MOD_BIT(KC_LSFT));
            }
            /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift */
            register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
  switch (keycode) {
  case KC_BSPC:
    if (shifted) {
      tap_code16(KC_DEL);
    } else {
      tap_code16(KC_BSPC);
    }
}
    break;
    break;

void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
    switch(keycode) {
  case KC_AMPERSAND:
    if (shifted) {
      tap_code16(KC_AMPERSAND);
      tap_code16(KC_AMPERSAND);
    } else {
      tap_code16(KC_AMPERSAND);
    }
    break;
  case KC_AT:
    if (shifted) {
      tap_code16(KC_AT);
      tap_code16(KC_AT);
    } else {
      tap_code16(KC_AT);
    }
    break;
  case KC_BACKSLASH:
    if (shifted) {
      tap_code16(KC_BACKSLASH);
      tap_code16(KC_BACKSLASH);
    } else {
      tap_code16(KC_BACKSLASH);
    }
    break;
  case KC_CIRCUMFLEX:
    if (shifted) {
      tap_code16(KC_CIRCUMFLEX);
      tap_code16(KC_CIRCUMFLEX);
    } else {
      tap_code16(KC_CIRCUMFLEX);
    }
    break;
  case KC_COLON:
    if (shifted) {
      tap_code16(KC_COLON);
      tap_code16(KC_COLON);
    } else {
      tap_code16(KC_COLON);
    }
    break;
  case KC_DOLLAR:
    if (shifted) {
      tap_code16(KC_DOLLAR);
      tap_code16(KC_DOLLAR);
    } else {
      tap_code16(KC_DOLLAR);
    }
    break;
  case KC_EQUAL:
    if (shifted) {
      tap_code16(KC_EQUAL);
      tap_code16(KC_EQUAL);
    } else {
      tap_code16(KC_EQUAL);
    }
    break;
  case KC_EXCLAIM:
    if (shifted) {
      tap_code16(KC_EXCLAIM);
      tap_code16(KC_EXCLAIM);
    } else {
      tap_code16(KC_EXCLAIM);
    }
    break;
  case KC_GRAVE:
    if (shifted) {
      tap_code16(KC_GRAVE);
      tap_code16(KC_GRAVE);
    } else {
      tap_code16(KC_GRAVE);
    }
    break;
  case KC_HASH:
    if (shifted) {
      tap_code16(KC_HASH);
      tap_code16(KC_HASH);
    } else {
      tap_code16(KC_HASH);
    }
    break;
  case KC_MINUS:
    if (shifted) {
      tap_code16(KC_MINUS);
      tap_code16(KC_MINUS);
    } else {
      tap_code16(KC_MINUS);
    }
    break;
  case KC_PERCENT:
    if (shifted) {
      tap_code16(KC_PERCENT);
      tap_code16(KC_PERCENT);
    } else {
      tap_code16(KC_PERCENT);
    }
    break;
  case KC_PIPE:
    if (shifted) {
      tap_code16(KC_PIPE);
      tap_code16(KC_PIPE);
    } else {
      tap_code16(KC_PIPE);
    }
    break;
  case KC_PLUS:
    if (shifted) {
      tap_code16(KC_PLUS);
      tap_code16(KC_PLUS);
    } else {
      tap_code16(KC_PLUS);
    }
    break;
  case KC_QUESTION:
    if (shifted) {
      tap_code16(KC_QUESTION);
      tap_code16(KC_QUESTION);
    } else {
      tap_code16(KC_QUESTION);
    }
    break;
  case KC_QUOTE:
    if (shifted) {
      tap_code16(KC_QUOTE);
      tap_code16(KC_QUOTE);
    } else {
      tap_code16(KC_QUOTE);
    }
    break;
  case KC_DOUBLE_QUOTE:
    if (shifted) {
      tap_code16(KC_DOUBLE_QUOTE);
      tap_code16(KC_DOUBLE_QUOTE);
    } else {
      tap_code16(KC_DOUBLE_QUOTE);
    }
    break;
  case KC_SEMICOLON:
    if (shifted) {
      tap_code16(KC_SEMICOLON);
      tap_code16(KC_SEMICOLON);
    } else {
      tap_code16(KC_SEMICOLON);
    }
    break;
  case KC_SLASH:
    if (shifted) {
      tap_code16(KC_SLASH);
      tap_code16(KC_SLASH);
    } else {
      tap_code16(KC_SLASH);
    }
    break;
  case KC_ASTERISK:
    if (shifted) {
      tap_code16(KC_ASTERISK);
      tap_code16(KC_ASTERISK);
    } else {
      tap_code16(KC_ASTERISK);
    }
    break;
  case KC_TILDE:
    if (shifted) {
      tap_code16(KC_TILDE);
      tap_code16(KC_TILDE);
    } else {
      tap_code16(KC_TILDE);
    }
    break;
  case KC_UNDERSCORE:
    if (shifted) {
      tap_code16(KC_UNDERSCORE);
      tap_code16(KC_UNDERSCORE);
    } else {
      tap_code16(KC_UNDERSCORE);
    }
    break;

        case KC_BSPC:
            unregister_code16((!shifted) ? KC_BSPC : KC_DEL);
            break;
  case KC_LEFT_ANGLE_BRACKET:
    if (shifted) {
      tap_code16(KC_LEFT_ANGLE_BRACKET);
      tap_code16(KC_LEFT_ANGLE_BRACKET);
    } else {
      tap_code16(KC_LEFT_ANGLE_BRACKET);
    }
    break;
  case KC_RIGHT_ANGLE_BRACKET:
    if (shifted) {
      tap_code16(KC_RIGHT_ANGLE_BRACKET);
      tap_code16(KC_RIGHT_ANGLE_BRACKET);
    } else {
      tap_code16(KC_RIGHT_ANGLE_BRACKET);
    }
    break;

        default:
            /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift
               The IS_RETRO check isn't really necessary here, always using
               keycode & 0xFF would be fine. */
            unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
  case KC_LEFT_BRACKET:
    if (shifted) {
      tap_code16(KC_LEFT_BRACKET);
      tap_code16(KC_LEFT_BRACKET);
    } else {
      tap_code16(KC_LEFT_BRACKET);
    }
    break;
  case KC_RIGHT_BRACKET:
    if (shifted) {
      tap_code16(KC_RIGHT_BRACKET);
      tap_code16(KC_RIGHT_BRACKET);
    } else {
      tap_code16(KC_RIGHT_BRACKET);
    }
    break;
  case KC_LEFT_CURLY_BRACE:
    if (shifted) {
      tap_code16(KC_LEFT_CURLY_BRACE);
      tap_code16(KC_LEFT_CURLY_BRACE);
    } else {
      tap_code16(KC_LEFT_CURLY_BRACE);
    }
    break;
  case KC_RIGHT_CURLY_BRACE:
    if (shifted) {
      tap_code16(KC_RIGHT_CURLY_BRACE);
      tap_code16(KC_RIGHT_CURLY_BRACE);
    } else {
      tap_code16(KC_RIGHT_CURLY_BRACE);
    }
    break;
  case KC_LEFT_PAREN:
    if (shifted) {
      tap_code16(KC_LEFT_PAREN);
      tap_code16(KC_LEFT_PAREN);
    } else {
      tap_code16(KC_LEFT_PAREN);
    }
    break;
  case KC_RIGHT_PAREN:
    if (shifted) {
      tap_code16(KC_RIGHT_PAREN);
      tap_code16(KC_RIGHT_PAREN);
    } else {
      tap_code16(KC_RIGHT_PAREN);
    }
    break;

  /* French
     Release is not necessary with 'send_unicode_string()' */
  case CS_A_GRAVE:
    if (shifted) {
      tap_code16(US_DGRV);
      tap_code16(S(KC_A));
    } else {
      tap_code16(US_DGRV);
      tap_code16(KC_A);
    }
    break;
  case CS_E_GRAVE:
    if (shifted) {
      tap_code16(US_DGRV);
      tap_code16(S(KC_E));
    } else {
      tap_code16(US_DGRV);
      tap_code16(KC_E);
    }
    break;
  case CS_U_GRAVE:
    if (shifted) {
      tap_code16(US_DGRV);
      tap_code16(S(KC_U));
    } else {
      tap_code16(US_DGRV);
      tap_code16(KC_U);
    }
    break;

  case CS_A_CIRCUMFLEX:
    if (shifted) {
      tap_code16(US_DCIR);
      tap_code16(S(KC_A));
    } else {
      tap_code16(US_DCIR);
      tap_code16(KC_A);
    }
    break;
  case CS_E_CIRCUMFLEX:
    if (shifted) {
      tap_code16(US_DCIR);
      tap_code16(S(KC_E));
    } else {
      tap_code16(US_DCIR);
      tap_code16(KC_E);
    }
    break;
  case CS_I_CIRCUMFLEX:
    if (shifted) {
      tap_code16(US_DCIR);
      tap_code16(S(KC_I));
    } else {
      tap_code16(US_DCIR);
      tap_code16(KC_I);
    }
    break;
  case CS_O_CIRCUMFLEX:
    if (shifted) {
      tap_code16(US_DCIR);
      tap_code16(S(KC_O));
    } else {
      tap_code16(US_DCIR);
      tap_code16(KC_O);
    }
    break;
  case CS_U_CIRCUMFLEX:
    if (shifted) {
      tap_code16(US_DCIR);
      tap_code16(S(KC_U));
    } else {
      tap_code16(US_DCIR);
      tap_code16(KC_U);
    }
    break;

  case CS_E_DIAERESIS:
    if (shifted) {
      tap_code16(US_DIAE);
      tap_code16(S(KC_E));
    } else {
      tap_code16(US_DIAE);
      tap_code16(KC_E);
    }
    break;
  case CS_I_DIAERESIS:
    if (shifted) {
      tap_code16(US_DIAE);
      tap_code16(S(KC_I));
    } else {
      tap_code16(US_DIAE);
      tap_code16(KC_I);
    }
    break;
  case CS_U_DIAERESIS:
    if (shifted) {
      tap_code16(US_DIAE);
      tap_code16(S(KC_U));
    } else {
      tap_code16(US_DIAE);
      tap_code16(KC_U);
    }
    break;
  case CS_Y_DIAERESIS:
    if (shifted) {
      tap_code16(US_DIAE);
      tap_code16(S(KC_Y));
    } else {
      tap_code16(US_DIAE);
      tap_code16(KC_Y);
    }
    break;

  default:
    if (shifted) {
      add_weak_mods(MOD_BIT(KC_LSFT));
    }
    /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift */
    register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
  }
}

void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) {
  switch (keycode) {
  case KC_BSPC:
    unregister_code16((!shifted) ? KC_BSPC : KC_DEL);
    break;

  default:
    /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift
       The IS_RETRO check isn't really necessary here, always using
       keycode & 0xFF would be fine. */
    unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode);
  }
}

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c +205 -230
@@ 15,256 15,231 @@
*/

enum combos {
    LEADER,
    BOOTLOADER,

    LAYER_ADJUST,
    LAYER_FN,
    LAYER_LEFT_HAND,

    /* French */
    E_ACUTE,
    C_CEDILLA,
    E_A,
    E_O,

    A_GRAVE,
    E_GRAVE,
    I_GRAVE,
    O_GRAVE,
    U_GRAVE,

    A_CIRCUMFLEX,
    E_CIRCUMFLEX,
    I_CIRCUMFLEX,
    O_CIRCUMFLEX,
    U_CIRCUMFLEX,

    A_DIAERESIS,
    E_DIAERESIS,
    I_DIAERESIS,
    O_DIAERESIS,
    U_DIAERESIS,
    Y_DIAERESIS,

    /* -- */
    AMPERSAND,
    AT_SIGN,
    BACKSLASH,
    CIRCUMFLEX,
    COLON,
    DOLLAR,
    EQUAL,
    EXCLAMATION_MARK,
    GRAVE,
    HASH,
    MINUS,
    PERCENT,
    PIPE,
    PLUS,
    QUESTION_MARK,
    QUOTE,
    QUOTE_DOUBLE,
    SEMICOLON,
    SLASH,
    STAR,
    TILDE,
    UNDERSCORE,

    ANGLE_BRACKET_LEFT,
    ANGLE_BRACKET_RIGHT,

    BRACKET_LEFT,
    BRACKET_RIGHT,
    CURLY_BRACKET_LEFT,
    CURLY_BRACKET_RIGHT,
    PARENTHESIS_LEFT,
    PARENTHESIS_RIGHT,

    /* -- */
    ALT_SHIFT,
    CONTROL_SHIFT,
    CONTROL_ALT,
    CONTROL_SHIFT_ALT,
    RIGHT_ALT,

    /* One hand special */
    CONTROL_RIGHT,
    CONTROL_SHIFT_RIGHT,

    // DEL_LEFT,
    SHIFT_LEFT,
    ALTGR_LEFT,
    CONTROL_SHIFT_LEFT,
  LEADER,
  BOOTLOADER,

  LAYER_ADJ,
  LAYER_FN,
  LAYER_LEFT_HAND,
  LAYER_MOUSE,
  LAYER_MOUSE_BACK,

  /* French */
  C_CEDILLA,
  E_A,
  E_O,

  A_GRAVE,
  E_GRAVE,
  U_GRAVE,

  A_CIRCUMFLEX,
  E_CIRCUMFLEX,
  I_CIRCUMFLEX,
  O_CIRCUMFLEX,
  U_CIRCUMFLEX,

  E_DIAERESIS,
  I_DIAERESIS,
  U_DIAERESIS,
  Y_DIAERESIS,

  /* -- */
  AMPERSAND,
  AT_SIGN,
  BACKSLASH,
  CIRCUMFLEX,
  COLON,
  DOLLAR,
  EQUAL,
  EXCLAMATION_MARK,
  GRAVE,
  HASH,
  MINUS,
  PERCENT,
  PIPE,
  PLUS,
  QUESTION_MARK,
  QUOTE,
  QUOTE_DOUBLE,
  SEMICOLON,
  SLASH,
  STAR,
  TILDE,
  UNDERSCORE,

  ANGLE_BRACKET_LEFT,
  ANGLE_BRACKET_RIGHT,

  BRACKET_LEFT,
  BRACKET_RIGHT,
  CURLY_BRACKET_LEFT,
  CURLY_BRACKET_RIGHT,
  PARENTHESIS_LEFT,
  PARENTHESIS_RIGHT,

  /* Non qwerty */
  EURO,

  /* One hand special */
  CONTROL_RIGHT,
  CONTROL_SHIFT_RIGHT,

  ALT_LEFT,
  SHIFT_LEFT,
  CONTROL_SHIFT_LEFT,

  /* Just to replace the define in config.h */
  COMBO_LENGTH,
};
uint16_t COMBO_LEN = COMBO_LENGTH;

/* Sequences fo keys */
const uint16_t PROGMEM combo_leader[] =                 {LT(_MOUSE, KC_COMM), LT(_ARROWS, KC_DOT), COMBO_END};
const uint16_t PROGMEM combo_bootloader[] =             {KC_K, KC_TAB, KC_Z, KC_BSPC, KC_V, KC_J, COMBO_END};
const uint16_t PROGMEM combo_leader[] = {LT(_MOUSE, KC_COMM), LT(_ARROWS, KC_DOT), COMBO_END};
const uint16_t PROGMEM combo_bootloader[] = {KC_K, KC_TAB, KC_Z, KC_BSPC, KC_V, KC_J, COMBO_END};

const uint16_t PROGMEM combo_ADJ[] = {CTL_T(KC_SPACE), LT(_NUMERIC, KC_ENT), COMBO_END};
const uint16_t PROGMEM combo_fn[] = {LT(_NUMERIC, KC_ENT), KC_N, COMBO_END};
const uint16_t PROGMEM combo_left_hand[] = {LT(_MOUSE, KC_COMM), GUI_T(KC_ESC), COMBO_END};
const uint16_t PROGMEM combo_mouse[] = {KC_A, KC_I, KC_E, KC_U, COMBO_END};
const uint16_t PROGMEM combo_mouse_back[] = {KC_MS_LEFT, KC_MS_UP, KC_MS_DOWN, KC_MS_RIGHT, COMBO_END};
/* -- */
const uint16_t PROGMEM combo_c_cedilla[] = {LT(_ARROWS, KC_DOT), KC_C, COMBO_END};
const uint16_t PROGMEM combo_ea[] = {US_EACU, KC_A, COMBO_END};
const uint16_t PROGMEM combo_eo[] = {US_EACU, KC_O, COMBO_END};

const uint16_t PROGMEM combo_adjust[] =                 {KC_LCPO, LT(_NUMERIC, KC_ENT), COMBO_END};
const uint16_t PROGMEM combo_fn[] =                     {LT(_NUMERIC, KC_ENT), KC_N, COMBO_END};
const uint16_t PROGMEM combo_left_hand[] =              {KC_LCPO, GUI_T(KC_ESC), COMBO_END};
const uint16_t PROGMEM combo_a_grave[] = {CTL_T(KC_SPACE), KC_A, COMBO_END};
const uint16_t PROGMEM combo_e_grave[] = {CTL_T(KC_SPACE), KC_E, COMBO_END};
const uint16_t PROGMEM combo_u_grave[] = {CTL_T(KC_SPACE), KC_U, COMBO_END};

/* -- */
// const uint16_t PROGMEM combo_enter_shifted[] =          {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END};
const uint16_t PROGMEM combo_control_shift[] =          {KC_LCPO, KC_S, COMBO_END};
const uint16_t PROGMEM combo_control_alt[] =            {KC_LCPO, KC_LALT, COMBO_END};
const uint16_t PROGMEM combo_control_shift_alt[] =      {KC_LCPO, KC_S, KC_A, COMBO_END};
const uint16_t PROGMEM combo_right_alt[] =              {KC_LAPO, KC_G, COMBO_END};
const uint16_t PROGMEM combo_alt_shift[] =              {KC_LALT, KC_S, COMBO_END};
const uint16_t PROGMEM combo_a_circumflex[] = {LT(_MOUSE, KC_COMM), KC_A, COMBO_END};
const uint16_t PROGMEM combo_e_circumflex[] = {LT(_MOUSE, KC_COMM), KC_E, COMBO_END};
const uint16_t PROGMEM combo_i_circumflex[] = {LT(_MOUSE, KC_COMM), KC_I, COMBO_END};
const uint16_t PROGMEM combo_o_circumflex[] = {LT(_MOUSE, KC_COMM), KC_O, COMBO_END};
const uint16_t PROGMEM combo_u_circumflex[] = {LT(_MOUSE, KC_COMM), KC_U, COMBO_END};

/* -- */
const uint16_t PROGMEM combo_e_acute[] =                {KC_LCPO, KC_E, COMBO_END};
const uint16_t PROGMEM combo_c_cedilla[] =              {KC_LCPO, KC_I, COMBO_END};
const uint16_t PROGMEM combo_ea[] =                     {KC_LCPO, KC_A, COMBO_END};
const uint16_t PROGMEM combo_eo[] =                     {KC_LCPO, KC_O, COMBO_END};

const uint16_t PROGMEM combo_a_grave[] =                {LT(_MOUSE, KC_COMM), KC_A, COMBO_END};
const uint16_t PROGMEM combo_e_grave[] =                {LT(_MOUSE, KC_COMM), KC_E, COMBO_END};
const uint16_t PROGMEM combo_i_grave[] =                {LT(_MOUSE, KC_COMM), KC_I, COMBO_END};
const uint16_t PROGMEM combo_o_grave[] =                {LT(_MOUSE, KC_COMM), KC_O, COMBO_END};
const uint16_t PROGMEM combo_u_grave[] =                {LT(_MOUSE, KC_COMM), KC_U, COMBO_END};

const uint16_t PROGMEM combo_a_circumflex[] =           {KC_C, KC_A, COMBO_END};
const uint16_t PROGMEM combo_e_circumflex[] =           {KC_C, KC_E, COMBO_END};
const uint16_t PROGMEM combo_i_circumflex[] =           {KC_C, KC_I, COMBO_END};
const uint16_t PROGMEM combo_o_circumflex[] =           {KC_C, KC_O, COMBO_END};
const uint16_t PROGMEM combo_u_circumflex[] =           {KC_C, KC_U, COMBO_END};

const uint16_t PROGMEM combo_a_diaeresis[] =            {KC_T, KC_A, COMBO_END};
const uint16_t PROGMEM combo_e_diaeresis[] =            {KC_T, KC_E, COMBO_END};
const uint16_t PROGMEM combo_i_diaeresis[] =            {KC_T, KC_I, COMBO_END};
const uint16_t PROGMEM combo_o_diaeresis[] =            {KC_T, KC_O, COMBO_END};
const uint16_t PROGMEM combo_u_diaeresis[] =            {KC_T, KC_U, COMBO_END};
const uint16_t PROGMEM combo_y_diaeresis[] =            {KC_T, KC_Y, COMBO_END};
const uint16_t PROGMEM combo_e_diaeresis[] = {US_EACU, KC_E, COMBO_END};
const uint16_t PROGMEM combo_i_diaeresis[] = {US_EACU, KC_I, COMBO_END};
const uint16_t PROGMEM combo_u_diaeresis[] = {US_EACU, KC_U, COMBO_END};
const uint16_t PROGMEM combo_y_diaeresis[] = {US_EACU, KC_Y, COMBO_END};

/* -- */
const uint16_t PROGMEM combo_ampersand[] =              {KC_I, KC_E, COMBO_END};
const uint16_t PROGMEM combo_at_sign[] =                {KC_Q, KC_Y, COMBO_END};
const uint16_t PROGMEM combo_backslash[] =              {KC_D, KC_R, COMBO_END};
const uint16_t PROGMEM combo_circumflex[] =             {KC_T, KC_D, COMBO_END};
const uint16_t PROGMEM combo_colon[] =                  {KC_C, KC_G, COMBO_END};
const uint16_t PROGMEM combo_dollar[] =                 {KC_D, KC_L, COMBO_END};
const uint16_t PROGMEM combo_equal[] =                  {KC_T, KC_H, COMBO_END};
const uint16_t PROGMEM combo_exclamation_mark[] =       {KC_O, KC_W, COMBO_END};
const uint16_t PROGMEM combo_grave[] =                  {KC_T, KC_G, COMBO_END};
const uint16_t PROGMEM combo_hash[] =                   {KC_I, KC_O, COMBO_END};
const uint16_t PROGMEM combo_minus[] =                  {KC_T, KC_R, COMBO_END};
const uint16_t PROGMEM combo_percent[] =                {KC_O, KC_U, COMBO_END};
const uint16_t PROGMEM combo_pipe[] =                   {KC_E, KC_U, COMBO_END};
const uint16_t PROGMEM combo_plus[] =                   {KC_T, KC_L, COMBO_END};
const uint16_t PROGMEM combo_question_mark[] =          {KC_B, KC_O, COMBO_END};
const uint16_t PROGMEM combo_quote[] =                  {KC_T, KC_N, COMBO_END};
const uint16_t PROGMEM combo_quote_double[] =           {KC_A, KC_U, COMBO_END};
const uint16_t PROGMEM combo_semicolon[] =              {KC_G, KC_H, COMBO_END};
const uint16_t PROGMEM combo_slash[] =                  {KC_S, KC_L, COMBO_END};
const uint16_t PROGMEM combo_star[] =                   {KC_S, KC_T, COMBO_END};
const uint16_t PROGMEM combo_tilde[] =                  {KC_I, KC_U, COMBO_END};
const uint16_t PROGMEM combo_underscore[] =             {KC_S, KC_R, COMBO_END};

const uint16_t PROGMEM combo_angle_bracket_left[] =     {KC_C, KC_S, COMBO_END};
const uint16_t PROGMEM combo_angle_bracket_right[] =    {KC_S, KC_H, COMBO_END};

const uint16_t PROGMEM combo_bracket_left[] =           {KC_Q, KC_U, COMBO_END};
const uint16_t PROGMEM combo_bracket_right[] =          {KC_E, KC_Y, COMBO_END};
const uint16_t PROGMEM combo_curly_bracket_left[] =     {KC_X, KC_E, COMBO_END};
const uint16_t PROGMEM combo_curly_bracket_right[] =    {KC_I, KC_Q, COMBO_END};
const uint16_t PROGMEM combo_parenthesis_left[] =       {KC_X, KC_U, COMBO_END};
const uint16_t PROGMEM combo_parenthesis_right[] =      {KC_I, KC_Y, COMBO_END};
const uint16_t PROGMEM combo_ampersand[] = {KC_E, KC_U, COMBO_END};
const uint16_t PROGMEM combo_at_sign[] = {KC_D, KC_L, COMBO_END};
const uint16_t PROGMEM combo_backslash[] = {KC_B, KC_E, COMBO_END};
const uint16_t PROGMEM combo_circumflex[] = {KC_B, KC_O, COMBO_END};
const uint16_t PROGMEM combo_colon[] = {KC_C, KC_G, COMBO_END};
const uint16_t PROGMEM combo_dollar[] = {KC_O, KC_W, COMBO_END};
const uint16_t PROGMEM combo_equal[] = {KC_T, KC_H, COMBO_END};
const uint16_t PROGMEM combo_exclamation_mark[] = {KC_Q, KC_Y, COMBO_END};
const uint16_t PROGMEM combo_grave[] = {KC_T, KC_G, COMBO_END};
const uint16_t PROGMEM combo_hash[] = {KC_X, KC_U, COMBO_END};
const uint16_t PROGMEM combo_minus[] = {KC_T, KC_R, COMBO_END};
const uint16_t PROGMEM combo_percent[] = {KC_B, KC_U, COMBO_END};
const uint16_t PROGMEM combo_pipe[] = {KC_I, KC_E, COMBO_END};
const uint16_t PROGMEM combo_plus[] = {KC_T, KC_L, COMBO_END};
const uint16_t PROGMEM combo_question_mark[] = {KC_P, KC_D, COMBO_END};
const uint16_t PROGMEM combo_quote[] = {KC_T, KC_N, COMBO_END};
const uint16_t PROGMEM combo_quote_double[] = {KC_A, KC_U, COMBO_END};
const uint16_t PROGMEM combo_semicolon[] = {KC_G, KC_H, COMBO_END};
const uint16_t PROGMEM combo_slash[] = {KC_S, KC_L, COMBO_END};
const uint16_t PROGMEM combo_star[] = {KC_S, KC_T, COMBO_END};
const uint16_t PROGMEM combo_tilde[] = {KC_I, KC_U, COMBO_END};
const uint16_t PROGMEM combo_underscore[] = {KC_S, KC_R, COMBO_END};

const uint16_t PROGMEM combo_angle_bracket_left[] = {KC_C, KC_S, COMBO_END};
const uint16_t PROGMEM combo_angle_bracket_right[] = {KC_S, KC_H, COMBO_END};
const uint16_t PROGMEM combo_bracket_left[] = {KC_I, KC_O, COMBO_END};
const uint16_t PROGMEM combo_bracket_right[] = {KC_O, KC_U, COMBO_END};
const uint16_t PROGMEM combo_curly_bracket_left[] = {KC_X, KC_E, COMBO_END};
const uint16_t PROGMEM combo_curly_bracket_right[] = {KC_E, KC_Y, COMBO_END};
const uint16_t PROGMEM combo_parenthesis_left[] = {KC_T, KC_D, COMBO_END};
const uint16_t PROGMEM combo_parenthesis_right[] = {KC_D, KC_R, COMBO_END};

/* Non qwerty */
const uint16_t PROGMEM combo_euro[] = {KC_X, KC_Q, COMBO_END};

/* One hand special */
const uint16_t PROGMEM combo_control_right[] =          {LT(_NUMERIC, KC_ENT), KC_R, COMBO_END};
const uint16_t PROGMEM combo_control_shift_right[] =    {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END};

const uint16_t PROGMEM combo_shift_left[] =             {KC_LCPO, KC_LALT, COMBO_END};
// const uint16_t PROGMEM combo_altgr_left[] =             {LT(_MOUSE, KC_COMM), KC_LALT, COMBO_END};
// const uint16_t PROGMEM combo_del_left[] =               {GUI_T(KC_ESC), KC_K, COMBO_END};
const uint16_t PROGMEM combo_control_shift_left[] =     {LT(_MOUSE, KC_COMM), KC_LALT, COMBO_END};
const uint16_t PROGMEM combo_control_right[] = {LT(_NUMERIC, KC_ENT), KC_R, COMBO_END};
const uint16_t PROGMEM combo_control_shift_right[] = {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END};

const uint16_t PROGMEM combo_shift_left[] = {LT(_MOUSE, KC_COMM), US_EACU, COMBO_END};
const uint16_t PROGMEM combo_alt_left[] = {CTL_T(KC_SPACE), US_EACU, COMBO_END};
const uint16_t PROGMEM combo_control_shift_left[] = {CTL_T(KC_SPACE), GUI_T(KC_ESC), COMBO_END};

/* Sequences fo keys */
combo_t key_combos[] = {
    [LEADER] = COMBO(combo_leader,                          KC_LEAD),
    [BOOTLOADER] = COMBO(combo_bootloader,                  QK_BOOTLOADER),
    [LEADER] = COMBO(combo_leader, QK_LEAD),
    [BOOTLOADER] = COMBO(combo_bootloader, QK_BOOTLOADER),

    [LAYER_ADJUST] = COMBO(combo_adjust,                    OSL(_ADJUST)),
    [LAYER_FN] = COMBO(combo_fn,                            OSL(_FN)),
    [LAYER_LEFT_HAND] = COMBO(combo_left_hand,              OSL(_LEFT_HAND)),

    /* -- */
    // [ENTER_SHIFTED] = COMBO(combo_enter_shifted,            S(KC_ENT)),
    [ALT_SHIFT] = COMBO(combo_alt_shift,                    A(S(XXXXXXX))),
    [CONTROL_SHIFT] = COMBO(combo_control_shift,            C(S(XXXXXXX))),
    [CONTROL_ALT] = COMBO(combo_control_alt,                C(A(XXXXXXX))),
    [CONTROL_SHIFT_ALT] = COMBO(combo_control_shift_alt,    C(S(A(XXXXXXX)))),
    [RIGHT_ALT] = COMBO(combo_right_alt,                    KC_RALT),
    [LAYER_ADJ] = COMBO(combo_ADJ, OSL(_ADJ)),
    [LAYER_FN] = COMBO(combo_fn, OSL(_FN)),
    [LAYER_LEFT_HAND] = COMBO(combo_left_hand, OSL(_LEFT_HAND)),
    [LAYER_MOUSE] = COMBO(combo_mouse, TG(_MOUSE)),
    [LAYER_MOUSE_BACK] = COMBO(combo_mouse_back, TG(_MOUSE)),

    /* French */
    [E_ACUTE] = COMBO(combo_e_acute,                        CS_E_ACUTE),
    [C_CEDILLA] = COMBO(combo_c_cedilla,                    CS_C_CEDILLA),
    [E_A] = COMBO(combo_ea,                                 CS_AE),
    [E_O] = COMBO(combo_eo,                                 CS_OE),

    [A_GRAVE] = COMBO(combo_a_grave,                        CS_A_GRAVE),
    [E_GRAVE] = COMBO(combo_e_grave,                        CS_E_GRAVE),
    [I_GRAVE] = COMBO(combo_i_grave,                        CS_I_GRAVE),
    [O_GRAVE] = COMBO(combo_o_grave,                        CS_O_GRAVE),
    [U_GRAVE] = COMBO(combo_u_grave,                        CS_U_GRAVE),

    [A_CIRCUMFLEX] = COMBO(combo_a_circumflex,              CS_A_CIRCUMFLEX),
    [E_CIRCUMFLEX] = COMBO(combo_e_circumflex,              CS_E_CIRCUMFLEX),
    [I_CIRCUMFLEX] = COMBO(combo_i_circumflex,              CS_I_CIRCUMFLEX),
    [O_CIRCUMFLEX] = COMBO(combo_o_circumflex,              CS_O_CIRCUMFLEX),
    [U_CIRCUMFLEX] = COMBO(combo_u_circumflex,              CS_U_CIRCUMFLEX),

    [A_DIAERESIS] = COMBO(combo_a_diaeresis,                CS_A_DIAERESIS),
    [E_DIAERESIS] = COMBO(combo_e_diaeresis,                CS_E_DIAERESIS),
    [I_DIAERESIS] = COMBO(combo_i_diaeresis,                CS_I_DIAERESIS),
    [O_DIAERESIS] = COMBO(combo_o_diaeresis,                CS_O_DIAERESIS),
    [U_DIAERESIS] = COMBO(combo_u_diaeresis,                CS_U_DIAERESIS),
    [Y_DIAERESIS] = COMBO(combo_y_diaeresis,                CS_Y_DIAERESIS),
    [C_CEDILLA] = COMBO(combo_c_cedilla, US_CCED),
    [E_A] = COMBO(combo_ea, US_AE),
    [E_O] = COMBO(combo_eo, US_OE),

    [A_GRAVE] = COMBO(combo_a_grave, CS_A_GRAVE),
    [E_GRAVE] = COMBO(combo_e_grave, CS_E_GRAVE),
    [U_GRAVE] = COMBO(combo_u_grave, CS_U_GRAVE),

    [A_CIRCUMFLEX] = COMBO(combo_a_circumflex, CS_A_CIRCUMFLEX),
    [E_CIRCUMFLEX] = COMBO(combo_e_circumflex, CS_E_CIRCUMFLEX),
    [I_CIRCUMFLEX] = COMBO(combo_i_circumflex, CS_I_CIRCUMFLEX),
    [O_CIRCUMFLEX] = COMBO(combo_o_circumflex, CS_O_CIRCUMFLEX),
    [U_CIRCUMFLEX] = COMBO(combo_u_circumflex, CS_U_CIRCUMFLEX),

    [E_DIAERESIS] = COMBO(combo_e_diaeresis, CS_E_DIAERESIS),
    [I_DIAERESIS] = COMBO(combo_i_diaeresis, CS_I_DIAERESIS),
    [U_DIAERESIS] = COMBO(combo_u_diaeresis, CS_U_DIAERESIS),
    [Y_DIAERESIS] = COMBO(combo_y_diaeresis, CS_Y_DIAERESIS),

    /* -- */
    [AMPERSAND] = COMBO(combo_ampersand,                    KC_AMPR),
    [AT_SIGN] = COMBO(combo_at_sign,                        KC_AT),
    [BACKSLASH] = COMBO(combo_backslash,                    KC_BSLS),
    [CIRCUMFLEX] = COMBO(combo_circumflex,                  KC_CIRC),
    [COLON] = COMBO(combo_colon,                            KC_COLON),
    [DOLLAR] = COMBO(combo_dollar,                          KC_DLR),
    [EQUAL] = COMBO(combo_equal,                            KC_EQL),
    [EXCLAMATION_MARK] = COMBO(combo_exclamation_mark,      KC_EXCLAIM),
    [GRAVE] = COMBO(combo_grave,                            KC_GRV),
    [HASH] = COMBO(combo_hash,                              KC_HASH),
    [MINUS] = COMBO(combo_minus,                            KC_MINS),
    [PERCENT] = COMBO(combo_percent,                        KC_PERC),
    [PIPE] = COMBO(combo_pipe,                              KC_PIPE),
    [PLUS] = COMBO(combo_plus,                              KC_PLUS),
    [QUESTION_MARK] = COMBO(combo_question_mark,            KC_QUESTION),
    [QUOTE] = COMBO(combo_quote,                            KC_QUOTE),
    [QUOTE_DOUBLE] = COMBO(combo_quote_double,              KC_DOUBLE_QUOTE),
    [SEMICOLON] = COMBO(combo_semicolon,                    KC_SEMICOLON),
    [SLASH] = COMBO(combo_slash,                            KC_SLSH),
    [STAR] = COMBO(combo_star,                              KC_ASTR),
    [TILDE] = COMBO(combo_tilde,                            KC_TILD),
    [UNDERSCORE] = COMBO(combo_underscore,                  KC_UNDS),

    [ANGLE_BRACKET_LEFT] = COMBO(combo_angle_bracket_left,      KC_LABK),
    [ANGLE_BRACKET_RIGHT] = COMBO(combo_angle_bracket_right,    KC_RABK),

    [BRACKET_LEFT] = COMBO(combo_bracket_left,                  KC_LEFT_BRACKET),
    [BRACKET_RIGHT] = COMBO(combo_bracket_right,                KC_RIGHT_BRACKET),
    [CURLY_BRACKET_LEFT] = COMBO(combo_curly_bracket_left,      KC_LEFT_CURLY_BRACE),
    [CURLY_BRACKET_RIGHT] = COMBO(combo_curly_bracket_right,    KC_RIGHT_CURLY_BRACE),
    [PARENTHESIS_LEFT] = COMBO(combo_parenthesis_left,          KC_LEFT_PAREN),
    [PARENTHESIS_RIGHT] COMBO(combo_parenthesis_right,          KC_RIGHT_PAREN),
    [AMPERSAND] = COMBO(combo_ampersand, KC_AMPERSAND),
    [AT_SIGN] = COMBO(combo_at_sign, KC_AT),
    [BACKSLASH] = COMBO(combo_backslash, KC_BACKSLASH),
    [CIRCUMFLEX] = COMBO(combo_circumflex, KC_CIRCUMFLEX),
    [COLON] = COMBO(combo_colon, KC_COLON),
    [DOLLAR] = COMBO(combo_dollar, KC_DOLLAR),
    [EQUAL] = COMBO(combo_equal, KC_EQUAL),
    [EXCLAMATION_MARK] = COMBO(combo_exclamation_mark, KC_EXCLAIM),
    [GRAVE] = COMBO(combo_grave, KC_GRAVE),
    [HASH] = COMBO(combo_hash, KC_HASH),
    [MINUS] = COMBO(combo_minus, KC_MINUS),
    [PERCENT] = COMBO(combo_percent, KC_PERCENT),
    [PIPE] = COMBO(combo_pipe, KC_PIPE),
    [PLUS] = COMBO(combo_plus, KC_PLUS),
    [QUESTION_MARK] = COMBO(combo_question_mark, KC_QUESTION),
    [QUOTE] = COMBO(combo_quote, KC_QUOTE),
    [QUOTE_DOUBLE] = COMBO(combo_quote_double, KC_DOUBLE_QUOTE),
    [SEMICOLON] = COMBO(combo_semicolon, KC_SEMICOLON),
    [SLASH] = COMBO(combo_slash, KC_SLASH),
    [STAR] = COMBO(combo_star, KC_ASTERISK),
    [TILDE] = COMBO(combo_tilde, KC_TILDE),
    [UNDERSCORE] = COMBO(combo_underscore, KC_UNDERSCORE),

    [ANGLE_BRACKET_LEFT] = COMBO(combo_angle_bracket_left, KC_LEFT_ANGLE_BRACKET),
    [ANGLE_BRACKET_RIGHT] = COMBO(combo_angle_bracket_right, KC_RIGHT_ANGLE_BRACKET),

    [BRACKET_LEFT] = COMBO(combo_bracket_left, KC_LEFT_BRACKET),
    [BRACKET_RIGHT] = COMBO(combo_bracket_right, KC_RIGHT_BRACKET),
    [CURLY_BRACKET_LEFT] = COMBO(combo_curly_bracket_left, KC_LEFT_CURLY_BRACE),
    [CURLY_BRACKET_RIGHT] = COMBO(combo_curly_bracket_right, KC_RIGHT_CURLY_BRACE),
    [PARENTHESIS_LEFT] = COMBO(combo_parenthesis_left, KC_LEFT_PAREN),
    [PARENTHESIS_RIGHT] COMBO(combo_parenthesis_right, KC_RIGHT_PAREN),

    /* Non qwerty */
    [EURO] COMBO(combo_euro, US_EURO),

    /* One hand special */
    [CONTROL_RIGHT] = COMBO(combo_control_right,                KC_RCTL),
    [CONTROL_SHIFT_RIGHT] = COMBO(combo_control_shift_right,    C(S(XXXXXXX))),
    [CONTROL_RIGHT] = COMBO(combo_control_right, KC_RCTL),
    [CONTROL_SHIFT_RIGHT] = COMBO(combo_control_shift_right, C(S(XXXXXXX))),

    [SHIFT_LEFT] = COMBO(combo_shift_left,                      KC_LSFT),
    // [ALTGR_LEFT] = COMBO(combo_altgr_left,                      KC_ALGR),
    [CONTROL_SHIFT_LEFT] = COMBO(combo_control_shift_left,      C(S(XXXXXXX))),
    // [DEL_LEFT] = COMBO(combo_del_left,                          KC_BSPC),
    [ALT_LEFT] = COMBO(combo_alt_left, KC_LALT),
    [SHIFT_LEFT] = COMBO(combo_shift_left, KC_LSFT),
    [CONTROL_SHIFT_LEFT] = COMBO(combo_control_shift_left, C(S(XXXXXXX))),
};

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c +188 -248
@@ 2,267 2,207 @@
// SPDX-License-Identifier: GPL-2.0-or-later

#include QMK_KEYBOARD_H

LEADER_EXTERNS();

void matrix_scan_user(void) {
  LEADER_DICTIONARY() {
    leading = false;
    leader_end();

    // SEQ_ONE_KEY(KC_F) {
      // // Anything you can do in a macro.
      // SEND_STRING("QMK is awesome."); }


    SEQ_TWO_KEYS(KC_M, KC_S) {
      SEND_STRING("f@linguenheld.fr"); }
    SEQ_TWO_KEYS(KC_M, KC_L) {
      SEND_STRING("florent@linguenheld.fr"); }
    SEQ_TWO_KEYS(KC_F, KC_L) {
      SEND_STRING("FLinguenheld"); }

    SEQ_THREE_KEYS(KC_T, KC_E, KC_S) {
      SEND_STRING("test01234"); }
    SEQ_THREE_KEYS(KC_A, KC_D, KC_M) {
      SEND_STRING("admin01234"); }

    SEQ_ONE_KEY(KC_C) {
      SEND_STRING(" | xclip -r -selection clipboard"); }

    /* Degree */
    SEQ_THREE_KEYS(KC_D, KC_E, KC_G) {
      send_unicode_string("°"); }
#include "keycodes.h"
#include <stdlib.h>

void leader_end_user(void) {
  if (leader_sequence_two_keys(KC_M, KC_S)) {
    SEND_STRING("f@linguenheld.fr");
  } else if (leader_sequence_two_keys(KC_M, KC_L)) {
    SEND_STRING("florent@linguenheld.fr");
  } else if (leader_sequence_two_keys(KC_F, KC_L)) {
    SEND_STRING("flinguenheld");

  } else if (leader_sequence_three_keys(KC_D, KC_O, KC_T)) {
    SEND_STRING("https://github.com/flinguenheld/dotfiles");
  } else if (leader_sequence_three_keys(KC_H, KC_U, KC_B)) {
    SEND_STRING("https://github.com/flinguenheld/");
  } else if (leader_sequence_three_keys(KC_Q, KC_M, KC_K)) {
    SEND_STRING("$HOME/qmk_firmware/keyboards/splitkb/aurora/sweep/keymaps/sweep_keymap");
  } else if (leader_sequence_three_keys(KC_Q, KC_M, KC_C)) {
    SEND_STRING("qmk compile && qmk flash");

  } else if (leader_sequence_three_keys(KC_T, KC_E, KC_S)) {
    SEND_STRING("test01234");
  } else if (leader_sequence_three_keys(KC_A, KC_D, KC_M)) {
    SEND_STRING("admin01234");

  } else if (leader_sequence_one_key(KC_C)) {
    SEND_STRING(" | xclip -r -selection clipboard");

    /* Keyring requests, improbable combinaisons used by i3 */
  } else if (leader_sequence_three_keys(KC_G, KC_I, KC_T)) {
    register_code(KC_LEFT_GUI);
    register_code(KC_LEFT_SHIFT);
    register_code(KC_LEFT_CTRL);
    register_code(KC_0);
    unregister_code(KC_0);
    unregister_code(KC_LEFT_GUI);
    unregister_code(KC_LEFT_SHIFT);
    unregister_code(KC_LEFT_CTRL);

  } else if (leader_sequence_three_keys(KC_M, KC_A, KC_I)) {
    register_code(KC_LEFT_GUI);
    register_code(KC_LEFT_SHIFT);
    register_code(KC_LEFT_CTRL);
    register_code(KC_1);
    unregister_code(KC_1);
    unregister_code(KC_LEFT_GUI);
    unregister_code(KC_LEFT_SHIFT);
    unregister_code(KC_LEFT_CTRL);

  } else if (leader_sequence_three_keys(KC_P, KC_A, KC_S)) {
    register_code(KC_LEFT_GUI);
    register_code(KC_LEFT_SHIFT);
    register_code(KC_LEFT_CTRL);
    register_code(KC_2);
    unregister_code(KC_2);
    unregister_code(KC_LEFT_GUI);
    unregister_code(KC_LEFT_SHIFT);
    unregister_code(KC_LEFT_CTRL);

    /* ----- */
  } else if (leader_sequence_three_keys(KC_D, KC_E, KC_G)) {
    tap_code16(US_DEG); // °
  } else if (leader_sequence_three_keys(KC_D, KC_I, KC_A)) {
    tap_code16(US_OSTR); // ø
  } else if (leader_sequence_three_keys(KC_S, KC_E, KC_C)) {
    tap_code16(US_SECT); // §

    /* Copyright / Register */
    SEQ_THREE_KEYS(KC_C, KC_O, KC_P) {
      send_unicode_string("©"); }
    SEQ_THREE_KEYS(KC_R, KC_E, KC_G) {
      send_unicode_string("®"); }

    /* Diameter */
    SEQ_THREE_KEYS(KC_D, KC_I, KC_A) {
      send_unicode_string("ø"); }
    SEQ_FOUR_KEYS(KC_D, KC_I, KC_A, KC_M) {
      send_unicode_string("Ø"); }
  } else if (leader_sequence_three_keys(KC_C, KC_O, KC_P)) {
    tap_code16(US_COPY); // ©
  } else if (leader_sequence_three_keys(KC_R, KC_E, KC_G)) {
    tap_code16(US_REGD); // ®

    /* Currency */
    SEQ_THREE_KEYS(KC_E, KC_U, KC_R) {
      send_unicode_string("€"); }
    SEQ_THREE_KEYS(KC_P, KC_O, KC_U) {
      send_unicode_string("£"); }
    SEQ_THREE_KEYS(KC_Y, KC_E, KC_N) {
      send_unicode_string("¥"); }
    SEQ_THREE_KEYS(KC_C, KC_E, KC_N) {
      send_unicode_string("¢"); }
  } else if (leader_sequence_three_keys(KC_E, KC_U, KC_R)) {
    tap_code16(US_EURO); // €
  } else if (leader_sequence_three_keys(KC_P, KC_O, KC_U)) {
    tap_code16(US_PND); // £
  } else if (leader_sequence_three_keys(KC_Y, KC_E, KC_N)) {
    tap_code16(US_YEN); // ¥
  } else if (leader_sequence_three_keys(KC_C, KC_E, KC_N)) {
    tap_code16(US_CENT); // ¢

    /* Fractions */
    SEQ_THREE_KEYS(KC_F, KC_C, KC_T) {
      send_unicode_string("¼"); }
    SEQ_THREE_KEYS(KC_F, KC_C, KC_G) {
      send_unicode_string("½"); }
    SEQ_THREE_KEYS(KC_F, KC_H, KC_T) {
      send_unicode_string("¾"); }
  } else if (leader_sequence_three_keys(KC_F, KC_C, KC_T)) {
    tap_code16(US_QRTR); // ¼
  } else if (leader_sequence_three_keys(KC_F, KC_C, KC_G)) {
    tap_code16(US_HALF); // ½
  } else if (leader_sequence_three_keys(KC_F, KC_H, KC_T)) {
    tap_code16(US_TQTR); // ¾

    /* Maths */
    SEQ_THREE_KEYS(KC_M, KC_U, KC_L) {
      send_unicode_string("×"); }
    SEQ_THREE_KEYS(KC_D, KC_I, KC_V) {
      send_unicode_string("÷"); }
    SEQ_TWO_KEYS(KC_P, KC_M) {
      send_unicode_string("±"); }
    SEQ_THREE_KEYS(KC_I, KC_N, KC_E) {
      send_unicode_string("≠"); }
    SEQ_THREE_KEYS(KC_A, KC_L, KC_M) {
      send_unicode_string("≈"); }
    SEQ_THREE_KEYS(KC_S, KC_Q, KC_U) {
      send_unicode_string("√"); }
    SEQ_THREE_KEYS(KC_I, KC_N, KC_F) {
      send_unicode_string("∞"); }
    SEQ_TWO_KEYS(KC_LABK, KC_LABK) {
      send_unicode_string("≤"); }
    SEQ_TWO_KEYS(KC_RABK, KC_RABK) {
      send_unicode_string("≥"); }
  } else if (leader_sequence_three_keys(KC_M, KC_U, KC_L)) {
    tap_code16(US_MUL); // ×
  } else if (leader_sequence_three_keys(KC_D, KC_I, KC_V)) {
    tap_code16(US_DIV); // ÷
  } else if (leader_sequence_two_keys(KC_P, KC_M)) {
    send_unicode_string("±");
  } else if (leader_sequence_three_keys(KC_I, KC_N, KC_E)) {
    send_unicode_string("≠");
  } else if (leader_sequence_three_keys(KC_A, KC_L, KC_M)) {
    send_unicode_string("≈");
  } else if (leader_sequence_three_keys(KC_S, KC_Q, KC_U)) {
    send_unicode_string("√");
  } else if (leader_sequence_three_keys(KC_I, KC_N, KC_F)) {
    send_unicode_string("∞");
  } else if (leader_sequence_two_keys(KC_LABK, KC_LABK)) {
    send_unicode_string("≤");
  } else if (leader_sequence_two_keys(KC_RABK, KC_RABK)) {
    send_unicode_string("≥");

    /* Greek */
    SEQ_TWO_KEYS(KC_P, KC_I) {
      send_unicode_string("π"); }
    SEQ_THREE_KEYS(KC_P, KC_I, KC_I) {
      send_unicode_string("Π"); }

    SEQ_THREE_KEYS(KC_O, KC_M, KC_E) {
      send_unicode_string("ω"); }
    SEQ_FOUR_KEYS(KC_O, KC_M, KC_E, KC_G) {
      send_unicode_string("Ω"); }
  } else if (leader_sequence_three_keys(KC_B, KC_E, KC_T)) {
    tap_code16(US_SS); // ß
  } else if (leader_sequence_three_keys(KC_M, KC_I, KC_C)) {
    tap_code16(US_MICR); // µ
  } else if (leader_sequence_two_keys(KC_P, KC_I)) {
    send_unicode_string("π");
  } else if (leader_sequence_three_keys(KC_P, KC_I, KC_I)) {
    send_unicode_string("Π");

  } else if (leader_sequence_three_keys(KC_O, KC_M, KC_E)) {
    send_unicode_string("ω");
  } else if (leader_sequence_four_keys(KC_O, KC_M, KC_E, KC_G)) {
    send_unicode_string("Ω");

    /* Icons */
    SEQ_THREE_KEYS(KC_F, KC_L, KC_A) {
      send_unicode_string("⚡"); }
    SEQ_THREE_KEYS(KC_S, KC_T, KC_A) {
      send_unicode_string("⭐"); }
    SEQ_THREE_KEYS(KC_S, KC_P, KC_A) {
      send_unicode_string("✨"); }
    SEQ_THREE_KEYS(KC_P, KC_O, KC_P) {
      send_unicode_string("🎉"); }
    SEQ_THREE_KEYS(KC_R, KC_E, KC_C) {
      send_unicode_string("♻️"); }
    SEQ_THREE_KEYS(KC_L, KC_O, KC_V) {
      send_unicode_string("❤️"); }
    SEQ_THREE_KEYS(KC_F, KC_I, KC_R) {
      send_unicode_string("🔥"); }
    SEQ_THREE_KEYS(KC_B, KC_O, KC_M) {
      send_unicode_string("💣"); }
    SEQ_FOUR_KEYS(KC_B, KC_O, KC_U, KC_M) {
      send_unicode_string("💥"); }
    SEQ_THREE_KEYS(KC_R, KC_O, KC_C) {
      send_unicode_string("🚀"); }
    SEQ_THREE_KEYS(KC_T, KC_E, KC_L) {
      send_unicode_string("🔭"); }
    SEQ_THREE_KEYS(KC_M, KC_A, KC_G) {
      send_unicode_string("🔎"); }
    SEQ_THREE_KEYS(KC_W, KC_A, KC_R) {
      send_unicode_string("⚠️"); }

    SEQ_THREE_KEYS(KC_B, KC_U, KC_L) {
      send_unicode_string("💡"); }
    SEQ_FOUR_KEYS(KC_I, KC_N, KC_F, KC_O) {
      send_unicode_string("ℹ️"); }
    SEQ_THREE_KEYS(KC_G, KC_E, KC_A) {
      send_unicode_string("⚙️"); }
    SEQ_THREE_KEYS(KC_L, KC_I, KC_N) {
      send_unicode_string("🔗"); }
    SEQ_THREE_KEYS(KC_P, KC_I, KC_N) {
      send_unicode_string("📌"); }
    SEQ_FOUR_KEYS(KC_F, KC_L, KC_A, KC_G) {
      send_unicode_string("🚩"); }
    SEQ_THREE_KEYS(KC_B, KC_A, KC_L) {
      send_unicode_string("🎈"); }
    SEQ_THREE_KEYS(KC_G, KC_I, KC_F) {
      send_unicode_string("🎁"); }

    SEQ_THREE_KEYS(KC_P, KC_E, KC_N) {
      send_unicode_string("✏️"); }
    SEQ_THREE_KEYS(KC_K, KC_E, KC_Y) {
      send_unicode_string("🔑"); }
    SEQ_THREE_KEYS(KC_B, KC_O, KC_X) {
      send_unicode_string("🧰"); }

    SEQ_TWO_KEYS(KC_O, KC_K) {
      send_unicode_string("👌"); }
    SEQ_THREE_KEYS(KC_O, KC_W, KC_D) {
      send_unicode_string("⛔"); }

    SEQ_ONE_KEY(KC_V) {
      send_unicode_string("✓"); }
    SEQ_TWO_KEYS(KC_V, KC_B) {
      send_unicode_string("☑"); }
    SEQ_TWO_KEYS(KC_V, KC_G) {
      send_unicode_string("✅"); }

    SEQ_ONE_KEY(KC_X) {
      send_unicode_string("✗"); }
    SEQ_TWO_KEYS(KC_X, KC_B) {
      send_unicode_string("☒"); }
    SEQ_TWO_KEYS(KC_X, KC_G) {
      send_unicode_string("❎"); }
    SEQ_TWO_KEYS(KC_X, KC_R) {
      send_unicode_string("❌"); }

    SEQ_ONE_KEY(KC_QUESTION) {
      send_unicode_string("❔"); }
    SEQ_ONE_KEY(KC_EXCLAIM) {
      send_unicode_string("❕"); }
    SEQ_TWO_KEYS(KC_QUESTION, KC_QUESTION) {
      send_unicode_string("❓"); }
    SEQ_TWO_KEYS(KC_EXCLAIM, KC_EXCLAIM) {
      send_unicode_string("❗"); }

    SEQ_THREE_KEYS(KC_C, KC_O, KC_F) {
      send_unicode_string("☕"); }
    SEQ_THREE_KEYS(KC_U, KC_M, KC_B) {
      send_unicode_string("☔"); }

    SEQ_THREE_KEYS(KC_L, KC_O, KC_L) {
      send_unicode_string("😀"); }
    SEQ_THREE_KEYS(KC_M, KC_D, KC_R) {
      send_unicode_string("🤣"); }
    SEQ_THREE_KEYS(KC_K, KC_I, KC_S) {
      send_unicode_string("😙"); }
    SEQ_THREE_KEYS(KC_A, KC_N, KC_G) {
      send_unicode_string("😇"); }
    SEQ_THREE_KEYS(KC_G, KC_L, KC_A) {
      send_unicode_string("😎"); }
    SEQ_THREE_KEYS(KC_A, KC_N, KC_G) {
      send_unicode_string("🤬"); }
    SEQ_THREE_KEYS(KC_F, KC_E, KC_A) {
      send_unicode_string("😱"); }
    SEQ_THREE_KEYS(KC_N, KC_E, KC_U) {
      send_unicode_string("😐"); }
    SEQ_THREE_KEYS(KC_T, KC_H, KC_I) {
      send_unicode_string("🤔"); }
    SEQ_THREE_KEYS(KC_Z, KC_I, KC_P) {
      send_unicode_string("🤐"); }
    SEQ_THREE_KEYS(KC_S, KC_U, KC_R) {
      send_unicode_string("😯"); }
    SEQ_THREE_KEYS(KC_R, KC_O, KC_L) {
      send_unicode_string("🙄"); }
    SEQ_THREE_KEYS(KC_M, KC_O, KC_O) {
      send_unicode_string("🌝"); }
    SEQ_THREE_KEYS(KC_H, KC_U, KC_G) {
      send_unicode_string("🫂"); }

    SEQ_THREE_KEYS(KC_H, KC_E, KC_N) {
      send_unicode_string("🐔"); }
    SEQ_THREE_KEYS(KC_R, KC_O, KC_O) {
      send_unicode_string("🐓"); }
    SEQ_THREE_KEYS(KC_D, KC_U, KC_C) {
      send_unicode_string("🦆"); }
    SEQ_THREE_KEYS(KC_P, KC_E, KC_A) {
      send_unicode_string("🦚"); }
    SEQ_THREE_KEYS(KC_B, KC_I, KC_R) {
      send_unicode_string("🐦"); }
  } else if (leader_sequence_three_keys(KC_L, KC_O, KC_V)) {
    send_unicode_string("♥");
  } else if (leader_sequence_three_keys(KC_F, KC_L, KC_A)) {
    send_unicode_string("⚡");
  } else if (leader_sequence_three_keys(KC_S, KC_T, KC_A)) {
    send_unicode_string("✶");
  } else if (leader_sequence_three_keys(KC_B, KC_U, KC_L)) {
    send_unicode_string("💡");
  } else if (leader_sequence_four_keys(KC_I, KC_N, KC_F, KC_O)) {
    send_unicode_string("ℹ️");
  } else if (leader_sequence_three_keys(KC_G, KC_E, KC_A)) {
    send_unicode_string("⚙️");

  } else if (leader_sequence_one_key(KC_V)) {
    send_unicode_string("✓");
  } else if (leader_sequence_two_keys(KC_V, KC_B)) {
    send_unicode_string("✔");
  } else if (leader_sequence_two_keys(KC_V, KC_V)) {
    send_unicode_string("✅");

  } else if (leader_sequence_one_key(KC_X)) {
    send_unicode_string("✗");
  } else if (leader_sequence_two_keys(KC_X, KC_B)) {
    send_unicode_string("✘");

  } else if (leader_sequence_one_key(KC_QUESTION)) {
    send_unicode_string("❔");
  } else if (leader_sequence_one_key(KC_EXCLAIM)) {
    send_unicode_string("❗");
  } else if (leader_sequence_two_keys(KC_QUESTION, KC_QUESTION)) {
    send_unicode_string("❓");
  } else if (leader_sequence_two_keys(KC_EXCLAIM, KC_EXCLAIM)) {
    send_unicode_string("❕");

    /* Subscript / superscript */
    SEQ_THREE_KEYS(KC_U, KC_P, KC_F) {
      send_unicode_string("⁰"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_F) {
      send_unicode_string("₀"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_C) {
      send_unicode_string("¹"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_C) {
      send_unicode_string("₁"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_G) {
      send_unicode_string("²"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_G) {
      send_unicode_string("₂"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_H) {
      send_unicode_string("³"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_H) {
      send_unicode_string("₃"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_T) {
      send_unicode_string("⁴"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_T) {
      send_unicode_string("₄"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_S) {
      send_unicode_string("⁵"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_S) {
      send_unicode_string("₅"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_R) {
      send_unicode_string("⁶"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_R) {
      send_unicode_string("₆"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_P) {
      send_unicode_string("⁷"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_P) {
      send_unicode_string("₇"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_D) {
      send_unicode_string("⁸"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_D) {
      send_unicode_string("₈"); }
    SEQ_THREE_KEYS(KC_U, KC_P, KC_L) {
      send_unicode_string("⁹"); }
    SEQ_THREE_KEYS(KC_D, KC_N, KC_L) {
      send_unicode_string("₉"); }

  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_N)) {
    send_unicode_string("⁰");
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_N)) {
    send_unicode_string("₀");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_C)) {
    tap_code16(US_SUP1); // ¹
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_C)) {
    send_unicode_string("₁");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_G)) {
    tap_code16(US_SUP2); // ²
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_G)) {
    send_unicode_string("₂");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_H)) {
    tap_code16(US_SUP3); // ³
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_H)) {
    send_unicode_string("₃");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_T)) {
    send_unicode_string("⁴");
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_T)) {
    send_unicode_string("₄");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_S)) {
    send_unicode_string("⁵");
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_S)) {
    send_unicode_string("₅");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_R)) {
    send_unicode_string("⁶");
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_R)) {
    send_unicode_string("₆");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_P)) {
    send_unicode_string("⁷");
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_P)) {
    send_unicode_string("₇");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_D)) {
    send_unicode_string("⁸");
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_D)) {
    send_unicode_string("₈");
  } else if (leader_sequence_three_keys(KC_U, KC_P, KC_L)) {
    send_unicode_string("⁹");
  } else if (leader_sequence_three_keys(KC_D, KC_N, KC_L)) {
    send_unicode_string("₉");
  };
}

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h +27 -36
@@ 2,43 2,34 @@
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

enum layers {
    _BASE,
    _NUMERIC,
    _ARROWS,
    _MOUSE,
    _ADJUST,
    _FN,
    _LEFT_HAND,
#include "keymap_us_extended.h"

enum custom_layers {
  _BASE,
  _NUMERIC,
  _ARROWS,
  _MOUSE,
  _ADJ,
  _FN,
  _LEFT_HAND,
};

enum custom_keys {
    UNICODE = SAFE_RANGE, // Shortcut to write unicodes, see numeric layer

    /* See auto-shift */
    CS_E_ACUTE,

    CS_A_GRAVE,
    CS_E_GRAVE,
    CS_I_GRAVE,
    CS_O_GRAVE,
    CS_U_GRAVE,

    CS_C_CEDILLA,
    CS_AE,
    CS_OE,

    CS_A_CIRCUMFLEX,
    CS_E_CIRCUMFLEX,
    CS_I_CIRCUMFLEX,
    CS_O_CIRCUMFLEX,
    CS_U_CIRCUMFLEX,

    CS_A_DIAERESIS,
    CS_E_DIAERESIS,
    CS_I_DIAERESIS,
    CS_O_DIAERESIS,
    CS_U_DIAERESIS,
    CS_Y_DIAERESIS,
  UNICODE = QK_KB_0, // Replace SAFE_RANGE, see pr #19909

  /* See auto-shift */
  CS_A_GRAVE,
  CS_E_GRAVE,
  CS_U_GRAVE,

  CS_A_CIRCUMFLEX,
  CS_E_CIRCUMFLEX,
  CS_I_CIRCUMFLEX,
  CS_O_CIRCUMFLEX,
  CS_U_CIRCUMFLEX,

  CS_E_DIAERESIS,
  CS_I_DIAERESIS,
  CS_U_DIAERESIS,
  CS_Y_DIAERESIS,
};

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c +19 -25
@@ 17,7 17,7 @@
#include QMK_KEYBOARD_H
#include "keycodes.h"


// clang-format off
bool process_record_user(uint16_t keycode, keyrecord_t *record) {

    /* Macros */


@@ 25,14 25,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

        case UNICODE:
            if (record->event.pressed) {
                register_code(KC_LCTL);
                register_code(KC_LSFT);
                tap_code16(KC_U);
            } else {
                unregister_code(KC_LCTL);
                unregister_code(KC_LSFT);
            }
            break;
                tap_code16(C(S(KC_U)));
            } break;
    }

    return true;


@@ 46,11 40,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
            KC_A      ,     KC_I      ,     KC_E      ,     KC_U      ,     KC_TAB    ,             KC_V      ,      KC_T     ,      KC_S     ,      KC_R     ,      KC_N     ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
           KC_LALT    ,     KC_X      ,     KC_Q      ,     KC_Y      ,      KC_K     ,             KC_Z      ,      KC_C     ,      KC_G     ,      KC_H     ,      KC_M     ,
           US_EACU    ,     KC_X      ,     KC_Q      ,     KC_Y      ,      KC_K     ,             KC_Z      ,      KC_C     ,      KC_G     ,      KC_H     ,      KC_M     ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
                                          LT(_MOUSE, KC_COMM)  ,        KC_LCPO          ,    LT(_NUMERIC, KC_ENT)   ,  LT(_ARROWS, KC_DOT)
    //                               |-------------------------+----/* Space ctl */------| |-------------------------+-------------------------|
                                          LT(_MOUSE, KC_COMM)  ,     CTL_T(KC_SPACE)     ,    LT(_NUMERIC, KC_ENT)   ,  LT(_ARROWS, KC_DOT)
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
    ),

    [_NUMERIC] = LAYOUT(


@@ 59,7 53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    _______    ,            XXXXXXX    ,     KC_4      ,     KC_5      ,     KC_6      ,     KC_0      ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,            XXXXXXX    ,     KC_1      ,     KC_2      ,     KC_3      ,    KC_COMM    ,
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,            XXXXXXX    ,     KC_1      ,     KC_2      ,     KC_3      ,    KC_COMM    ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
                                                XXXXXXX        ,         UNICODE         ,          XXXXXXX          ,       XXXXXXX


@@ 85,21 79,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    _______    ,            XXXXXXX    ,    KC_LEFT    ,    KC_DOWN    ,     KC_UP     ,    KC_RIGHT   ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,            XXXXXXX    ,    XXXXXXX    ,    C(KC_D)    ,    C(KC_U)    ,    XXXXXXX    ,
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,            XXXXXXX    ,    XXXXXXX    ,    C(KC_D)    ,    C(KC_U)    ,    XXXXXXX    ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
                                                XXXXXXX        ,        _______          ,           XXXXXXX         ,       XXXXXXX
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
    ),

    [_ADJUST] = LAYOUT(
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+---------------+-----------------|
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,  KC_PRINT_SCREEN ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    , KC_AUDIO_VOL_UP ,
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+---------------+-----------------|
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,S(KC_PRINT_SCREEN),            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,KC_AUDIO_VOL_DOWN,
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+---------------+-----------------|
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,     XXXXXXX      ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,  KC_AUDIO_MUTE  ,
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+---------------+-----------------|
    [_ADJ] = LAYOUT(
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+-----------------+----------|
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,  KC_PRINT_SCREEN ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    , KC_AUDIO_VOL_UP ,  XXXXXXX ,
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+-----------------+----------|
           XXXXXXX    ,  G(C(S(KC_G))),    XXXXXXX    ,    XXXXXXX    ,S(KC_PRINT_SCREEN),            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,KC_AUDIO_VOL_DOWN,  XXXXXXX ,
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+-----------------+----------|
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,     XXXXXXX      ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,  KC_AUDIO_MUTE  ,  XXXXXXX ,
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+-----------------+----------|
    //                                  |-------------------------+-------------------------| |-------------------------+-------------------------|
                                                   XXXXXXX        ,        _______          ,           XXXXXXX         ,       XXXXXXX
    //                                  |-------------------------+-------------------------| |-------------------------+-------------------------|


@@ 122,12 116,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    _______    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
           XXXXXXX    ,    C(KC_X)    ,    C(KC_C)    ,    C(KC_V)    ,    _______    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
           XXXXXXX    ,    KC_CUT     ,    KC_COPY    ,    KC_PASTE   ,    _______    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    C(KC_Z)    ,    XXXXXXX    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    C(KC_Z)    ,    XXXXXXX    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
                                                XXXXXXX        ,        _______          ,           XXXXXXX         ,       XXXXXXX
                                                XXXXXXX        ,       KC_ENTER          ,           XXXXXXX         ,       XXXXXXX
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
    ),
};

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c +80 -224
@@ 5,228 5,84 @@

/* Online editor: https://joric.github.io/qle/ */
static const unsigned char PROGMEM font[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6,
    0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0xE6,
    0xE6, 0xE6, 0x06, 0x06, 0xE6, 0xE6,
    0xE6, 0xFE, 0xFE, 0x06, 0x06, 0xFE,
    0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67,
    0x67, 0x67, 0x67, 0x7F, 0x7F, 0x7F,
    0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F,
    0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x67,
    0x67, 0x67, 0x67, 0x67, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6,
    0xE6, 0xE6, 0x06, 0x0E, 0xFE, 0xFE,
    0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFE,
    0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06,
    0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xFC, 0xFE, 0x0E, 0x06, 0x66, 0x66,
    0x66, 0x66, 0xE6, 0xFE, 0xFE, 0x06,
    0x06, 0x66, 0x66, 0x66, 0xE6, 0xE6,
    0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06,
    0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C,
    0x7C, 0x7C, 0x60, 0x60, 0x7F, 0x7F,
    0x60, 0x60, 0x67, 0x67, 0x67, 0x67,
    0x67, 0x7F, 0x7F, 0x7F, 0x7F, 0x60,
    0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x3F, 0x7F, 0x67, 0x66, 0x66, 0x66,
    0x66, 0x60, 0x70, 0x7F, 0x7F, 0x60,
    0x60, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F,
    0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60,
    0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6,
    0xE6, 0x06, 0x0E, 0xFE, 0xFE, 0x0E,
    0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
    0xFE, 0xFE, 0x06, 0x06, 0x66, 0x66,
    0x66, 0x66, 0x06, 0x0E, 0xFE, 0xFC,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6,
    0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06,
    0x06, 0xCE, 0x9E, 0x9E, 0xCE, 0x06,
    0x06, 0xFE, 0xFE, 0x06, 0x06, 0xE6,
    0xE6, 0xE6, 0x0E, 0x1E, 0xFE, 0xFC,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C,
    0x7C, 0x60, 0x60, 0x7F, 0x7F, 0x70,
    0x60, 0x67, 0x67, 0x64, 0x60, 0x70,
    0x7F, 0x7F, 0x60, 0x60, 0x7E, 0x7E,
    0x78, 0x70, 0x62, 0x67, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67,
    0x67, 0x67, 0x67, 0x7F, 0x7F, 0x60,
    0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60,
    0x60, 0x7F, 0x7F, 0x60, 0x60, 0x67,
    0x67, 0x67, 0x70, 0x78, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xFE, 0xFE,
    0xE6, 0xE6, 0xE6, 0x06, 0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
    0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67,
    0x67, 0x67, 0x67, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60,
    0x67, 0x67, 0x67, 0x67, 0x67, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
    0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0x06, 0x0E, 0xFE, 0xFE, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFE,
    0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06, 0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x0E, 0x06, 0x66, 0x66, 0x66, 0x66, 0xE6,
    0xFE, 0xFE, 0x06, 0x06, 0x66, 0x66, 0x66, 0xE6, 0xE6, 0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06, 0x06, 0xE6,
    0xE6, 0xE6, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C, 0x7C, 0x7C, 0x60, 0x60, 0x7F, 0x7F, 0x60,
    0x60, 0x67, 0x67, 0x67, 0x67, 0x67, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x67, 0x66,
    0x66, 0x66, 0x66, 0x60, 0x70, 0x7F, 0x7F, 0x60, 0x60, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
    0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0x06,
    0x0E, 0xFE, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06, 0x06, 0x66, 0x66, 0x66,
    0x66, 0x06, 0x0E, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06, 0x06, 0xCE, 0x9E, 0x9E,
    0xCE, 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0xE6, 0xE6, 0xE6, 0x0E, 0x1E, 0xFE, 0xFC, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x60,
    0x60, 0x7C, 0x7C, 0x7C, 0x60, 0x60, 0x7F, 0x7F, 0x70, 0x60, 0x67, 0x67, 0x64, 0x60, 0x70, 0x7F, 0x7F,
    0x60, 0x60, 0x7E, 0x7E, 0x78, 0x70, 0x62, 0x67, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67, 0x67, 0x67, 0x67, 0x7F, 0x7F,
    0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, 0x60, 0x60, 0x67, 0x67, 0x67, 0x70, 0x78,
    0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
    0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00,
};

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c +447 -438
@@ 4,454 4,463 @@
#include QMK_KEYBOARD_H
#include "keycodes.h"

/* Leader state */
static bool is_leader_active = false;
void leader_start(void) {
    is_leader_active = true;
/* Blank space to place modifiers */
void add_blank(void) {

  oled_write_char(0x10, false);
  oled_write_char(0x11, false);
  oled_write_char(0x12, false);
  oled_write_char(0x13, false);
  oled_write_char(0x14, false);

  oled_write_char(0x30, false);
  oled_write_char(0x31, false);
  oled_write_char(0x32, false);
  oled_write_char(0x33, false);
  oled_write_char(0x34, false);
}
void leader_end(void) {
    is_leader_active = false;
}


void oled_display(void) {

    /* Layers */
    switch (get_highest_layer(layer_state)) {

        case _BASE: ;
            if (is_keyboard_master()) {
                static const char PROGMEM qmk_logo_master[] = {
                    // 'raven', 32x128px
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 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, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
                    0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8f, 0x5f, 0x31, 0x79, 0x33, 0x7f,
                    0x3b, 0x71, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4c, 0x02, 0x01, 0x95, 0xff, 0xb5, 0x05, 0x02, 0x4c, 0x30,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7e, 0x01, 0x01, 0x01, 0x7e, 0x40, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, 0xe0,
                    0xf0, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0x7c, 0x7c, 0xf8, 0xf0, 0xe0, 0x80, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xcf, 0xef, 0xe7, 0xf3, 0xfb, 0xf9,
                    0xfd, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, 0x0e, 0x1a, 0x23, 0x43, 0x3f, 0x03, 0x00,
                    0x00, 0x0c, 0x1e, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x80, 0x40, 0xe0, 0xbf, 0x33,
                    0x30, 0x60, 0x20, 0x21, 0xff, 0x20, 0x60, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8,
                    0xfc, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xfc, 0xf8, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x30,
                    0x20, 0x30, 0x20, 0x32, 0x20, 0x32, 0x20, 0x30, 0x20, 0x1c, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                };
                oled_write_raw_P(qmk_logo_master, sizeof(qmk_logo_master));

            } else {
                static const char PROGMEM qmk_logo_slave[] = {
                    // 'birds', 32x128px
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x40, 0xc0, 0xe0, 0xd0, 0x88, 0x84, 0x04, 0x04, 0xc4, 0xc4, 0x08, 0x08, 0x10, 0x60, 0x80,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0xf8, 0x46, 0x81, 0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x74, 0x84, 0x06, 0x03, 0x81,
                    0x42, 0x24, 0x18, 0x10, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x01, 0x06, 0x08, 0x11, 0x12, 0x24, 0x24, 0x48, 0xc8, 0x48, 0x48, 0xc9, 0x49, 0x4a,
                    0x4a, 0x26, 0x25, 0x25, 0x14, 0x14, 0x14, 0x1d, 0x15, 0x2e, 0x54, 0x60, 0x40, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x05, 0x02, 0x03, 0x02, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x88, 0xc8, 0x08, 0x30, 0xc0, 0xc0, 0x80, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x18, 0x04, 0x03,
                    0x00, 0x00, 0x00, 0x80, 0x80, 0x70, 0x18, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0f, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x70, 0x50, 0x48, 0x48, 0x24, 0x24, 0x12, 0x0a, 0x05, 0x09, 0x13, 0x12, 0x22, 0x22,
                    0xe1, 0x21, 0x21, 0x20, 0xe0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x04, 0x07, 0x04, 0x00, 0x04, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                };
                oled_write_raw_P(qmk_logo_slave, sizeof(qmk_logo_slave));
            }
            break;

        case _NUMERIC: ;
            static const char PROGMEM qmk_numeric[] = {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1e,
                0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x01, 0x03, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
                0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0e, 0x1c, 0x38, 0x70, 0xe0,
                0xe0, 0x70, 0x38, 0x1c, 0x0e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
                0xc7, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38,
                0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x1c, 0x1c, 0x1c, 0x1c,
                0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x06, 0x06, 0x06, 0x06,
                0x06, 0x06, 0x0e, 0x1e, 0x3e, 0x77, 0xe7, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0,
                0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff,
                0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
                0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01,
                0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
                0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };

            oled_write_raw_P(qmk_numeric, sizeof(qmk_numeric));
            break;

        case _MOUSE: ;
            static const char PROGMEM qmk_mouse[] = {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0,
                0xc0, 0xe0, 0xf0, 0x78, 0x3c, 0x3e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03,
                0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
                0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
                0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
                0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
                0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
                0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
                0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
                0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
                0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
                0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
                0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
                0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
                0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };

            oled_write_raw_P(qmk_mouse, sizeof(qmk_mouse));
            break;

        case _ARROWS: ;
            static const char PROGMEM qmk_arrows[] = {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 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, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc,
                0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0xff, 0xff,
                0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x03,
                0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3c, 0x1c, 0x0c,
                0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xde, 0x9e, 0x1e, 0x1e, 0x1e,
                0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0e, 0x0c,
                0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
                0x30, 0x70, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
                0x78, 0x78, 0x78, 0x79, 0x7b, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
                0x30, 0x38, 0x3c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
                0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x3e, 0x7c, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0xff, 0xff,
                0xff, 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f,
                0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };

            oled_write_raw_P(qmk_arrows, sizeof(qmk_arrows));
            break;

        case _ADJUST: ;
            static const char PROGMEM qmk_adjust[] = {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0x38, 0x38,
                0x38, 0x38, 0x38, 0x38, 0x38, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x38,
                0x38, 0x38, 0x38, 0x38, 0x38, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x07, 0x07, 0x07, 0x07,
                0x07, 0x07, 0x07, 0x07, 0x0f, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xc0, 0xc0, 0xc0,
                0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xff, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xe1, 0xe1, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
                0xe1, 0xe1, 0xe1, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x1f, 0x3f, 0x3f, 0x38,
                0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
                0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
                0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
                0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0,
                0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x1f, 0x1f,
                0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };

            oled_write_raw_P(qmk_adjust, sizeof(qmk_adjust));
            break;

        case _FN: ;
            static const char PROGMEM qmk_fn[] = {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
                0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
                0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
                0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
                0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe,
                0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
                0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };

            oled_write_raw_P(qmk_fn, sizeof(qmk_fn));
            break;

        case _LEFT_HAND: ;
            static const char PROGMEM qmk_left_hand[] = {
                // 'layers_left_hand', 32x128px
                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,
                0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0xe1, 0xf1, 0xf1, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x0f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0xff, 0xff, 0xff, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80,
                0x71, 0x71, 0x71, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, 0xff,
                0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf0,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0xff,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1f, 0x1f, 0x1f,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0xfc, 0xf8, 0xf0,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3f, 0x1f, 0x0f
            };

            oled_write_raw_P(qmk_left_hand, sizeof(qmk_left_hand));
            break;
  /* Layers */
  switch (get_highest_layer(layer_state)) {

  case _BASE:;
    if (is_keyboard_master()) {
      static const char PROGMEM qmk_logo_master[] = {
          // 'raven', 32x128px
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 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, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
          0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8f, 0x5f, 0x31, 0x79, 0x33, 0x7f,
          0x3b, 0x71, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4c, 0x02, 0x01, 0x95, 0xff, 0xb5, 0x05, 0x02, 0x4c, 0x30,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7e, 0x01, 0x01, 0x01, 0x7e, 0x40, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 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, 0xc0, 0xe0, 0xe0, 0xf0,
          0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0x7c, 0x7c, 0xf8, 0xf0, 0xe0, 0x80, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xcf, 0xef, 0xe7, 0xf3, 0xfb, 0xf9, 0xfd,
          0xfc, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, 0x0e, 0x1a, 0x23, 0x43, 0x3f, 0x03, 0x00, 0x00,
          0x0c, 0x1e, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x80, 0x40, 0xe0, 0xbf, 0x33, 0x30,
          0x60, 0x20, 0x21, 0xff, 0x20, 0x60, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfc,
          0xfc, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xfc, 0xf8, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x30, 0x20,
          0x30, 0x20, 0x32, 0x20, 0x32, 0x20, 0x30, 0x20, 0x1c, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
      oled_write_raw_P(qmk_logo_master, sizeof(qmk_logo_master));

    } else {
      static const char PROGMEM qmk_logo_slave[] = {
          // 'birds', 32x128px
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x40, 0xc0, 0xe0, 0xd0, 0x88, 0x84, 0x04, 0x04, 0xc4, 0xc4, 0x08, 0x08, 0x10, 0x60, 0x80,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0xf8, 0x46, 0x81, 0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x74, 0x84, 0x06, 0x03, 0x81,
          0x42, 0x24, 0x18, 0x10, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x01, 0x06, 0x08, 0x11, 0x12, 0x24, 0x24, 0x48, 0xc8, 0x48, 0x48, 0xc9, 0x49, 0x4a,
          0x4a, 0x26, 0x25, 0x25, 0x14, 0x14, 0x14, 0x1d, 0x15, 0x2e, 0x54, 0x60, 0x40, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x05, 0x02, 0x03, 0x02, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x88, 0xc8, 0x08, 0x30, 0xc0, 0xc0, 0x80, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x18, 0x04, 0x03,
          0x00, 0x00, 0x00, 0x80, 0x80, 0x70, 0x18, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0f, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x70, 0x50, 0x48, 0x48, 0x24, 0x24, 0x12, 0x0a, 0x05, 0x09, 0x13, 0x12, 0x22, 0x22,
          0xe1, 0x21, 0x21, 0x20, 0xe0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x04, 0x07, 0x04, 0x00, 0x04, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
      oled_write_raw_P(qmk_logo_slave, sizeof(qmk_logo_slave));
    }
    break;

  case _NUMERIC:;
    static const char PROGMEM qmk_numeric[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1e, 0x3c, 0x78, 0xf0,
        0xe0, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03,
        0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
        0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
        0xff, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xc7, 0xc7, 0xc7,
        0xc7, 0xc7, 0xc7, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38,
        0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
        0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x1e,
        0x3e, 0x77, 0xe7, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
        0xc0, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0xc0, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
        0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e,
        0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00};

    oled_write_raw_P(qmk_numeric, sizeof(qmk_numeric));
    break;

  case _MOUSE:;
    static const char PROGMEM qmk_mouse[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xc0, 0xe0, 0xf0,
        0x78, 0x3c, 0x3e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00,
        0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x01, 0x81, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1,
        0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
        0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff,
        0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc1, 0x01, 0x01,
        0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
        0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
        0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
        0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
        0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x01, 0x81, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0,
        0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
        0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc1,
        0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
        0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00};

    oled_write_raw_P(qmk_mouse, sizeof(qmk_mouse));
    break;

  case _ARROWS:;
    static const char PROGMEM qmk_arrows[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 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, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfc, 0xf8, 0xf0,
        0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x7c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0xff, 0xff, 0xff, 0xff, 0x01, 0x03, 0x07,
        0x0f, 0x1f, 0x3e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0,
        0xf0, 0xf8, 0x7c, 0x3c, 0x1c, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xde,
        0x9e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f,
        0x0e, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
        0x30, 0x70, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
        0x78, 0x79, 0x7b, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0x3c, 0x3e,
        0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x3e, 0x7c,
        0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0xff, 0xff, 0xff, 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3e, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
        0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00};

    oled_write_raw_P(qmk_arrows, sizeof(qmk_arrows));
    break;

  case _ADJ:;
    static const char PROGMEM qmk_ADJ[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
        0x38, 0x38, 0x38, 0x38, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
        0x38, 0x38, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0xfe, 0xfc,
        0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0xff, 0xff, 0xff, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xff, 0x7f, 0x3f, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xe1,
        0xe1, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        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, 0x1f, 0x3f,
        0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
        0x87, 0x87, 0x87, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
        0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xff, 0xff, 0x7f,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
        0x70, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 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, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00};

    oled_write_raw_P(qmk_ADJ, sizeof(qmk_ADJ));
    break;

  case _FN:;
    static const char PROGMEM qmk_fn[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
        0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
        0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
        0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
        0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00,
        0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0,
        0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f,
        0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0x7f,
        0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00};

    oled_write_raw_P(qmk_fn, sizeof(qmk_fn));
    break;

  case _LEFT_HAND:;
    static const char PROGMEM qmk_left_hand[] = {
        // 'layers_left_hand', 32x128px
        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, 0xff, 0xff,
        0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf1, 0xf1, 0x71,
        0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38,
        0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
        0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x07,
        0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x80, 0x80, 0x80, 0x71, 0x71, 0x71, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff,
        0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
        0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x1e,
        0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x01, 0x03, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f,
        0x1e, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3f,
        0x1f, 0x0f};

    oled_write_raw_P(qmk_left_hand, sizeof(qmk_left_hand));
    break;
  }

  /* Leader */
  if (leader_sequence_active()) {

    static const char PROGMEM qmk_leader[] = {
        0x00, 0x00, 0xf8, 0xf8, 0x78, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
        0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x78, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00,
        0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
        0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0xc1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x03, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
        0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
        0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00,
        0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x0e, 0x0e,
        0x0e, 0x0e, 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
        0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x70, 0x70, 0x70, 0x70,
        0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
        0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
        0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc6, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0xc0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x78, 0xf8, 0xf8, 0xbf, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
        0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
        0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
        0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07,
        0x00, 0x00};

    oled_write_raw_P(qmk_leader, sizeof(qmk_leader));
  }

  /* Modifier keys */
  if (get_mods()) {

    if (get_mods() & MOD_MASK_GUI) {

      oled_write_char(0x8B, false);
      oled_write_char(0x8C, false);
      oled_write_char(0x8D, false);
      oled_write_char(0x8E, false);
      oled_write_char(0x8F, false);

      oled_write_char(0xAB, false);
      oled_write_char(0xAC, false);
      oled_write_char(0xAD, false);
      oled_write_char(0xAE, false);
      oled_write_char(0xAF, false);
    } else {
      add_blank();
    }

    if (get_mods() & MOD_MASK_CTRL) {

      oled_write_char(0x01, false);
      oled_write_char(0x02, false);
      oled_write_char(0x03, false);
      oled_write_char(0x04, false);
      oled_write_char(0x05, false);

      oled_write_char(0x21, false);
      oled_write_char(0x22, false);
      oled_write_char(0x23, false);
      oled_write_char(0x24, false);
      oled_write_char(0x25, false);
    } else {
      add_blank();
    }

    /* Leader */
    if (is_leader_active) {

        static const char PROGMEM qmk_leader[] = {
            0x00, 0x00, 0xf8, 0xf8, 0x78, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
            0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x78, 0xf8, 0xf8, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0,
            0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
            0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x18, 0x18,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87,
            0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3,
            0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x0e, 0x0e,
            0x0e, 0x0e, 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x70, 0x70,
            0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38,
            0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc6, 0xc6, 0xc6,
            0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
            0xe1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38,
            0x78, 0xf8, 0xf8, 0xbf, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00,
            0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
            0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00
        };

        oled_write_raw_P(qmk_leader, sizeof(qmk_leader));
    if (get_mods() & MOD_BIT(KC_LALT)) {

      oled_write_char(0x41, false);
      oled_write_char(0x42, false);
      oled_write_char(0x43, false);
      oled_write_char(0x44, false);
      oled_write_char(0x45, false);

      oled_write_char(0x61, false);
      oled_write_char(0x62, false);
      oled_write_char(0x63, false);
      oled_write_char(0x64, false);
      oled_write_char(0x65, false);
    } else {
      add_blank();
    }

    /* Modifier keys */
    if (get_mods()) {

        if (get_mods() & MOD_MASK_CTRL) {

            oled_write_char(0x01, false);
            oled_write_char(0x02, false);
            oled_write_char(0x03, false);
            oled_write_char(0x04, false);
            oled_write_char(0x05, false);

            oled_write_char(0x21, false);
            oled_write_char(0x22, false);
            oled_write_char(0x23, false);
            oled_write_char(0x24, false);
            oled_write_char(0x25, false);
        }
        if (get_mods() & MOD_BIT(KC_LALT)) {

            oled_write_char(0x41, false);
            oled_write_char(0x42, false);
            oled_write_char(0x43, false);
            oled_write_char(0x44, false);
            oled_write_char(0x45, false);

            oled_write_char(0x61, false);
            oled_write_char(0x62, false);
            oled_write_char(0x63, false);
            oled_write_char(0x64, false);
            oled_write_char(0x65, false);
        }
        if (get_mods() & MOD_BIT(KC_RALT)) {

            oled_write_char(0x81, false);
            oled_write_char(0x82, false);
            oled_write_char(0x83, false);
            oled_write_char(0x84, false);
            oled_write_char(0x85, false);

            oled_write_char(0xA1, false);
            oled_write_char(0xA2, false);
            oled_write_char(0xA3, false);
            oled_write_char(0xA4, false);
            oled_write_char(0xA5, false);
        }
        if (get_mods() & MOD_MASK_SHIFT) {

            oled_write_char(0x4B, false);
            oled_write_char(0x4C, false);
            oled_write_char(0x4D, false);
            oled_write_char(0x4E, false);
            oled_write_char(0x4F, false);

            oled_write_char(0x6B, false);
            oled_write_char(0x6C, false);
            oled_write_char(0x6D, false);
            oled_write_char(0x6E, false);
            oled_write_char(0x6F, false);
        }
        if (get_mods() & MOD_MASK_GUI) {

            oled_write_char(0x8B, false);
            oled_write_char(0x8C, false);
            oled_write_char(0x8D, false);
            oled_write_char(0x8E, false);
            oled_write_char(0x8F, false);

            oled_write_char(0xAB, false);
            oled_write_char(0xAC, false);
            oled_write_char(0xAD, false);
            oled_write_char(0xAE, false);
            oled_write_char(0xAF, false);
        }
    if (get_mods() & MOD_MASK_SHIFT) {

      oled_write_char(0x4B, false);
      oled_write_char(0x4C, false);
      oled_write_char(0x4D, false);
      oled_write_char(0x4E, false);
      oled_write_char(0x4F, false);

      oled_write_char(0x6B, false);
      oled_write_char(0x6C, false);
      oled_write_char(0x6D, false);
      oled_write_char(0x6E, false);
      oled_write_char(0x6F, false);
    } else {
      add_blank();
    }

    if (get_mods() & MOD_BIT(KC_RALT)) {

      oled_write_char(0x81, false);
      oled_write_char(0x82, false);
      oled_write_char(0x83, false);
      oled_write_char(0x84, false);
      oled_write_char(0x85, false);

      oled_write_char(0xA1, false);
      oled_write_char(0xA2, false);
      oled_write_char(0xA3, false);
      oled_write_char(0xA4, false);
      oled_write_char(0xA5, false);
    }

    // Add a line
    oled_write_char(0xC1, false);
    oled_write_char(0xC2, false);
    oled_write_char(0xC3, false);
    oled_write_char(0xC4, false);
    oled_write_char(0xC5, false);
  }
};

bool oled_task_user(void) {
    oled_display();
    return false;
  oled_display();
  return false;
}

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md +61 -94
@@ 1,16 1,16 @@
### Custom aurora sweep keymap

This keymap is inspired by [optimot](https://optimot.fr) which is a French layout.  
Nonetheless it uses the US international extended keymap for French keys.

This keymap is inspired by [optimot](https://bepo.fr/) which is a French layout.  
Nonetheless all French characters are sent in unicode, so it works with the standard US ANSI layout.
It uses the _best_ QMK features :

It uses the *best* qmk features :
- combos ♥
- auto shift
- leader
-   combos ♥
-   auto shift
-   leader

I tried to optimise key positions for neovim and i3wm while limit digrams.  
The oled screens are used to display the current layout, the modifier keys and the leader key.  
The oled screens are used to display the current layout, the modifier keys and the leader key.

![oledmodifiers](https://i.imgur.com/on95jx0.png)
![oledmouse](https://i.imgur.com/PwkR6P2.png)


@@ 27,104 27,71 @@ Navigate into the keymap folder and launch this command for both sides :

    qmk compile && qmk flash

and :
And :

    Click twice on the flash button and use nautilus for instance to clic on the keyboard.  
    Click twice on the flash button and use nautilus for instance to clic on the keyboard.
    Don't forget to flash with the double tap bootloader define before soldering.

#### Layout

Set the us altgr international to activate French keys :

    /usr/share/X11/xkb/symbols/
    localectl list-x11-keymap-variants us

    setxkbmap us altgr-intl

#### Links

[qmk](https://docs.qmk.fm/#/)  
[ferris sweep](https://github.com/davidphilipbarr/Sweep)  
[splitkb](https://splitkb.com)  
[splitkb](https://splitkb.com)

#### Layouts

![base](https://i.imgur.com/E3hRkxW.png)  
![numeric](https://i.imgur.com/GeC0reE.png)  
![mouse](https://i.imgur.com/QhsWVrE.png)  
![arrows](https://i.imgur.com/4sAfGAt.png)  
![adjust](https://i.imgur.com/hcoN2P8.png)  
![fn](https://i.imgur.com/dVunqFF.png)  
![left hand](https://i.imgur.com/fk5YJj6.png)  
![combo](https://i.imgur.com/aZ8TpuY.png)  
![combo2](https://i.imgur.com/QayRuFA.png)  
![combo3](https://i.imgur.com/YpnbMeh.png)  

#### French

|        -         |                        |
|------------------|------------------------|
|   space + e      |   é                    |
|   space + i      |   ç                    |
|   space + a      |   æ                    |
|   space + o      |   œ                    |
|   comma + a      |   à                    |
|   comma + e      |   è                    |
|   comma + i      |   ì                    |
|   comma + o      |   ò                    |
|   comma + u      |   ù                    |
|   enter + a      |   â                    |
|   enter + e      |   ê                    |
|   enter + i      |   î                    |
|   enter + o      |   ô                    |
|   enter + u      |   û                    |
|   dot + a        |   ä                    |
|   dot + e        |   ë                    |
|   dot + i        |   ï                    |
|   dot + o        |   ö                    |
|   dot + u        |   ü                    |
|   dot + y        |   ÿ                    |
![base](https://i.imgur.com/i7NgrCD.png)  
![numeric](https://i.imgur.com/6Yso40L.png)  
![mouse](https://i.imgur.com/skSL4Lo.png)  
![arrows](https://i.imgur.com/NIjJR2I.png)  
![adjust](https://i.imgur.com/xj6i70P.png)  
![fn](https://i.imgur.com/Q41ZdQi.png)  
![left hand](https://i.imgur.com/WDEGxGM.png)

![combos](https://i.imgur.com/wj6DEY0.png)

#### Leader

| -                  |                        |
|--------------------|------------------------|
|   M + S            |   mail short           |
|   M + L            |   mail long            |
|   D + E + G        |   °                    |
|   C + O + P        |   ©                    |
|   R + E + G        |   ®                    |
|   D + I + A        |   ø                    |
|   D + I + A + M    |   Ø                    |
|   E + U + R        |   €                    |
|   P + O + U        |   £                    |
|   Y + E + N        |   ¥                    |
|   C + E + N        |   ¢                    |
|   P + I            |   π                    |
|   P + I + I        |   Π                    |
|   O + M + E        |   ω                    |
|   O + M + E + G    |   Ω                    |
|   U + P + F        |   ⁰                    |
|   D + N + F        |   ₀                    |

| -                  |                        |
|--------------------|------------------------|
|   M + U + L        |   ×                    |
|   D + I + V        |   ÷                    |
|   P + M            |   ±                    |
|   I + N + E        |   ≠                    |
|   A + L + M        |   ≈                    |
|   S + Q + U        |   √                    |
|   I + N + F        |   ∞                    |
|   < + <            |   ≤                    |
|   > + >            |   ≥                    |
|   F + S + T        |   ¼                    |
|   F + S + G        |   ½                    |
|   F + H + T        |   ¾                    |

| -                  |                        |
|--------------------|------------------------|
|   F + L + A        |   ⚡                   |
|   S + P + A        |   ✨                   |
|   O + W + D        |   ⛔                   |
|   C + O + F        |   ☕                   |
|   U + M + B        |   ☔                   |
|   Y + E + S        |   ✅                   |
|   N + O            |   ❎                   |
|   C + R + O        |   ❌                   |
|   ?                |   ❔                   |
|   !                |   ❕                   |
|   ? + ?            |   ❓                   |
|   ! + !            |   ❗                   |
| -             |            |
| ------------- | ---------- |
| M + S         | mail short |
| M + L         | mail long  |
| D + E + G     | °          |
| C + O + P     | ©          |
| R + E + G     | ®          |
| D + I + A     | ø          |
| D + I + A + M | Ø          |
| E + U + R     | €          |
| P + O + U     | £          |
| Y + E + N     | ¥          |
| C + E + N     | ¢          |
| P + I         | π          |
| P + I + I     | Π          |
| O + M + E     | ω          |
| O + M + E + G | Ω          |
| U + P + F     | ⁰          |
| D + N + F     | ₀          |

| -         |     |
| --------- | --- |
| M + U + L | ×   |
| D + I + V | ÷   |
| P + M     | ±   |
| I + N + E | ≠   |
| A + L + M | ≈   |
| S + Q + U | √   |
| I + N + F | ∞   |
| < + <     | ≤   |
| > + >     | ≥   |
| F + S + T | ¼   |
| F + S + G | ½   |
| F + H + T | ¾   |

M keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk => keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk +1 -4
@@ 2,7 2,7 @@ LTO_ENABLE = yes
CONVERT_TO = elite_pi

SRC += features/auto_shift.c
SRC += features/combo.c
INTROSPECTION_KEYMAP_C = features/combo.c # Replace SRC, see issue #21137
SRC += features/leader.c
SRC += oled/oled.c



@@ 15,8 15,5 @@ AUTO_SHIFT_MODIFIERS = no
COMBO_ENABLE = yes
LEADER_ENABLE = yes

# Recommended for space cadet shift
COMMAND_ENABLE = no

UNICODE_ENABLE = yes
SEND_STRING_ENABLE = yes