[Keyboard] Flinguenheld (#19661)
This commit is contained in:
		
							parent
							
								
									bc3c6f0831
								
							
						
					
					
						commit
						3b987f4a9d
					
				
					 10 changed files with 1835 additions and 0 deletions
				
			
		
							
								
								
									
										75
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,75 @@
 | 
			
		|||
/* Copyright 2023 Florent Linguenheld (@FLinguenheld)
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
/* 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.
 | 
			
		||||
 | 
			
		||||
/* OLED */
 | 
			
		||||
#undef OLED_FONT_H
 | 
			
		||||
#define OLED_FONT_H "./oled/glcdfont.c"
 | 
			
		||||
 | 
			
		||||
#define  OLED_TIMEOUT 25000
 | 
			
		||||
#define OLED_BRIGHTNESS 60 // 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
 | 
			
		||||
 | 
			
		||||
/* Unicode */
 | 
			
		||||
// #define UNICODE_SELECTED_MODES UC_LNX
 | 
			
		||||
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
 | 
			
		||||
 | 
			
		||||
/* leader */
 | 
			
		||||
#define LEADER_PER_KEY_TIMING
 | 
			
		||||
#define LEADER_TIMEOUT 280
 | 
			
		||||
#define LEADER_NO_TIMEOUT
 | 
			
		||||
 | 
			
		||||
/* Mouse */
 | 
			
		||||
#define MK_3_SPEED
 | 
			
		||||
#define MK_MOMENTARY_ACCEL
 | 
			
		||||
 | 
			
		||||
#define MK_C_OFFSET_0 1
 | 
			
		||||
#define MK_C_INTERVAL_0 12
 | 
			
		||||
 | 
			
		||||
#define MK_C_OFFSET_1 4
 | 
			
		||||
#define MK_C_INTERVAL_1 18
 | 
			
		||||
 | 
			
		||||
#define MK_C_OFFSET_UNMOD 13
 | 
			
		||||
#define MK_C_INTERVAL_UNMOD 15
 | 
			
		||||
 | 
			
		||||
#define MK_C_OFFSET_2 25
 | 
			
		||||
#define MK_C_INTERVAL_2 10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define MK_W_OFFSET_0 1
 | 
			
		||||
#define MK_W_INTERVAL_0 160
 | 
			
		||||
 | 
			
		||||
#define MK_W_OFFSET_1 2
 | 
			
		||||
#define MK_W_INTERVAL_1 120
 | 
			
		||||
 | 
			
		||||
#define MK_W_OFFSET_UNMOD 4
 | 
			
		||||
#define MK_W_INTERVAL_UNMOD 70
 | 
			
		||||
 | 
			
		||||
#define MK_W_OFFSET_2 10
 | 
			
		||||
#define MK_W_INTERVAL_2 30
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,199 @@
 | 
			
		|||
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
#include "keycodes.h"
 | 
			
		||||
 | 
			
		||||
/* 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:
 | 
			
		||||
 | 
			
		||||
        // --
 | 
			
		||||
        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) {
 | 
			
		||||
 | 
			
		||||
        case KC_BSPC:
 | 
			
		||||
        case KC_LABK:  // Easy indent with vim
 | 
			
		||||
        case KC_RABK:
 | 
			
		||||
 | 
			
		||||
        /* French */
 | 
			
		||||
        case CS_E_ACUTE:
 | 
			
		||||
 | 
			
		||||
        case CS_A_GRAVE:
 | 
			
		||||
        case CS_E_GRAVE:
 | 
			
		||||
        case CS_I_GRAVE:
 | 
			
		||||
        case CS_O_GRAVE:
 | 
			
		||||
        case CS_U_GRAVE:
 | 
			
		||||
 | 
			
		||||
        case CS_A_CIRCUMFLEX:
 | 
			
		||||
        case CS_E_CIRCUMFLEX:
 | 
			
		||||
        case CS_I_CIRCUMFLEX:
 | 
			
		||||
        case CS_O_CIRCUMFLEX:
 | 
			
		||||
        case CS_U_CIRCUMFLEX:
 | 
			
		||||
 | 
			
		||||
        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_C_CEDILLA:
 | 
			
		||||
        case CS_AE:
 | 
			
		||||
        case CS_OE:
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
 | 
			
		||||
        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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,275 @@
 | 
			
		|||
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
#include "keycodes.h"
 | 
			
		||||
 | 
			
		||||
/* How to :
 | 
			
		||||
        - Add an entry in the enum
 | 
			
		||||
        - Create a new sequence of keys
 | 
			
		||||
        - Link the enum to this sequence in the key_combos table
 | 
			
		||||
 | 
			
		||||
   For macros :
 | 
			
		||||
        - Same steps
 | 
			
		||||
        - And add the macro in the process_combo_event() function
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
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,
 | 
			
		||||
 | 
			
		||||
    /* 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_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_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_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_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};
 | 
			
		||||
 | 
			
		||||
/* 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};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Sequences fo keys */
 | 
			
		||||
combo_t key_combos[] = {
 | 
			
		||||
    [LEADER] = COMBO(combo_leader,                          KC_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),
 | 
			
		||||
 | 
			
		||||
    /* 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),
 | 
			
		||||
 | 
			
		||||
    /* -- */
 | 
			
		||||
    [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),
 | 
			
		||||
 | 
			
		||||
    /* One hand special */
 | 
			
		||||
    [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),
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,268 @@
 | 
			
		|||
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
 | 
			
		||||
// 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("°"); }
 | 
			
		||||
 | 
			
		||||
    /* 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("Ø"); }
 | 
			
		||||
 | 
			
		||||
    /* 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("¢"); }
 | 
			
		||||
 | 
			
		||||
    /* 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("¾"); }
 | 
			
		||||
 | 
			
		||||
    /* 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("≥"); }
 | 
			
		||||
 | 
			
		||||
    /* 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("Ω"); }
 | 
			
		||||
 | 
			
		||||
    /* 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("🐦"); }
 | 
			
		||||
 | 
			
		||||
    /* 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("₉"); }
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
enum layers {
 | 
			
		||||
    _BASE,
 | 
			
		||||
    _NUMERIC,
 | 
			
		||||
    _ARROWS,
 | 
			
		||||
    _MOUSE,
 | 
			
		||||
    _ADJUST,
 | 
			
		||||
    _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,
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										133
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,133 @@
 | 
			
		|||
/* Copyright 2023 Florent Linguenheld (@FLinguenheld)
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
#include "keycodes.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
 | 
			
		||||
    /* Macros */
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
 | 
			
		||||
        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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
    [_BASE] = LAYOUT(
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
        GUI_T(KC_ESC) ,     KC_B      ,     KC_O      ,     KC_W      ,     KC_BSPC   ,             KC_J      ,      KC_P     ,      KC_D     ,      KC_L     ,      KC_F     ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
            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     ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
                                          LT(_MOUSE, KC_COMM)  ,        KC_LCPO          ,    LT(_NUMERIC, KC_ENT)   ,  LT(_ARROWS, KC_DOT)
 | 
			
		||||
    //                               |-------------------------+----/* Space ctl */------| |-------------------------+-------------------------|
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_NUMERIC] = LAYOUT(
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    _______    ,            XXXXXXX    ,     KC_7      ,     KC_8      ,     KC_9      ,    KC_DOT     ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           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        ,         UNICODE         ,          XXXXXXX          ,       XXXXXXX
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_MOUSE] = LAYOUT(
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
        KC_MS_WH_LEFT ,  KC_MS_WH_UP  , KC_MS_WH_DOWN , KC_MS_WH_RIGHT,    _______    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
          KC_MS_LEFT  ,   KC_MS_UP    ,  KC_MS_DOWN   ,  KC_MS_RIGHT  ,    _______    ,            XXXXXXX    ,  KC_MS_ACCEL0 ,  KC_MS_ACCEL1 ,  KC_MS_ACCEL2 ,    XXXXXXX    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
          KC_MS_BTN1  ,    XXXXXXX    ,  KC_MS_BTN3   ,  KC_MS_BTN2   ,    XXXXXXX    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
                                                XXXXXXX        ,        _______          ,         KC_MS_BTN1        ,       KC_MS_BTN2
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_ARROWS] = LAYOUT(
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    _______    ,            XXXXXXX    ,    KC_HOME    ,  KC_PAGE_DOWN ,   KC_PAGE_UP  ,     KC_END    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           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
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_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  ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+------------------|       |---------------+---------------+---------------+---------------+-----------------|
 | 
			
		||||
    //                                  |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
                                                   XXXXXXX        ,        _______          ,           XXXXXXX         ,       XXXXXXX
 | 
			
		||||
    //                                  |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_FN] = LAYOUT(
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    _______    ,            XXXXXXX    ,     KC_F7     ,     KC_F8     ,     KC_F9     ,     KC_F10    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    _______    ,            XXXXXXX    ,     KC_F4     ,     KC_F5     ,     KC_F6     ,     KC_F11    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,            XXXXXXX    ,     KC_F1     ,     KC_F2     ,     KC_F3     ,     KC_F12    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
                                                XXXXXXX        ,        _______          ,           XXXXXXX         ,       XXXXXXX
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    [_LEFT_HAND] = LAYOUT(
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    _______    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           XXXXXXX    ,    C(KC_X)    ,    C(KC_C)    ,    C(KC_V)    ,    _______    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
           _______    ,    XXXXXXX    ,    XXXXXXX    ,    C(KC_Z)    ,    XXXXXXX    ,            XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,    XXXXXXX    ,
 | 
			
		||||
    //|---------------+---------------+---------------+---------------+---------------|       |---------------+---------------+---------------+---------------+---------------|
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
                                                XXXXXXX        ,        _______          ,           XXXXXXX         ,       XXXXXXX
 | 
			
		||||
    //                               |-------------------------+-------------------------| |-------------------------+-------------------------|
 | 
			
		||||
    ),
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,232 @@
 | 
			
		|||
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include "progmem.h"
 | 
			
		||||
 | 
			
		||||
/* 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,
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										457
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										457
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,457 @@
 | 
			
		|||
// Copyright 2023 Florent Linguenheld (@FLinguenheld)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include QMK_KEYBOARD_H
 | 
			
		||||
#include "keycodes.h"
 | 
			
		||||
 | 
			
		||||
/* Leader state */
 | 
			
		||||
static bool is_leader_active = false;
 | 
			
		||||
void leader_start(void) {
 | 
			
		||||
    is_leader_active = true;
 | 
			
		||||
}
 | 
			
		||||
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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* 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));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* 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);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
bool oled_task_user(void) {
 | 
			
		||||
    oled_display();
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										130
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,130 @@
 | 
			
		|||
### Custom aurora sweep keymap
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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 :
 | 
			
		||||
- 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.  
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
#### Install
 | 
			
		||||
 | 
			
		||||
Clone this repo in the folder :
 | 
			
		||||
 | 
			
		||||
    ~/qmk_firmware/keyboards/splitkb/aurora/sweep/keymaps/
 | 
			
		||||
 | 
			
		||||
#### Compile and flash
 | 
			
		||||
 | 
			
		||||
Navigate into the keymap folder and launch this command for both sides :
 | 
			
		||||
 | 
			
		||||
    qmk compile && qmk flash
 | 
			
		||||
 | 
			
		||||
and :
 | 
			
		||||
 | 
			
		||||
    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.
 | 
			
		||||
 | 
			
		||||
#### Links
 | 
			
		||||
 | 
			
		||||
[qmk](https://docs.qmk.fm/#/)  
 | 
			
		||||
[ferris sweep](https://github.com/davidphilipbarr/Sweep)  
 | 
			
		||||
[splitkb](https://splitkb.com)  
 | 
			
		||||
 | 
			
		||||
#### Layouts
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
#### 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        |   ÿ                    |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#### 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        |   ❌                   |
 | 
			
		||||
|   ?                |   ❔                   |
 | 
			
		||||
|   !                |   ❕                   |
 | 
			
		||||
|   ? + ?            |   ❓                   |
 | 
			
		||||
|   ! + !            |   ❗                   |
 | 
			
		||||
							
								
								
									
										22
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
LTO_ENABLE = yes
 | 
			
		||||
CONVERT_TO = elite_pi
 | 
			
		||||
 | 
			
		||||
SRC += features/auto_shift.c
 | 
			
		||||
SRC += features/combo.c
 | 
			
		||||
SRC += features/leader.c
 | 
			
		||||
SRC += oled/oled.c
 | 
			
		||||
 | 
			
		||||
OLED_ENABLE = yes
 | 
			
		||||
OLED_DRIVER = SSD1306
 | 
			
		||||
 | 
			
		||||
MOUSEKEY_ENABLE = yes
 | 
			
		||||
AUTO_SHIFT_ENABLE = yes
 | 
			
		||||
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
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue