* 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>pull/22951/head
@ -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} | |||
] | |||
} | |||
} |
@ -1,16 +1 @@ | |||
# Build Options | |||
# 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 | |||
# This file intentionally left blank |
@ -1,5 +1 @@ | |||
OLED_ENABLE = yes | |||
ENCODER_ENABLE = yes | |||
CONSOLE_ENABLE = no | |||
EXTRAKEY_ENABLE = yes | |||
TRI_LAYER_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,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 |
@ -1,8 +1,3 @@ | |||
OLED_ENABLE = yes | |||
ENCODER_ENABLE = yes | |||
CONSOLE_ENABLE = no | |||
EXTRAKEY_ENABLE = yes | |||
VIA_ENABLE = yes | |||
LTO_ENABLE = yes | |||
RGBLIGHT_ENABLE = yes | |||
RGB_MATRIX_ENABLE = yes | |||
ENCODER_MAP_ENABLE = yes |
@ -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 | |||
OLED_ENABLE = yes | |||
# This file intentionally left blank |
@ -1,3 +1 @@ | |||
SPLIT_KEYBOARD = yes | |||
DEFAULT_FOLDER = sofle/rev1 | |||
SWAP_HANDS_ENABLE = yes |