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 keysdaktil_manuform
parent
17ff9cf554
commit
40b0ddd425
|
@ -168,11 +168,11 @@ static const unsigned char font[] PROGMEM = {
|
||||||
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
|
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
|
||||||
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
|
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
|
||||||
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
|
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
|
||||||
0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
|
0x00, 0x00, 0xF0, 0xF4, 0xEC, 0xDE,
|
||||||
0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
|
0xDE, 0xBE, 0x3E, 0x3E, 0x3F, 0x3F,
|
||||||
0x00, 0x00, 0x00, 0xE0, 0xEC, 0xDF,
|
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x3F,
|
||||||
0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00,
|
0x3F, 0x3E, 0x3E, 0xBE, 0xDE, 0xDE,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xEC, 0xF4, 0xF0, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x7F, 0x80, 0x80,
|
0x00, 0x00, 0x00, 0x7F, 0x80, 0x80,
|
||||||
0x80, 0x70, 0x0F, 0x00, 0x00, 0x80,
|
0x80, 0x70, 0x0F, 0x00, 0x00, 0x80,
|
||||||
0x7F, 0x00, 0x00, 0x7F, 0x80, 0x80,
|
0x7F, 0x00, 0x00, 0x7F, 0x80, 0x80,
|
||||||
|
@ -200,11 +200,11 @@ static const unsigned char font[] PROGMEM = {
|
||||||
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
|
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
|
||||||
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
|
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
|
||||||
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
|
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
|
||||||
0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
|
0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF,
|
||||||
0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
|
0xFF, 0xFF, 0xFC, 0xE0, 0x80, 0x00,
|
||||||
0x40, 0x7C, 0x3F, 0x3F, 0x23, 0x01,
|
|
||||||
0x23, 0x3F, 0x37, 0x6C, 0x40, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 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,
|
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,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xFE, 0xFC, 0x00, 0xFC, 0xFE, 0x7F,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
};
|
};
|
||||||
|
|
|
@ -35,16 +35,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define MATRIX_COLS 7
|
#define MATRIX_COLS 7
|
||||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
|
#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 */
|
/* Set 0 if debouncing isn't needed */
|
||||||
#define DEBOUNCE 5
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
/* ws2812 RGB LED */
|
|
||||||
#define RGB_DI_PIN B3
|
|
||||||
|
|
||||||
#ifdef IOS_DEVICE_ENABLE
|
#ifdef IOS_DEVICE_ENABLE
|
||||||
#define RGBLIGHT_LIMIT_VAL 40
|
#define RGBLIGHT_LIMIT_VAL 40
|
||||||
#elif RGBLIGHT_FULL_POWER
|
#elif RGBLIGHT_FULL_POWER
|
||||||
|
|
|
@ -1,38 +1,15 @@
|
||||||
# Build Options
|
# Overridden build options from rev1
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
|
||||||
# the appropriate keymap folder that will get included automatically
|
# RGB Options
|
||||||
#
|
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
# Misc
|
||||||
|
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
# Do not edit past here
|
# Do not edit past here
|
||||||
|
|
||||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||||
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
|
|
||||||
|
|
|
@ -1,38 +1,14 @@
|
||||||
# Build Options
|
# Overridden build options from rev1
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
|
||||||
# the appropriate keymap folder that will get included automatically
|
# Debug Options
|
||||||
#
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
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)
|
|
||||||
|
|
||||||
# Do not edit past here
|
# Do not edit past here
|
||||||
|
|
||||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||||
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
|
|
||||||
|
|
|
@ -5,13 +5,6 @@
|
||||||
#include "split_util.h"
|
#include "split_util.h"
|
||||||
#endif
|
#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.
|
// 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.
|
// 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
|
// 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
|
_ADJ
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Keycode defines for layers
|
||||||
|
#define QWERTY DF(_QWERTY)
|
||||||
|
#define COLEMAK DF(_COLEMAK)
|
||||||
|
#define FN MO(_FN)
|
||||||
|
#define ADJ MO(_ADJ)
|
||||||
|
|
||||||
enum custom_keycodes {
|
enum custom_keycodes {
|
||||||
QWERTY = SAFE_RANGE,
|
RGBRST = SAFE_RANGE,
|
||||||
COLEMAK,
|
RGB_MENU
|
||||||
FN,
|
|
||||||
ADJ,
|
|
||||||
BACKLIT,
|
|
||||||
RGBRST
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum macro_keycodes {
|
#define FN_ESC LT(_FN, KC_ESC)
|
||||||
KC_SAMPLEMACRO,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define FN_ESC LT(_FN, KC_ESC)
|
|
||||||
#define FN_CAPS LT(_FN, KC_CAPS)
|
#define FN_CAPS LT(_FN, KC_CAPS)
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
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 | ; | ' |
|
* |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|
|
* | 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 | ' |
|
* |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 |
|
* | 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( \
|
[_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_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, \
|
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_G, KC_LPRN, KC_RPRN, KC_K, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
|
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_D, KC_V, KC_LCBR, KC_RCBR, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, \
|
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_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 \
|
KC_SPC, KC_DEL, KC_ENT, KC_SPC \
|
||||||
),
|
),
|
||||||
|
@ -107,8 +96,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
*/
|
*/
|
||||||
[_FN] = LAYOUT( \
|
[_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_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_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_SLCK, _______, 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_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, \
|
_______, _______, _______, 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, \
|
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_SAD, RGB_VAI, RGB_SAI, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
|
||||||
_______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, \
|
_______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, \
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
|
_______, RGB_SPD, _______, RGB_SPI, _______, _______, _______, _______, _______, RGB_SPI, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
|
||||||
_______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, \
|
_______, _______, _______, 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
|
#ifdef RGB_OLED_MENU
|
||||||
bool TOG_STATUS = false;
|
uint8_t rgb_encoder_state = 4;
|
||||||
int RGB_current_mode;
|
|
||||||
|
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
|
#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) {
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
if (index == 0) { /* First encoder */
|
if (!is_keyboard_master())
|
||||||
if (clockwise) {
|
return;
|
||||||
tap_code(KC_VOLU);
|
|
||||||
} else {
|
#ifdef RGB_OLED_MENU
|
||||||
tap_code(KC_VOLD);
|
if (index == RGB_OLED_MENU) {
|
||||||
}
|
(*rgb_matrix_functions[rgb_encoder_state][clockwise])();
|
||||||
} else if (index == 1) { /* Second encoder*/
|
} else
|
||||||
if (clockwise) {
|
#endif
|
||||||
tap_code(KC_VOLU);
|
{
|
||||||
} else {
|
uint8_t layer = biton32(layer_state);
|
||||||
tap_code(KC_VOLD);
|
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
|
#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) {
|
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) {
|
switch (keycode) {
|
||||||
case QWERTY:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
set_single_persistent_default_layer(_QWERTY);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case COLEMAK:
|
|
||||||
if(record->event.pressed) {
|
|
||||||
set_single_persistent_default_layer(_COLEMAK);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case FN:
|
|
||||||
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
|
|
||||||
} else {
|
|
||||||
TOG_STATUS = !TOG_STATUS;
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
//rgblight_mode(15);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
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:
|
case RGBRST:
|
||||||
#ifdef RGBLIGHT_ENABLE
|
#if defined(RGBLIGHT_ENABLE)
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
eeconfig_update_rgblight_default();
|
eeconfig_update_rgblight_default();
|
||||||
rgblight_enable();
|
rgblight_enable();
|
||||||
RGB_current_mode = rgblight_config.mode;
|
|
||||||
}
|
}
|
||||||
#endif
|
#elif defined(RGB_MATRIX_ENABLE)
|
||||||
break;
|
if (record->event.pressed) {
|
||||||
|
eeconfig_update_rgb_matrix_default();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
case RESET:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
reset_timer = timer_read();
|
||||||
|
} else {
|
||||||
|
if (timer_elapsed(reset_timer) >= 500) {
|
||||||
|
reset_keyboard();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
#if defined(RGB_MATRIX_ENABLE) && defined(KEYBOARD_rgbkb_sol_rev2)
|
||||||
|
case RGB_TOG:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgb_matrix_increase_flags();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
case RGB_MENU:
|
||||||
|
#ifdef RGB_OLED_MENU
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (get_mods() & MOD_MASK_SHIFT) {
|
||||||
|
rgb_encoder_state = (rgb_encoder_state - 1);
|
||||||
|
if (rgb_encoder_state > 5) {
|
||||||
|
rgb_encoder_state = 5;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rgb_encoder_state = (rgb_encoder_state + 1) % 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
RGB_current_mode = rgblight_config.mode;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// OLED Driver Logic
|
// OLED Driver Logic
|
||||||
#ifdef OLED_DRIVER_ENABLE
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
if (!has_usb())
|
if (is_keyboard_master())
|
||||||
return OLED_ROTATION_180; // flip 180 for offhand
|
return OLED_ROTATION_90;
|
||||||
return rotation;
|
return rotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,62 +308,63 @@ static void render_logo(void) {
|
||||||
static const char PROGMEM sol_logo[] = {
|
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,
|
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,
|
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);
|
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) {
|
static void render_status(void) {
|
||||||
// Render to mode icon
|
// Render to mode icon
|
||||||
static const char PROGMEM mode_logo[4][4] = {
|
static const char PROGMEM sol_icon[] = {
|
||||||
{0x95,0x96,0x0a,0},
|
0x9b,0x9c,0x9d,0x9e,0x9f,
|
||||||
{0xb5,0xb6,0x0a,0},
|
0xbb,0xbc,0xbd,0xbe,0xbf,
|
||||||
{0x97,0x98,0x0a,0},
|
0xdb,0xdc,0xdd,0xde,0xdf,0
|
||||||
{0xb7,0xb8,0x0a,0} };
|
};
|
||||||
|
oled_write_P(sol_icon, false);
|
||||||
|
|
||||||
if (keymap_config.swap_lalt_lgui != false) {
|
// Define layers here
|
||||||
oled_write_P(mode_logo[0], false);
|
oled_write_P(PSTR("Layer"), false);
|
||||||
oled_write_P(mode_logo[1], false);
|
switch (biton32(layer_state)) {
|
||||||
} else {
|
case _QWERTY:
|
||||||
oled_write_P(mode_logo[2], false);
|
oled_write_P(PSTR("BASE "), 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);
|
|
||||||
break;
|
break;
|
||||||
case L_FN:
|
case _COLEMAK:
|
||||||
oled_write_P(PSTR("FN \n"), false);
|
oled_write_P(PSTR("CLMK "), false);
|
||||||
break;
|
break;
|
||||||
case L_ADJ:
|
case _FN:
|
||||||
case L_ADJ_TRI:
|
oled_write_P(PSTR("FN "), false);
|
||||||
oled_write_P(PSTR("ADJ \n"), false);
|
break;
|
||||||
|
case _ADJ:
|
||||||
|
oled_write_P(PSTR("ADJ "), false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
oled_write_P(PSTR("UNDEF \n"), false);
|
oled_write_P(PSTR("UNDEF"), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Host Keyboard LED Status
|
// Host Keyboard LED Status
|
||||||
uint8_t led_usb_state = host_keyboard_leds();
|
uint8_t led_state = host_keyboard_leds();
|
||||||
oled_write_P(led_usb_state & (1<<USB_LED_NUM_LOCK) ? PSTR("NUMLOCK ") : PSTR(" "), false);
|
oled_write_P(PSTR("-----"), false);
|
||||||
oled_write_P(led_usb_state & (1<<USB_LED_CAPS_LOCK) ? PSTR("CAPS ") : PSTR(" "), false);
|
oled_write_P(IS_LED_ON(led_state, USB_LED_NUM_LOCK) ? PSTR("NUMLK") : PSTR(" "), false);
|
||||||
oled_write_P(led_usb_state & (1<<USB_LED_SCROLL_LOCK) ? PSTR("SCLK ") : 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) {
|
void oled_task_user(void) {
|
||||||
if (is_keyboard_master())
|
if (is_keyboard_master()) {
|
||||||
render_status();
|
render_status();
|
||||||
else
|
} else {
|
||||||
render_logo();
|
render_logo();
|
||||||
|
oled_scroll_left();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||||
* |FN(CAPS)| A | S | D | F | G | ( | | ) | H | J | K | L | ; | ' |
|
* |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 |
|
||||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
|
||||||
* |FN(CAPS)| A | R | S | T | G | ( | | ) | K | N | E | I | O | ' |
|
* |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 |
|
* | Ctrl | Win | Alt | RGB | ADJ | Space| DEL | | Enter| Space| FN | Left | Down | Up |Right |
|
||||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------'
|
||||||
|
|
|
@ -1,38 +1,16 @@
|
||||||
# Build Options
|
# Default keymap does not have any overridden options from the rev1 / rev2 rules.mk files.
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
# Example:
|
||||||
# the appropriate keymap folder that will get included automatically
|
# 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)
|
# To keep things clean and tidy, as well as make upgrades easier, only place overrides from the defaults in this file.
|
||||||
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)
|
|
||||||
|
|
||||||
# Do not edit past here
|
# Do not edit past here
|
||||||
|
|
||||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||||
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
|
|
||||||
|
|
|
@ -1,38 +1,21 @@
|
||||||
# Build Options
|
# Overridden build options from rev1 & rev2
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
|
||||||
# the appropriate keymap folder that will get included automatically
|
# Debug Options
|
||||||
#
|
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
|
||||||
|
# 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
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
# Do not edit past here
|
# Do not edit past here
|
||||||
|
|
||||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||||
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
|
|
||||||
|
|
|
@ -1,37 +1,19 @@
|
||||||
# Build Options
|
# Overridden build options from rev1 & rev2
|
||||||
# change to "no" to disable the options, or define them in the Makefile in
|
|
||||||
# the appropriate keymap folder that will get included automatically
|
# RGB Options
|
||||||
#
|
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
||||||
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
RGBLIGHT_ANIMATIONS = no # LED animations
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
LED_MIRRORED = no # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
RGB_MATRIX_ENABLE = WS2812 # Enable per-key coordinate based RGB effects. Do not enable with RGBlight
|
||||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
FULLHAND_ENABLE = yes # Enables the additional 24 Full Hand LEDs
|
||||||
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
|
# Misc
|
||||||
RGBLIGHT_ENABLE = no # Enable global lighting effects. Do not enable with RGB Matrix
|
OLED_DRIVER_ENABLE = yes # Enable the OLED Driver
|
||||||
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)
|
|
||||||
|
|
||||||
# Do not edit past here
|
# Do not edit past here
|
||||||
|
|
||||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
include keyboards/$(KEYBOARD)/post_rules.mk
|
||||||
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
|
|
||||||
|
|
|
@ -26,6 +26,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define PRODUCT Sol
|
#define PRODUCT Sol
|
||||||
#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
|
#define DESCRIPTION "An RGB, split, ortho-esque keyboard"
|
||||||
|
|
||||||
|
/* ws2812 RGB LED */
|
||||||
|
#define RGB_DI_PIN B3
|
||||||
|
|
||||||
#ifdef LED_MIRRORED
|
#ifdef LED_MIRRORED
|
||||||
#define RGBLED_NUM 35
|
#define RGBLED_NUM 35
|
||||||
#else
|
#else
|
||||||
|
@ -34,3 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define DRIVER_LED_TOTAL RGBLED_NUM
|
#define DRIVER_LED_TOTAL RGBLED_NUM
|
||||||
|
|
||||||
#define RGB_MATRIX_CENTER { 112, 35 }
|
#define RGB_MATRIX_CENTER { 112, 35 }
|
||||||
|
|
||||||
|
// Encoder support
|
||||||
|
#define ENCODERS_PAD_A { D2 }
|
||||||
|
#define ENCODERS_PAD_B { D6 }
|
||||||
|
|
|
@ -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
|
|
@ -2,18 +2,18 @@
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
led_config_t g_led_config = { {
|
led_config_t g_led_config = { {
|
||||||
{ 0, 1, 2, 3, 4, 5, 6 },
|
{ 0, 1, 2, 3, 4, 5, 6 },
|
||||||
{ 7, 8, 9, 10, 11, 12, 13 },
|
{ 7, 8, 9, 10, 11, 12, 13 },
|
||||||
{ 14, 15, 16, 17, 18, 19, 20 },
|
{ 14, 15, 16, 17, 18, 19, 20 },
|
||||||
{ 21, 22, 23, 24, 25, 26, 27 },
|
{ 21, 22, 23, 24, 25, 26, 27 },
|
||||||
{ 28, 29, 30, 31, 32, 33, 34 },
|
{ 28, 29, 30, 31, 32, 33, 34 },
|
||||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 33, 34 },
|
||||||
{ 35, 36, 37, 38, 39, 40, 41 },
|
{ 35, 36, 37, 38, 39, 40, 41 },
|
||||||
{ 42, 43, 44, 45, 46, 47, 48 },
|
{ 42, 43, 44, 45, 46, 47, 48 },
|
||||||
{ 49, 50, 51, 52, 53, 54, 55 },
|
{ 49, 50, 51, 52, 53, 54, 55 },
|
||||||
{ 56, 57, 58, 59, 60, 61, 62 },
|
{ 56, 57, 58, 59, 60, 61, 62 },
|
||||||
{ 63, 64, 65, 66, 67, 68, 68 },
|
{ 63, 64, 65, 66, 67, 68, 68 },
|
||||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 68, 68 }
|
||||||
}, {
|
}, {
|
||||||
// Left Hand Mapped Left to Right
|
// Left Hand Mapped Left to Right
|
||||||
{ 0, 0 }, { 21, 0 }, { 38, 0 }, { 56, 0 }, { 73, 0 }, { 91, 0 }, { 112, 0 },
|
{ 0, 0 }, { 21, 0 }, { 38, 0 }, { 56, 0 }, { 73, 0 }, { 91, 0 }, { 112, 0 },
|
||||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
#pragma once
|
|
@ -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.
|
|
@ -2,41 +2,15 @@
|
||||||
MCU = atmega32u4
|
MCU = atmega32u4
|
||||||
|
|
||||||
# Processor frequency.
|
# 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
|
F_CPU = 16000000
|
||||||
|
|
||||||
#
|
|
||||||
# LUFA specific
|
|
||||||
#
|
|
||||||
# Target architecture (see library "Board Types" documentation).
|
# Target architecture (see library "Board Types" documentation).
|
||||||
ARCH = AVR8
|
ARCH = AVR8
|
||||||
|
|
||||||
# Input clock frequency.
|
# 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)
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
# Bootloader
|
# 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
|
BOOTLOADER = qmk-dfu
|
||||||
|
|
||||||
# Interrupt driven control endpoint task(+60)
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
@ -48,18 +22,4 @@ OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
|
||||||
SPLIT_KEYBOARD = yes
|
SPLIT_KEYBOARD = yes
|
||||||
ENCODER_ENABLE = yes
|
ENCODER_ENABLE = yes
|
||||||
|
|
||||||
# Build Options
|
DEFAULT_FOLDER = rgbkb/sol/rev2
|
||||||
# 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
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
#ifdef KEYBOARD_rgbkb_sol_rev1
|
#ifdef KEYBOARD_rgbkb_sol_rev1
|
||||||
#include "rev1.h"
|
#include "rev1.h"
|
||||||
|
#else
|
||||||
|
#include "rev2.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +31,32 @@
|
||||||
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R50, R56 } \
|
{ 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________ KC_TRNS
|
||||||
#define KC_RGB_MOD RGB_MOD
|
#define KC_RGB_MOD RGB_MOD
|
||||||
#define KC_FN FN
|
#define KC_FN FN
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
const uint16_t PROGMEM encoders[][2] = {
|
const uint16_t PROGMEM encoders[][2] = {
|
||||||
{ KC_PGUP, KC_PGDN },
|
{ KC_PGUP, KC_PGDN },
|
||||||
{ KC_DOWN, KC_UP }
|
{ KC_DOWN, KC_UP }
|
||||||
}
|
};
|
||||||
|
|
||||||
void encoder_update_user(uint8_t index, bool clockwise)
|
void encoder_update_user(uint8_t index, bool clockwise)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue