summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXScorpion2 <rcalt2vt@gmail.com>2019-07-22 12:43:52 -0500
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-07-22 10:43:52 -0700
commit40b0ddd425bf09ddbb15a414b5147e98256f10a8 (patch)
tree8aa9d292b49716225474a58e90fd89c6f978da9a
parent17ff9cf554d64fd3e036f3d6e06cff952d8802bf (diff)
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
-rw-r--r--keyboards/rgbkb/sol/common/glcdfont.c24
-rw-r--r--keyboards/rgbkb/sol/config.h7
-rw-r--r--keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk45
-rw-r--r--keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk44
-rw-r--r--keyboards/rgbkb/sol/keymaps/default/keymap.c350
-rw-r--r--keyboards/rgbkb/sol/keymaps/default/readme.md4
-rw-r--r--keyboards/rgbkb/sol/keymaps/default/rules.mk40
-rw-r--r--keyboards/rgbkb/sol/keymaps/kageurufu/rules.mk51
-rw-r--r--keyboards/rgbkb/sol/keymaps/xulkal/rules.mk48
-rw-r--r--keyboards/rgbkb/sol/rev1/config.h7
-rw-r--r--keyboards/rgbkb/sol/rev1/post_rules.mk19
-rw-r--r--keyboards/rgbkb/sol/rev1/rev1.c24
-rw-r--r--keyboards/rgbkb/sol/rev1/rules.mk28
-rw-r--r--keyboards/rgbkb/sol/rev2/config.h61
-rw-r--r--keyboards/rgbkb/sol/rev2/info.json87
-rw-r--r--keyboards/rgbkb/sol/rev2/post_rules.mk37
-rw-r--r--keyboards/rgbkb/sol/rev2/rev2.c89
-rw-r--r--keyboards/rgbkb/sol/rev2/rev2.h1
-rw-r--r--keyboards/rgbkb/sol/rev2/rules.mk35
-rw-r--r--keyboards/rgbkb/sol/rules.mk42
-rw-r--r--keyboards/rgbkb/sol/sol.h28
-rw-r--r--users/xulkal/custom_encoder.c2
22 files changed, 684 insertions, 389 deletions
diff --git a/keyboards/rgbkb/sol/common/glcdfont.c b/keyboards/rgbkb/sol/common/glcdfont.c
index f772e31811..61b40c092e 100644
--- a/keyboards/rgbkb/sol/common/glcdfont.c
+++ b/keyboards/rgbkb/sol/common/glcdfont.c
@@ -168,11 +168,11 @@ static const unsigned char font[] PROGMEM = {
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
- 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
- 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
- 0x00, 0x00, 0x00, 0xE0, 0xEC, 0xDF,
- 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0xF4, 0xEC, 0xDE,
+ 0xDE, 0xBE, 0x3E, 0x3E, 0x3F, 0x3F,
+ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F,
+ 0x3F, 0x3E, 0x3E, 0xBE, 0xDE, 0xDE,
+ 0xEC, 0xF4, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7F, 0x80, 0x80,
0x80, 0x70, 0x0F, 0x00, 0x00, 0x80,
0x7F, 0x00, 0x00, 0x7F, 0x80, 0x80,
@@ -200,11 +200,11 @@ static const unsigned char font[] PROGMEM = {
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
- 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
- 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
- 0x40, 0x7C, 0x3F, 0x3F, 0x23, 0x01,
- 0x23, 0x3F, 0x37, 0x6C, 0x40, 0x00,
+ 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF,
+ 0xFF, 0xFF, 0xFC, 0xE0, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x0F, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -233,8 +233,8 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F,
+ 0xFE, 0xFC, 0x00, 0xFC, 0xFE, 0x7F,
+ 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
diff --git a/keyboards/rgbkb/sol/config.h b/keyboards/rgbkb/sol/config.h
index 23f4503bfd..9b136db058 100644
--- a/keyboards/rgbkb/sol/config.h
+++ b/keyboards/rgbkb/sol/config.h
@@ -35,16 +35,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 7
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
-// Encoder support
-#define ENCODERS_PAD_A { D2 }
-#define ENCODERS_PAD_B { D6 }
-
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
-/* ws2812 RGB LED */
-#define RGB_DI_PIN B3
-
#ifdef IOS_DEVICE_ENABLE
#define RGBLIGHT_LIMIT_VAL 40
#elif RGBLIGHT_FULL_POWER
diff --git a/keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk b/keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk
index 12c8779467..47dd9a7e27 100644
--- a/keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk
@@ -1,38 +1,15 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
-RGBLIGHT_ANIMATIONS = yes # LED animations
-LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
-RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
-RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
-RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
-UNICODE_ENABLE = no # Unicode
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
-IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
+# Overridden build options from rev1
+
+# RGB Options
+LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
+
+# Misc
+OLED_DRIVER_ENABLE = yes # Enable the OLED Driver
-# Do not edit past here
-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 $(LED_MIRRORED)), yes)
- OPT_DEFS += -DLED_MIRRORED
-endif
+
+# Do not edit past here
+
+include keyboards/$(KEYBOARD)/post_rules.mk
diff --git a/keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk b/keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk
index 09b0e201d5..2993bdacc3 100644
--- a/keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/danielhklein/rules.mk
@@ -1,38 +1,14 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
-RGBLIGHT_ANIMATIONS = yes # LED animations
-LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
-RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
-RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
-RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
-UNICODE_ENABLE = no # Unicode
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
-IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
+# Overridden build options from rev1
+
+# Debug Options
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # Commands for debug and configuration
+
-# Do not edit past here
-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 $(LED_MIRRORED)), yes)
- OPT_DEFS += -DLED_MIRRORED
-endif
+# Do not edit past here
+
+include keyboards/$(KEYBOARD)/post_rules.mk
+
diff --git a/keyboards/rgbkb/sol/keymaps/default/keymap.c b/keyboards/rgbkb/sol/keymaps/default/keymap.c
index ca73524822..f948dc450f 100644
--- a/keyboards/rgbkb/sol/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/sol/keymaps/default/keymap.c
@@ -5,13 +5,6 @@
#include "split_util.h"
#endif
-extern keymap_config_t keymap_config;
-
-#ifdef RGBLIGHT_ENABLE
-//Following line allows macro to read current RGB settings
-extern rgblight_config_t rgblight_config;
-#endif
-
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -23,22 +16,18 @@ enum layer_number {
_ADJ
};
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- COLEMAK,
- FN,
- ADJ,
- BACKLIT,
- RGBRST
-};
+// Keycode defines for layers
+#define QWERTY DF(_QWERTY)
+#define COLEMAK DF(_COLEMAK)
+#define FN MO(_FN)
+#define ADJ MO(_ADJ)
-enum macro_keycodes {
- KC_SAMPLEMACRO,
+enum custom_keycodes {
+ RGBRST = SAFE_RANGE,
+ RGB_MENU
};
-
-
-#define FN_ESC LT(_FN, KC_ESC)
+#define FN_ESC LT(_FN, KC_ESC)
#define FN_CAPS LT(_FN, KC_CAPS)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -50,9 +39,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
* |FN(CAPS)| A | S | D | F | G | ( | | ) | H | J | K | L | ; | ' |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Shift |
+ * |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
+ * | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
* | Space| DEL | | Enter| Space|
* `-------------' `-------------'
@@ -74,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
* |FN(CAPS)| A | R | S | T | G | ( | | ) | K | N | E | I | O | ' |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Shift |
+ * |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Enter |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
@@ -83,9 +72,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_COLEMAK] = LAYOUT( \
KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
- KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
- FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_LPRN, KC_RPRN, KC_K, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
- KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_LCBR, KC_RCBR, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_LBRC, KC_RBRC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, \
+ FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LPRN, KC_RPRN, 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_LCBR, KC_RCBR, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
KC_LCTL, KC_LGUI, KC_LALT, RGB_TOG, ADJ, KC_SPC, KC_DEL, KC_ENT, KC_SPC, FN, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, \
KC_SPC, KC_DEL, KC_ENT, KC_SPC \
),
@@ -107,8 +96,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN] = LAYOUT( \
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
+ _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_SLCK, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, \
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_NLCK, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, \
_______, _______, _______, _______ \
@@ -134,120 +123,184 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
_______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
- _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, \
+ _______, RGB_SPD, _______, RGB_SPI, _______, _______, _______, _______, _______, RGB_SPI, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
+ _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, \
_______, _______, _______, _______ \
)
};
+// For RGBRST Keycode
+#if defined(RGB_MATRIX_ENABLE)
+void rgb_matrix_increase_flags(void)
+{
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+}
+void rgb_matrix_decrease_flags(void)
+{
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+}
+#endif
-// define variables for reactive RGB
-bool TOG_STATUS = false;
-int RGB_current_mode;
+#ifdef RGB_OLED_MENU
+uint8_t rgb_encoder_state = 4;
+
+typedef void (*rgb_matrix_f)(void);
+
+const rgb_matrix_f rgb_matrix_functions[6][2] = {
+ { rgb_matrix_increase_hue, rgb_matrix_decrease_hue },
+ { rgb_matrix_increase_sat, rgb_matrix_decrease_sat },
+ { rgb_matrix_increase_val, rgb_matrix_decrease_val },
+ { rgb_matrix_increase_speed, rgb_matrix_decrease_speed },
+ { rgb_matrix_step, rgb_matrix_step_reverse },
+ { rgb_matrix_increase_flags, rgb_matrix_decrease_flags }
+};
+#endif
#ifdef ENCODER_ENABLE
+
+static pin_t encoders_pad_a[] = ENCODERS_PAD_A;
+#define NUMBER_OF_ENCODERS (sizeof(encoders_pad_a)/sizeof(pin_t))
+
+const uint16_t PROGMEM encoders[][NUMBER_OF_ENCODERS * 2][2] = {
+ [_QWERTY] = ENCODER_LAYOUT( \
+ KC_VOLU, KC_VOLD,
+ KC_VOLU, KC_VOLD
+ ),
+ [_COLEMAK] = ENCODER_LAYOUT( \
+ _______, _______,
+ _______, _______
+ ),
+ [_FN] = ENCODER_LAYOUT( \
+ _______, _______,
+ _______, _______
+ ),
+ [_ADJ] = ENCODER_LAYOUT( \
+ _______, _______,
+ _______, _______
+ )
+};
+
void encoder_update_user(uint8_t index, bool clockwise) {
- if (index == 0) { /* First encoder */
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- } else if (index == 1) { /* Second encoder*/
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
+ if (!is_keyboard_master())
+ return;
+
+#ifdef RGB_OLED_MENU
+ if (index == RGB_OLED_MENU) {
+ (*rgb_matrix_functions[rgb_encoder_state][clockwise])();
+ } else
+#endif
+ {
+ uint8_t layer = biton32(layer_state);
+ uint16_t keycode = encoders[layer][index][clockwise];
+ while (keycode == KC_TRANSPARENT && layer > 0)
+ {
+ layer--;
+ if ((layer_state & (1 << layer)) != 0)
+ keycode = encoders[layer][index][clockwise];
}
+ if (keycode != KC_TRANSPARENT)
+ tap_code16(keycode);
}
}
#endif
-// Setting ADJ layer RGB back to default
-void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
- if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
- #ifdef RGBLIGHT_ENABLE
- //rgblight_mode(RGB_current_mode);
- #endif
- layer_on(layer3);
- } else {
- layer_off(layer3);
- }
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- //uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
-
+ static uint16_t reset_timer;
switch (keycode) {
- case QWERTY:
+ case RGBRST:
+#if defined(RGBLIGHT_ENABLE)
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
+#elif defined(RGB_MATRIX_ENABLE)
+ if (record->event.pressed) {
+ eeconfig_update_rgb_matrix_default();
+ }
+#endif
+ return false;
+ case RESET:
if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY);
+ reset_timer = timer_read();
+ } else {
+ if (timer_elapsed(reset_timer) >= 500) {
+ reset_keyboard();
+ }
}
return false;
- break;
- case COLEMAK:
- if(record->event.pressed) {
- set_single_persistent_default_layer(_COLEMAK);
+#if defined(RGB_MATRIX_ENABLE) && defined(KEYBOARD_rgbkb_sol_rev2)
+ case RGB_TOG:
+ if (record->event.pressed) {
+ rgb_matrix_increase_flags();
}
return false;
- break;
- case FN:
+#endif
+ case RGB_MENU:
+#ifdef RGB_OLED_MENU
if (record->event.pressed) {
- //not sure how to have keyboard check mode and set it to a variable, so my work around
- //uses another variable that would be set to true after the first time a reactive key is pressed.
- if (TOG_STATUS) { //TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
+ if (get_mods() & MOD_MASK_SHIFT) {
+ rgb_encoder_state = (rgb_encoder_state - 1);
+ if (rgb_encoder_state > 5) {
+ rgb_encoder_state = 5;
+ }
} else {
- TOG_STATUS = !TOG_STATUS;
- #ifdef RGBLIGHT_ENABLE
- //rgblight_mode(15);
- #endif
+ rgb_encoder_state = (rgb_encoder_state + 1) % 6;
}
- layer_on(_FN);
- } else {
- #ifdef RGBLIGHT_ENABLE
- //rgblight_mode(RGB_current_mode); // revert RGB to initial mode prior to RGB mode change
- #endif
- layer_off(_FN);
- TOG_STATUS = false;
}
+#endif
return false;
- break;
- case ADJ:
- if (record->event.pressed) {
- layer_on(_ADJ);
- } else {
- layer_off(_ADJ);
- }
- return false;
- break;
- //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
- case RGBRST:
- #ifdef RGBLIGHT_ENABLE
- if (record->event.pressed) {
- eeconfig_update_rgblight_default();
- rgblight_enable();
- RGB_current_mode = rgblight_config.mode;
- }
- #endif
- break;
}
return true;
}
-void matrix_init_user(void) {
-#ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
-#endif
-}
-
-
// OLED Driver Logic
#ifdef OLED_DRIVER_ENABLE
-
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (!has_usb())
- return OLED_ROTATION_180; // flip 180 for offhand
+ if (is_keyboard_master())
+ return OLED_ROTATION_90;
return rotation;
}
@@ -255,62 +308,63 @@ static void render_logo(void) {
static const char PROGMEM sol_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};
-
+ 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(sol_logo, false);
}
-//assign the right code to your layers for OLED display
-#define L_BASE 0
-#define L_FN (1<<_FN)
-#define L_ADJ (1<<_ADJ)
-#define L_ADJ_TRI (L_ADJ|L_FN)
-
static void render_status(void) {
// Render to mode icon
- static const char PROGMEM mode_logo[4][4] = {
- {0x95,0x96,0x0a,0},
- {0xb5,0xb6,0x0a,0},
- {0x97,0x98,0x0a,0},
- {0xb7,0xb8,0x0a,0} };
-
- if (keymap_config.swap_lalt_lgui != false) {
- oled_write_P(mode_logo[0], false);
- oled_write_P(mode_logo[1], false);
- } else {
- oled_write_P(mode_logo[2], false);
- oled_write_P(mode_logo[3], false);
- }
-
- // Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
- oled_write_P(PSTR("Layer: "), false);
- switch (layer_state) {
- case L_BASE:
- oled_write_P(PSTR("Default\n"), false);
+ static const char PROGMEM sol_icon[] = {
+ 0x9b,0x9c,0x9d,0x9e,0x9f,
+ 0xbb,0xbc,0xbd,0xbe,0xbf,
+ 0xdb,0xdc,0xdd,0xde,0xdf,0
+ };
+ oled_write_P(sol_icon, false);
+
+ // Define layers here
+ oled_write_P(PSTR("Layer"), false);
+ switch (biton32(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("BASE "), false);
+ break;
+ case _COLEMAK:
+ oled_write_P(PSTR("CLMK "), false);
break;
- case L_FN:
- oled_write_P(PSTR("FN \n"), false);
+ case _FN:
+ oled_write_P(PSTR("FN "), false);
break;
- case L_ADJ:
- case L_ADJ_TRI:
- oled_write_P(PSTR("ADJ \n"), false);
+ case _ADJ:
+ oled_write_P(PSTR("ADJ "), false);
break;
default:
- oled_write_P(PSTR("UNDEF \n"), false);
+ oled_write_P(PSTR("UNDEF"), false);
}
// Host Keyboard LED Status
- uint8_t led_usb_state = host_keyboard_leds();
- oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR("NUMLOCK ") : PSTR(" "), false);
- oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR("CAPS ") : PSTR(" "), false);
- oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR("SCLK ") : PSTR(" "), false);
+ uint8_t led_state = host_keyboard_leds();
+ oled_write_P(PSTR("-----"), false);
+ oled_write_P(IS_LED_ON(led_state, USB_LED_NUM_LOCK) ? PSTR("NUMLK") : PSTR(" "), false);
+ oled_write_P(IS_LED_ON(led_state, USB_LED_CAPS_LOCK) ? PSTR("CAPLK") : PSTR(" "), false);
+ oled_write_P(IS_LED_ON(led_state, USB_LED_SCROLL_LOCK) ? PSTR("SCRLK") : PSTR(" "), false);
+
+#ifdef RGB_OLED_MENU
+ static char buffer[31] = { 0 };
+ snprintf(buffer, sizeof(buffer), "h%3d s%3d v%3d s%3d m%3d e%3d ", rgb_matrix_config.hsv.h, rgb_matrix_config.hsv.s, rgb_matrix_config.hsv.v, rgb_matrix_config.speed, rgb_matrix_config.mode, rgb_matrix_get_flags());
+ buffer[4 + rgb_encoder_state * 5] = '<';
+
+ oled_write_P(PSTR("-----"), false);
+ oled_write(buffer, false);
+#endif
}
void oled_task_user(void) {
- if (is_keyboard_master())
+ if (is_keyboard_master()) {
render_status();
- else
+ } else {
render_logo();
+ oled_scroll_left();
+ }
}
#endif
diff --git a/keyboards/rgbkb/sol/keymaps/default/readme.md b/keyboards/rgbkb/sol/keymaps/default/readme.md
index 75182c06fc..4a97a7babe 100644
--- a/keyboards/rgbkb/sol/keymaps/default/readme.md
+++ b/keyboards/rgbkb/sol/keymaps/default/readme.md
@@ -10,7 +10,7 @@
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
* |FN(CAPS)| A | S | D | F | G | ( | | ) | H | J | K | L | ; | ' |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Shift |
+ * |Shift | Z | X | C | V | B | { | | } | N | M | , | . | / |Enter |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
@@ -27,7 +27,7 @@
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
* |FN(CAPS)| A | R | S | T | G | ( | | ) | K | N | E | I | O | ' |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
- * |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Shift |
+ * |Shift | Z | X | C | D | V | { | | } | M | H | , | . | / |Enter |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
diff --git a/keyboards/rgbkb/sol/keymaps/default/rules.mk b/keyboards/rgbkb/sol/keymaps/default/rules.mk
index 09b0e201d5..203d59c6a7 100644
--- a/keyboards/rgbkb/sol/keymaps/default/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/default/rules.mk
@@ -1,38 +1,16 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
+# Default keymap does not have any overridden options from the rev1 / rev2 rules.mk files.
+# Example:
+# if you wanted to disable EXTRAKEY_ENABLE, you would copy the line from the rev1/rules.mk file
+# and paste it in to this file, changing the yes to no. Like so:
+# EXTRAKEY_ENABLE = no # Audio control and System control(+450)
#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+# To keep things clean and tidy, as well as make upgrades easier, only place overrides from the defaults in this file.
+
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = yes # Enable global lighting effects. Do not enable with RGB Matrix
-RGBLIGHT_ANIMATIONS = yes # LED animations
-LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
-RGB_MATRIX_ENABLE = no # Enable per-key coordinate based RGB effects. Do not enable with RGBlight (+8500)
-RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
-RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
-UNICODE_ENABLE = no # Unicode
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
-IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
-# Do not edit past here
-ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
- OPT_DEFS += -DIOS_DEVICE_ENABLE
-else ifeq ($(strip $(RGBLIGHT_FULL_POWER)), yes)
- OPT_DEFS += -DRGBLIGHT_FULL_POWER
-endif
+# Do not edit past here
-ifeq ($(strip $(RGB_MATRIX_KEYPRESSES)), yes)
- OPT_DEFS += -DRGB_MATRIX_KEYPRESSES
-endif
+include keyboards/$(KEYBOARD)/post_rules.mk
-ifeq ($(strip $(LED_MIRRORED)), yes)
- OPT_DEFS += -DLED_MIRRORED
-endif
diff --git a/keyboards/rgbkb/sol/keymaps/kageurufu/rules.mk b/keyboards/rgbkb/sol/keymaps/kageurufu/rules.mk
index 21dca0b116..056959a550 100644
--- a/keyboards/rgbkb/sol/keymaps/kageurufu/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/kageurufu/rules.mk
@@ -1,38 +1,21 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = yes # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-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 (+8500)
-RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
-RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
-UNICODE_ENABLE = no # Unicode
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-
-OLED_DRIVER_ENABLE = no # Enable the OLED Driver (+5000)
-IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
+# Overridden build options from rev1 & rev2
-# Do not edit past here
+# Debug Options
+CONSOLE_ENABLE = yes # Console for debug(+400)
+COMMAND_ENABLE = yes # 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
+
+# Userspace implements their own LTO
+LINK_TIME_OPTIMIZATION_ENABLE = no
-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 $(LED_MIRRORED)), yes)
- OPT_DEFS += -DLED_MIRRORED
-endif
+# Do not edit past here
+
+include keyboards/$(KEYBOARD)/post_rules.mk
+
diff --git a/keyboards/rgbkb/sol/keymaps/xulkal/rules.mk b/keyboards/rgbkb/sol/keymaps/xulkal/rules.mk
index ad0c480349..238d1cf234 100644
--- a/keyboards/rgbkb/sol/keymaps/xulkal/rules.mk
+++ b/keyboards/rgbkb/sol/keymaps/xulkal/rules.mk
@@ -1,37 +1,19 @@
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = no # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-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 (+8500)
-RGB_MATRIX_KEYPRESSES = no # Enable reactive per-key effects. Can be very laggy (+1500)
-RGBLIGHT_FULL_POWER = no # Allow maximum RGB brightness. Otherwise, limited to a safe level for a normal USB-A port
-UNICODE_ENABLE = no # Unicode
-SWAP_HANDS_ENABLE = no # Enable one-hand typing
-OLED_DRIVER_ENABLE = yes # Enable the OLED Driver (+5000)
-ENCODER_ENABLE = no # Enable rotary encoder (+90)
-IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
+# Overridden build options from rev1 & rev2
+
+# 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
+FULLHAND_ENABLE = yes # Enables the additional 24 Full Hand LEDs
+
+# Misc
+OLED_DRIVER_ENABLE = yes # Enable the OLED Driver
-# Do not edit past here
-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 $(LED_MIRRORED)), yes)
- OPT_DEFS += -DLED_MIRRORED
-endif
+# Do not edit past here
+
+include keyboards/$(KEYBOARD)/post_rules.mk
+
diff --git a/keyboards/rgbkb/sol/rev1/config.h b/keyboards/rgbkb/sol/rev1/config.h
index 51c4bbb65b..3cfc3eef94 100644
--- a/keyboards/rgbkb/sol/rev1/config.h
+++ b/keyboards/rgbkb/sol/rev1/config.h
@@ -26,6 +26,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PRODUCT Sol
#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
+/* ws2812 RGB LED */
+#define RGB_DI_PIN B3
+
#ifdef LED_MIRRORED
#define RGBLED_NUM 35
#else
@@ -34,3 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DRIVER_LED_TOTAL RGBLED_NUM
#define RGB_MATRIX_CENTER { 112, 35 }
+
+// Encoder support
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D6 }
diff --git a/keyboards/rgbkb/sol/rev1/post_rules.mk b/keyboards/rgbkb/sol/rev1/post_rules.mk
new file mode 100644
index 0000000000..ede37a1ad7
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev1/post_rules.mk
@@ -0,0 +1,19 @@
+# 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
diff --git a/keyboards/rgbkb/sol/rev1/rev1.c b/keyboards/rgbkb/sol/rev1/rev1.c
index 6ee4b610b3..21b4503ab9 100644
--- a/keyboards/rgbkb/sol/rev1/rev1.c
+++ b/keyboards/rgbkb/sol/rev1/rev1.c
@@ -2,18 +2,18 @@
#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 },
- { 35, 36, 37, 38, 39, 40, 41 },
- { 42, 43, 44, 45, 46, 47, 48 },
- { 49, 50, 51, 52, 53, 54, 55 },
- { 56, 57, 58, 59, 60, 61, 62 },
- { 63, 64, 65, 66, 67, 68, 68 },
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
+ { 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 },
+ { 35, 36, 37, 38, 39, 40, 41 },
+ { 42, 43, 44, 45, 46, 47, 48 },
+ { 49, 50, 51, 52, 53, 54, 55 },
+ { 56, 57, 58, 59, 60, 61, 62 },
+ { 63, 64, 65, 66, 67, 68, 68 },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
}, {
// Left Hand Mapped Left to Right
{ 0, 0 }, { 21, 0 }, { 38, 0 }, { 56, 0 }, { 73, 0 }, { 91, 0 }, { 112, 0 },
diff --git a/keyboards/rgbkb/sol/rev1/rules.mk b/keyboards/rgbkb/sol/rev1/rules.mk
index e69de29bb2..dd6d25eb98 100644
--- a/keyboards/rgbkb/sol/rev1/rules.mk
+++ b/keyboards/rgbkb/sol/rev1/rules.mk
@@ -0,0 +1,28 @@
+# RGBKB Sol Rev1 Defaults
+
+# Keycode Options
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+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 = yes # Enable global lighting effects. Do not enable with RGB Matrix
+RGBLIGHT_ANIMATIONS = yes # LED animations
+LED_MIRRORED = yes # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
+
+RGB_MATRIX_ENABLE = no # 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
+IOS_DEVICE_ENABLE = no # Limit max brightness to connect to IOS device (iPad,iPhone)
+
+# Misc
+OLED_DRIVER_ENABLE = no # Enable the OLED Driver
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
diff --git a/keyboards/rgbkb/sol/rev2/config.h b/keyboards/rgbkb/sol/rev2/config.h
new file mode 100644
index 0000000000..af74b7e46f
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/config.h
@@ -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
diff --git a/keyboards/rgbkb/sol/rev2/info.json b/keyboards/rgbkb/sol/rev2/info.json
new file mode 100644
index 0000000000..e252ea2e2d
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/info.json
@@ -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}
+ ]
+ }
+ }
+}
diff --git a/keyboards/rgbkb/sol/rev2/post_rules.mk b/keyboards/rgbkb/sol/rev2/post_rules.mk
new file mode 100644
index 0000000000..0cbf430ad3
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/post_rules.mk
@@ -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
diff --git a/keyboards/rgbkb/sol/rev2/rev2.c b/keyboards/rgbkb/sol/rev2/rev2.c
new file mode 100644
index 0000000000..467aa18e44
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/rev2.c
@@ -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
+
diff --git a/keyboards/rgbkb/sol/rev2/rev2.h b/keyboards/rgbkb/sol/rev2/rev2.h
new file mode 100644
index 0000000000..6f70f09bee
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/rev2.h
@@ -0,0 +1 @@
+#pragma once
diff --git a/keyboards/rgbkb/sol/rev2/rules.mk b/keyboards/rgbkb/sol/rev2/rules.mk
new file mode 100644
index 0000000000..87b400fa14
--- /dev/null
+++ b/keyboards/rgbkb/sol/rev2/rules.mk
@@ -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.
diff --git a/keyboards/rgbkb/sol/rules.mk b/keyboards/rgbkb/sol/rules.mk
index a3dcfc2903..3be8f0b229 100644
--- a/keyboards/rgbkb/sol/rules.mk
+++ b/keyboards/rgbkb/sol/rules.mk
@@ -2,41 +2,15 @@
MCU = atmega32u4
# Processor frequency.
-# This will define a symbol, F_CPU, in all source code files equal to the
-# processor frequency in Hz. You can then use this symbol in your source code to
-# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
-# automatically to create a 32-bit value in your source code.
-#
-# This will be an integer division of F_USB below, as it is sourced by
-# F_USB after it has run through any CPU prescalers. Note that this value
-# does not *change* the processor frequency - it should merely be updated to
-# reflect the processor speed set externally so that the code can use accurate
-# software delays.
F_CPU = 16000000
-#
-# LUFA specific
-#
# Target architecture (see library "Board Types" documentation).
ARCH = AVR8
# Input clock frequency.
-# This will define a symbol, F_USB, in all source code files equal to the
-# input clock frequency (before any prescaling is performed) in Hz. This value may
-# differ from F_CPU if prescaling is used on the latter, and is required as the
-# raw input clock is fed directly to the PLL sections of the AVR for high speed
-# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
-# at the end, this will be done automatically to create a 32-bit value in your
-# source code.
-#
-# If no clock division is performed on the input clock inside the AVR (via the
-# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
F_USB = $(F_CPU)
# Bootloader
-# This definition is optional, and if your keyboard supports multiple bootloaders of
-# different sizes, comment this out, and the correct address will be loaded
-# automatically (+60). See bootloader.mk for all options.
BOOTLOADER = qmk-dfu
# Interrupt driven control endpoint task(+60)
@@ -48,18 +22,4 @@ OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
SPLIT_KEYBOARD = yes
ENCODER_ENABLE = yes
-# Build Options
-# change to "no" to disable the options, or define them in the Makefile in
-# the appropriate keymap folder that will get included automatically
-#
-BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
-CONSOLE_ENABLE = no # Console for debug(+400)
-COMMAND_ENABLE = yes # Commands for debug and configuration
-NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-UNICODE_ENABLE = no # Unicode
-BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
-
-DEFAULT_FOLDER = rgbkb/sol/rev1
+DEFAULT_FOLDER = rgbkb/sol/rev2
diff --git a/keyboards/rgbkb/sol/sol.h b/keyboards/rgbkb/sol/sol.h
index d26546006c..1bc87cb0aa 100644
--- a/keyboards/rgbkb/sol/sol.h
+++ b/keyboards/rgbkb/sol/sol.h
@@ -3,6 +3,8 @@
#include "quantum.h"
#ifdef KEYBOARD_rgbkb_sol_rev1
#include "rev1.h"
+#else
+#include "rev2.h"
#endif
@@ -29,6 +31,32 @@
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R50, R56 } \
}
+#define ENCODER_LAYOUT( \
+ E10, E11, \
+ E20, E21 \
+) \
+{ \
+ { E10, E11 }, \
+ { E20, E21 } \
+}
+
+#define EXTRA_ENCODER_LAYOUT( \
+ E10, E11, \
+ E20, E21, \
+ E30, E31, \
+ E40, E41, \
+ E50, E51, \
+ E60, E61 \
+) \
+{ \
+ { E10, E11 }, \
+ { E20, E21 }, \
+ { E30, E31 }, \
+ { E40, E41 }, \
+ { E50, E51 }, \
+ { E60, E61 } \
+}
+
#define KC________ KC_TRNS
#define KC_RGB_MOD RGB_MOD
#define KC_FN FN
diff --git a/users/xulkal/custom_encoder.c b/users/xulkal/custom_encoder.c
index 09f1cda0d1..076a9891a3 100644
--- a/users/xulkal/custom_encoder.c
+++ b/users/xulkal/custom_encoder.c
@@ -4,7 +4,7 @@
const uint16_t PROGMEM encoders[][2] = {
{ KC_PGUP, KC_PGDN },
{ KC_DOWN, KC_UP }
-}
+};
void encoder_update_user(uint8_t index, bool clockwise)
{