Add files via upload
This commit is contained in:
		
							parent
							
								
									efa14b8193
								
							
						
					
					
						commit
						7ddc7fb033
					
				
					 13 changed files with 1015 additions and 0 deletions
				
			
		
							
								
								
									
										42
									
								
								keyboards/boardsource/unicorne/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								keyboards/boardsource/unicorne/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
// Copyright 2023 jack (@waffle87)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
// Board:
 | 
			
		||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
 | 
			
		||||
 | 
			
		||||
#define I2C_DRIVER I2CD1
 | 
			
		||||
#define I2C1_SDA_PIN GP22
 | 
			
		||||
#define I2C1_SCL_PIN GP23
 | 
			
		||||
 | 
			
		||||
#define MASTER_LEFT
 | 
			
		||||
 | 
			
		||||
// Audio Buzzer:
 | 
			
		||||
#define AUDIO_PIN GP28
 | 
			
		||||
#define AUDIO_PWM_DRIVER PWMD6
 | 
			
		||||
#define AUDIO_INIT_DELAY
 | 
			
		||||
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_A
 | 
			
		||||
// #define STARTUP_SONG SONG(ODE_TO_JOY)  // AHHHHHHHHH
 | 
			
		||||
 | 
			
		||||
// Analog Sticks:
 | 
			
		||||
#define ANALOG_JOYSTICK_Y_AXIS_PIN GP26
 | 
			
		||||
#define ANALOG_JOYSTICK_X_AXIS_PIN GP27
 | 
			
		||||
#define POINTING_DEVICE_INVERT_Y
 | 
			
		||||
#define POINTING_DEVICE_INVERT_X
 | 
			
		||||
 | 
			
		||||
// Reset Upon Reinitializtion:
 | 
			
		||||
#define OS_DETECTION_KEYBOARD_RESET  // enables the keyboard reset upon a USB device reinitialization,
 | 
			
		||||
                                     // such as switching devices on some KVMs
 | 
			
		||||
// OLEDs:
 | 
			
		||||
#define OLED_BRIGHTNESS 200
 | 
			
		||||
#define OLED_TIMEOUT 10000
 | 
			
		||||
 | 
			
		||||
// Tap Dance: (milliseconds)
 | 
			
		||||
#define TAPPING_TERM 175
 | 
			
		||||
 | 
			
		||||
// Split Keyboard Actions
 | 
			
		||||
#define SPLIT_ACTIVITY_ENABLE  // allow timeouts
 | 
			
		||||
#define SPLIT_LED_STATE_ENABLE  // caps-lock, num-lock, etc.
 | 
			
		||||
#define SPLIT_MODS_ENABLE  // mod key status
 | 
			
		||||
#define SPLIT_OLED_ENABLE  // oled status (on, off, etc.)
 | 
			
		||||
#define SPLIT_WPM_ENABLE  // words-per-minute
 | 
			
		||||
							
								
								
									
										9
									
								
								keyboards/boardsource/unicorne/halconf.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								keyboards/boardsource/unicorne/halconf.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
// Copyright 2022 jack (@waffle87)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#define HAL_USE_I2C TRUE
 | 
			
		||||
#define HAL_USE_PWM TRUE
 | 
			
		||||
#define HAL_USE_ADC TRUE
 | 
			
		||||
 | 
			
		||||
