Fixup sofle (#22934)
* initial * Update keyboards/sofle/info.json Co-authored-by: Joel Challis <git@zvecr.com> * Update keyboards/sofle/info.json Co-authored-by: Drashna Jaelre <drashna@live.com> --------- Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Drashna Jaelre <drashna@live.com>
This commit is contained in:
		
							parent
							
								
									2c3d0126ba
								
							
						
					
					
						commit
						e446366326
					
				
					 20 changed files with 238 additions and 457 deletions
				
			
		
							
								
								
									
										117
									
								
								keyboards/sofle/info.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								keyboards/sofle/info.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,117 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "keyboard_name": "Sofle",
 | 
				
			||||||
 | 
					    "features": {
 | 
				
			||||||
 | 
					        "bootmagic": true,
 | 
				
			||||||
 | 
					        "extrakey": true,
 | 
				
			||||||
 | 
					        "mousekey": true,
 | 
				
			||||||
 | 
					        "nkro": true,
 | 
				
			||||||
 | 
					        "encoder": true,
 | 
				
			||||||
 | 
					        "oled": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "build": {
 | 
				
			||||||
 | 
					        "lto": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "usb": {
 | 
				
			||||||
 | 
					        "vid": "0xFC32"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "diode_direction": "COL2ROW",
 | 
				
			||||||
 | 
					    "qmk": {
 | 
				
			||||||
 | 
					        "tap_keycode_delay": 10
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "split": {
 | 
				
			||||||
 | 
					        "enabled": true,
 | 
				
			||||||
 | 
					        "soft_serial_pin": "D2",
 | 
				
			||||||
 | 
					        "transport": {
 | 
				
			||||||
 | 
					            "sync": {
 | 
				
			||||||
 | 
					                "matrix_state": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "ws2812": {
 | 
				
			||||||
 | 
					        "pin": "D3"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "rgblight": {
 | 
				
			||||||
 | 
					        "led_count": 72,
 | 
				
			||||||
 | 
					        "split_count": [36, 36],
 | 
				
			||||||
 | 
					        "sleep": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "rgb_matrix": {
 | 
				
			||||||
 | 
					        "driver": "ws2812",
 | 
				
			||||||
 | 
					        "split_count": [36, 36],
 | 
				
			||||||
 | 
					        "sleep": true,
 | 
				
			||||||
 | 
					        "layout": [
 | 
				
			||||||
 | 
					            {"x": 96, "y": 40, "flags": 8},
 | 
				
			||||||
 | 
					            {"x": 16, "y": 20, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 48, "y": 10, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 80, "y": 18, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 88, "y": 60, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 56, "y": 57, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 24, "y": 60, "flags": 2},
 | 
				
			||||||
 | 
					            {"matrix": [4, 0], "x": 32, "y": 57, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [3, 0], "x": 0, "y": 48, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [2, 0], "x": 0, "y": 36, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [1, 0], "x": 0, "y": 24, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [0, 0], "x": 0, "y": 12, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [0, 1], "x": 16, "y": 12, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [2, 1], "x": 16, "y": 36, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [3, 1], "x": 16, "y": 48, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [4, 1], "x": 48, "y": 55, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [4, 2], "x": 64, "y": 57, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [3, 2], "x": 32, "y": 45, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [2, 2], "x": 32, "y": 33, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [1, 2], "x": 32, "y": 21, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [0, 2], "x": 32, "y": 9, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [0, 3], "x": 48, "y": 7, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [1, 3], "x": 48, "y": 19, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [2, 3], "x": 48, "y": 31, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [3, 3], "x": 48, "y": 43, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [4, 3], "x": 80, "y": 59, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [4, 4], "x": 96, "y": 64, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [3, 4], "x": 64, "y": 45, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [2, 4], "x": 64, "y": 33, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [1, 4], "x": 64, "y": 21, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [0, 4], "x": 64, "y": 9, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [0, 5], "x": 80, "y": 10, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [1, 5], "x": 80, "y": 22, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [2, 5], "x": 80, "y": 34, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [3, 5], "x": 80, "y": 47, "flags": 4},
 | 
				
			||||||
 | 
					            {"x": 128, "y": 40, "flags": 8},
 | 
				
			||||||
 | 
					            {"x": 208, "y": 20, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 176, "y": 10, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 144, "y": 18, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 136, "y": 60, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 168, "y": 57, "flags": 2},
 | 
				
			||||||
 | 
					            {"x": 200, "y": 60, "flags": 2},
 | 
				
			||||||
 | 
					            {"matrix": [9, 0], "x": 192, "y": 57, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [8, 0], "x": 224, "y": 48, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [7, 0], "x": 224, "y": 36, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [6, 0], "x": 224, "y": 24, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [5, 0], "x": 224, "y": 12, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [5, 1], "x": 208, "y": 12, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [6, 1], "x": 208, "y": 24, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [7, 1], "x": 208, "y": 36, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [8, 1], "x": 208, "y": 48, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [9, 1], "x": 176, "y": 55, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [9, 2], "x": 160, "y": 57, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [8, 2], "x": 192, "y": 45, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [7, 2], "x": 192, "y": 33, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [6, 2], "x": 192, "y": 21, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [5, 2], "x": 192, "y": 9, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [5, 3], "x": 176, "y": 7, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [6, 3], "x": 176, "y": 19, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [7, 3], "x": 176, "y": 31, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [8, 3], "x": 176, "y": 43, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [9, 3], "x": 144, "y": 59, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [9, 4], "x": 128, "y": 64, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [8, 4], "x": 160, "y": 45, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [7, 4], "x": 160, "y": 33, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [6, 4], "x": 160, "y": 21, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [5, 4], "x": 160, "y": 9, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [5, 5], "x": 144, "y": 10, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [6, 5], "x": 144, "y": 22, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [7, 5], "x": 144, "y": 34, "flags": 4},
 | 
				
			||||||
 | 
					            {"matrix": [8, 5], "x": 144, "y": 47, "flags": 4}
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										0
									
								
								keyboards/sofle/keyhive/config.h
									
										
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								keyboards/sofle/keyhive/config.h
									
										
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
					@ -1,14 +1,11 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "keyboard_name": "Sofle",
 | 
					    "keyboard_name": "Sofle",
 | 
				
			||||||
    "manufacturer": "Keyhive",
 | 
					    "manufacturer": "Keyhive",
 | 
				
			||||||
 | 
					    "development_board": "elite_c",
 | 
				
			||||||
    "usb": {
 | 
					    "usb": {
 | 
				
			||||||
        "vid": "0xFC32",
 | 
					 | 
				
			||||||
        "pid": "0x1287",
 | 
					        "pid": "0x1287",
 | 
				
			||||||
        "device_version": "0.0.2"
 | 
					        "device_version": "0.0.2"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "ws2812": {
 | 
					 | 
				
			||||||
        "pin": "D3"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "rgblight": {
 | 
					    "rgblight": {
 | 
				
			||||||
        "hue_steps": 10,
 | 
					        "hue_steps": 10,
 | 
				
			||||||
        "led_count": 74,
 | 
					        "led_count": 74,
 | 
				
			||||||
| 
						 | 
					@ -21,14 +18,12 @@
 | 
				
			||||||
        "cols": ["B6", "B2", "B3", "B1", "F7", "F6", null],
 | 
					        "cols": ["B6", "B2", "B3", "B1", "F7", "F6", null],
 | 
				
			||||||
        "rows": ["C6", "D7", "E6", "B4", "B5"]
 | 
					        "rows": ["C6", "D7", "E6", "B4", "B5"]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "diode_direction": "COL2ROW",
 | 
					 | 
				
			||||||
    "encoder": {
 | 
					    "encoder": {
 | 
				
			||||||
        "rotary": [
 | 
					        "rotary": [
 | 
				
			||||||
            {"pin_a": "F5", "pin_b": "F4"}
 | 
					            {"pin_a": "F5", "pin_b": "F4"}
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "split": {
 | 
					    "split": {
 | 
				
			||||||
        "soft_serial_pin": "D2",
 | 
					 | 
				
			||||||
        "encoder": {
 | 
					        "encoder": {
 | 
				
			||||||
            "right": {
 | 
					            "right": {
 | 
				
			||||||
                "rotary": [
 | 
					                "rotary": [
 | 
				
			||||||
| 
						 | 
					@ -44,17 +39,11 @@
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "transport": {
 | 
					        "transport": {
 | 
				
			||||||
            "sync": {
 | 
					            "sync": {
 | 
				
			||||||
                "matrix_state": true,
 | 
					 | 
				
			||||||
                "oled": true,
 | 
					                "oled": true,
 | 
				
			||||||
                "wpm": true
 | 
					                "wpm": true
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "qmk": {
 | 
					 | 
				
			||||||
        "tap_keycode_delay": 10
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "processor": "atmega32u4",
 | 
					 | 
				
			||||||
    "bootloader": "atmel-dfu",
 | 
					 | 
				
			||||||
    "layouts": {
 | 
					    "layouts": {
 | 
				
			||||||
        "LAYOUT": {
 | 
					        "LAYOUT": {
 | 
				
			||||||
            "layout": [
 | 
					            "layout": [
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										0
									
								
								keyboards/sofle/keyhive/readme.md
									
										
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								keyboards/sofle/keyhive/readme.md
									
										
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
								
								
									
										17
									
								
								keyboards/sofle/keyhive/rules.mk
									
										
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										17
									
								
								keyboards/sofle/keyhive/rules.mk
									
										
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
					@ -1,16 +1 @@
 | 
				
			||||||
# Build Options
 | 
					# This file intentionally left blank
 | 
				
			||||||
#   change yes to no to disable
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 | 
					 | 
				
			||||||
MOUSEKEY_ENABLE = no        # Mouse keys
 | 
					 | 
				
			||||||
EXTRAKEY_ENABLE = yes       # Audio control and System control
 | 
					 | 
				
			||||||
CONSOLE_ENABLE = no         # Console for debug
 | 
					 | 
				
			||||||
COMMAND_ENABLE = no         # Commands for debug and configuration
 | 
					 | 
				
			||||||
NKRO_ENABLE = yes           # Enable N-Key Rollover
 | 
					 | 
				
			||||||
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 | 
					 | 
				
			||||||
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
 | 
					 | 
				
			||||||
AUDIO_ENABLE = no           # Audio output
 | 
					 | 
				
			||||||
ENCODER_ENABLE = yes
 | 
					 | 
				
			||||||
LTO_ENABLE = yes
 | 
					 | 
				
			||||||
SPLIT_KEYBOARD = yes
 | 
					 | 
				
			||||||
OLED_ENABLE = yes
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					// Copyright 2023 QMK
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: GPL-2.0-or-later
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum sofle_layers {
 | 
					enum sofle_layers {
 | 
				
			||||||
| 
						 | 
					@ -10,16 +12,14 @@ enum sofle_layers {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum custom_keycodes {
 | 
					enum custom_keycodes {
 | 
				
			||||||
    KC_QWERTY = SAFE_RANGE,
 | 
					    KC_QWERTY = QK_USER,
 | 
				
			||||||
    KC_COLEMAK,
 | 
					    KC_COLEMAK,
 | 
				
			||||||
    KC_PRVWD,
 | 
					    KC_PRVWD,
 | 
				
			||||||
    KC_NXTWD,
 | 
					    KC_NXTWD,
 | 
				
			||||||
    KC_LSTRT,
 | 
					    KC_LSTRT,
 | 
				
			||||||
    KC_LEND,
 | 
					    KC_LEND
 | 
				
			||||||
    KC_DLINE
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * QWERTY
 | 
					 * QWERTY
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  KC_ESC,   KC_Q,   KC_W,    KC_E,    KC_R,    KC_T,                     KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,  KC_BSPC,
 | 
					  KC_ESC,   KC_Q,   KC_W,    KC_E,    KC_R,    KC_T,                     KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,  KC_BSPC,
 | 
				
			||||||
  KC_TAB,   KC_A,   KC_S,    KC_D,    KC_F,    KC_G,                     KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN,  KC_QUOT,
 | 
					  KC_TAB,   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_MUTE,     XXXXXXX,KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_RSFT,
 | 
					  KC_LSFT,  KC_Z,   KC_X,    KC_C,    KC_V,    KC_B, KC_MUTE,     XXXXXXX,KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_RSFT,
 | 
				
			||||||
                 KC_LGUI,KC_LALT,KC_LCTL, MO(_LOWER), KC_ENT,      KC_SPC,  MO(_RAISE), KC_RCTL, KC_RALT, KC_RGUI
 | 
					                 KC_LGUI,KC_LALT,KC_LCTL, TL_LOWR, KC_ENT,      KC_SPC,  TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI
 | 
				
			||||||
),
 | 
					),
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * COLEMAK
 | 
					 * COLEMAK
 | 
				
			||||||
| 
						 | 
					@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  KC_ESC,   KC_Q,   KC_W,    KC_F,    KC_P,    KC_G,                      KC_J,    KC_L,    KC_U,    KC_Y, KC_SCLN,  KC_BSPC,
 | 
					  KC_ESC,   KC_Q,   KC_W,    KC_F,    KC_P,    KC_G,                      KC_J,    KC_L,    KC_U,    KC_Y, KC_SCLN,  KC_BSPC,
 | 
				
			||||||
  KC_TAB,   KC_A,   KC_R,    KC_S,    KC_T,    KC_D,                      KC_H,    KC_N,    KC_E,    KC_I,    KC_O,  KC_QUOT,
 | 
					  KC_TAB,   KC_A,   KC_R,    KC_S,    KC_T,    KC_D,                      KC_H,    KC_N,    KC_E,    KC_I,    KC_O,  KC_QUOT,
 | 
				
			||||||
  KC_LSFT,  KC_Z,   KC_X,    KC_C,    KC_V,    KC_B, KC_MUTE,      XXXXXXX,KC_K,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_RSFT,
 | 
					  KC_LSFT,  KC_Z,   KC_X,    KC_C,    KC_V,    KC_B, KC_MUTE,      XXXXXXX,KC_K,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_RSFT,
 | 
				
			||||||
                 KC_LGUI,KC_LALT,KC_LCTL,MO(_LOWER), KC_ENT,        KC_SPC,  MO(_RAISE), KC_RCTL, KC_RALT, KC_RGUI
 | 
					                 KC_LGUI,KC_LALT,KC_LCTL,TL_LOWR, KC_ENT,        KC_SPC,  TL_UPPR, KC_RCTL, KC_RALT, KC_RGUI
 | 
				
			||||||
),
 | 
					),
 | 
				
			||||||
/* LOWER
 | 
					/* LOWER
 | 
				
			||||||
 * ,-----------------------------------------.                    ,-----------------------------------------.
 | 
					 * ,-----------------------------------------.                    ,-----------------------------------------.
 | 
				
			||||||
| 
						 | 
					@ -104,9 +104,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
[_RAISE] = LAYOUT(
 | 
					[_RAISE] = LAYOUT(
 | 
				
			||||||
  _______, _______ , _______ , _______ , _______ , _______,                           _______,  _______  , _______,  _______ ,  _______ ,_______,
 | 
					  _______, _______ , _______ , _______ , _______ , _______,                           _______,  _______  , _______,  _______ ,  _______ ,_______,
 | 
				
			||||||
  _______,  KC_INS,  KC_PSCR,   KC_APP,  XXXXXXX, XXXXXXX,                        KC_PGUP, KC_PRVWD,   KC_UP, KC_NXTWD,KC_DLINE, KC_BSPC,
 | 
					  _______,  KC_INS,  KC_PSCR,   KC_APP,  XXXXXXX, XXXXXXX,                        KC_PGUP, KC_PRVWD,   KC_UP, KC_NXTWD,C(KC_BSPC), KC_BSPC,
 | 
				
			||||||
  _______, KC_LALT,  KC_LCTL,  KC_LSFT,  XXXXXXX, KC_CAPS,                       KC_PGDN,  KC_LEFT, KC_DOWN, KC_RGHT,  KC_DEL, KC_BSPC,
 | 
					  _______, KC_LALT,  KC_LCTL,  KC_LSFT,  XXXXXXX, KC_CAPS,                       KC_PGDN,  KC_LEFT, KC_DOWN, KC_RGHT,  KC_DEL, KC_BSPC,
 | 
				
			||||||
  _______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX,  _______,       _______,  XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND,   XXXXXXX, _______,
 | 
					  _______, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), XXXXXXX,  _______,       _______,  XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND,   XXXXXXX, _______,
 | 
				
			||||||
                         _______, _______, _______, _______, _______,       _______, _______, _______, _______, _______
 | 
					                         _______, _______, _______, _______, _______,       _______, _______, _______, _______, _______
 | 
				
			||||||
),
 | 
					),
 | 
				
			||||||
/* ADJUST
 | 
					/* ADJUST
 | 
				
			||||||
| 
						 | 
					@ -132,86 +132,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef OLED_ENABLE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void render_logo(void) {
 | 
					 | 
				
			||||||
    static const char PROGMEM qmk_logo[] = {
 | 
					 | 
				
			||||||
        0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
 | 
					 | 
				
			||||||
        0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
 | 
					 | 
				
			||||||
        0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    oled_write_P(qmk_logo, false);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void print_status_narrow(void) {
 | 
					 | 
				
			||||||
    // Print current mode
 | 
					 | 
				
			||||||
    oled_write_P(PSTR("\n\n"), false);
 | 
					 | 
				
			||||||
    oled_write_ln_P(PSTR("MODE"), false);
 | 
					 | 
				
			||||||
    oled_write_ln_P(PSTR(""), false);
 | 
					 | 
				
			||||||
    if (keymap_config.swap_lctl_lgui) {
 | 
					 | 
				
			||||||
        oled_write_ln_P(PSTR("MAC"), false);
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        oled_write_ln_P(PSTR("WIN"), false);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    switch (get_highest_layer(default_layer_state)) {
 | 
					 | 
				
			||||||
        case _QWERTY:
 | 
					 | 
				
			||||||
            oled_write_ln_P(PSTR("Qwrt"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case _COLEMAK:
 | 
					 | 
				
			||||||
            oled_write_ln_P(PSTR("Clmk"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Undef"), false);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    oled_write_P(PSTR("\n\n"), false);
 | 
					 | 
				
			||||||
    // Print current layer
 | 
					 | 
				
			||||||
    oled_write_ln_P(PSTR("LAYER"), false);
 | 
					 | 
				
			||||||
    switch (get_highest_layer(layer_state)) {
 | 
					 | 
				
			||||||
        case _COLEMAK:
 | 
					 | 
				
			||||||
        case _QWERTY:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Base\n"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case _RAISE:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Raise"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case _LOWER:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Lower"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case _ADJUST:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Adj\n"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            oled_write_ln_P(PSTR("Undef"), false);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    oled_write_P(PSTR("\n\n"), false);
 | 
					 | 
				
			||||||
    led_t led_usb_state = host_keyboard_led_state();
 | 
					 | 
				
			||||||
    oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
					 | 
				
			||||||
    if (is_keyboard_master()) {
 | 
					 | 
				
			||||||
        return OLED_ROTATION_270;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return rotation;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool oled_task_user(void) {
 | 
					 | 
				
			||||||
    if (is_keyboard_master()) {
 | 
					 | 
				
			||||||
        print_status_narrow();
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        render_logo();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return false;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
layer_state_t layer_state_set_user(layer_state_t state) {
 | 
					 | 
				
			||||||
    return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
					bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
    switch (keycode) {
 | 
					    switch (keycode) {
 | 
				
			||||||
        case KC_QWERTY:
 | 
					        case KC_QWERTY:
 | 
				
			||||||
| 
						 | 
					@ -298,73 +218,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case KC_DLINE:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                register_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                register_code(KC_BSPC);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                unregister_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                unregister_code(KC_BSPC);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case KC_COPY:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                register_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                register_code(KC_C);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                unregister_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                unregister_code(KC_C);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
        case KC_PASTE:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                register_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                register_code(KC_V);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                unregister_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                unregister_code(KC_V);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
        case KC_CUT:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                register_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                register_code(KC_X);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                unregister_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                unregister_code(KC_X);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case KC_UNDO:
 | 
					 | 
				
			||||||
            if (record->event.pressed) {
 | 
					 | 
				
			||||||
                register_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                register_code(KC_Z);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                unregister_mods(mod_config(MOD_LCTL));
 | 
					 | 
				
			||||||
                unregister_code(KC_Z);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            return false;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef ENCODER_ENABLE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool encoder_update_user(uint8_t index, bool clockwise) {
 | 
					 | 
				
			||||||
    if (index == 0) {
 | 
					 | 
				
			||||||
        if (clockwise) {
 | 
					 | 
				
			||||||
            tap_code(KC_VOLU);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            tap_code(KC_VOLD);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    } else if (index == 1) {
 | 
					 | 
				
			||||||
        if (clockwise) {
 | 
					 | 
				
			||||||
            tap_code(KC_PGDN);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            tap_code(KC_PGUP);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,10 @@
 | 
				
			||||||

 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Default keymap for Sofle Keyboard
 | 
					# Default keymap for Sofle Keyboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4)
 | 
					Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
Features:
 | 
					Features:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift)
 | 
					- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift)
 | 
				
			||||||
| 
						 | 
					@ -15,5 +13,3 @@ Features:
 | 
				
			||||||
- Modes for Mac vs Linux/Win support -> different order of modifiers and different action shortcuts on the "UPPER" layer (the red one in the image). Designed to simplify transtions when switching between operating systems often.
 | 
					- Modes for Mac vs Linux/Win support -> different order of modifiers and different action shortcuts on the "UPPER" layer (the red one in the image). Designed to simplify transtions when switching between operating systems often.
 | 
				
			||||||
- The OLED on master half shows selected mode and caps lock state and is rotated.
 | 
					- The OLED on master half shows selected mode and caps lock state and is rotated.
 | 
				
			||||||
- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
 | 
					- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1 @@
 | 
				
			||||||
 | 
					TRI_LAYER_ENABLE = yes
 | 
				
			||||||
OLED_ENABLE = yes
 | 
					 | 
				
			||||||
ENCODER_ENABLE = yes
 | 
					 | 
				
			||||||
CONSOLE_ENABLE = no
 | 
					 | 
				
			||||||
EXTRAKEY_ENABLE = yes
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,50 +0,0 @@
 | 
				
			||||||
/* Copyright 2020 Josef Adamcik
 | 
					 | 
				
			||||||
 * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
 * it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
					 | 
				
			||||||
 * (at your option) any later version.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
 * GNU General Public License for more details.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma once
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* By default left side is selected as master, 
 | 
					 | 
				
			||||||
see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness
 | 
					 | 
				
			||||||
for more options. */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(KEYBOARD_sofle_rev1)
 | 
					 | 
				
			||||||
// Add RGB underglow and top facing lighting
 | 
					 | 
				
			||||||
#    define WS2812_DI_PIN D3
 | 
					 | 
				
			||||||
#    define RGBLIGHT_LED_COUNT 72
 | 
					 | 
				
			||||||
#    define RGBLED_SPLIT \
 | 
					 | 
				
			||||||
        { 36, 36 }
 | 
					 | 
				
			||||||
#    ifdef RGB_MATRIX_ENABLE
 | 
					 | 
				
			||||||
#        define RGB_MATRIX_LED_COUNT RGBLIGHT_LED_COUNT
 | 
					 | 
				
			||||||
#        define RGB_MATRIX_SPLIT RGBLED_SPLIT
 | 
					 | 
				
			||||||
#        define SPLIT_TRANSPORT_MIRROR
 | 
					 | 
				
			||||||
#    else
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_BREATHING
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_RAINBOW_MOOD
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_RAINBOW_SWIRL
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_SNAKE
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_KNIGHT
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_CHRISTMAS
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_STATIC_GRADIENT
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_RGB_TEST
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_ALTERNATING
 | 
					 | 
				
			||||||
#        define RGBLIGHT_EFFECT_TWINKLE
 | 
					 | 
				
			||||||
#        define RGBLIGHT_LIMIT_VAL 120
 | 
					 | 
				
			||||||
#        define RGBLIGHT_HUE_STEP 10
 | 
					 | 
				
			||||||
#        define RGBLIGHT_SAT_STEP 17
 | 
					 | 
				
			||||||
#        define RGBLIGHT_VAL_STEP 17
 | 
					 | 
				
			||||||
#    endif
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,22 +1,21 @@
 | 
				
			||||||
 /* Copyright 2020 Josef Adamcik
 | 
					 /* Copyright 2020 Josef Adamcik
 | 
				
			||||||
  * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
 | 
					  * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
 | 
				
			||||||
  * 
 | 
					  *
 | 
				
			||||||
  * This program is free software: you can redistribute it and/or modify 
 | 
					  * 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 
 | 
					  * it under the terms of the GNU General Public License as published by
 | 
				
			||||||
  * the Free Software Foundation, either version 2 of the License, or 
 | 
					  * the Free Software Foundation, either version 2 of the License, or
 | 
				
			||||||
  * (at your option) any later version. 
 | 
					  * (at your option) any later version.
 | 
				
			||||||
  * 
 | 
					  *
 | 
				
			||||||
  * This program is distributed in the hope that it will be useful, 
 | 
					  * This program is distributed in the hope that it will be useful,
 | 
				
			||||||
  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 | 
					  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 | 
					  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
  * GNU General Public License for more details. 
 | 
					  * GNU General Public License for more details.
 | 
				
			||||||
  * 
 | 
					  *
 | 
				
			||||||
  * You should have received a copy of the GNU General Public License 
 | 
					  * You should have received a copy of the GNU General Public License
 | 
				
			||||||
  * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
 | 
					  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
  */ 
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
#include "oled.c"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef ENCODER_MAP_ENABLE
 | 
					#ifdef ENCODER_MAP_ENABLE
 | 
				
			||||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
 | 
					const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,85 +0,0 @@
 | 
				
			||||||
 /* Copyright 2020 Josef Adamcik
 | 
					 | 
				
			||||||
  * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
 | 
					 | 
				
			||||||
  *
 | 
					 | 
				
			||||||
  * This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
  * it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
  * the Free Software Foundation, either version 2 of the License, or
 | 
					 | 
				
			||||||
  * (at your option) any later version.
 | 
					 | 
				
			||||||
  *
 | 
					 | 
				
			||||||
  * This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
  * GNU General Public License for more details.
 | 
					 | 
				
			||||||
  *
 | 
					 | 
				
			||||||
  * You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
  */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//Sets up what the OLED screens display.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef OLED_ENABLE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void render_logo(void) {
 | 
					 | 
				
			||||||
    static const char PROGMEM qmk_logo[] = {
 | 
					 | 
				
			||||||
        0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
 | 
					 | 
				
			||||||
        0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
 | 
					 | 
				
			||||||
        0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    oled_write_P(qmk_logo, false);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void print_status_narrow(void) {
 | 
					 | 
				
			||||||
    // Print current mode
 | 
					 | 
				
			||||||
    oled_write_P(PSTR("\n\n"), false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    switch (get_highest_layer(layer_state)) {
 | 
					 | 
				
			||||||
        case 0:
 | 
					 | 
				
			||||||
            oled_write_ln_P(PSTR("Qwrt"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case 1:
 | 
					 | 
				
			||||||
            oled_write_ln_P(PSTR("Clmk"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Mod\n"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    oled_write_P(PSTR("\n\n"), false);
 | 
					 | 
				
			||||||
    // Print current layer
 | 
					 | 
				
			||||||
    oled_write_ln_P(PSTR("LAYER"), false);
 | 
					 | 
				
			||||||
    switch (get_highest_layer(layer_state)) {
 | 
					 | 
				
			||||||
        case 0:
 | 
					 | 
				
			||||||
        case 1:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Base\n"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case 2:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Raise"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case 3:
 | 
					 | 
				
			||||||
            oled_write_P(PSTR("Lower"), false);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            oled_write_ln_P(PSTR("Undef"), false);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    oled_write_P(PSTR("\n\n"), false);
 | 
					 | 
				
			||||||
    led_t led_usb_state = host_keyboard_led_state();
 | 
					 | 
				
			||||||
    oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
					 | 
				
			||||||
    if (is_keyboard_master()) {
 | 
					 | 
				
			||||||
        return OLED_ROTATION_270;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return rotation;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool oled_task_user(void) {
 | 
					 | 
				
			||||||
    if (is_keyboard_master()) {
 | 
					 | 
				
			||||||
        print_status_narrow();
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        render_logo();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return false;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4)
 | 
					Layout in [Keyboard Layout Editor](http://www.keyboard-layout-editor.com/#/gists/76efb423a46cbbea75465cb468eef7ff) and [adjust layer](http://www.keyboard-layout-editor.com/#/gists/4bcf66f922cfd54da20ba04905d56bd4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
Features:
 | 
					Features:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift)
 | 
					- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift)
 | 
				
			||||||
| 
						 | 
					@ -11,4 +10,3 @@ Features:
 | 
				
			||||||
- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
 | 
					- Left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
 | 
				
			||||||
- Via support
 | 
					- Via support
 | 
				
			||||||
- RGB underglow support
 | 
					- RGB underglow support
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,3 @@
 | 
				
			||||||
OLED_ENABLE = yes
 | 
					 | 
				
			||||||
ENCODER_ENABLE = yes
 | 
					 | 
				
			||||||
CONSOLE_ENABLE = no
 | 
					 | 
				
			||||||
EXTRAKEY_ENABLE = yes
 | 
					 | 
				
			||||||
VIA_ENABLE = yes
 | 
					VIA_ENABLE = yes
 | 
				
			||||||
LTO_ENABLE = yes
 | 
					RGB_MATRIX_ENABLE = yes
 | 
				
			||||||
RGBLIGHT_ENABLE = yes
 | 
					 | 
				
			||||||
ENCODER_MAP_ENABLE = yes
 | 
					ENCODER_MAP_ENABLE = yes
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
# Sofle Keyboard
 | 
					# Sofle Keyboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards.
 | 
					Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +1,9 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "keyboard_name": "Sofle",
 | 
					 | 
				
			||||||
    "manufacturer": "JosefAdamcik",
 | 
					    "manufacturer": "JosefAdamcik",
 | 
				
			||||||
    "url": "https://github.com/josefadamcik/SofleKeyboard",
 | 
					    "url": "https://github.com/josefadamcik/SofleKeyboard",
 | 
				
			||||||
    "maintainer": "Josef Adamcik <josef.adamcik@gmail.com>",
 | 
					    "maintainer": "Josef Adamcik <josef.adamcik@gmail.com>",
 | 
				
			||||||
 | 
					    "development_board": "promicro",
 | 
				
			||||||
    "usb": {
 | 
					    "usb": {
 | 
				
			||||||
        "vid": "0xFC32",
 | 
					 | 
				
			||||||
        "pid": "0x0287",
 | 
					        "pid": "0x0287",
 | 
				
			||||||
        "device_version": "0.0.1"
 | 
					        "device_version": "0.0.1"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
| 
						 | 
					@ -12,14 +11,12 @@
 | 
				
			||||||
        "cols": ["F6", "F7", "B1", "B3", "B2", "B6"],
 | 
					        "cols": ["F6", "F7", "B1", "B3", "B2", "B6"],
 | 
				
			||||||
        "rows": ["C6", "D7", "E6", "B4", "B5"]
 | 
					        "rows": ["C6", "D7", "E6", "B4", "B5"]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "diode_direction": "COL2ROW",
 | 
					 | 
				
			||||||
    "encoder": {
 | 
					    "encoder": {
 | 
				
			||||||
        "rotary": [
 | 
					        "rotary": [
 | 
				
			||||||
            {"pin_a": "F5", "pin_b": "F4", "resolution": 2}
 | 
					            {"pin_a": "F5", "pin_b": "F4", "resolution": 2}
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "split": {
 | 
					    "split": {
 | 
				
			||||||
        "soft_serial_pin": "D2",
 | 
					 | 
				
			||||||
        "encoder": {
 | 
					        "encoder": {
 | 
				
			||||||
            "right": {
 | 
					            "right": {
 | 
				
			||||||
                "rotary": [
 | 
					                "rotary": [
 | 
				
			||||||
| 
						 | 
					@ -28,14 +25,6 @@
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "tapping": {
 | 
					 | 
				
			||||||
        "term": 100
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "qmk": {
 | 
					 | 
				
			||||||
        "tap_keycode_delay": 10
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "processor": "atmega32u4",
 | 
					 | 
				
			||||||
    "bootloader": "caterina",
 | 
					 | 
				
			||||||
    "layouts": {
 | 
					    "layouts": {
 | 
				
			||||||
        "LAYOUT": {
 | 
					        "LAYOUT": {
 | 
				
			||||||
            "layout": [
 | 
					            "layout": [
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
# Sofle Keyboard
 | 
					# Sofle Keyboard
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards.
 | 
					Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,87 +0,0 @@
 | 
				
			||||||
/* Copyright 2021 Carlos Martins
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
 * it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
 * the Free Software Foundation, either version 2 of the License, or
 | 
					 | 
				
			||||||
 * (at your option) any later version.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
 * GNU General Public License for more details.
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "quantum.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef RGB_MATRIX_ENABLE
 | 
					 | 
				
			||||||
  // Physical Layout
 | 
					 | 
				
			||||||
  // Columns
 | 
					 | 
				
			||||||
  // 0  1  2  3  4  5  6  7  8  9  10 11 12 13
 | 
					 | 
				
			||||||
  //                                           ROWS
 | 
					 | 
				
			||||||
  // 12 13 22 23 32 33       33 32 23 22 13 12  0
 | 
					 | 
				
			||||||
  //    02    03    04       04    03    02
 | 
					 | 
				
			||||||
  // 11 14 21 24 31 34       34 31 24 21 14 11  1
 | 
					 | 
				
			||||||
  //                01       01
 | 
					 | 
				
			||||||
  // 10 15 20 25 30 35       35 30 25 20 15 10  2
 | 
					 | 
				
			||||||
  //
 | 
					 | 
				
			||||||
  // 09 16 19 26 29 36       36 29 26 19 16 09  3
 | 
					 | 
				
			||||||
  //
 | 
					 | 
				
			||||||
  //     08 17 18 27 28     28 27 18 17 08      4
 | 
					 | 
				
			||||||
  //    07    06    05       05    06    07
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
led_config_t g_led_config = {
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        {  11,  12,  21,  22,  31,  32 },
 | 
					 | 
				
			||||||
        {  10,  13,  20,  23,  30,  33 },
 | 
					 | 
				
			||||||
        {  9,   14,  19,  24,  29,  34},
 | 
					 | 
				
			||||||
        {  8,   15,  18,  25,  28,  35},
 | 
					 | 
				
			||||||
        {  7,   16,  17,  26,  27,  NO_LED },
 | 
					 | 
				
			||||||
        {  47,  48,  57,  58,  67,  68},
 | 
					 | 
				
			||||||
        {  46,  49,  56,  59,  66,  69},
 | 
					 | 
				
			||||||
        {  45,  50,  55,  60,  65,  70},
 | 
					 | 
				
			||||||
        {  44,  51,  54,  61,  64,  71},
 | 
					 | 
				
			||||||
        {  43,  52,  53,  62,  63,  NO_LED }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
       // Left side underglow
 | 
					 | 
				
			||||||
        {96, 40}, {16, 20}, {48, 10}, {80, 18}, {88, 60}, {56, 57}, {24,60},
 | 
					 | 
				
			||||||
        // Left side Matrix
 | 
					 | 
				
			||||||
        {32, 57}, { 0, 48}, { 0, 36}, { 0, 24}, { 0, 12},
 | 
					 | 
				
			||||||
        {16, 12}, {16, 24}, {16, 36}, {16, 48}, {48, 55},
 | 
					 | 
				
			||||||
        {64, 57}, {32, 45}, {32, 33}, {32, 21}, {32,  9},
 | 
					 | 
				
			||||||
        {48,  7}, {48, 19}, {48, 31}, {48, 43}, {80, 59},
 | 
					 | 
				
			||||||
        {96, 64}, {64, 45}, {64, 33}, {64, 21}, {64,  9},
 | 
					 | 
				
			||||||
        {80, 10}, {80, 22}, {80, 34}, {80, 47},
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Right side underglow
 | 
					 | 
				
			||||||
        {128, 40}, {208, 20}, {176, 10}, {144, 18}, {136, 60}, {168, 57}, {200,60},
 | 
					 | 
				
			||||||
        // Right side Matrix
 | 
					 | 
				
			||||||
        {192, 57}, {224, 48}, {224, 36}, {224, 24}, {224, 12},
 | 
					 | 
				
			||||||
        {208, 12}, {208, 24}, {208, 36}, {208, 48}, {176, 55},
 | 
					 | 
				
			||||||
        {160, 57}, {192, 45}, {192, 33}, {192, 21}, {192,  9},
 | 
					 | 
				
			||||||
        {176,  7}, {176, 19}, {176, 31}, {176, 43}, {144, 59},
 | 
					 | 
				
			||||||
        {128, 64}, {160, 45}, {160, 33}, {160, 21}, {160,  9},
 | 
					 | 
				
			||||||
        {144, 10}, {144, 22}, {144, 34}, {144, 47},
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        LED_FLAG_INDICATOR, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_INDICATOR, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
 | 
					 | 
				
			||||||
        LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,2 +1 @@
 | 
				
			||||||
ENCODER_ENABLE = yes
 | 
					# This file intentionally left blank
 | 
				
			||||||
OLED_ENABLE = yes
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1 @@
 | 
				
			||||||
SPLIT_KEYBOARD = yes
 | 
					 | 
				
			||||||
DEFAULT_FOLDER = sofle/rev1
 | 
					DEFAULT_FOLDER = sofle/rev1
 | 
				
			||||||
SWAP_HANDS_ENABLE = yes
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,5 @@
 | 
				
			||||||
 | 
					// Copyright 2023 QMK
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: GPL-2.0-or-later
 | 
				
			||||||
#include "quantum.h"
 | 
					#include "quantum.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef SWAP_HANDS_ENABLE
 | 
					#ifdef SWAP_HANDS_ENABLE
 | 
				
			||||||
| 
						 | 
					@ -44,3 +46,90 @@ const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0};
 | 
				
			||||||
#    endif
 | 
					#    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OLED_ENABLE
 | 
				
			||||||
 | 
					oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
 | 
				
			||||||
 | 
					    if (is_keyboard_master()) {
 | 
				
			||||||
 | 
					        return OLED_ROTATION_270;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return rotation;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void render_logo(void) {
 | 
				
			||||||
 | 
					    static const char PROGMEM qmk_logo[] = {
 | 
				
			||||||
 | 
					        0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
 | 
				
			||||||
 | 
					        0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
 | 
				
			||||||
 | 
					        0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    oled_write_P(qmk_logo, false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void print_status_narrow(void) {
 | 
				
			||||||
 | 
					    oled_write_P(PSTR("\n\n"), false);
 | 
				
			||||||
 | 
					    switch (get_highest_layer(layer_state)) {
 | 
				
			||||||
 | 
					        case 0:
 | 
				
			||||||
 | 
					            oled_write_ln_P(PSTR("Qwrt"), false);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case 1:
 | 
				
			||||||
 | 
					            oled_write_ln_P(PSTR("Clmk"), false);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            oled_write_P(PSTR("Mod\n"), false);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    oled_write_P(PSTR("\n\n"), false);
 | 
				
			||||||
 | 
					    oled_write_ln_P(PSTR("LAYER"), false);
 | 
				
			||||||
 | 
					    switch (get_highest_layer(layer_state)) {
 | 
				
			||||||
 | 
					        case 0:
 | 
				
			||||||
 | 
					        case 1:
 | 
				
			||||||
 | 
					            oled_write_P(PSTR("Base\n"), false);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case 2:
 | 
				
			||||||
 | 
					            oled_write_P(PSTR("Raise"), false);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case 3:
 | 
				
			||||||
 | 
					            oled_write_P(PSTR("Lower"), false);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            oled_write_ln_P(PSTR("Undef"), false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    oled_write_P(PSTR("\n\n"), false);
 | 
				
			||||||
 | 
					    led_t led_usb_state = host_keyboard_led_state();
 | 
				
			||||||
 | 
					    oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool oled_task_kb(void) {
 | 
				
			||||||
 | 
					    if (!oled_task_user()) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (is_keyboard_master()) {
 | 
				
			||||||
 | 
					        print_status_narrow();
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        render_logo();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ENCODER_ENABLE
 | 
				
			||||||
 | 
					bool encoder_update_kb(uint8_t index, bool clockwise) {
 | 
				
			||||||
 | 
					    if (!encoder_update_user(index, clockwise)) {
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (index == 0) {
 | 
				
			||||||
 | 
					        if (clockwise) {
 | 
				
			||||||
 | 
					            tap_code(KC_VOLU);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            tap_code(KC_VOLD);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else if (index == 1) {
 | 
				
			||||||
 | 
					        if (clockwise) {
 | 
				
			||||||
 | 
					            tap_code(KC_PGDN);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            tap_code(KC_PGUP);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue