1
0
Fork 0

Sol Rev 2 Keyboard (#6389)

* Basic Rev 2 implementation

* Updated LED defines and added Extra encoder support

* Fixed rgb pin assignment

* Physically accurate LED positions

* Single Color Band scrolling left to right effects

* Spirals, Pinwheels, and Documentation....Oh My!

* Spiral effect band thickness adjustments

* Fixing animation spin directions

* Full hand LED positions

* Basic Rev 2 implementation

Updated LED defines and added Extra encoder support

Fixed rgb pin assignment

Physically accurate LED positions

Full hand LED positions

Moving rev2 folder

* RGB Center Point LED position update

* Fixing led config commas

* Fixing led config commas

* fix enter key

* fix enter

* Small changes to default

* update default

* typo fix

* update default

* Fixing defines & led config, turned full hand & extra encoders into rules.mk feature

* Refactored rules.mk to have a post_rules.mk

* Forgot to offset the matrix to led map due to the edge led additions

* Updated LED flags and fixed my keymap

* Update keymap.c

include speed controls for RGB

* Fixing more rules.mk and adding keymap like encoders functionality

* Sol Rev 2 Implementation

* Minor fixes

* Keymap fixes

* Fix Colemak, add lock keys
This commit is contained in:
XScorpion2 2019-07-22 12:43:52 -05:00 committed by MechMerlin
parent 17ff9cf554
commit 40b0ddd425
22 changed files with 683 additions and 388 deletions

View file

@ -0,0 +1,61 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
Copyright 2015 Jack Humbert
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
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x3060
#define DEVICE_VER 0x0002
#define MANUFACTURER RGBKB
#define PRODUCT Sol
#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
/* ws2812 RGB LED */
#define RGB_DI_PIN B7
#define BACKLIGHT_LEDS 124
#ifdef FULLHAND_ENABLE
#define FULLHAND_LEDS 24
#else
#define FULLHAND_LEDS 0
#endif
// Underglow / DIY Tent Glow are parallel to the top row leds, no separate define
#ifdef LED_MIRRORED
#define RGBLED_NUM ((BACKLIGHT_LEDS + FULLHAND_LEDS) / 2)
#else
#define RGBLED_NUM (BACKLIGHT_LEDS + FULLHAND_LEDS)
#endif
#define DRIVER_LED_TOTAL RGBLED_NUM
#define RGB_MATRIX_CENTER { 112, 37 }
// Encoder support
#ifndef EXTRA_ENCODERS_ENABLE
#define ENCODERS_PAD_A { D2 }
#define ENCODERS_PAD_B { D6 }
#else
#ifdef OLED_DRIVER_ENABLE
#error Extra encoders cannot be enabled at the same time as the OLED Driver as they use the same pins.
#endif
#define ENCODERS_PAD_A { D2, D1, B0 }
#define ENCODERS_PAD_B { D6, B1, D0 }
#endif

View file

@ -0,0 +1,87 @@
{
"keyboard_name": "Sol",
"url": "",
"maintainer": "Legonut",
"width": 17,
"height": 6.5,
"layouts": {
"LAYOUT": {
"layout": [
{"label":"L00", "x":0, "y":0, "w":1.5},
{"label":"L01", "x":1.5, "y":0},
{"label":"L02", "x":2.5, "y":0},
{"label":"L03", "x":3.5, "y":0},
{"label":"L04", "x":4.5, "y":0},
{"label":"L05", "x":5.5, "y":0},
{"label":"L06", "x":6.75, "y":0},
{"label":"R06", "x":9.25, "y":0},
{"label":"R00", "x":10.5, "y":0},
{"label":"R01", "x":11.5, "y":0},
{"label":"R02", "x":12.5, "y":0},
{"label":"R03", "x":13.5, "y":0},
{"label":"R04", "x":14.5, "y":0},
{"label":"R05", "x":15.5, "y":0, "w":1.5},
{"label":"L10", "x":0, "y":1, "w":1.5},
{"label":"L11", "x":1.5, "y":1},
{"label":"L12", "x":2.5, "y":1},
{"label":"L13", "x":3.5, "y":1},
{"label":"L14", "x":4.5, "y":1},
{"label":"L15", "x":5.5, "y":1},
{"label":"L16", "x":6.75, "y":1},
{"label":"R16", "x":9.25, "y":1},
{"label":"R10", "x":10.5, "y":1},
{"label":"R11", "x":11.5, "y":1},
{"label":"R12", "x":12.5, "y":1},
{"label":"R13", "x":13.5, "y":1},
{"label":"R14", "x":14.5, "y":1},
{"label":"R15", "x":15.5, "y":1, "w":1.5},
{"label":"L20", "x":0, "y":2, "w":1.5},
{"label":"L21", "x":1.5, "y":2},
{"label":"L22", "x":2.5, "y":2},
{"label":"L23", "x":3.5, "y":2},
{"label":"L24", "x":4.5, "y":2},
{"label":"L25", "x":5.5, "y":2},
{"label":"L26", "x":6.75, "y":2},
{"label":"R26", "x":9.25, "y":2},
{"label":"R20", "x":10.5, "y":2},
{"label":"R21", "x":11.5, "y":2},
{"label":"R22", "x":12.5, "y":2},
{"label":"R23", "x":13.5, "y":2},
{"label":"R24", "x":14.5, "y":2},
{"label":"R25", "x":15.5, "y":2, "w":1.5},
{"label":"L30", "x":0, "y":3, "w":1.5},
{"label":"L31", "x":1.5, "y":3},
{"label":"L32", "x":2.5, "y":3},
{"label":"L33", "x":3.5, "y":3},
{"label":"L34", "x":4.5, "y":3},
{"label":"L35", "x":5.5, "y":3},
{"label":"L36", "x":6.75, "y":3},
{"label":"R36", "x":9.25, "y":3},
{"label":"R30", "x":10.5, "y":3},
{"label":"R31", "x":11.5, "y":3},
{"label":"R32", "x":12.5, "y":3},
{"label":"R33", "x":13.5, "y":3},
{"label":"R34", "x":14.5, "y":3},
{"label":"R35", "x":15.5, "y":3, "w":1.5},
{"label":"L40", "x":0, "y":4, "w":1.5},
{"label":"L41", "x":1.5, "y":4},
{"label":"L42", "x":2.5, "y":4},
{"label":"L43", "x":3.5, "y":4},
{"label":"L44", "x":4.5, "y":4},
{"label":"L45", "x":6, "y":4.5},
{"label":"L46", "x":7, "y":4.5},
{"label":"R46", "x":9, "y":4.5},
{"label":"R40", "x":10, "y":4.5},
{"label":"R41", "x":11.5, "y":4},
{"label":"R42", "x":12.5, "y":4},
{"label":"R43", "x":13.5, "y":4},
{"label":"R44", "x":14.5, "y":4},
{"label":"R45", "x":15.5, "y":4, "w":1.5},
{"label":"L55", "x":6, "y":5.5},
{"label":"L56", "x":7, "y":5.5},
{"label":"R56", "x":9, "y":5.5},
{"label":"R50", "x":10, "y":5.5}
]
}
}
}

View file

@ -0,0 +1,37 @@
# As long as the users rules.mk has include $(KEYBOARD)/post_rules.mk this will be run after to properly setup any keyboard features and defines
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
OPT_DEFS += -DIOS_DEVICE_ENABLE
else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
OPT_DEFS += -DRGBLIGHT_FULL_POWER
endif
ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
endif
ifeq ($(strip $(RGB_MATRIX_FRAMEBUFFER)), yes)
OPT_DEFS += -DRGB_MATRIX_FRAMEBUFFER_EFFECTS
endif
ifeq ($(strip $(LED_MIRRORED)), yes)
OPT_DEFS += -DLED_MIRRORED
endif
ifeq ($(strip $(FULLHAND_ENABLE)), yes)
OPT_DEFS += -DFULLHAND_ENABLE
endif
ifeq ($(strip $(EXTRA_ENCODERS_ENABLE)), yes)
OPT_DEFS += -DEXTRA_ENCODERS_ENABLE
endif
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(ENCODER_ENABLE)), yes)
ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
ifneq ($(strip $(RGB_OLED_MENU)), no)
OPT_DEFS += -DRGB_OLED_MENU=$(strip $(RGB_OLED_MENU))
endif
endif
endif
endif

View file

@ -0,0 +1,89 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
{ 0, 1, 2, 3, 4, 5, 6 },
{ 7, 8, 9, 10, 11, 12, 13 },
{ 14, 15, 16, 17, 18, 19, 20 },
{ 21, 22, 23, 24, 25, 26, 27 },
{ 28, 29, 30, 31, 32, 33, 34 },
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
// Need to shift Right hand indexes if full hand LEDs are enabled
#define LO (FULLHAND_LEDS / 2)
{ LO+62, LO+63, LO+64, LO+65, LO+66, LO+67, LO+68 },
{ LO+69, LO+70, LO+71, LO+72, LO+73, LO+74, LO+75 },
{ LO+76, LO+77, LO+78, LO+79, LO+80, LO+81, LO+82 },
{ LO+83, LO+84, LO+85, LO+86, LO+87, LO+88, LO+89 },
{ LO+90, LO+91, LO+92, LO+93, LO+94, LO+95, LO+95 },
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, LO+95, LO+95 }
#undef LO
}, {
// Left Hand Mapped Left to Right
{ 11, 14 }, { 28, 14 }, { 42, 14 }, { 56, 14 }, { 70, 14 }, { 84, 14 }, { 102, 14 },
{ 11, 28 }, { 28, 28 }, { 42, 28 }, { 56, 28 }, { 70, 28 }, { 84, 28 }, { 98, 25 },
{ 11, 42 }, { 28, 42 }, { 42, 42 }, { 56, 42 }, { 70, 42 }, { 84, 42 }, { 98, 39 },
{ 11, 56 }, { 28, 56 }, { 42, 56 }, { 56, 56 }, { 70, 56 }, { 84, 56 }, { 98, 53 },
{ 11, 70 }, { 28, 70 }, { 42, 70 }, { 56, 70 }, { 70, 70 }, { 83, 87 }, { 93, 97 },
// Edge Light Left
{ 0, 66 }, { 0, 52 }, { 0, 38 }, { 0, 24 }, { 0, 10 }, { 31, 0 }, { 38, 0 },
{ 46, 0 }, { 54, 0 }, { 61, 0 }, { 69, 0 }, { 76, 0 }, { 84, 0 }, { 109, 11 },
{ 109, 24 }, { 109, 39 }, { 109, 53 }, { 110, 73 }, { 112, 85 }, { 106, 95 }, { 95, 98 },
{ 83, 91 }, { 71, 84 }, { 58, 77 }, { 42, 74 }, { 28, 74 }, { 14, 74 },
// Full Hand Left
#ifdef FULLHAND_ENABLE
{ 2, 88 }, { 2, 103 }, { 2, 117 }, { 2, 132 }, { 10, 145 }, { 25, 145 }, { 39, 145 },
{ 54, 145 }, { 69, 145 }, { 79, 136 }, { 87, 124 }, { 94, 111 },
#endif
// Left Hand Mapped Right to Left
{ 213, 14 }, { 196, 14 }, { 182, 14 }, { 168, 14 }, { 154, 14 }, { 140, 14 }, { 122, 14 },
{ 213, 28 }, { 196, 28 }, { 182, 28 }, { 168, 28 }, { 154, 28 }, { 140, 28 }, { 126, 25 },
{ 213, 42 }, { 196, 42 }, { 182, 42 }, { 168, 42 }, { 154, 42 }, { 140, 42 }, { 126, 39 },
{ 213, 56 }, { 196, 56 }, { 182, 56 }, { 168, 56 }, { 154, 56 }, { 140, 56 }, { 126, 53 },
{ 213, 70 }, { 196, 70 }, { 182, 70 }, { 168, 70 }, { 154, 70 }, { 141, 87 }, { 131, 97 },
// Edge Light Right
{ 224, 66 }, { 224, 52 }, { 224, 38 }, { 224, 24 }, { 224, 10 }, { 193, 0 }, { 186, 0 },
{ 178, 0 }, { 170, 0 }, { 163, 0 }, { 155, 0 }, { 148, 0 }, { 140, 0 }, { 115, 11 },
{ 115, 24 }, { 115, 39 }, { 115, 53 }, { 114, 73 }, { 112, 85 }, { 118, 95 }, { 129, 98 },
{ 141, 91 }, { 153, 84 }, { 166, 77 }, { 182, 74 }, { 196, 74 }, { 210, 74 }
// Full Hand Right
#ifdef FULLHAND_ENABLE
,{ 222, 88 }, { 222, 103 }, { 222, 117 }, { 222, 132 }, { 214, 145 }, { 199, 145 }, { 185, 145 },
{ 170, 145 }, { 155, 145 }, { 145, 136 }, { 137, 124 }, { 130, 111 }
#endif
}, {
// Left Hand Mapped Left to Right
1, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 1,
1, 1, 1, 1, 1, 1, 1,
// Edge Light Left
2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2,
// Full Hand Left
#ifdef FULLHAND_ENABLE
2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2,
#endif
// Left Hand Mapped Right to Left
1, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 1,
1, 1, 1, 1, 1, 1, 1,
// Edge Light Right
2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2
// Full Hand Right
#ifdef FULLHAND_ENABLE
,2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2
#endif
} };
#endif