#include_next <halconf.h>
 | 
			
		||||
							
								
								
									
										173
									
								
								keyboards/boardsource/unicorne/info.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								keyboards/boardsource/unicorne/info.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,173 @@
 | 
			
		|||
{
 | 
			
		||||
    "manufacturer": "Boardsource",
 | 
			
		||||
    "maintainer": "waffle87",
 | 
			
		||||
    "processor": "RP2040",
 | 
			
		||||
    "bootloader": "rp2040",
 | 
			
		||||
    "diode_direction": "COL2ROW",
 | 
			
		||||
    "features": {
 | 
			
		||||
        "audio": true,
 | 
			
		||||
        "bootmagic": true,
 | 
			
		||||
        "encoder": true,
 | 
			
		||||
        "extrakey": true,
 | 
			
		||||
        "mousekey": true,
 | 
			
		||||
        "nkro": true,
 | 
			
		||||
        "oled": true,
 | 
			
		||||
        "pointing_device": false,
 | 
			
		||||
        "rgb_matrix": true
 | 
			
		||||
    },
 | 
			
		||||
    "indicators": {
 | 
			
		||||
        "caps": "GP24"
 | 
			
		||||
    },
 | 
			
		||||
    "split": {
 | 
			
		||||
        "enabled": true,
 | 
			
		||||
        "soft_serial_pin": "GP0",
 | 
			
		||||
        "transport": {
 | 
			
		||||
            "sync": {
 | 
			
		||||
                "layer_state": true
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "usb": {
 | 
			
		||||
        "device_version": "1.0.0",
 | 
			
		||||
        "pid": "0x7563",
 | 
			
		||||
        "vid": "0x4273"
 | 
			
		||||
    },
 | 
			
		||||
    "ws2812": {
 | 
			
		||||
        "driver": "vendor",
 | 
			
		||||
        "pin": "GP29"
 | 
			
		||||
    },
 | 
			
		||||
    "matrix_pins": {
 | 
			
		||||
        "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7"],
 | 
			
		||||
        "rows": ["GP14", "GP15", "GP16", "GP17"]
 | 
			
		||||
    },
 | 
			
		||||
    "encoder": {
 | 
			
		||||
        "rotary": [
 | 
			
		||||
            {"pin_a": "GP8", "pin_b": "GP9"}
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "rgb_matrix": {
 | 
			
		||||
        "animations": {
 | 
			
		||||
            "alphas_mods": true,
 | 
			
		||||
            "band_sat": true,
 | 
			
		||||
            "band_val": true,
 | 
			
		||||
            "breathing": true,
 | 
			
		||||
            "gradient_left_right": true,
 | 
			
		||||
            "gradient_up_down": true
 | 
			
		||||
        },
 | 
			
		||||
        "default": {
 | 
			
		||||
            "animation": "alphas_mods"
 | 
			
		||||
        },
 | 
			
		||||
        "max_brightness": 150,
 | 
			
		||||
        "split_count": [27, 27],
 | 
			
		||||
        "driver": "ws2812",
 | 
			
		||||
        "layout": [
 | 
			
		||||
            {"x": 85, "y": 16, "flags": 2},
 | 
			
		||||
            {"x": 50, "y": 13, "flags": 2},
 | 
			
		||||
            {"x": 16, "y": 20, "flags": 2},
 | 
			
		||||
            {"x": 16, "y": 38, "flags": 2},
 | 
			
		||||
            {"x": 50, "y": 48, "flags": 2},
 | 
			
		||||
            {"x": 85, "y": 52, "flags": 2},
 | 
			
		||||
            {"matrix": [3, 5], "x": 95, "y": 63, "flags": 1},
 | 
			
		||||
            {"matrix": [2, 5], "x": 85, "y": 39, "flags": 4},
 | 
			
		||||
            {"matrix": [1, 5], "x": 85, "y": 21, "flags": 4},
 | 
			
		||||
            {"matrix": [0, 5], "x": 85, "y": 4, "flags": 4},
 | 
			
		||||
            {"matrix": [0, 4], "x": 68, "y": 2, "flags": 4},
 | 
			
		||||
            {"matrix": [1, 4], "x": 68, "y": 19, "flags": 4},
 | 
			
		||||
            {"matrix": [2, 4], "x": 68, "y": 37, "flags": 4},
 | 
			
		||||
            {"matrix": [3, 4], "x": 80, "y": 58, "flags": 1},
 | 
			
		||||
            {"matrix": [3, 3], "x": 60, "y": 55, "flags": 1},
 | 
			
		||||
            {"matrix": [2, 3], "x": 50, "y": 35, "flags": 4},
 | 
			
		||||
            {"matrix": [1, 3], "x": 50, "y": 13, "flags": 4},
 | 
			
		||||
            {"matrix": [0, 3], "x": 50, "y": 0, "flags": 4},
 | 
			
		||||
            {"matrix": [0, 2], "x": 33, "y": 3, "flags": 4},
 | 
			
		||||
            {"matrix": [1, 2], "x": 33, "y": 20, "flags": 4},
 | 
			
		||||
            {"matrix": [2, 2], "x": 33, "y": 37, "flags": 4},
 | 
			
		||||
            {"matrix": [2, 1], "x": 16, "y": 42, "flags": 4},
 | 
			
		||||
            {"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
 | 
			
		||||
            {"matrix": [0, 1], "x": 16, "y": 7, "flags": 4},
 | 
			
		||||
            {"matrix": [0, 0], "x": 0, "y": 7, "flags": 1},
 | 
			
		||||
            {"matrix": [1, 0], "x": 0, "y": 24, "flags": 1},
 | 
			
		||||
            {"matrix": [2, 0], "x": 0, "y": 41, "flags": 1},
 | 
			
		||||
            {"x": 139, "y": 16, "flags": 2},
 | 
			
		||||
            {"x": 174, "y": 13, "flags": 2},
 | 
			
		||||
            {"x": 208, "y": 20, "flags": 2},
 | 
			
		||||
            {"x": 208, "y": 38, "flags": 2},
 | 
			
		||||
            {"x": 174, "y": 48, "flags": 2},
 | 
			
		||||
            {"x": 139, "y": 52, "flags": 2},
 | 
			
		||||
            {"matrix": [7, 5], "x": 129, "y": 63, "flags": 1},
 | 
			
		||||
            {"matrix": [6, 5], "x": 139, "y": 39, "flags": 4},
 | 
			
		||||
            {"matrix": [5, 5], "x": 139, "y": 21, "flags": 4},
 | 
			
		||||
            {"matrix": [4, 5], "x": 139, "y": 4, "flags": 4},
 | 
			
		||||
            {"matrix": [4, 4], "x": 156, "y": 2, "flags": 4},
 | 
			
		||||
            {"matrix": [5, 4], "x": 156, "y": 19, "flags": 4},
 | 
			
		||||
            {"matrix": [6, 4], "x": 156, "y": 37, "flags": 4},
 | 
			
		||||
            {"matrix": [7, 4], "x": 144, "y": 58, "flags": 1},
 | 
			
		||||
            {"matrix": [7, 3], "x": 164, "y": 55, "flags": 1},
 | 
			
		||||
            {"matrix": [6, 3], "x": 174, "y": 35, "flags": 4},
 | 
			
		||||
            {"matrix": [5, 3], "x": 174, "y": 13, "flags": 4},
 | 
			
		||||
            {"matrix": [4, 3], "x": 174, "y": 0, "flags": 4},
 | 
			
		||||
            {"matrix": [4, 2], "x": 191, "y": 3, "flags": 4},
 | 
			
		||||
            {"matrix": [5, 2], "x": 191, "y": 20, "flags": 4},
 | 
			
		||||
            {"matrix": [6, 2], "x": 191, "y": 37, "flags": 4},
 | 
			
		||||
            {"matrix": [6, 1], "x": 208, "y": 42, "flags": 4},
 | 
			
		||||
            {"matrix": [5, 1], "x": 208, "y": 24, "flags": 4},
 | 
			
		||||
            {"matrix": [4, 1], "x": 208, "y": 7, "flags": 4},
 | 
			
		||||
            {"matrix": [4, 0], "x": 0, "y": 7, "flags": 1},
 | 
			
		||||
            {"matrix": [5, 0], "x": 0, "y": 24, "flags": 1},
 | 
			
		||||
            {"matrix": [6, 0], "x": 0, "y": 41, "flags": 1}
 | 
			
		||||
        ],
 | 
			
		||||
        "sleep": true
 | 
			
		||||
    },
 | 
			
		||||
    "community_layouts": ["split_3x6_3"],
 | 
			
		||||
    "layout_aliases": {
 | 
			
		||||
        "LAYOUT": "LAYOUT_split_3x6_3"
 | 
			
		||||
    },
 | 
			
		||||
    "layouts": {
 | 
			
		||||
        "LAYOUT_split_3x6_3": {
 | 
			
		||||
            "layout": [
 | 
			
		||||
                {"matrix": [0, 0], "x": 0, "y": 0.3},
 | 
			
		||||
                {"matrix": [0, 1], "x": 1, "y": 0.3},
 | 
			
		||||
                {"matrix": [0, 2], "x": 2, "y": 0.1},
 | 
			
		||||
                {"matrix": [0, 3], "x": 3, "y": 0},
 | 
			
		||||
                {"matrix": [0, 4], "x": 4, "y": 0.1},
 | 
			
		||||
                {"matrix": [0, 5], "x": 5, "y": 0.2},
 | 
			
		||||
                {"matrix": [4, 5], "x": 9, "y": 0.2},
 | 
			
		||||
                {"matrix": [4, 4], "x": 10, "y": 0.1},
 | 
			
		||||
                {"matrix": [4, 3], "x": 11, "y": 0},
 | 
			
		||||
                {"matrix": [4, 2], "x": 12, "y": 0.1},
 | 
			
		||||
                {"matrix": [4, 1], "x": 13, "y": 0.3},
 | 
			
		||||
                {"matrix": [4, 0], "x": 14, "y": 0.3},
 | 
			
		||||
                {"matrix": [1, 0], "x": 0, "y": 1.3},
 | 
			
		||||
                {"matrix": [1, 1], "x": 1, "y": 1.3},
 | 
			
		||||
                {"matrix": [1, 2], "x": 2, "y": 1.1},
 | 
			
		||||
                {"matrix": [1, 3], "x": 3, "y": 1},
 | 
			
		||||
                {"matrix": [1, 4], "x": 4, "y": 1.1},
 | 
			
		||||
                {"matrix": [1, 5], "x": 5, "y": 1.2},
 | 
			
		||||
                {"matrix": [5, 5], "x": 9, "y": 1.2},
 | 
			
		||||
                {"matrix": [5, 4], "x": 10, "y": 1.1},
 | 
			
		||||
                {"matrix": [5, 3], "x": 11, "y": 1},
 | 
			
		||||
                {"matrix": [5, 2], "x": 12, "y": 1.1},
 | 
			
		||||
                {"matrix": [5, 1], "x": 13, "y": 1.3},
 | 
			
		||||
                {"matrix": [5, 0], "x": 14, "y": 1.3},
 | 
			
		||||
                {"matrix": [2, 0], "x": 0, "y": 2.3},
 | 
			
		||||
                {"matrix": [2, 1], "x": 1, "y": 2.3},
 | 
			
		||||
                {"matrix": [2, 2], "x": 2, "y": 2.1},
 | 
			
		||||
                {"matrix": [2, 3], "x": 3, "y": 2},
 | 
			
		||||
                {"matrix": [2, 4], "x": 4, "y": 2.1},
 | 
			
		||||
                {"matrix": [2, 5], "x": 5, "y": 2.2},
 | 
			
		||||
                {"matrix": [6, 5], "x": 9, "y": 2.2},
 | 
			
		||||
                {"matrix": [6, 4], "x": 10, "y": 2.1},
 | 
			
		||||
                {"matrix": [6, 3], "x": 11, "y": 2},
 | 
			
		||||
                {"matrix": [6, 2], "x": 12, "y": 2.1},
 | 
			
		||||
                {"matrix": [6, 1], "x": 13, "y": 2.3},
 | 
			
		||||
                {"matrix": [6, 0], "x": 14, "y": 2.3},
 | 
			
		||||
                {"matrix": [3, 3], "x": 4, "y": 3.7},
 | 
			
		||||
                {"matrix": [3, 4], "x": 5, "y": 3.7},
 | 
			
		||||
                {"matrix": [3, 5], "x": 6, "y": 3.2, "h": 1.5},
 | 
			
		||||
                {"matrix": [7, 5], "x": 8, "y": 3.2, "h": 1.5},
 | 
			
		||||
                {"matrix": [7, 4], "x": 9, "y": 3.7},
 | 
			
		||||
                {"matrix": [7, 3], "x": 10, "y": 3.7}
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								keyboards/boardsource/unicorne/keymaps/Trinxic/keymap.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								keyboards/boardsource/unicorne/keymaps/Trinxic/keymap.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
{
 | 
			
		||||
    "keyboard": "boardsource/unicorne",
 | 
			
		||||
    "keymap": "default",
 | 
			
		||||
    "layout": "LAYOUT_split_3x6_3",
 | 
			
		||||
    "layers": [
 | 
			
		||||
        [
 | 
			
		||||
            "KC_TAB",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",          "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_BSPC",
 | 
			
		||||
            "KC_LCTL", "KC_A",    "KC_S",    "KC_D",    "KC_F",    "KC_G",          "KC_H",    "KC_J",    "KC_K",    "KC_L",    "KC_SCLN", "KC_QUOT",
 | 
			
		||||
            "KC_LSFT", "KC_Z",    "KC_X",    "KC_C",    "KC_V",    "KC_B",          "KC_N",    "KC_M",    "KC_COMM", "KC_DOT",  "KC_SLSH", "KC_ESC",
 | 
			
		||||
                                             "KC_LGUI", "MO(1)",   "KC_SPC",        "KC_ENT",  "MO(2)",   "KC_RALT"
 | 
			
		||||
        ],
 | 
			
		||||
        [
 | 
			
		||||
            "_______", "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",          "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "_______",
 | 
			
		||||
            "_______", "KC_EXLM", "KC_AT",   "KC_HASH", "KC_DLR",  "KC_PERC",       "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______",
 | 
			
		||||
            "_______", "_______", "_______", "_______", "_______", "_______",       "_______", "_______", "_______", "_______", "_______", "_______",
 | 
			
		||||
                                             "_______", "_______", "_______",       "_______", "_______", "_______"
 | 
			
		||||
        ],
 | 
			
		||||
        [
 | 
			
		||||
            "QK_BOOT", "_______", "_______", "_______", "_______", "_______",       "RGB_VAI", "RGB_HUI", "RGB_SAI", "RGB_MOD",  "RGB_TOG", "_______",
 | 
			
		||||
            "EE_CLR",  "_______", "_______", "_______", "_______", "_______",       "RGB_VAD", "RGB_HUD", "RGB_SAD", "RGB_RMOD", "CK_TOGG", "_______",
 | 
			
		||||
            "_______", "_______", "_______", "_______", "_______", "_______",       "_______", "_______", "_______", "_______",  "_______", "_______",
 | 
			
		||||
                                             "_______", "_______", "_______",       "_______", "_______", "_______"
 | 
			
		||||
        ]
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										407
									
								
								keyboards/boardsource/unicorne/keymaps/david/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										407
									
								
								keyboards/boardsource/unicorne/keymaps/david/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,407 @@
 | 
			
		|||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ------------------ Tap-Dance ----------------- //
 | 
			
		||||
enum {
 | 
			
		||||
    TD_SHFT_CAPS = 0
 | 
			
		||||
};
 | 
			
		||||
tap_dance_action_t tap_dance_actions[] = {
 | 
			
		||||
    [TD_SHFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS)
 | 
			
		||||
};
 | 
			
		||||
// if caps lock is on && is pressed: toggle/turn off caps lock
 | 
			
		||||
 | 
			
		||||
// ------------------- Layers ------------------- //
 | 
			
		||||
enum layers {  // Layers
 | 
			
		||||
    _DVRK,
 | 
			
		||||
    _QWRT,
 | 
			
		||||
    _GAME,
 | 
			
		||||
    _SYMB,
 | 
			
		||||
    _NAV,
 | 
			
		||||
    _FUNC,
 | 
			
		||||
    _SYS
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* Layer Blueprint:
 | 
			
		||||
    [_{NAME}] = LAYOUT_split_3x6_3(
 | 
			
		||||
    //,-----------------------------------------------------,                    ,-----------------------------------------------------,
 | 
			
		||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    //'--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------'
 | 
			
		||||
                                            XXXXXXX, XXXXXXX, XXXXXXX,    XXXXXXX, XXXXXXX, XXXXXXX
 | 
			
		||||
                                        //'--------------------------'  '--------------------------'
 | 
			
		||||
    ),
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
    [_DVRK] = LAYOUT_split_3x6_3(
 | 
			
		||||
    //,-----------------------------------------------------,                    ,-----------------------------------------------------,
 | 
			
		||||
         KC_TAB, KC_SCLN, KC_COMM,  KC_DOT,    KC_P,    KC_Y,                         KC_F,    KC_G,    KC_C,    KC_R,    KC_L,  KC_ENT,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        KC_LCTL,	KC_A,    KC_O,    KC_E,    KC_U,    KC_I,                         KC_D,    KC_H,    KC_T,    KC_N,    KC_S, KC_MINS,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        TD(TD_SHFT_CAPS), KC_QUOT, KC_Q, KC_J, KC_K,    KC_X,                         KC_B,    KC_M,    KC_W,    KC_V,    KC_Z, KC_RSFT,
 | 
			
		||||
    //'--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------'
 | 
			
		||||
                                            KC_LGUI, KC_BSPC, MO(_NAV), MO(_SYMB),  KC_SPC, KC_RALT
 | 
			
		||||
                                        //'--------------------------'  '--------------------------'
 | 
			
		||||
    ),
 | 
			
		||||
    [_QWRT] = LAYOUT_split_3x6_3(
 | 
			
		||||
    //,-----------------------------------------------------,                    ,-----------------------------------------------------,
 | 
			
		||||
         KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                         KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,  KC_ENT,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        KC_LCTL,	KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                         KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        TD(TD_SHFT_CAPS), KC_Z, KC_X, KC_C,    KC_V,    KC_B,                         KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH, KC_RSFT,
 | 
			
		||||
    //'--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------'
 | 
			
		||||
                                            KC_LGUI, KC_BSPC, MO(_NAV), MO(_SYMB),  KC_SPC, KC_RALT
 | 
			
		||||
                                        //'--------------------------'  '--------------------------'
 | 
			
		||||
    ),
 | 
			
		||||
    [_GAME] = LAYOUT_split_3x6_3(
 | 
			
		||||
    //,-----------------------------------------------------,                    ,-----------------------------------------------------,
 | 
			
		||||
         KC_TAB,    KC_T,    KC_Q,    KC_W,    KC_E,    KC_R,                         KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,  KC_ENT,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
           KC_G, KC_LSFT,    KC_A,    KC_S,    KC_D,    KC_F,                         KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
           KC_B, KC_LCTL,    KC_Z,    KC_X,    KC_C,    KC_V,                         KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH, KC_RSFT,
 | 
			
		||||
    //'--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------'
 | 
			
		||||
                                           KC_LALT, KC_SPC, MO(_SYMB),   MO(_NAV),  KC_SPC, KC_LGUI
 | 
			
		||||
                                        //'--------------------------'  '--------------------------'
 | 
			
		||||
    ),
 | 
			
		||||
    [_SYMB] = LAYOUT_split_3x6_3(
 | 
			
		||||
    //,-----------------------------------------------------,                    ,-----------------------------------------------------,
 | 
			
		||||
         KC_ESC, _______, _______, _______, KC_ASTR, KC_CIRC,                      KC_PLUS,    KC_1,    KC_2,  KC_3, KC_PERC, TO(_FUNC),
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        _______, KC_HASH, KC_LPRN, KC_RPRN, KC_SLSH, KC_BSLS,                       KC_EQL,    KC_4,    KC_5,    KC_6,    KC_0,   KC_AT,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        _______, _______, KC_LBRC, KC_RBRC, KC_EXLM,  KC_GRV,                      KC_MINS,    KC_7,    KC_8,    KC_9,  KC_DLR, _______,
 | 
			
		||||
    //'--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------'
 | 
			
		||||
                                            _______, _______, XXXXXXX,  _______, _______, _______
 | 
			
		||||
                                        //'--------------------------'  '--------------------------'
 | 
			
		||||
    ),
 | 
			
		||||
    [_NAV] = LAYOUT_split_3x6_3(
 | 
			
		||||
    //,-----------------------------------------------------,                    ,-----------------------------------------------------,
 | 
			
		||||
      TO(_FUNC), XXXXXXX, KC_FIND, KC_UNDO, KC_AGIN, XXXXXXX,                      XXXXXXX,  KC_END, KC_PGDN, KC_PGUP, KC_HOME, XXXXXXX,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        _______, XXXXXXX,  KC_CUT, KC_COPY, KC_PSTE, XXXXXXX,                      XXXXXXX, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, XXXXXXX,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    //'--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------'
 | 
			
		||||
                                            KC_LGUI, XXXXXXX, _______,    XXXXXXX, _______, _______
 | 
			
		||||
                                        //'--------------------------'  '--------------------------'
 | 
			
		||||
    ),
 | 
			
		||||
    [_FUNC] = LAYOUT_split_3x6_3(
 | 
			
		||||
    //,-----------------------------------------------------,                    ,-----------------------------------------------------,
 | 
			
		||||
          KC_F1,   KC_F2,   KC_F3,   KC_F4, XXXXXXX, XXXXXXX,                      KC_VOLU, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
          KC_F5,   KC_F6,   KC_F7,   KC_F8, XXXXXXX, XXXXXXX,                      KC_MUTE, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
          KC_F9,  KC_F10,  KC_F11,  KC_F12, XXXXXXX, XXXXXXX,                      KC_VOLD, KC_MPRV, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
 | 
			
		||||
    //'--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------'
 | 
			
		||||
                                         TO(_SYS), TO(_DVRK), XXXXXXX,    XXXXXXX, TO(_DVRK), TO(_SYS)
 | 
			
		||||
                                        //'--------------------------'  '--------------------------'
 | 
			
		||||
    ),
 | 
			
		||||
    [_SYS] = LAYOUT_split_3x6_3(
 | 
			
		||||
    //,-----------------------------------------------------,                    ,-----------------------------------------------------,
 | 
			
		||||
         QK_RBT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      RGB_MOD, RGB_VAI, RGB_SPI, BL_BRTG,   BL_UP,  QK_RBT,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      RGB_TOG, RGB_VAD, RGB_SPD, BL_TOGG, BL_DOWN, XXXXXXX,
 | 
			
		||||
    //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | 
			
		||||
        QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                     RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
 | 
			
		||||
    //'--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------'
 | 
			
		||||
                                      TO(_QWRT), TO(_DVRK), TO(_GAME),  TO(_GAME), TO(_DVRK), TO(_QWRT)
 | 
			
		||||
                                        //'--------------------------'  '--------------------------'
 | 
			
		||||
    )
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// don't touch.. idk what this does at the moment
 | 
			
		||||
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
 | 
			
		||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Layer Timeout
 | 
			
		||||
void matrix_scan_user(void) {
 | 
			
		||||
    if (  // any 'toggled' layer is active
 | 
			
		||||
        (get_highest_layer(layer_state) == _FUNC
 | 
			
		||||
        || get_highest_layer(layer_state) == _SYS)
 | 
			
		||||
        && last_input_activity_elapsed() > 10000  // 10 seconds
 | 
			
		||||
    ) {
 | 
			
		||||
        layer_move(_DVRK);
 | 
			
		||||
        oled_off();  // not working... now try
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ------------------- Macros ------------------- //
 | 
			
		||||
// https://docs.qmk.fm/feature_advanced_keycodes#shift-backspace-for-delete
 | 
			
		||||
uint8_t mod_state;
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
    mod_state = get_mods();  // Store the current modifier state
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
        case KC_BSPC: {
 | 
			
		||||
            // Track delete key status: registered or not?
 | 
			
		||||
            static bool delkey_registered;
 | 
			
		||||
            if (record->event.pressed) {
 | 
			
		||||
                // Detect the activation of either shift keys
 | 
			
		||||
                if (mod_state & MOD_MASK_SHIFT) {
 | 
			
		||||
                    // Temporarily canceling both shifts
 | 
			
		||||
                    // so 'shift' isn't applied to KC_DEL
 | 
			
		||||
                    del_mods(MOD_MASK_SHIFT);
 | 
			
		||||
                    register_code(KC_DEL);
 | 
			
		||||
                    // Update the boolean variable to reflect the status of KC_DEL
 | 
			
		||||
                    delkey_registered = true;
 | 
			
		||||
                    // Reapplying modifier state so that the held shift key(s)
 | 
			
		||||
                    // still work even after having tapped the Backspace/Delete key.
 | 
			
		||||
                    set_mods(mod_state);
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            } else { // on release of KC_BSPC
 | 
			
		||||
                // In case KC_DEL is still being sent even after the release of KC_BSPC
 | 
			
		||||
                if (delkey_registered) {
 | 
			
		||||
                    unregister_code(KC_DEL);
 | 
			
		||||
                    delkey_registered = false;
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // Let QMK process the KC_BSPC keycode as usual outside of shift
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// ---------------- OLED Screens ---------------- //
 | 
			
		||||
#ifdef OLED_ENABLE
 | 
			
		||||
 | 
			
		||||
// Rotate Screens
 | 
			
		||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
 | 
			
		||||
    bool vertical_text = false;
 | 
			
		||||
    if (vertical_text) {  // vertical
 | 
			
		||||
        if (!is_keyboard_left()) { return OLED_ROTATION_180; }
 | 
			
		||||
        return rotation;
 | 
			
		||||
    } else {  // horizontal
 | 
			
		||||
        return OLED_ROTATION_270;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Layer Status
 | 
			
		||||
void render_current_layer(void) {
 | 
			
		||||
    oled_set_cursor(0, 1);
 | 
			
		||||
    switch (get_highest_layer(layer_state)) {
 | 
			
		||||
        case _DVRK:
 | 
			
		||||
            oled_write_P(PSTR(" DVRK\n"), false); break;
 | 
			
		||||
        case _QWRT:
 | 
			
		||||
            oled_write_P(PSTR(" QWRT\n"), false); break;
 | 
			
		||||
        case _GAME:
 | 
			
		||||
            oled_write_P(PSTR(" GAME\n"), false); break;
 | 
			
		||||
        case _SYMB:
 | 
			
		||||
            oled_write_P(PSTR(" SYMB\n"), false); break;
 | 
			
		||||
        case _NAV:
 | 
			
		||||
            oled_write_P(PSTR(" NAV\n"), false); break;
 | 
			
		||||
        case _FUNC:
 | 
			
		||||
            oled_write_P(PSTR(" FUNC\n"), false); break;
 | 
			
		||||
        case _SYS:
 | 
			
		||||
            oled_write_P(PSTR(" SYS\n"), false); break;
 | 
			
		||||
        default:
 | 
			
		||||
            oled_write_P(PSTR("ERROR\n"), false); break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Logos
 | 
			
		||||
static void render_apple_logo(void) {
 | 
			
		||||
    static const char PROGMEM raw_logo_apple[] = {  // `const unsigned char`
 | 
			
		||||
          0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,128,128,  0,  0,  0,
 | 
			
		||||
        112,124, 62, 62,159,135,128,128,128,  0,  0,  0,  0,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,224,248,252,254,255,255,255,255,255,255,255,255,254,
 | 
			
		||||
        254,254,255,255,255,255,255,255,255, 31, 15,  6,  0,  0,  0,  0,
 | 
			
		||||
          0,  0,  0, 31,255,255,255,255,255,255,255,255,255,255,255,255,
 | 
			
		||||
        255,255,255,255,255,255,255,255,255,248,224,192,192,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,  0,  0,  3,  7, 15, 31, 63,127,127,127, 63, 63, 31,
 | 
			
		||||
         31, 31, 31, 63, 63,127,127, 63, 63, 31, 15,  3,  0,  0,  0,  0,
 | 
			
		||||
    };
 | 
			
		||||
    oled_write_raw_P(raw_logo_apple, sizeof(raw_logo_apple));
 | 
			
		||||
}
 | 
			
		||||
static void render_arch_logo(void) {
 | 
			
		||||
    static const char PROGMEM raw_arch_logo[] = {
 | 
			
		||||
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,224,
 | 
			
		||||
        240,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,224,248,242,247,239,
 | 
			
		||||
        255,255,255,252,240,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,  0,  0,  0,192,240,252,254,255,255,127,  7,  3,  1,
 | 
			
		||||
          1,  3,  7,127,255,255,255,252,184,160,128,  0,  0,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,  8, 12,  7,  7,  3,  1,  1,  0,  0,  0,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,  0,  0,  0,  1,  1,  3,  3,  7, 14,  8,  0,  0,  0,
 | 
			
		||||
    };
 | 
			
		||||
    oled_write_raw_P(raw_arch_logo, sizeof(raw_arch_logo));
 | 
			
		||||
}
 | 
			
		||||
static void render_windows_logo(void) {
 | 
			
		||||
    static const char PROGMEM raw_windows_logo[] = {
 | 
			
		||||
          0,  0,  0,128,128,128,128,192,192,192,192,192,192,224,  0,224,
 | 
			
		||||
        224,224,224,224,240,240,240,240,240,240,248,248,248,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,255,255,255,255,255,255,255,255,255,255,255,  0,255,
 | 
			
		||||
        255,255,255,255,255,255,255,255,255,255,255,255,255,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,254,254,254,254,254,254,254,254,254,254,254,  0,254,
 | 
			
		||||
        254,254,254,254,254,254,254,254,254,254,254,254,254,  0,  0,  0,
 | 
			
		||||
          0,  0,  0,  3,  3,  3,  3,  3,  3,  7,  7,  7,  7,  7,  0,  7,
 | 
			
		||||
         15, 15, 15, 15, 15, 15, 15, 15, 31, 31, 31, 31, 31,  0,  0,  0,
 | 
			
		||||
    };
 | 
			
		||||
    oled_write_raw_P(raw_windows_logo, sizeof(raw_windows_logo));
 | 
			
		||||
}
 | 
			
		||||
// Display Current OS on start-up
 | 
			
		||||
bool process_detected_host_os_kb(os_variant_t detected_os) {
 | 
			
		||||
    if (!process_detected_host_os_user(detected_os)) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
    if (is_keyboard_master()) {
 | 
			
		||||
        oled_set_cursor(0, 5);
 | 
			
		||||
        switch (detected_os) {
 | 
			
		||||
            case OS_MACOS:
 | 
			
		||||
            case OS_IOS:
 | 
			
		||||
                render_apple_logo();
 | 
			
		||||
                break;
 | 
			
		||||
            case OS_WINDOWS:
 | 
			
		||||
                render_windows_logo();
 | 
			
		||||
                break;
 | 
			
		||||
            case OS_LINUX:
 | 
			
		||||
                render_arch_logo();  // this would be awkward if it's not Arch..
 | 
			
		||||
                                     // I'm not drawing the penguin for this
 | 
			
		||||
                break;
 | 
			
		||||
            case OS_UNSURE:
 | 
			
		||||
                oled_write(PSTR("OS: ?"), false);
 | 
			
		||||
                // display some symbol to represent unfamiliar OS
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Mod Key Icons (Paired)
 | 
			
		||||
static const char PROGMEM mod_icons[4][4][64] = {  // 1 = pressed
 | 
			
		||||
    {  // ctl_shft
 | 
			
		||||
/*0 0*/ {  0,240,248,  4,  2,130,194, 98, 50, 98,194,130,  2,  4,248,  0,  0,240,248,  4,  2, 66, 98,242,250,242, 98, 66,  2,  4,248,  0,  0, 31, 63,112, 96, 97, 96, 96, 96, 96, 96, 97, 32, 16, 15,  0,  0, 31, 63,112, 96, 96, 96,111,111,111, 96, 96, 32, 16, 15,  0},
 | 
			
		||||
/*0 1*/ {  0,240,248,  4,  2,130,194, 98, 50, 98,194,130,  2,  4,248,  0,  0,240,248,252,124, 60, 28, 12, 28, 60,124,252,248,240,  0,  0,  0, 31, 63,112, 96, 97, 96, 96, 96, 96, 96, 97, 32, 16, 15,  0,  0, 31, 63,127,127,127, 96, 96, 96,127,127,127, 63, 31,  0,  0},
 | 
			
		||||
/*1 0*/ {  0,240,248,252,252,124, 60,156, 60,124,252,252,248,240,  0,  0,  0,240,248,  4,  2, 66, 98,242,250,242, 98, 66,  2,  4,248,  0,  0, 31, 63,127,124,126,127,127,127,126,124,127, 63, 31,  0,  0,  0, 31, 63,112, 96, 96, 96,111,111,111, 96, 96, 32, 16, 15,  0},
 | 
			
		||||
/*1 1*/ {  0,240,248,252,252,124, 60,156, 60,124,252,252,248,240,  0,  0,  0,240,248,252,124, 60, 28, 12, 28, 60,124,252,248,240,  0,  0,  0, 31, 63,127,124,126,127,127,127,126,124,127, 63, 31,  0,  0,  0, 31, 63,127,127,127, 96, 96, 96,127,127,127, 63, 31,  0,  0},
 | 
			
		||||
    }, {  // gui_alt (linux/unknown)
 | 
			
		||||
/*0 0*/ {  0,240,248,  4,114,250,154,154,154,154,154,186, 50,  4,248,  0,  0,240,248,  4,  2,194,226, 50, 50, 50,226,194,  2,  4,248,  0,  0, 31, 63,112,102,110,108,108,108,108,108,111, 39, 16, 15,  0,  0, 31, 63,112, 96,103,103, 97, 97, 97,103,103, 32, 16, 15,  0},
 | 
			
		||||
/*0 1*/ {  0,240,248,  4,114,250,154,154,154,154,154,186, 50,  4,248,  0,  0,240,248,252,124, 60,156,156,156, 60,124,252,248,240,  0,  0,  0, 31, 63,112,102,110,108,108,108,108,108,111, 39, 16, 15,  0,  0, 31, 63,127,112,112,125,125,125,112,112,127, 63, 31,  0,  0},
 | 
			
		||||
/*1 0*/ {  0,240,248, 28, 12,204,204,204,204,204,140,156,248,240,  0,  0,  0,240,248,  4,  2,194,226, 50, 50, 50,226,194,  2,  4,248,  0,  0, 31, 63,115, 98,102,102,102,102,102, 96,113, 63, 31,  0,  0,  0, 31, 63,112, 96,103,103, 97, 97, 97,103,103, 32, 16, 15,  0},
 | 
			
		||||
/*1 1*/ {  0,240,248, 28, 12,204,204,204,204,204,140,156,248,240,  0,  0,  0,240,248,252,124, 60,156,156,156, 60,124,252,248,240,  0,  0,  0, 31, 63,115, 98,102,102,102,102,102, 96,113, 63, 31,  0,  0,  0, 31, 63,127,112,112,125,125,125,112,112,127, 63, 31,  0,  0},
 | 
			
		||||
    }, {  // gui_alt (mac/ios)
 | 
			
		||||
/*0 0*/ {  0,240,248,  4, 18, 42,242, 34, 34, 34,242, 42, 18,  4,248,  0,  0,240,248,  4,  2, 18, 18, 34,194,  2, 18, 18,  2,  4,248,  0,  0, 31, 63,112,100,106,103, 98, 98, 98,103,106, 36, 16, 15,  0,  0, 31, 63,112, 96, 96, 96, 96, 97, 98,100,100, 32, 16, 15,  0},
 | 
			
		||||
/*0 1*/ {  0,240,248,  4, 18, 42,242, 34, 34, 34,242, 42, 18,  4,248,  0,  0,240,248,252,220,220,188,124,252,220,220,252,248,240,  0,  0,  0, 31, 63,112,100,106,103, 98, 98, 98,103,106, 36, 16, 15,  0,  0, 31, 63,127,127,127,127,124,123,119,119,127, 63, 31,  0,  0},
 | 
			
		||||
/*1 0*/ {  0,240,248,220,172, 28,188,188,188, 28,172,220,248,240,  0,  0,  0,240,248,  4,  2, 18, 18, 34,194,  2, 18, 18,  2,  4,248,  0,  0, 31, 63,119,107,112,123,123,123,112,107,119, 63, 31,  0,  0,  0, 31, 63,112, 96, 96, 96, 96, 97, 98,100,100, 32, 16, 15,  0},
 | 
			
		||||
/*1 1*/ {  0,240,248,220,172, 28,188,188,188, 28,172,220,248,240,  0,  0,  0,240,248,252,220,220,188,124,252,220,220,252,248,240,  0,  0,  0, 31, 63,119,107,112,123,123,123,112,107,119, 63, 31,  0,  0,  0, 31, 63,127,127,127,127,124,123,119,119,127, 63, 31,  0,  0},
 | 
			
		||||
    }, {  // gui_alt (windows)
 | 
			
		||||
/*0 0*/ {  0,240,248,  4,  2,114,114,114,  2,114,114,114,  2,  4,248,  0,  0,240,248,  4,  2,194,226, 50, 50, 50,226,194,  2,  4,248,  0,  0, 31, 63,112, 96,103,103,103, 96,103,103,103, 32, 16, 15,  0,  0, 31, 63,112, 96,103,103, 97, 97, 97,103,103, 32, 16, 15,  0},
 | 
			
		||||
/*0 1*/ {  0,240,248,  4,  2,114,114,114,  2,114,114,114,  2,  4,248,  0,  0,240,248,252,124, 60,156,156,156, 60,124,252,248,240,  0,  0,  0, 31, 63,112, 96,103,103,103, 96,103,103,103, 32, 16, 15,  0,  0, 31, 63,127,112,112,125,125,125,112,112,127, 63, 31,  0,  0},
 | 
			
		||||
/*1 0*/ {  0,240,248,252, 28, 28, 28,252, 28, 28, 28,252,248,240,  0,  0,  0,240,248,  4,  2,194,226, 50, 50, 50,226,194,  2,  4,248,  0,  0, 31, 63,127,113,113,113,127,113,113,113,127, 63, 31,  0,  0,  0, 31, 63,112, 96,103,103, 97, 97, 97,103,103, 32, 16, 15,  0},
 | 
			
		||||
/*1 1*/ {  0,240,248,252, 28, 28, 28,252, 28, 28, 28,252,248,240,  0,  0,  0,240,248,252,124, 60,156,156,156, 60,124,252,248,240,  0,  0,  0, 31, 63,127,113,113,113,127,113,113,113,127, 63, 31,  0,  0,  0, 31, 63,127,112,112,125,125,125,112,112,127, 63, 31,  0,  0},
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void render_ctl_shift(int ctl, int shft) {
 | 
			
		||||
    oled_write_raw_P(
 | 
			
		||||
        mod_icons[0][2*ctl + shft],
 | 
			
		||||
        sizeof(mod_icons[0][2*ctl + shft])
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void render_gui_alt(int gui, int alt) {
 | 
			
		||||
    int os_num;
 | 
			
		||||
    os_variant_t detected_os = detected_host_os();
 | 
			
		||||
    switch (detected_os) {
 | 
			
		||||
        case OS_MACOS:
 | 
			
		||||
        case OS_IOS:
 | 
			
		||||
            os_num = 1;
 | 
			
		||||
            break;
 | 
			
		||||
        case OS_WINDOWS:
 | 
			
		||||
            os_num = 2;
 | 
			
		||||
            break;
 | 
			
		||||
        default:
 | 
			
		||||
            os_num = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    oled_write_raw_P(
 | 
			
		||||
        mod_icons[1 + os_num][2*gui + alt],
 | 
			
		||||
        sizeof(mod_icons[1 + os_num][2*gui + alt])
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void render_mod_status(uint8_t mod_status) {
 | 
			
		||||
    bool is_caps = host_keyboard_led_state().caps_lock;
 | 
			
		||||
    #ifdef CAPS_WORD_ENABLE
 | 
			
		||||
    is_caps |= is_caps_word_on();
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    oled_set_cursor(0, 5);
 | 
			
		||||
    render_ctl_shift(
 | 
			
		||||
        (mod_status & MOD_MASK_CTRL) ? 1 : 0,
 | 
			
		||||
        (mod_status & MOD_MASK_SHIFT || is_caps) ? 1 : 0
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    oled_set_cursor(0, 7); 
 | 
			
		||||
    render_gui_alt(
 | 
			
		||||
        (mod_status & MOD_MASK_GUI) ? 1 : 0,
 | 
			
		||||
        (mod_status & MOD_MASK_ALT) ? 1 : 0
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Display Words-per-minute
 | 
			
		||||
int peak_wpm, curr_wpm;
 | 
			
		||||
void render_wpm(void) {
 | 
			
		||||
    curr_wpm = get_current_wpm();
 | 
			
		||||
 | 
			
		||||
    // get WPM Peak | reset if wpm is 0
 | 
			
		||||
    oled_set_cursor(1, 12);
 | 
			
		||||
    if (curr_wpm == 0) { peak_wpm = 0; }
 | 
			
		||||
    if (curr_wpm > peak_wpm || last_input_activity_elapsed() > 3500) {
 | 
			
		||||
        peak_wpm = curr_wpm;
 | 
			
		||||
    }
 | 
			
		||||
    oled_write(get_u8_str(peak_wpm, '0'), false);
 | 
			
		||||
 | 
			
		||||
    oled_set_cursor(0, 13);
 | 
			
		||||
    oled_write(PSTR("-----"), false);
 | 
			
		||||
    oled_set_cursor(1, 14);
 | 
			
		||||
    oled_write(get_u8_str(get_current_wpm(), '0'), false);
 | 
			
		||||
    oled_set_cursor(1, 15);
 | 
			
		||||
    oled_write(PSTR("WPM"), false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void render_caps_lock(void) {
 | 
			
		||||
    oled_set_cursor(1, 10);
 | 
			
		||||
    oled_write_P(
 | 
			
		||||
        host_keyboard_led_state().caps_lock ? PSTR("CAPS") : PSTR("\n"),
 | 
			
		||||
        false
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void master_oled(void) {  // Left Side
 | 
			
		||||
    render_current_layer();
 | 
			
		||||
    // render_caps_lock();  // don't need if I have mod key status active
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void slave_oled(void) {  // Right Side
 | 
			
		||||
    render_current_layer();
 | 
			
		||||
    render_mod_status(get_mods() | get_oneshot_mods());
 | 
			
		||||
    render_wpm();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool oled_task_user() {
 | 
			
		||||
    if(is_keyboard_master()) master_oled();
 | 
			
		||||
    else slave_oled();
 | 
			
		||||
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										25
									
								
								keyboards/boardsource/unicorne/keymaps/david/keymap.c.old
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								keyboards/boardsource/unicorne/keymaps/david/keymap.c.old
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* THIS FILE WAS GENERATED!
 | 
			
		||||
 *
 | 
			
		||||
 * This file was generated by qmk json2c. You may or may not want to
 | 
			
		||||
 * edit it directly.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
	[0] = LAYOUT_split_3x6_3(KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC, KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT),
 | 
			
		||||
	[1] = LAYOUT_split_3x6_3(_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
 | 
			
		||||
	[2] = LAYOUT_split_3x6_3(QK_BOOT, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUI, RGB_SAI, RGB_MOD, RGB_TOG, _______, EE_CLR, _______, _______, _______, _______, _______, RGB_VAD, RGB_HUD, RGB_SAD, RGB_RMOD, CK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
 | 
			
		||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
#endif // defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										25
									
								
								keyboards/boardsource/unicorne/keymaps/default/keymap.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								keyboards/boardsource/unicorne/keymaps/default/keymap.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
{
 | 
			
		||||
    "keyboard": "boardsource/unicorne",
 | 
			
		||||
    "keymap": "default",
 | 
			
		||||
    "layout": "LAYOUT_split_3x6_3",
 | 
			
		||||
    "layers": [
 | 
			
		||||
        [
 | 
			
		||||
            "KC_TAB",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",          "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_BSPC",
 | 
			
		||||
            "KC_LCTL", "KC_A",    "KC_S",    "KC_D",    "KC_F",    "KC_G",          "KC_H",    "KC_J",    "KC_K",    "KC_L",    "KC_SCLN", "KC_QUOT",
 | 
			
		||||
            "KC_LSFT", "KC_Z",    "KC_X",    "KC_C",    "KC_V",    "KC_B",          "KC_N",    "KC_M",    "KC_COMM", "KC_DOT",  "KC_SLSH", "KC_ESC",
 | 
			
		||||
                                             "KC_LGUI", "MO(1)",   "KC_SPC",        "KC_ENT",  "MO(2)",   "KC_RALT"
 | 
			
		||||
        ],
 | 
			
		||||
        [
 | 
			
		||||
            "_______", "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",          "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "_______",
 | 
			
		||||
            "_______", "KC_EXLM", "KC_AT",   "KC_HASH", "KC_DLR",  "KC_PERC",       "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______",
 | 
			
		||||
            "_______", "_______", "_______", "_______", "_______", "_______",       "_______", "_______", "_______", "_______", "_______", "_______",
 | 
			
		||||
                                             "_______", "_______", "_______",       "_______", "_______", "_______"
 | 
			
		||||
        ],
 | 
			
		||||
        [
 | 
			
		||||
            "QK_BOOT", "_______", "_______", "_______", "_______", "_______",       "RGB_VAI", "RGB_HUI", "RGB_SAI", "RGB_MOD",  "RGB_TOG", "_______",
 | 
			
		||||
            "EE_CLR",  "_______", "_______", "_______", "_______", "_______",       "RGB_VAD", "RGB_HUD", "RGB_SAD", "RGB_RMOD", "CK_TOGG", "_______",
 | 
			
		||||
            "_______", "_______", "_______", "_______", "_______", "_______",       "_______", "_______", "_______", "_______",  "_______", "_______",
 | 
			
		||||
                                             "_______", "_______", "_______",       "_______", "_______", "_______"
 | 
			
		||||
        ]
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								keyboards/boardsource/unicorne/keymaps/via/keymap.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/boardsource/unicorne/keymaps/via/keymap.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
{
 | 
			
		||||
    "keyboard": "boardsource/unicorne",
 | 
			
		||||
    "keymap": "via",
 | 
			
		||||
    "layout": "LAYOUT_split_3x6_3",
 | 
			
		||||
    "config": {
 | 
			
		||||
        "features": {
 | 
			
		||||
            "via": true
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "layers": [
 | 
			
		||||
        [
 | 
			
		||||
            "KC_TAB",  "KC_Q",    "KC_W",    "KC_E",    "KC_R",    "KC_T",          "KC_Y",    "KC_U",    "KC_I",    "KC_O",    "KC_P",    "KC_BSPC",
 | 
			
		||||
            "KC_LCTL", "KC_A",    "KC_S",    "KC_D",    "KC_F",    "KC_G",          "KC_H",    "KC_J",    "KC_K",    "KC_L",    "KC_SCLN", "KC_QUOT",
 | 
			
		||||
            "KC_LSFT", "KC_Z",    "KC_X",    "KC_C",    "KC_V",    "KC_B",          "KC_N",    "KC_M",    "KC_COMM", "KC_DOT",  "KC_SLSH", "KC_ESC",
 | 
			
		||||
                                             "KC_LGUI", "MO(1)",   "KC_SPC",        "KC_ENT",  "MO(2)",   "KC_RALT"
 | 
			
		||||
        ],
 | 
			
		||||
        [
 | 
			
		||||
            "_______", "KC_1",    "KC_2",    "KC_3",    "KC_4",    "KC_5",          "KC_6",    "KC_7",    "KC_8",    "KC_9",    "KC_0",    "_______",
 | 
			
		||||
            "_______", "KC_EXLM", "KC_AT",   "KC_HASH", "KC_DLR",  "KC_PERC",       "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "_______",
 | 
			
		||||
            "_______", "_______", "_______", "_______", "_______", "_______",       "_______", "_______", "_______", "_______", "_______", "_______",
 | 
			
		||||
                                             "_______", "_______", "_______",       "_______", "_______", "_______"
 | 
			
		||||
        ],
 | 
			
		||||
        [
 | 
			
		||||
            "QK_BOOT", "_______", "_______", "_______", "_______", "_______",       "RGB_VAI", "RGB_HUI", "RGB_SAI", "RGB_MOD",  "RGB_TOG", "_______",
 | 
			
		||||
            "EE_CLR",  "_______", "_______", "_______", "_______", "_______",       "RGB_VAD", "RGB_HUD", "RGB_SAD", "RGB_RMOD", "CK_TOGG", "_______",
 | 
			
		||||
            "_______", "_______", "_______", "_______", "_______", "_______",       "_______", "_______", "_______", "_______",  "_______", "_______",
 | 
			
		||||
                                             "_______", "_______", "_______",       "_______", "_______", "_______"
 | 
			
		||||
        ]
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								keyboards/boardsource/unicorne/mcuconf.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								keyboards/boardsource/unicorne/mcuconf.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
// Copyright 2022 jack (@waffle87)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
#pragma once
 | 
			
		||||
#include_next <mcuconf.h>
 | 
			
		||||
 | 
			
		||||
#undef RP_I2C_USE_I2C1
 | 
			
		||||
#define RP_I2C_USE_I2C1 TRUE
 | 
			
		||||
 | 
			
		||||
#undef RP_PWM_USE_PWM6
 | 
			
		||||
#define RP_PWM_USE_PWM6 TRUE
 | 
			
		||||
 | 
			
		||||
#undef RP_ADC_USE_ADC1
 | 
			
		||||
#define RP_ADC_USE_ADC1 TRUE
 | 
			
		||||
							
								
								
									
										25
									
								
								keyboards/boardsource/unicorne/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								keyboards/boardsource/unicorne/readme.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
# Unicorne
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
* Keyboard Maintainer: [waffle87](https://github.com/waffle87)
 | 
			
		||||
* Hardware Supported: Unicorne PCBs w/ integrated RP2040 microcontroller
 | 
			
		||||
* Hardware Availability: [boardsource.xyz](https://boardsource.xyz)
 | 
			
		||||
 | 
			
		||||
Make example for this keyboard (after setting up your build environment):
 | 
			
		||||
 | 
			
		||||
    make boardsource/unicorne:default
 | 
			
		||||
 | 
			
		||||
Flashing example for this keyboard:
 | 
			
		||||
 | 
			
		||||
    make boardsource/unicorne:default:flash
 | 
			
		||||
 | 
			
		||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
 | 
			
		||||
 | 
			
		||||
## Bootloader
 | 
			
		||||
 | 
			
		||||
Enter the bootloader in 3 ways:
 | 
			
		||||
 | 
			
		||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard
 | 
			
		||||
* **Physical reset button**: Briefly press the button on the back of the PCB
 | 
			
		||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
 | 
			
		||||
							
								
								
									
										8
									
								
								keyboards/boardsource/unicorne/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								keyboards/boardsource/unicorne/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
SERIAL_DRIVER = vendor
 | 
			
		||||
AUDIO_DRIVER = pwm_hardware
 | 
			
		||||
POINTING_DEVICE_DRIVER = analog_joystick
 | 
			
		||||
BOOTLOADER = rp2040
 | 
			
		||||
LTO_ENABLE = yes
 | 
			
		||||
WPM_ENABLE = yes
 | 
			
		||||
TAP_DANCE_ENABLE = yes
 | 
			
		||||
OS_DETECTION_ENABLE = yes
 | 
			
		||||
							
								
								
									
										39
									
								
								keyboards/boardsource/unicorne/unicorne.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								keyboards/boardsource/unicorne/unicorne.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
// Copyright 2023 jack (@waffle87)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
#include "unicorne.h"
 | 
			
		||||
 | 
			
		||||
/*  DEFAULT DISPLAY:
 | 
			
		||||
#ifdef OLED_ENABLE
 | 
			
		||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
 | 
			
		||||
    if (!is_keyboard_master()) {
 | 
			
		||||
        return OLED_ROTATION_180;
 | 
			
		||||
    }
 | 
			
		||||
    return rotation;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool oled_task_kb(void) {
 | 
			
		||||
    if (!oled_task_user()) {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
    if (is_keyboard_master()) {
 | 
			
		||||
        switch (get_highest_layer(layer_state)) {
 | 
			
		||||
            case 0:
 | 
			
		||||
                oled_write_raw(layer_zero, sizeof(layer_zero));
 | 
			
		||||
                break;
 | 
			
		||||
            case 1:
 | 
			
		||||
                oled_write_raw(layer_one, sizeof(layer_one));
 | 
			
		||||
                break;
 | 
			
		||||
            case 2:
 | 
			
		||||
                oled_write_raw(layer_two, sizeof(layer_two));
 | 
			
		||||
                break;
 | 
			
		||||
            case 3:
 | 
			
		||||
                oled_write_raw(layer_three, sizeof(layer_three));
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        oled_write_raw(logo, sizeof(logo));
 | 
			
		||||
    }
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
*/
 | 
			
		||||
							
								
								
									
										194
									
								
								keyboards/boardsource/unicorne/unicorne.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								keyboards/boardsource/unicorne/unicorne.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,194 @@
 | 
			
		|||
// Copyright 2023 jack (@waffle87)
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
#ifdef OLED_ENABLE
 | 
			
		||||
// clang-format off
 | 
			
		||||
static const char PROGMEM logo[] = {
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 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, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    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, 0xff, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
 | 
			
		||||
    0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xe7, 0xe7, 0xe3,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0,
 | 
			
		||||
    0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0,
 | 
			
		||||
    0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0,
 | 
			
		||||
    0xc0, 0xc0, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x7e, 0xff, 0xff, 0xff, 0xe7, 0xc1, 0x81, 0x81, 0x81, 0xc1, 0x00, 0x00, 0x7f,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xe3, 0xc1, 0x81, 0x81, 0xc1, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x3c, 0x00, 0x00,
 | 
			
		||||
    0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
 | 
			
		||||
    0x03, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff,
 | 
			
		||||
    0xcd, 0x8c, 0x8c, 0x8c, 0x8d, 0xcf, 0xcf, 0xcf, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07,
 | 
			
		||||
    0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03,
 | 
			
		||||
    0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static const char PROGMEM layer_zero[] = {
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 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, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
 | 
			
		||||
    0xc0, 0xc0, 0xc0, 0xc0, 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, 0xc0, 0xc0, 0xc0,
 | 
			
		||||
    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
 | 
			
		||||
    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, 0xf0,
 | 
			
		||||
    0xfc, 0x0e, 0x07, 0x03, 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, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
 | 
			
		||||
    0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60,
 | 
			
		||||
    0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07,
 | 
			
		||||
    0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0f, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const char PROGMEM layer_one[] = {
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
 | 
			
		||||
    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, 0x80,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
 | 
			
		||||
    0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
 | 
			
		||||
    0x3f, 0x70, 0xe0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60,
 | 
			
		||||
    0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07,
 | 
			
		||||
    0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
 | 
			
		||||
    0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
 | 
			
		||||
    0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const char PROGMEM layer_two[] = {
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
 | 
			
		||||
    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, 0x80, 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, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
 | 
			
		||||
    0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
 | 
			
		||||
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x38, 0x1f, 0x07,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60,
 | 
			
		||||
    0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07,
 | 
			
		||||
    0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
 | 
			
		||||
    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0f, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const char PROGMEM layer_three[] = {
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x18, 0x30, 0x60, 0xe0, 0xc0, 0x80,
 | 
			
		||||
    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, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
 | 
			
		||||
    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0,
 | 
			
		||||
    0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc8, 0xf8, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x0f, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03,
 | 
			
		||||
    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, 0x01, 0x01, 0x03, 0x07, 0x0e, 0xfc, 0xf0,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x80, 0x00,
 | 
			
		||||
    0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf0, 0x60,
 | 
			
		||||
    0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x01, 0x03, 0x07,
 | 
			
		||||
    0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
    0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0f, 0x00,
 | 
			
		||||
    0x00, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
};
 | 
			
		||||
// clang-format on
 | 
			
		||||
#endif
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue