From 3b987f4a9d224e2ef5765b306ad25afbb28ce7a2 Mon Sep 17 00:00:00 2001
From: FLinguenheld <90783310+FLinguenheld@users.noreply.github.com>
Date: Fri, 10 Feb 2023 10:07:39 +0100
Subject: [PATCH] [Keyboard] Flinguenheld (#19661)
---
.../sweep/keymaps/flinguenheld/config.h | 75 +++
.../flinguenheld/features/auto_shift.c | 199 ++++++++
.../keymaps/flinguenheld/features/combo.c | 275 +++++++++++
.../keymaps/flinguenheld/features/leader.c | 268 ++++++++++
.../sweep/keymaps/flinguenheld/keycodes.h | 44 ++
.../sweep/keymaps/flinguenheld/keymap.c | 133 +++++
.../keymaps/flinguenheld/oled/glcdfont.c | 232 +++++++++
.../sweep/keymaps/flinguenheld/oled/oled.c | 457 ++++++++++++++++++
.../sweep/keymaps/flinguenheld/readme.md | 130 +++++
.../sweep/keymaps/flinguenheld/rules.mk | 22 +
10 files changed, 1835 insertions(+)
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md
create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h
new file mode 100644
index 0000000000..c147d5e67f
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h
@@ -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 .
+ */
+
+#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
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c
new file mode 100644
index 0000000000..d6bd3818b4
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c
@@ -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);
+ }
+}
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c
new file mode 100644
index 0000000000..e5b897dc62
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c
@@ -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),
+};
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c
new file mode 100644
index 0000000000..7cfd30af6d
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c
@@ -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("₉"); }
+
+ };
+}
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h
new file mode 100644
index 0000000000..b90b28fda4
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h
@@ -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,
+};
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c
new file mode 100644
index 0000000000..50fb7909f3
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c
@@ -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 .
+ */
+
+#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
+ // |-------------------------+-------------------------| |-------------------------+-------------------------|
+ ),
+};
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c
new file mode 100644
index 0000000000..ad4448993f
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c
@@ -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,
+};
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c
new file mode 100644
index 0000000000..5b177acc7c
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c
@@ -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;
+}
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md
new file mode 100644
index 0000000000..3873ca45cf
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md
@@ -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.
+
+![oledmodifiers](https://i.imgur.com/on95jx0.png)
+![oledmouse](https://i.imgur.com/PwkR6P2.png)
+
+#### 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
+
+![base](https://i.imgur.com/E3hRkxW.png)
+![numeric](https://i.imgur.com/GeC0reE.png)
+![mouse](https://i.imgur.com/QhsWVrE.png)
+![arrows](https://i.imgur.com/4sAfGAt.png)
+![adjust](https://i.imgur.com/hcoN2P8.png)
+![fn](https://i.imgur.com/dVunqFF.png)
+![left hand](https://i.imgur.com/fk5YJj6.png)
+![combo](https://i.imgur.com/aZ8TpuY.png)
+![combo2](https://i.imgur.com/QayRuFA.png)
+![combo3](https://i.imgur.com/YpnbMeh.png)
+
+#### French
+
+| - | |
+|------------------|------------------------|
+| space + e | é |
+| space + i | ç |
+| space + a | æ |
+| space + o | œ |
+| comma + a | à |
+| comma + e | è |
+| comma + i | ì |
+| comma + o | ò |
+| comma + u | ù |
+| enter + a | â |
+| enter + e | ê |
+| enter + i | î |
+| enter + o | ô |
+| enter + u | û |
+| dot + a | ä |
+| dot + e | ë |
+| dot + i | ï |
+| dot + o | ö |
+| dot + u | ü |
+| dot + y | ÿ |
+
+
+#### 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 | ❌ |
+| ? | ❔ |
+| ! | ❕ |
+| ? + ? | ❓ |
+| ! + ! | ❗ |
diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk
new file mode 100644
index 0000000000..d854cbb16b
--- /dev/null
+++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk
@@ -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