View file

@ -0,0 +1 @@
#pragma once

View file

@ -0,0 +1,35 @@
# RGBKB Sol Rev2 Defaults
# Keycode Options
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
UNICODE_ENABLE = no # Unicode keycodes
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
# Debug Options
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
# RGB Options
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
RGBLIGHT_ANIMATIONS = no # LED animations
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects.
RGB_MATRIX_FRAMEBUFFER_EFFECTS = no # Enable frame buffer effects like the typing heatmap.
RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness for RGBLIGHT or RGB_MATRIX. Otherwise, limited to a safe level for a normal USB-A port
FULLHAND_ENABLE = no # Enables the additional 24 Full Hand LEDs
IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
# Misc
OLED_DRIVER_ENABLE = no # Enable the OLED Driver
EXTRA_ENCODERS_ENABLE = no # Enables 3 encoders per side (up from 1, not compatible with OLED_DRIVER_ENABLE)
SWAP_HANDS_ENABLE = no # Enable one-hand typing
LINK_TIME_OPTIMIZATION_ENABLE = yes # Enable Link Time Optimizations greatly reducing firmware size by disabling the old Macros and Functions features
# Special RGB Matrix, OLED, & Encoder Control Menu!
RGB_OLED_MENU = no # Enabled by setting this to the encoder index (0-5) you wish to use to control the menu.
# Use the RGB_MENU keycode in the keymap for the encoder to advance the menu to the next option.