From b74d6e732a91e5eeb789d5b5c8ba59c8f52e3f19 Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Tue, 18 Jan 2022 19:53:17 -0500 Subject: [PATCH 01/18] [Keyboard] Add Synth Labs Solo --- keyboards/synthlabs/solo/config.h | 85 +++++++++++++++++++ keyboards/synthlabs/solo/info.json | 43 ++++++++++ .../synthlabs/solo/keymaps/default/keymap.c | 36 ++++++++ .../synthlabs/solo/keymaps/default/readme.md | 3 + .../synthlabs/solo/keymaps/gamepad/keymap.c | 28 ++++++ .../synthlabs/solo/keymaps/gamepad/readme.md | 3 + .../synthlabs/solo/keymaps/gamepad/rules.mk | 2 + keyboards/synthlabs/solo/keymaps/via/keymap.c | 36 ++++++++ keyboards/synthlabs/solo/keymaps/via/rules.mk | 2 + keyboards/synthlabs/solo/readme.md | 28 ++++++ keyboards/synthlabs/solo/rules.mk | 20 +++++ keyboards/synthlabs/solo/solo.c | 1 + keyboards/synthlabs/solo/solo.h | 40 +++++++++ 13 files changed, 327 insertions(+) create mode 100644 keyboards/synthlabs/solo/config.h create mode 100644 keyboards/synthlabs/solo/info.json create mode 100644 keyboards/synthlabs/solo/keymaps/default/keymap.c create mode 100644 keyboards/synthlabs/solo/keymaps/default/readme.md create mode 100644 keyboards/synthlabs/solo/keymaps/gamepad/keymap.c create mode 100644 keyboards/synthlabs/solo/keymaps/gamepad/readme.md create mode 100644 keyboards/synthlabs/solo/keymaps/gamepad/rules.mk create mode 100644 keyboards/synthlabs/solo/keymaps/via/keymap.c create mode 100644 keyboards/synthlabs/solo/keymaps/via/rules.mk create mode 100644 keyboards/synthlabs/solo/readme.md create mode 100644 keyboards/synthlabs/solo/rules.mk create mode 100644 keyboards/synthlabs/solo/solo.c create mode 100644 keyboards/synthlabs/solo/solo.h diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h new file mode 100644 index 000000000000..6cb58f9a6b0c --- /dev/null +++ b/keyboards/synthlabs/solo/config.h @@ -0,0 +1,85 @@ +/* Copyright 2022 Aaron Hong (Nostril) + * + * 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 . + */ +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x534E // "SN" +#define PRODUCT_ID 0x3031 // "01" +#define DEVICE_VER 0x0001 +#define MANUFACTURER Synth Labs +#define PRODUCT Solo + +#define ENCODER_RESOLUTION 4.5 + +#define ENCODERS_PAD_A { B2 } +#define ENCODERS_PAD_B { B3 } + +/* key matrix size */ +#define MATRIX_ROWS 3 +#define MATRIX_COLS 7 + +/* Pins D0 and D2 are actually unused, but are included in DIRECT_PINS to fill space in the keyboard matrix to hold CW and CCW keycodes */ +#define DIRECT_PINS { { C6, D6, B5, B4, D7, B6, D4 }, { D0, B7, D2 }, { F0, F7, F4, F5, F6, F1, C7 } } +#define UNUSED_PINS { D0, D1, D2, D3, D5, B0, B1 } + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define USB_POLLING_INTERVAL_MS 1 +#define QMK_KEYS_PER_SCAN 17 + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ + +#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +#define BOOTMAGIC_LITE_ROW 1 +#define BOOTMAGIC_LITE_COLUMN 1 + +#define JOYSTICK_BUTTON_COUNT 8 +#define JOYSTICK_AXES_COUNT 1 +#define JOYSTICK_AXES_RESOLUTION 16 diff --git a/keyboards/synthlabs/solo/info.json b/keyboards/synthlabs/solo/info.json new file mode 100644 index 000000000000..c08800d0db4c --- /dev/null +++ b/keyboards/synthlabs/solo/info.json @@ -0,0 +1,43 @@ +{ + "keyboard_name": "Synth Labs Solo", + "url": "http://solo.synthlabs.io", + "maintainer": "Nostril", + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "debounce": 5, + "matrix_pins": { + "direct": [ + ["C6", "D6", "B5", "B4", "D7", "B6", "D4"], + ["D0", "B7", "D2", null, null, null, null], + ["F0", "F7", "F4", "F5", "F6", "F1", "C7"] + ] + }, + "usb": { + "vid": "0x534E", + "pid": "0x3031", + "device_ver": "0x0001" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label":"P2 1", "x":3, "y":0, "w":0.5, "h":1.5, "matrix":[0,0]}, + {"label":"P1 2", "x":3.5, "y":0, "w":0.5, "h":1.5, "matrix":[0,1]}, + {"label":"P2 3", "x":4, "y":0, "w":0.5, "h":1.5, "matrix":[0,2]}, + {"label":"P1 4", "x":4.5, "y":0, "w":0.5, "h":1.5, "matrix":[0,3]}, + {"label":"P2 5", "x":5, "y":0, "w":0.5, "h":1.5, "matrix":[0,4]}, + {"label":"P1 6", "x":5.5, "y":0, "w":0.5, "h":1.5, "matrix":[0,5]}, + {"label":"P2 7", "x":6, "y":0, "w":0.5, "h":1.5, "matrix":[0,6]}, + {"label":"Knob Press", "x":0.5, "y":1, "w":1.5, "h":1.5, "matrix":[1,1]}, + {"label":"Knob CCW", "x":0, "y":1.25, "w":0.5, "matrix":[1,0]}, + {"label":"Knob CW", "x":2, "y":1.25, "w":0.5, "matrix":[1,2]}, + {"label":"P1 1", "x":3, "y":2, "w":0.5, "h":1.5, "matrix":[2,0]}, + {"label":"P2 2", "x":3.5, "y":2, "w":0.5, "h":1.5, "matrix":[2,1]}, + {"label":"P1 3", "x":4, "y":2, "w":0.5, "h":1.5, "matrix":[2,2]}, + {"label":"P2 4", "x":4.5, "y":2, "w":0.5, "h":1.5, "matrix":[2,3]}, + {"label":"P1 5", "x":5, "y":2, "w":0.5, "h":1.5, "matrix":[2,4]}, + {"label":"P2 6", "x":5.5, "y":2, "w":0.5, "h":1.5, "matrix":[2,5]}, + {"label":"P1 7", "x":6, "y":2, "w":0.5, "h":1.5, "matrix":[2,6]} + ] + } + } +} diff --git a/keyboards/synthlabs/solo/keymaps/default/keymap.c b/keyboards/synthlabs/solo/keymaps/default/keymap.c new file mode 100644 index 000000000000..d1060905bf46 --- /dev/null +++ b/keyboards/synthlabs/solo/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_J, KC_U, KC_K, KC_I, KC_L, KC_O, KC_SCLN, + KC_VOLD, KC_MUTE, KC_VOLU, + KC_J, KC_U, KC_K, KC_I, KC_L, KC_O, KC_SCLN + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const keypos_t keypos_cw = { .row=1, .col=2 }; +const keypos_t keypos_ccw = { .row=1, .col=0 }; + +uint16_t get_keycode_at_pos(keypos_t keypos) { + return keymap_key_to_keycode(layer_switch_get_layer(keypos), keypos); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + tap_code(get_keycode_at_pos(clockwise ? keypos_cw : keypos_ccw)); + return true; +} diff --git a/keyboards/synthlabs/solo/keymaps/default/readme.md b/keyboards/synthlabs/solo/keymaps/default/readme.md new file mode 100644 index 000000000000..625bd392b68a --- /dev/null +++ b/keyboards/synthlabs/solo/keymaps/default/readme.md @@ -0,0 +1,3 @@ +# Default Synth Labs Solo Layout + +This keymap is intended for usage as a macropad. diff --git a/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c b/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c new file mode 100644 index 000000000000..2f7f19fb93bc --- /dev/null +++ b/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c @@ -0,0 +1,28 @@ +#include QMK_KEYBOARD_H + +#include "joystick.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + JS_BUTTON0,JS_BUTTON1,JS_BUTTON2,JS_BUTTON3,JS_BUTTON4,JS_BUTTON5,JS_BUTTON6, + KC_NO, JS_BUTTON7, KC_NO, + JS_BUTTON0,JS_BUTTON1,JS_BUTTON2,JS_BUTTON3,JS_BUTTON4,JS_BUTTON5,JS_BUTTON6 + ) +}; + +int16_t joystick_position = 0; +int16_t pulses_per_revolution = 24; // Depends on encoder model. Usually 18ppr or 24ppr for Bourns EC11s. +int16_t full_joystick_value = 32767; // Equivalent to max value of int16. +full_joystick_value is +1.0 axis output. -full_joystick_value is -1.0 axis output. +joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT] = { + [0] = JOYSTICK_AXIS_VIRTUAL +}; + +bool encoder_update_kb(uint8_t index, bool clockwise) { + joystick_position += (clockwise ? 2 : -2) * (full_joystick_value / pulses_per_revolution); // +2 and -2 are used, since +1.0 and -1.0 axis output refers to positions at half of a full rotation + + if (joystick_position != joystick_status.axes[0]) { + joystick_status.axes[0] = joystick_position; + joystick_status.status |= JS_UPDATED; + } + return true; +} diff --git a/keyboards/synthlabs/solo/keymaps/gamepad/readme.md b/keyboards/synthlabs/solo/keymaps/gamepad/readme.md new file mode 100644 index 000000000000..9930bb61b470 --- /dev/null +++ b/keyboards/synthlabs/solo/keymaps/gamepad/readme.md @@ -0,0 +1,3 @@ +# Gamepad Synth Labs Solo Layout + +This keymap is intended for usage as a IIDX controller. The rotary encoder is mapped as a virtual 1-axis joystick. diff --git a/keyboards/synthlabs/solo/keymaps/gamepad/rules.mk b/keyboards/synthlabs/solo/keymaps/gamepad/rules.mk new file mode 100644 index 000000000000..30c23b8763bf --- /dev/null +++ b/keyboards/synthlabs/solo/keymaps/gamepad/rules.mk @@ -0,0 +1,2 @@ +JOYSTICK_ENABLE = yes +DEBOUNCE_TYPE = sym_eager_pk diff --git a/keyboards/synthlabs/solo/keymaps/via/keymap.c b/keyboards/synthlabs/solo/keymaps/via/keymap.c new file mode 100644 index 000000000000..d1060905bf46 --- /dev/null +++ b/keyboards/synthlabs/solo/keymaps/via/keymap.c @@ -0,0 +1,36 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_J, KC_U, KC_K, KC_I, KC_L, KC_O, KC_SCLN, + KC_VOLD, KC_MUTE, KC_VOLU, + KC_J, KC_U, KC_K, KC_I, KC_L, KC_O, KC_SCLN + ), + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const keypos_t keypos_cw = { .row=1, .col=2 }; +const keypos_t keypos_ccw = { .row=1, .col=0 }; + +uint16_t get_keycode_at_pos(keypos_t keypos) { + return keymap_key_to_keycode(layer_switch_get_layer(keypos), keypos); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + tap_code(get_keycode_at_pos(clockwise ? keypos_cw : keypos_ccw)); + return true; +} diff --git a/keyboards/synthlabs/solo/keymaps/via/rules.mk b/keyboards/synthlabs/solo/keymaps/via/rules.mk new file mode 100644 index 000000000000..935e60c73ad7 --- /dev/null +++ b/keyboards/synthlabs/solo/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +BOOTLOADER = atmel-dfu diff --git a/keyboards/synthlabs/solo/readme.md b/keyboards/synthlabs/solo/readme.md new file mode 100644 index 000000000000..38641c27061a --- /dev/null +++ b/keyboards/synthlabs/solo/readme.md @@ -0,0 +1,28 @@ +# Synth Labs Solo + +![Synth Labs Solo](https://i.imgur.com/uVUtfks.png) + +The Solo Macropad by Synth Labs. + +Keyboard Maintainer: [Nostril](https://github.com/hongaaronc) +Hardware Supported: Synth Labs Solo +Hardware Availability: [https://solo.synthlabs.io/](https://solo.synthlabs.io/) + +Make example for this keyboard (after setting up your build environment): + + make synthlabs/solo:default + +Flashing example for this keyboard: + + make synthlabs/solo:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (1,1) in the matrix (the rotary encoder button) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `RESET` if it is available +* diff --git a/keyboards/synthlabs/solo/rules.mk b/keyboards/synthlabs/solo/rules.mk new file mode 100644 index 000000000000..dc7ad21b2e14 --- /dev/null +++ b/keyboards/synthlabs/solo/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = atmega32u4 + +# Bootloader selection +BOOTLOADER = atmel-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Disable keyboard backlight functionality +AUDIO_ENABLE = no # Audio output +RGBLIGHT_ENABLE = no # Disable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +ENCODER_ENABLE = yes # Enable Rotary Encoder support diff --git a/keyboards/synthlabs/solo/solo.c b/keyboards/synthlabs/solo/solo.c new file mode 100644 index 000000000000..ec7d155c7f7a --- /dev/null +++ b/keyboards/synthlabs/solo/solo.c @@ -0,0 +1 @@ +#include "solo.h" diff --git a/keyboards/synthlabs/solo/solo.h b/keyboards/synthlabs/solo/solo.h new file mode 100644 index 000000000000..5c4babef3ce8 --- /dev/null +++ b/keyboards/synthlabs/solo/solo.h @@ -0,0 +1,40 @@ +#pragma once + +#include "quantum.h" + +#ifndef SYNTH_LABS_SOLO_H +#define SYNTH_LABS_SOLO_H + +#define XXX KC_NO + +// This a shortcut to help you visually see your layout. +// The first section contains all of the arguments +// The second converts the arguments into a two-dimensional array +#define LAYOUT_all( \ + K01, K02, K03, K04, K05, K06, K07, \ + K08, K09, K10, \ + K11, K12, K13, K14, K15, K16, K17 \ + ) { \ + { K01, K02, K03, K04, K05, K06, K07 }, \ + { K08, K09, K10 }, \ + { K11, K12, K13, K14, K15, K16, K17 } \ + } +#define LAYOUT_left( \ + K02, K04, K06, \ + K08, K09, K10, \ + K11, K13, K15, K17 \ + ) { \ + { XXX, K02, XXX, K04, XXX, K06, XXX }, \ + { K08, K09, K10 }, \ + { K11, XXX, K13, XXX, K15, XXX, K17 } \ + } +#define LAYOUT_right( \ + K16, K14, K12, \ + K08, K09, K10, \ + K07, K05, K03, K01 \ + ) { \ + { K01, XXX, K03, XXX, K05, XXX, K07 }, \ + { K08, K09, K10 }, \ + { XXX, K12, XXX, K14, XXX, K16, XXX } \ + } +#endif // SYNTH_LABS_SOLO From 22972b86fcc92c0ebf2cdbce38ca152027089a93 Mon Sep 17 00:00:00 2001 From: Nostril Date: Fri, 28 Jan 2022 20:18:02 -0800 Subject: [PATCH 02/18] Update keyboards/synthlabs/solo/solo.h Co-authored-by: Drashna Jaelre --- keyboards/synthlabs/solo/solo.h | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/synthlabs/solo/solo.h b/keyboards/synthlabs/solo/solo.h index 5c4babef3ce8..0cb9724e88ed 100644 --- a/keyboards/synthlabs/solo/solo.h +++ b/keyboards/synthlabs/solo/solo.h @@ -37,4 +37,3 @@ { K08, K09, K10 }, \ { XXX, K12, XXX, K14, XXX, K16, XXX } \ } -#endif // SYNTH_LABS_SOLO From df5f0665aa105f2774b80468b24d07b0d5600f1a Mon Sep 17 00:00:00 2001 From: Nostril Date: Fri, 28 Jan 2022 20:18:24 -0800 Subject: [PATCH 03/18] Update keyboards/synthlabs/solo/solo.h Co-authored-by: Drashna Jaelre --- keyboards/synthlabs/solo/solo.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/synthlabs/solo/solo.h b/keyboards/synthlabs/solo/solo.h index 0cb9724e88ed..61a6928be6d0 100644 --- a/keyboards/synthlabs/solo/solo.h +++ b/keyboards/synthlabs/solo/solo.h @@ -2,8 +2,6 @@ #include "quantum.h" -#ifndef SYNTH_LABS_SOLO_H -#define SYNTH_LABS_SOLO_H #define XXX KC_NO From 48aa8c696efe739a80c490b2883d5c324945690e Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Fri, 28 Jan 2022 21:19:19 -0800 Subject: [PATCH 04/18] Add GPL2+ compatible license header for Synth Labs Solo keyboard --- keyboards/synthlabs/solo/config.h | 18 +++--------------- .../synthlabs/solo/keymaps/default/keymap.c | 3 +++ .../synthlabs/solo/keymaps/gamepad/keymap.c | 3 +++ keyboards/synthlabs/solo/keymaps/via/keymap.c | 3 +++ keyboards/synthlabs/solo/solo.h | 3 +++ 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h index 6cb58f9a6b0c..826c823f76a9 100644 --- a/keyboards/synthlabs/solo/config.h +++ b/keyboards/synthlabs/solo/config.h @@ -1,18 +1,6 @@ -/* Copyright 2022 Aaron Hong (Nostril) - * - * 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 . - */ +// Copyright 2022 Aaron Hong (@hongaaronc) +// SPDX-License-Identifier: GPL-2.0-or-later + #pragma once #include "config_common.h" diff --git a/keyboards/synthlabs/solo/keymaps/default/keymap.c b/keyboards/synthlabs/solo/keymaps/default/keymap.c index d1060905bf46..f404f6e51944 100644 --- a/keyboards/synthlabs/solo/keymaps/default/keymap.c +++ b/keyboards/synthlabs/solo/keymaps/default/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2022 Aaron Hong (@hongaaronc) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c b/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c index 2f7f19fb93bc..d1b1562ab29e 100644 --- a/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c +++ b/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2022 Aaron Hong (@hongaaronc) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H #include "joystick.h" diff --git a/keyboards/synthlabs/solo/keymaps/via/keymap.c b/keyboards/synthlabs/solo/keymaps/via/keymap.c index d1060905bf46..f404f6e51944 100644 --- a/keyboards/synthlabs/solo/keymaps/via/keymap.c +++ b/keyboards/synthlabs/solo/keymaps/via/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2022 Aaron Hong (@hongaaronc) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/synthlabs/solo/solo.h b/keyboards/synthlabs/solo/solo.h index 61a6928be6d0..9bdf6faef5aa 100644 --- a/keyboards/synthlabs/solo/solo.h +++ b/keyboards/synthlabs/solo/solo.h @@ -1,3 +1,6 @@ +// Copyright 2022 Aaron Hong (@hongaaronc) +// SPDX-License-Identifier: GPL-2.0-or-later + #pragma once #include "quantum.h" From 06e02994f184ebe537df9d5ab0e6eb34fe86bccd Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Sat, 29 Jan 2022 19:00:00 -0800 Subject: [PATCH 05/18] Update Synth Labs Solo default keymap to not contain VIA-specific encoder behavior --- .../synthlabs/solo/keymaps/default/keymap.c | 29 +------------------ .../synthlabs/solo/keymaps/gamepad/keymap.c | 4 +++ keyboards/synthlabs/solo/keymaps/via/keymap.c | 3 ++ keyboards/synthlabs/solo/solo.c | 14 +++++++++ 4 files changed, 22 insertions(+), 28 deletions(-) diff --git a/keyboards/synthlabs/solo/keymaps/default/keymap.c b/keyboards/synthlabs/solo/keymaps/default/keymap.c index f404f6e51944..fa54111fe86b 100644 --- a/keyboards/synthlabs/solo/keymaps/default/keymap.c +++ b/keyboards/synthlabs/solo/keymaps/default/keymap.c @@ -6,34 +6,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_all( KC_J, KC_U, KC_K, KC_I, KC_L, KC_O, KC_SCLN, - KC_VOLD, KC_MUTE, KC_VOLU, + _______, KC_MUTE, _______, KC_J, KC_U, KC_K, KC_I, KC_L, KC_O, KC_SCLN - ), - [1] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ - ), - [2] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ - ), - [3] = LAYOUT_all( - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______ ) }; - -const keypos_t keypos_cw = { .row=1, .col=2 }; -const keypos_t keypos_ccw = { .row=1, .col=0 }; - -uint16_t get_keycode_at_pos(keypos_t keypos) { - return keymap_key_to_keycode(layer_switch_get_layer(keypos), keypos); -} - -bool encoder_update_user(uint8_t index, bool clockwise) { - tap_code(get_keycode_at_pos(clockwise ? keypos_cw : keypos_ccw)); - return true; -} diff --git a/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c b/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c index d1b1562ab29e..3e55f346f13b 100644 --- a/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c +++ b/keyboards/synthlabs/solo/keymaps/gamepad/keymap.c @@ -13,6 +13,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; +#if defined(JOYSTICK_ENABLE) && defined(ENCODER_ENABLE) + int16_t joystick_position = 0; int16_t pulses_per_revolution = 24; // Depends on encoder model. Usually 18ppr or 24ppr for Bourns EC11s. int16_t full_joystick_value = 32767; // Equivalent to max value of int16. +full_joystick_value is +1.0 axis output. -full_joystick_value is -1.0 axis output. @@ -29,3 +31,5 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } return true; } + +#endif diff --git a/keyboards/synthlabs/solo/keymaps/via/keymap.c b/keyboards/synthlabs/solo/keymaps/via/keymap.c index f404f6e51944..43ec4e880c79 100644 --- a/keyboards/synthlabs/solo/keymaps/via/keymap.c +++ b/keyboards/synthlabs/solo/keymaps/via/keymap.c @@ -28,6 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const keypos_t keypos_cw = { .row=1, .col=2 }; const keypos_t keypos_ccw = { .row=1, .col=0 }; +#if defined(VIA_ENABLE) && defined(ENCODER_ENABLE) uint16_t get_keycode_at_pos(keypos_t keypos) { return keymap_key_to_keycode(layer_switch_get_layer(keypos), keypos); @@ -37,3 +38,5 @@ bool encoder_update_user(uint8_t index, bool clockwise) { tap_code(get_keycode_at_pos(clockwise ? keypos_cw : keypos_ccw)); return true; } + +#endif diff --git a/keyboards/synthlabs/solo/solo.c b/keyboards/synthlabs/solo/solo.c index ec7d155c7f7a..b48122ab38d0 100644 --- a/keyboards/synthlabs/solo/solo.c +++ b/keyboards/synthlabs/solo/solo.c @@ -1 +1,15 @@ #include "solo.h" + +#if !defined(VIA_ENABLE) && !defined(JOYSTICK_ENABLE) && defined(ENCODER_ENABLE) +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (index == 0) { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} +#endif From cdad9cdf23e28190886bfd3d625e3776603eff10 Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Sat, 29 Jan 2022 19:52:23 -0800 Subject: [PATCH 06/18] Add support for modded keycodes to VIA rotary encoder handling for Synth Labs Solo keyboard --- keyboards/synthlabs/solo/config.h | 4 +- keyboards/synthlabs/solo/info.json | 2 +- keyboards/synthlabs/solo/keymaps/via/keymap.c | 44 ++++++++++++++++--- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h index 826c823f76a9..a19152cc8a2b 100644 --- a/keyboards/synthlabs/solo/config.h +++ b/keyboards/synthlabs/solo/config.h @@ -12,10 +12,12 @@ #define MANUFACTURER Synth Labs #define PRODUCT Solo +#define ENCODERS 1 #define ENCODER_RESOLUTION 4.5 - #define ENCODERS_PAD_A { B2 } #define ENCODERS_PAD_B { B3 } +#define ENCODERS_CW_KEY { { 2, 1 } } +#define ENCODERS_CCW_KEY { { 0, 1 } } /* key matrix size */ #define MATRIX_ROWS 3 diff --git a/keyboards/synthlabs/solo/info.json b/keyboards/synthlabs/solo/info.json index c08800d0db4c..4c2865f1e5b7 100644 --- a/keyboards/synthlabs/solo/info.json +++ b/keyboards/synthlabs/solo/info.json @@ -1,7 +1,7 @@ { "keyboard_name": "Synth Labs Solo", "url": "http://solo.synthlabs.io", - "maintainer": "Nostril", + "maintainer": "hongaaronc", "bootloader": "atmel-dfu", "processor": "atmega32u4", "debounce": 5, diff --git a/keyboards/synthlabs/solo/keymaps/via/keymap.c b/keyboards/synthlabs/solo/keymaps/via/keymap.c index 43ec4e880c79..7949c61375f9 100644 --- a/keyboards/synthlabs/solo/keymaps/via/keymap.c +++ b/keyboards/synthlabs/solo/keymaps/via/keymap.c @@ -26,17 +26,49 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -const keypos_t keypos_cw = { .row=1, .col=2 }; -const keypos_t keypos_ccw = { .row=1, .col=0 }; #if defined(VIA_ENABLE) && defined(ENCODER_ENABLE) -uint16_t get_keycode_at_pos(keypos_t keypos) { - return keymap_key_to_keycode(layer_switch_get_layer(keypos), keypos); +#ifdef ENCODERS +static uint8_t encoder_state[] = {0}; +static keypos_t encoder_cw[] = ENCODERS_CW_KEY; +static keypos_t encoder_ccw[] = ENCODERS_CCW_KEY; +#endif + +void encoder_action_unregister(void) { +#ifdef ENCODERS + for (int index = 0; index < ENCODERS; ++index) { + if (encoder_state[index]) { + keyevent_t encoder_event = (keyevent_t) { + .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index], + .pressed = false, + .time = (timer_read() | 1) + }; + encoder_state[index] = 0; + action_exec(encoder_event); + } + } +#endif +} + +void encoder_action_register(uint8_t index, bool clockwise) { +#ifdef ENCODERS + keyevent_t encoder_event = (keyevent_t) { + .key = clockwise ? encoder_cw[index] : encoder_ccw[index], + .pressed = true, + .time = (timer_read() | 1) + }; + encoder_state[index] = (clockwise ^ 1) | (clockwise << 1); + action_exec(encoder_event); +#endif +} + +void matrix_scan_user(void) { + encoder_action_unregister(); } bool encoder_update_user(uint8_t index, bool clockwise) { - tap_code(get_keycode_at_pos(clockwise ? keypos_cw : keypos_ccw)); - return true; + encoder_action_register(index, clockwise); + return false; } #endif From ac7f06b761afa713891120800f66418198d1b24d Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Sun, 30 Jan 2022 18:05:55 -0800 Subject: [PATCH 07/18] Add GPL 2.0+ compatible license header to Synth Labs Solo solo.c --- keyboards/synthlabs/solo/solo.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboards/synthlabs/solo/solo.c b/keyboards/synthlabs/solo/solo.c index b48122ab38d0..b557a3505c4b 100644 --- a/keyboards/synthlabs/solo/solo.c +++ b/keyboards/synthlabs/solo/solo.c @@ -1,3 +1,6 @@ +// Copyright 2022 Aaron Hong (@hongaaronc) +// SPDX-License-Identifier: GPL-2.0-or-later + #include "solo.h" #if !defined(VIA_ENABLE) && !defined(JOYSTICK_ENABLE) && defined(ENCODER_ENABLE) From 28b25c4f59583e7f83fb9ef19878914489e41147 Mon Sep 17 00:00:00 2001 From: Nostril Date: Tue, 22 Feb 2022 03:17:09 -0800 Subject: [PATCH 08/18] Remove unnecessary comments in rules.mk Co-authored-by: Drashna Jaelre --- keyboards/synthlabs/solo/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/synthlabs/solo/rules.mk b/keyboards/synthlabs/solo/rules.mk index dc7ad21b2e14..60491f87dc91 100644 --- a/keyboards/synthlabs/solo/rules.mk +++ b/keyboards/synthlabs/solo/rules.mk @@ -12,7 +12,7 @@ MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Disable keyboard backlight functionality AUDIO_ENABLE = no # Audio output RGBLIGHT_ENABLE = no # Disable WS2812 RGB underlight. Do not enable this with audio at the same time. From 5c9de2621058c1a50e4fd867e77157331cc6acf5 Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Tue, 22 Feb 2022 03:23:58 -0800 Subject: [PATCH 09/18] Replace dummy pin values with NO_PIN --- keyboards/synthlabs/solo/config.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h index a19152cc8a2b..3df55d0d4a14 100644 --- a/keyboards/synthlabs/solo/config.h +++ b/keyboards/synthlabs/solo/config.h @@ -23,8 +23,7 @@ #define MATRIX_ROWS 3 #define MATRIX_COLS 7 -/* Pins D0 and D2 are actually unused, but are included in DIRECT_PINS to fill space in the keyboard matrix to hold CW and CCW keycodes */ -#define DIRECT_PINS { { C6, D6, B5, B4, D7, B6, D4 }, { D0, B7, D2 }, { F0, F7, F4, F5, F6, F1, C7 } } +#define DIRECT_PINS { { C6, D6, B5, B4, D7, B6, D4 }, { NO_PIN, B7, NO_PIN }, { F0, F7, F4, F5, F6, F1, C7 } } #define UNUSED_PINS { D0, D1, D2, D3, D5, B0, B1 } /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ From 14242b40d04d8f28295bfcdf414982bbd5450f95 Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Tue, 22 Feb 2022 03:24:46 -0800 Subject: [PATCH 10/18] Change ENCODER_RESOLUTION to int --- keyboards/synthlabs/solo/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h index 3df55d0d4a14..f610cd6421d3 100644 --- a/keyboards/synthlabs/solo/config.h +++ b/keyboards/synthlabs/solo/config.h @@ -13,7 +13,7 @@ #define PRODUCT Solo #define ENCODERS 1 -#define ENCODER_RESOLUTION 4.5 +#define ENCODER_RESOLUTION 4 #define ENCODERS_PAD_A { B2 } #define ENCODERS_PAD_B { B3 } #define ENCODERS_CW_KEY { { 2, 1 } } From aff12a0ebd12007c5601476a65244e680bf6ce4d Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Tue, 22 Feb 2022 03:28:38 -0800 Subject: [PATCH 11/18] Removed redundant defines, already existing in info.json --- keyboards/synthlabs/solo/config.h | 9 --------- keyboards/synthlabs/solo/rules.mk | 6 ------ 2 files changed, 15 deletions(-) diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h index f610cd6421d3..aa6c80110d59 100644 --- a/keyboards/synthlabs/solo/config.h +++ b/keyboards/synthlabs/solo/config.h @@ -6,9 +6,6 @@ #include "config_common.h" /* USB Device descriptor parameter */ -#define VENDOR_ID 0x534E // "SN" -#define PRODUCT_ID 0x3031 // "01" -#define DEVICE_VER 0x0001 #define MANUFACTURER Synth Labs #define PRODUCT Solo @@ -23,12 +20,6 @@ #define MATRIX_ROWS 3 #define MATRIX_COLS 7 -#define DIRECT_PINS { { C6, D6, B5, B4, D7, B6, D4 }, { NO_PIN, B7, NO_PIN }, { F0, F7, F4, F5, F6, F1, C7 } } -#define UNUSED_PINS { D0, D1, D2, D3, D5, B0, B1 } - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - #define USB_POLLING_INTERVAL_MS 1 #define QMK_KEYS_PER_SCAN 17 diff --git a/keyboards/synthlabs/solo/rules.mk b/keyboards/synthlabs/solo/rules.mk index 60491f87dc91..93de61da7bec 100644 --- a/keyboards/synthlabs/solo/rules.mk +++ b/keyboards/synthlabs/solo/rules.mk @@ -1,9 +1,3 @@ -# MCU name -MCU = atmega32u4 - -# Bootloader selection -BOOTLOADER = atmel-dfu - # Build Options # change yes to no to disable # From e1ab7730d4836b1c4e61193470b54ccba087da63 Mon Sep 17 00:00:00 2001 From: Aaron Hong Date: Tue, 22 Feb 2022 03:38:53 -0800 Subject: [PATCH 12/18] Replace dummy pin values with null --- keyboards/synthlabs/solo/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/synthlabs/solo/info.json b/keyboards/synthlabs/solo/info.json index 4c2865f1e5b7..18a144a8b38c 100644 --- a/keyboards/synthlabs/solo/info.json +++ b/keyboards/synthlabs/solo/info.json @@ -8,7 +8,7 @@ "matrix_pins": { "direct": [ ["C6", "D6", "B5", "B4", "D7", "B6", "D4"], - ["D0", "B7", "D2", null, null, null, null], + [null, "B7", null, null, null, null, null], ["F0", "F7", "F4", "F5", "F6", "F1", "C7"] ] }, From 60e96cbd3b16b5ce37df34bb904836727ebe212b Mon Sep 17 00:00:00 2001 From: Nostril Date: Tue, 22 Feb 2022 05:42:36 -0800 Subject: [PATCH 13/18] Update keyboards/synthlabs/solo/readme.md Co-authored-by: Ryan --- keyboards/synthlabs/solo/readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/synthlabs/solo/readme.md b/keyboards/synthlabs/solo/readme.md index 38641c27061a..8ce3434c5610 100644 --- a/keyboards/synthlabs/solo/readme.md +++ b/keyboards/synthlabs/solo/readme.md @@ -4,9 +4,9 @@ The Solo Macropad by Synth Labs. -Keyboard Maintainer: [Nostril](https://github.com/hongaaronc) -Hardware Supported: Synth Labs Solo -Hardware Availability: [https://solo.synthlabs.io/](https://solo.synthlabs.io/) +* Keyboard Maintainer: [Nostril](https://github.com/hongaaronc) +* Hardware Supported: Synth Labs Solo +* Hardware Availability: [https://solo.synthlabs.io/](https://solo.synthlabs.io/) Make example for this keyboard (after setting up your build environment): From 91a7c036bbe5bf022086a03e9cea92f137196438 Mon Sep 17 00:00:00 2001 From: Nostril Date: Tue, 22 Feb 2022 05:42:59 -0800 Subject: [PATCH 14/18] Update keyboards/synthlabs/solo/rules.mk Co-authored-by: Ryan --- keyboards/synthlabs/solo/rules.mk | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/keyboards/synthlabs/solo/rules.mk b/keyboards/synthlabs/solo/rules.mk index 93de61da7bec..131aa72aeb5d 100644 --- a/keyboards/synthlabs/solo/rules.mk +++ b/keyboards/synthlabs/solo/rules.mk @@ -5,10 +5,9 @@ BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = yes # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration +COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Disable keyboard backlight functionality +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output -RGBLIGHT_ENABLE = no # Disable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -ENCODER_ENABLE = yes # Enable Rotary Encoder support +ENCODER_ENABLE = yes From 820067e222062adf40cec70cbdf47e4337b448ab Mon Sep 17 00:00:00 2001 From: Nostril Date: Tue, 22 Feb 2022 05:43:33 -0800 Subject: [PATCH 15/18] Remove redundant bootloader define Co-authored-by: Ryan --- keyboards/synthlabs/solo/keymaps/via/rules.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/synthlabs/solo/keymaps/via/rules.mk b/keyboards/synthlabs/solo/keymaps/via/rules.mk index 935e60c73ad7..1e5b99807cb7 100644 --- a/keyboards/synthlabs/solo/keymaps/via/rules.mk +++ b/keyboards/synthlabs/solo/keymaps/via/rules.mk @@ -1,2 +1 @@ VIA_ENABLE = yes -BOOTLOADER = atmel-dfu From 6441dd998e7e44b3de7626314b3ee4d474a51dcc Mon Sep 17 00:00:00 2001 From: Nostril Date: Tue, 22 Feb 2022 05:44:43 -0800 Subject: [PATCH 16/18] Formatting changes for solo.h Co-authored-by: Ryan --- keyboards/synthlabs/solo/solo.h | 57 +++++++++++++++++---------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/keyboards/synthlabs/solo/solo.h b/keyboards/synthlabs/solo/solo.h index 9bdf6faef5aa..c487446a498b 100644 --- a/keyboards/synthlabs/solo/solo.h +++ b/keyboards/synthlabs/solo/solo.h @@ -5,36 +5,37 @@ #include "quantum.h" - #define XXX KC_NO // This a shortcut to help you visually see your layout. // The first section contains all of the arguments // The second converts the arguments into a two-dimensional array -#define LAYOUT_all( \ - K01, K02, K03, K04, K05, K06, K07, \ - K08, K09, K10, \ - K11, K12, K13, K14, K15, K16, K17 \ - ) { \ - { K01, K02, K03, K04, K05, K06, K07 }, \ - { K08, K09, K10 }, \ - { K11, K12, K13, K14, K15, K16, K17 } \ - } -#define LAYOUT_left( \ - K02, K04, K06, \ - K08, K09, K10, \ - K11, K13, K15, K17 \ - ) { \ - { XXX, K02, XXX, K04, XXX, K06, XXX }, \ - { K08, K09, K10 }, \ - { K11, XXX, K13, XXX, K15, XXX, K17 } \ - } -#define LAYOUT_right( \ - K16, K14, K12, \ - K08, K09, K10, \ - K07, K05, K03, K01 \ - ) { \ - { K01, XXX, K03, XXX, K05, XXX, K07 }, \ - { K08, K09, K10 }, \ - { XXX, K12, XXX, K14, XXX, K16, XXX } \ - } +#define LAYOUT_all( \ + k00, k01, k02, k03, k04, k05, k06, \ + k10, k11, k12, \ + k20, k21, k22, k23, k24, k25, k26 \ +) { \ + { k00, k01, k02, k03, k04, k05, k06 }, \ + { k10, k11, k12, XXX, XXX, XXX, XXX }, \ + { k20, k21, k22, k23, k24, k25, k26 } \ +} + +#define LAYOUT_left( \ + k01, k03, k05, \ + k10, k11, k12, \ + k20, k22, k24, k26 \ +) { \ + { XXX, k01, XXX, k03, XXX, k05, XXX }, \ + { k10, k11, k12, XXX, XXX, XXX, XXX }, \ + { k20, XXX, k22, XXX, k24, XXX, k26 } \ +} + +#define LAYOUT_right( \ + k25, k23, k21, \ + k10, k11, k12, \ + k06, k04, k02, k00 \ +) { \ + { k00, XXX, k02, XXX, k04, XXX, k06 }, \ + { k10, k11, k12, XXX, XXX, XXX, XXX }, \ + { XXX, k21, XXX, k23, XXX, k25, XXX } \ +} From 27c519c6c6a49c97475d067712ba0493579d6c1c Mon Sep 17 00:00:00 2001 From: Nostril Date: Tue, 22 Feb 2022 07:03:38 -0800 Subject: [PATCH 17/18] Update image URI in readme Co-authored-by: Ryan --- keyboards/synthlabs/solo/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/synthlabs/solo/readme.md b/keyboards/synthlabs/solo/readme.md index 8ce3434c5610..204bc3857f1c 100644 --- a/keyboards/synthlabs/solo/readme.md +++ b/keyboards/synthlabs/solo/readme.md @@ -1,6 +1,6 @@ # Synth Labs Solo -![Synth Labs Solo](https://i.imgur.com/uVUtfks.png) +![Synth Labs Solo](https://i.imgur.com/uVUtfksh.png) The Solo Macropad by Synth Labs. From 03db9e16a5802233051fce00bac1d3418da5fe9f Mon Sep 17 00:00:00 2001 From: Nostril Date: Sat, 26 Feb 2022 18:12:24 -0800 Subject: [PATCH 18/18] Remove 1k USB_POLLING_INTERVAL_MS config Since 1k is now already defaulted for all QMK boards, it is redundant here. See for reference: https://github.com/qmk/qmk_firmware/pull/16448 --- keyboards/synthlabs/solo/config.h | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h index aa6c80110d59..02fbd7abe02f 100644 --- a/keyboards/synthlabs/solo/config.h +++ b/keyboards/synthlabs/solo/config.h @@ -20,7 +20,6 @@ #define MATRIX_ROWS 3 #define MATRIX_COLS 7 -#define USB_POLLING_INTERVAL_MS 1 #define QMK_KEYS_PER_SCAN 17 /*