mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-28 14:10:13 +00:00
Renamed sofle_v303 to sofle_pico
Removed Deluxe keymap from Junco
This commit is contained in:
parent
0b1495f2a0
commit
edd4f42337
@ -1,7 +1,7 @@
|
||||
{
|
||||
"manufacturer": "Ryan Neff",
|
||||
"keyboard_name": "sofle_v303",
|
||||
"url": "https://github.com/JellyTitan/sofle_v303",
|
||||
"keyboard_name": "sofle_pico",
|
||||
"url": "https://github.com/JellyTitan/sofle_pico",
|
||||
"maintainer": "Ryan Neff <github@JellyTitan.com>",
|
||||
"usb": {
|
||||
"vid": "0x4413",
|
@ -1,6 +1,6 @@
|
||||
# Default sofle_v303 Keymap
|
||||
# Default sofle_pico Keymap
|
||||
|
||||
This is the default layout for sofle_v303. For the most part it's a normal QWERTY layout. The exceptions being the thumb keys, rotary encoders, and lack of caps lock (which is replaced by escape).
|
||||
This is the default layout for sofle_pico. For the most part it's a normal QWERTY layout. The exceptions being the thumb keys, rotary encoders, and lack of caps lock (which is replaced by escape).
|
||||
|
||||
One of the biggest features of QMK is it brings layers into the mix which can give you access to even more keys. There are 4 layers: the default/base layer (QWERTY), a symbol layer, an extension layer, and an adjust layer.
|
||||
|
||||
@ -16,7 +16,7 @@ Those arrows for the bottom legends on the encoders are mouse scroll directions.
|
||||
|
||||
Red legends are the layer activated by holding down a key.
|
||||
|
||||
![sofle_v303's QWERTY Layout](https://i.imgur.com/fXGt5Jh.png)
|
||||
![sofle_pico's QWERTY Layout](https://i.imgur.com/fXGt5Jh.png)
|
||||
|
||||
## Symbol Layer
|
||||
|
||||
@ -26,7 +26,7 @@ On the symbol layer, the right side is a number pad, and the left side contains
|
||||
|
||||
Holding down delete within the symbol layer will take you to the adjust layer.
|
||||
|
||||
![sofle_v303's Symbol Layer](https://i.imgur.com/6F35Z4Wh.png)
|
||||
![sofle_pico's Symbol Layer](https://i.imgur.com/6F35Z4Wh.png)
|
||||
|
||||
## Extension Layer
|
||||
|
||||
@ -36,7 +36,7 @@ On the extension layer, the right side is the function keys in a number-pad-esqu
|
||||
|
||||
Holding down backspace within the extension layer will take you to the adjust layer.
|
||||
|
||||
![sofle_v303's Extension Layer](https://i.imgur.com/FETcqkCh.png)
|
||||
![sofle_pico's Extension Layer](https://i.imgur.com/FETcqkCh.png)
|
||||
|
||||
## Adjust Layer
|
||||
|
||||
@ -44,7 +44,7 @@ This layer's theme is adjusting the keyboard's settings, it's accessed by holdin
|
||||
|
||||
On the adjust layer, the right side is the keyboard's settings: clear data, reboot, toggle debug mode, enter the bootloader, and change the base layer between QWERTY and [Colemak-DH](#colemak-dh). The left side adjusts the RGB lighting.
|
||||
|
||||
![sofle_v303's Adjust Layer](https://i.imgur.com/fRsdlt3h.png)
|
||||
![sofle_pico's Adjust Layer](https://i.imgur.com/fRsdlt3h.png)
|
||||
|
||||
## Colemak-DH
|
||||
|
||||
@ -54,4 +54,4 @@ QWERTY is default when flashing your keyboard, but you can change it to Colemak-
|
||||
|
||||
If you've never heard of it, Colemak is a keyboard layout that was designed to be a more ergonomic, modern, efficient, and comfortable replacement to QWERTY. Colemak was designed to place the most common letters in english on the home row along with many of the most common bigrams together (two letters typed in a row). Colemak-DH is a variant of Colemak that moves D and H to beneath the index fingers rather than the home row since most people find it easier and faster to reach the keys that way rather than the middle of the home row.
|
||||
|
||||
![sofle_v303's Colemak-DH Layout](https://i.imgur.com/8biZfn2h.png)
|
||||
![sofle_pico's Colemak-DH Layout](https://i.imgur.com/8biZfn2h.png)
|
@ -1,7 +1,7 @@
|
||||
# JellyTitan sofle_v303 Keymap
|
||||
# JellyTitan sofle_pico Keymap
|
||||
![jellytitan](https://i.imgur.com/JqGPWCn.png)
|
||||
|
||||
This keymap is derived from Ergodox layouts and is adapted for the [sofle_v303](https://github.com/daneski13/sofle_v303).
|
||||
This keymap is derived from Ergodox layouts and is adapted for the [sofle_pico](https://github.com/daneski13/sofle_pico).
|
||||
It is notable for it's semi-complex programming examples that include the use of rotary encoders.
|
||||
|
||||
Plenty of useful examples:
|
||||
@ -17,12 +17,12 @@ Flashing example for this keyboard:
|
||||
|
||||
```bash
|
||||
# For flashing the left half...
|
||||
make sofle_v303:jellytitan:uf2-split-left
|
||||
make sofle_pico:jellytitan:uf2-split-left
|
||||
# or the qmk cli equivalent:
|
||||
qmk flash -kb sofle_v303 --keymap jellytitan -bl uf2-split-left
|
||||
qmk flash -kb sofle_pico --keymap jellytitan -bl uf2-split-left
|
||||
|
||||
# For flashing the right half...
|
||||
make sofle_v303:jellytitan:uf2-split-right
|
||||
make sofle_pico:jellytitan:uf2-split-right
|
||||
# or the qmk cli equivalent:
|
||||
qmk flash -kb sofle_v303 --keymap jellytitan -bl uf2-split-right
|
||||
qmk flash -kb sofle_pico --keymap jellytitan -bl uf2-split-right
|
||||
```
|
@ -1,18 +1,18 @@
|
||||
# sofle_v303 <!-- omit from toc -->
|
||||
# sofle_pico <!-- omit from toc -->
|
||||
|
||||
![sofle_v303](https://i.imgur.com/WzZaIgQh.jpg)
|
||||
![sofle_pico](https://i.imgur.com/WzZaIgQh.jpg)
|
||||
|
||||
sofle_v303 is a 60% Raspberry Pi Pico powered split keyboard boasting a 4x6 layout with an aggressive columnar stagger. It has 5 "thumb" keys on either side, support for 2-4 rotary encoders, and per-key RGB lighting.
|
||||
sofle_pico is a 60% Raspberry Pi Pico powered split keyboard boasting a 4x6 layout with an aggressive columnar stagger. It has 5 "thumb" keys on either side, support for 2-4 rotary encoders, and per-key RGB lighting.
|
||||
|
||||
- Keyboard Maintainer: [Dane Skalski](https://github.com/Daneski13)
|
||||
- Hardware Supported: sofle_v303 PCB, Raspberry Pi Pico
|
||||
- Hardware Availability: [PCB, Case, Parts List](https://github.com/Daneski13/sofle_v303)
|
||||
- Hardware Supported: sofle_pico PCB, Raspberry Pi Pico
|
||||
- Hardware Availability: [PCB, Case, Parts List](https://github.com/Daneski13/sofle_pico)
|
||||
|
||||
Remember you have to flash both halves of the keyboard for it to work!
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make sofle_v303:default
|
||||
make sofle_pico:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
@ -6,7 +6,7 @@ SERIAL_DRIVER = vendor
|
||||
BOOTMAGIC_ENABLE = yes
|
||||
|
||||
# Default Folder
|
||||
DEFAULT_FOLDER = sofle_v303/rev1
|
||||
DEFAULT_FOLDER = sofle_pico/rev1
|
||||
|
||||
# @todo: Move to json
|
||||
# OLED_DRIVER = SSD1306
|
@ -1,58 +0,0 @@
|
||||
// Copyright 2022 Dane Skalski (@Daneski13)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Indicator LEDs */
|
||||
// LED index for caps lock key on the extension layer
|
||||
#define CAPS_LOCK_LED_INDEX 25
|
||||
// LED index for num lock key on the symbol layer
|
||||
#define NUM_LOCK_LED_INDEX 62
|
||||
// LED index for key that sticks the adjust layer
|
||||
#define ADJST_LED_INDEX 19
|
||||
|
||||
// Number of Layers that can be used by VIA.
|
||||
// Change this if you want more layers
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
|
||||
|
||||
/* - Encoder settings - */
|
||||
#ifdef ENCODER_ENABLE
|
||||
# define ENCODER_RESOLUTION 4
|
||||
#endif
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
// Key delay for encoders (necessary for some keycodes)
|
||||
# define ENCODER_MAP_KEY_DELAY 10
|
||||
#endif
|
||||
|
||||
/*
|
||||
- RGB Stuff -
|
||||
All effects can be found in the QMK docs:
|
||||
https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
|
||||
*/
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
// Allows the indicator LEDs to work
|
||||
# define SPLIT_LED_STATE_ENABLE
|
||||
# define SPLIT_LAYER_STATE_ENABLE
|
||||
|
||||
// Default effect when EEPROM cleared
|
||||
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
|
||||
// Turns off RGB effects when there is no longer a USB connection
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
|
||||
// Throttling of RGB to increase keyboard responsiveness, set to 1.5x the default limits
|
||||
# define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 6 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
|
||||
# define RGB_MATRIX_LED_FLUSH_LIMIT 24 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms), the default, is equivalent to limiting to 60fps
|
||||
|
||||
// Key press reactive animations
|
||||
# define SPLIT_TRANSPORT_MIRROR // Necessary setting for key press animations
|
||||
# define RGB_MATRIX_KEYPRESSES // Enables key press effects
|
||||
# define ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
|
||||
// Normal effects
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
# define ENABLE_RGB_MATRIX_PIXEL_RAIN
|
||||
|
||||
#endif
|
@ -1,329 +0,0 @@
|
||||
// Copyright 2022 Dane Skalski (@Daneski13)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Layers enum
|
||||
enum sofle_pico_layers { _QWERTY, _COLEMAK_DH, _SYMB, _EXT, _ADJUST };
|
||||
|
||||
// Custom keycodes
|
||||
enum custom_keycodes {
|
||||
// Keycode for toggling between macOS and Windows key mappings
|
||||
// Actually just an alias to the GUI and Alt swap Magic keycode
|
||||
KC_OS = MAGIC_TOGGLE_ALT_GUI,
|
||||
// Keycode for swapping the base layer between QWERTY and Colemak-DH
|
||||
KC_TOGGLE_BASE = SAFE_RANGE,
|
||||
// Keycode for redo action (Ctrl + Y on windows, Ctrl + Shift + Z on macOS)
|
||||
KC_REDO,
|
||||
// Keycodes for next/previous word
|
||||
KC_WNXT,
|
||||
KC_WPRV,
|
||||
// Keycode for sticking/unsticking the adjust layer
|
||||
KC_ADJST
|
||||
};
|
||||
|
||||
/* LED indicators */
|
||||
bool is_caps_lock_enabled(void) { // Caps lock
|
||||
return (host_keyboard_led_state().caps_lock);
|
||||
}
|
||||
bool is_num_lock_enabled(void) { // Num lock
|
||||
return (host_keyboard_led_state().num_lock);
|
||||
}
|
||||
bool is_adjust_layer_sticky(layer_state_t state) { // Adjust layer sticky
|
||||
// Checks if the state is equal to just the adjust layer being active.
|
||||
// Doing it this way can leverage SPLIT_LAYER_STATE_ENABLE
|
||||
return (state == (1UL << _ADJUST)) ? true : false;
|
||||
}
|
||||
// Indicator color based on the RGB Matrix mode
|
||||
RGB indicator_color(void) {
|
||||
RGB rgb;
|
||||
// Normally the indicator color is white to stand out in the RGB rainbow.
|
||||
// When using the custom RGB mode that already is white, the indicator color
|
||||
// is green to stand out.
|
||||
if (rgb_matrix_config.mode == RGB_MATRIX_CUSTOM_WHITE_UNDERGLOW_CYCLE) {
|
||||
// Green
|
||||
rgb.r = 0;
|
||||
rgb.g = 255;
|
||||
rgb.b = 0;
|
||||
} else {
|
||||
// White
|
||||
rgb.r = 255;
|
||||
rgb.g = 255;
|
||||
rgb.b = 255;
|
||||
}
|
||||
return rgb;
|
||||
}
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
/*
|
||||
Traditional QWERTY
|
||||
┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐
|
||||
│ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ - │
|
||||
├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
|
||||
│Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Ent│
|
||||
├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
|
||||
│Esc│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │
|
||||
├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤
|
||||
│Sft│ Z │ X │ C │ V │ B │Mut│ │▶⏸ │ N │ M │ , │ . │ / │Sft│
|
||||
└───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘
|
||||
┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
│Ctr│Win│Alt│Del│Spc│ │Sft│Bsp│Alt│Win│Ctr│
|
||||
└───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
For macOS - GUI (cmd) and Alt (opt) swapped
|
||||
*/
|
||||
[_QWERTY] = LAYOUT_split4x6_r1(
|
||||
KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENTER,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, LT(_EXT, KC_DEL), KC_SPC, KC_RSFT, LT(_SYMB, KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
/*
|
||||
Colemak-DH
|
||||
┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐
|
||||
│ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ - │
|
||||
├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
|
||||
│Tab│ Q │ W │ F │ P │ B │ │ J │ L │ U │ Y │ ; │Ent│
|
||||
├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
|
||||
│Esc│ A │ R │ S │ T │ G │ │ M │ N │ E │ I │ O │ ' │
|
||||
├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤
|
||||
│Sft│ Z │ X │ C │ D │ V │Mut│ │▶⏸ │ K │ H │ , │ . │ / │Sft│
|
||||
└───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘
|
||||
┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
│Ctr│Win│Alt│Del│Spc│ │Sft│Bsp│Alt│Win│Ctr│
|
||||
└───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
For macOS - GUI/Win (cmd) and Alt (opt) swapped
|
||||
*/
|
||||
[_COLEMAK_DH] = LAYOUT_split4x6_r1(
|
||||
KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SEMICOLON, KC_ENTER,
|
||||
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOTE,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_MUTE, KC_MPLY, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, LT(_EXT, KC_DEL), KC_SPC, KC_RSFT, LT(_SYMB, KC_BSPC), KC_RALT, KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
/*
|
||||
Symbols/Numpad Layer
|
||||
┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐
|
||||
│F1 │F2 │F3 │F4 │F5 │F6 │ │F7 │F8 │F9 │F10│F11│F12│
|
||||
├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
|
||||
│Tab│ ! │ @ │ # │ $ │ % │ │ * │ 7 │ 8 │ 9 │ + │Ent│
|
||||
├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
|
||||
│ \ │ _ │ [ │ { │ ( │ ^ │ │ = │ 4 │ 5 │ 6 │ 0 │NUM│
|
||||
├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤
|
||||
│___│ | │ ] │ } │ ) │ & │___│ │___│ / │ 1 │ 2 │ 3 │ - │___│
|
||||
└───┴───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┴───┘
|
||||
┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
│___│___│___│___│___│ │___│___│___│___│___│
|
||||
└───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
*/
|
||||
[_SYMB] = LAYOUT_split4x6_r1(
|
||||
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_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PAST, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ENTER,
|
||||
KC_BSLS, KC_UNDS, KC_LBRC, KC_LCBR, KC_LPRN, KC_CIRC, KC_PEQL, KC_P4, KC_P5, KC_P6, KC_P0, KC_NUM,
|
||||
_______, KC_PIPE, KC_RBRC, KC_RCBR, KC_RPRN, KC_AMPR, _______, _______, KC_PSLS, KC_P1, KC_P2, KC_P3, KC_PMNS, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
Extension/Function Layer
|
||||
┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
|
||||
│ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10│ F11│ F12│
|
||||
├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||
│ ⇤ │PGUP│End │ ↑ │Home│ │ │BRIU│ F7 │ F8 │ F9 │ F10│____│
|
||||
├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||
│Cps │PGDN│ ← │ ↓ │ → │ │ │BRID│ F4 │ F5 │ F6 │ F11│____│
|
||||
├────┼────┼────┼────┼────┼────┼────┐ ┌────┼────┼────┼────┼────┼────┼────┤
|
||||
│____│ │ │ │ │ │____│ │____│ │ F1 │ F2 │ F3 │ F12│____│
|
||||
└────┴────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┴────┘
|
||||
┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
│___│___│___│___│___│ │___│___│___│___│___│
|
||||
└───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
*/
|
||||
[_EXT] = LAYOUT_split4x6_r1(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
S(KC_TAB), KC_PGUP, KC_END, KC_UP, KC_HOME, _______, KC_BRIU, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||
KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, _______, KC_BRID, KC_F4, KC_F5, KC_F6, KC_F11, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
Adjust Layer, Keyboard Settings
|
||||
┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
|
||||
│ │ │ │ │ │ │ │ │ │ │ │ │ │
|
||||
├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||
│SpdU│HueU│SatU│ValU│Rnxt│Stck│ │ │EClr│Rbt │DBUG│BOOT│ │
|
||||
├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
|
||||
│SpdD│HueD│SatD│ValD│Rprv│RTgl│ │ │LOUT│ OS │ │ │ │
|
||||
├────┼────┼────┼────┼────┼────┼────┐ ┌────┼────┼────┼────┼────┼────┼────┤
|
||||
│ │ │ │ │ │ │RTgl│ │ │ │ │ │ │ │ │
|
||||
└────┴────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┴────┘
|
||||
┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
│___│___│___│___│___│ │___│___│___│___│___│
|
||||
└───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
*/
|
||||
[_ADJUST] = LAYOUT_split4x6_r1(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
RGB_SPI, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, KC_ADJST, KC_NO, EE_CLR, QK_RBT, DB_TOGG, QK_BOOT, KC_NO,
|
||||
RGB_SPD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, RGB_TOG, KC_NO, KC_TOGGLE_BASE, KC_OS, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
/*
|
||||
--- Rotary Encoder Mappings ---
|
||||
|
||||
Encoder mappings go from leftmost encoder to rightmost encoder on the physical board.
|
||||
index 0 is the the optional leftmost encoder on the left half, index 1 is the right encoder
|
||||
on the left half (by the thumb keys), index 2 is the left encoder on the right half (by the
|
||||
thumb keys), and index 3 is the optional rightmost encoder on the right half.
|
||||
|
||||
If you are only using the 2 required encoders by the thumb keys, you only need to worry about
|
||||
index 1 and index 2.
|
||||
|
||||
Note that the key to be sent for counter-clockwise rotation (CCW) goes first and then the key for
|
||||
clockwise (CW) within ENCODER_CCW_CW.
|
||||
*/
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
// clang-format off
|
||||
|
||||
// Base layer encoder mappings:
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
// Base layers
|
||||
// index 0: mouse wheel up (CCW)/down (CW) index 1: volume up/down index 2: media prev/next index 3: mouse wheel left/right
|
||||
[_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_WH_L, KC_WH_R) },
|
||||
[_COLEMAK_DH] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
|
||||
|
||||
// Passes through to base layer
|
||||
[_SYMB] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
|
||||
// undo/redo previous word/next word
|
||||
[_EXT] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_UNDO, KC_REDO), ENCODER_CCW_CW(KC_WPRV, KC_WNXT) },
|
||||
// RGB Speed down/up RGB previous mode/next mode RGB brightness down/up
|
||||
[_ADJUST] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// Called whenever a layer is changed
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
// Make sure the adjust layer isn't sticky
|
||||
if (is_adjust_layer_sticky(state)) return state;
|
||||
|
||||
// When both the symbol and extension layer keys are held, the Adjust layer is active.
|
||||
return update_tri_layer_state(state, _SYMB, _EXT, _ADJUST);
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
// Toggle base layer
|
||||
case KC_TOGGLE_BASE:
|
||||
if (record->event.pressed) {
|
||||
// Toggle swapping base layers between Colemak-DH and QWERTY.
|
||||
// When base layer is QWERTY, swap to Colemak-DH and vice-versa
|
||||
if (get_highest_layer(default_layer_state) == _QWERTY) {
|
||||
default_layer_set(1UL << _COLEMAK_DH);
|
||||
} else {
|
||||
default_layer_set(1UL << _QWERTY);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
// Override undo in favor of the more modern undo action
|
||||
case KC_UNDO:
|
||||
if (record->event.pressed) {
|
||||
// Use the correct modifier for macOS or Windows
|
||||
uint16_t mod = keymap_config.swap_lalt_lgui ? KC_LGUI : KC_LCTL;
|
||||
// Send Ctrl+Z/Cmd+Z
|
||||
register_code(mod);
|
||||
tap_code_delay(KC_Z, 10);
|
||||
unregister_code(mod);
|
||||
}
|
||||
return false;
|
||||
|
||||
// Redo action
|
||||
case KC_REDO:
|
||||
if (record->event.pressed) {
|
||||
// Whether or not macOS mapping is enabled
|
||||
if (keymap_config.swap_lalt_lgui) {
|
||||
// macOS - Send Cmd+Shift+Z
|
||||
register_code(KC_LGUI);
|
||||
register_code(KC_LSFT);
|
||||
tap_code_delay(KC_Z, 10);
|
||||
unregister_code(KC_LSFT);
|
||||
unregister_code(KC_LGUI);
|
||||
} else {
|
||||
// Windows - Send Ctrl+Y
|
||||
register_code(KC_LCTL);
|
||||
tap_code_delay(KC_Y, 10);
|
||||
unregister_code(KC_LCTL);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
// Next word
|
||||
case KC_WNXT:
|
||||
if (record->event.pressed) {
|
||||
// Use the correct modifier for macOS or Windows
|
||||
uint16_t mod = keymap_config.swap_lalt_lgui ? KC_LALT : KC_LCTL;
|
||||
// Send Ctrl+Right/Option+Right
|
||||
register_code(mod);
|
||||
tap_code_delay(KC_RGHT, 10);
|
||||
unregister_code(mod);
|
||||
}
|
||||
return false;
|
||||
|
||||
// Previous word
|
||||
case KC_WPRV:
|
||||
if (record->event.pressed) {
|
||||
// Use the correct modifier for macOS or Windows
|
||||
uint16_t mod = keymap_config.swap_lalt_lgui ? KC_LALT : KC_LCTL;
|
||||
// Send Ctrl+Left/Option+Left
|
||||
register_code(mod);
|
||||
tap_code_delay(KC_LEFT, 10);
|
||||
unregister_code(mod);
|
||||
}
|
||||
return false;
|
||||
|
||||
// Stick / Unstick the adjust layer
|
||||
case KC_ADJST:
|
||||
if (record->event.pressed) {
|
||||
// If currently not sticky, we want only the adjust layer to be active to make it stick.
|
||||
// Otherwise we want the default layer, un-stick.
|
||||
is_adjust_layer_sticky(layer_state) ? layer_state_set(default_layer_state) : layer_move(_ADJUST);
|
||||
dprintf("Adjust layer is now %s\n", is_adjust_layer_sticky(layer_state) ? "stuck" : "un-stuck");
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/* Indicators (Caps Lock / Num Lock / Adjust Layer Sticky) */
|
||||
bool rgb_matrix_indicators_user(void) {
|
||||
layer_state_t curr_layer_state = layer_state;
|
||||
layer_state_t layer = get_highest_layer(curr_layer_state);
|
||||
RGB rgb = indicator_color();
|
||||
|
||||
/* Only show the indicator on their respective layers */
|
||||
// Caps Lock is only on the extension layer
|
||||
if (is_caps_lock_enabled() && layer == _EXT) {
|
||||
rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
// Num Lock is only on the symbol layer
|
||||
if (is_num_lock_enabled() && layer == _SYMB) {
|
||||
rgb_matrix_set_color(NUM_LOCK_LED_INDEX, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
// If the adjust layer is stuck/sticky, light it up. Don't need to care about
|
||||
// checking the layer since it can only be active on the adjust layer anyway
|
||||
if (is_adjust_layer_sticky(curr_layer_state)) rgb_matrix_set_color(ADJST_LED_INDEX, rgb.r, rgb.g, rgb.b);
|
||||
|
||||
return false;
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
# Deluxe sofle_pico Keymap
|
||||
|
||||
This is my personal keymap for sofle_pico at time of writing. It departs from the [default layout](../default/README.md) with the encoder mappings and some extra keycodes. This keymap also adds indicators when caps lock and num lock are enabled. When enabled, that key will become a static white (green on the white backlight mode) but only when the layer that respective key is on is active.
|
||||
|
||||
I wanted that classic rainbow barf RGB effect for the underglow even if the per-key lighting is something else, so I added 2 custom RGB matrix animations: white per-key lighting with rainbow underglow and pixel rain with rainbow underglow.
|
||||
|
||||
Here are some gifs of the animations:
|
||||
|
||||
![White + Underglow Animation](https://i.imgur.com/2vCiZz0.gif)
|
||||
|
||||
![Pixel Rain + Underglow Animation](https://i.imgur.com/f6t0OfD.gif)
|
||||
|
||||
## Base Layers
|
||||
|
||||
The base layers are the same as the default layout, except the right side's left encoder (by the thumb keys) is now media controls. Since I am using all 4 encoders it doesn't make sense to have 2 mouse scroll up/down, but for someone with just 2 encoders it may make sense to have media controls on a layer.
|
||||
|
||||
QWERTY:
|
||||
|
||||
![QWERTY Layer](https://i.imgur.com/vkS9Tceh.png)
|
||||
|
||||
Colemak-DH:
|
||||
|
||||
![Colemak-DH Layer](https://i.imgur.com/5YYgaUAh.png)
|
||||
|
||||
## Symbol Layer
|
||||
|
||||
Symbol layer is identical to the default layout.
|
||||
|
||||
![Symbol Layer](https://i.imgur.com/6F35Z4Wh.png)
|
||||
|
||||
## Extension Layer
|
||||
|
||||
Encoders on the right side become undo/redo and scrolling horizontally by word.
|
||||
|
||||
![Extension Layer](https://i.imgur.com/0VCStS8h.png)
|
||||
|
||||
## Adjust Layer
|
||||
|
||||
Pressing "Stick Adj Layer" will "stick" the adjust layer so you can use the rotary encoders for RGB settings rather than holding down both backspace and delete. To go back to the default layer, press that stick key again or press and release either Del or Backspace. When the adjust layer is currently "sticky" the sticky key will become the indicator color mentioned earlier.
|
||||
|
||||
"Toggle Base" will toggle between QWERTY and Colemak-DH and toggle OS will toggle between macOS and Windows key-mappings (swapping WIN/Command with Alt/Option by the thumb keys and properly mapping redo/word scrolling).
|
||||
|
||||
![Adjust layer](https://i.imgur.com/71ftNoNh.png)
|
@ -1,48 +0,0 @@
|
||||
// Copyright 2022 Dane Skalski (@Daneski13)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
RGB_MATRIX_EFFECT(WHITE_UNDERGLOW_CYCLE)
|
||||
RGB_MATRIX_EFFECT(PIXEL_RAIN_UNDERGLOW_CYCLE)
|
||||
|
||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
|
||||
// This is a modified version of the effect_runner_dx_dy_dist function from rgb_matrix
|
||||
// that only applies the effect to the underglow LEDs of this keyboard
|
||||
static bool underglow_effect_runner(effect_params_t* params, dx_dy_dist_f underglow_effect_func, bool backlight_white) {
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
|
||||
HSV hsv = rgb_matrix_config.hsv;
|
||||
HSV white = {0, 0, hsv.v};
|
||||
RGB rgb = rgb_matrix_hsv_to_rgb(white);
|
||||
uint8_t time = scale16by8(g_rgb_timer, rgb_matrix_config.speed / 2);
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
// Underglow LEDs are indicies 0 - 7 and 37 - 44
|
||||
if ((i <= 7) || (37 <= i && i <= 44)) {
|
||||
// Apply the maths and colors to the underglow LEDs
|
||||
RGB_MATRIX_TEST_LED_FLAGS();
|
||||
int16_t dx = g_led_config.point[i].x - k_rgb_matrix_center.x;
|
||||
int16_t dy = g_led_config.point[i].y - k_rgb_matrix_center.y;
|
||||
uint8_t dist = sqrt16(dx * dx + dy * dy);
|
||||
RGB rgb = rgb_matrix_hsv_to_rgb(underglow_effect_func(hsv, dx, dy, dist, time));
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
} else {
|
||||
// Set the backlight to white if needed
|
||||
if (!backlight_white) continue;
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
}
|
||||
return rgb_matrix_check_finished_leds(led_max);
|
||||
}
|
||||
|
||||
// Solid white but the underglow is a rainbow spiral
|
||||
static bool WHITE_UNDERGLOW_CYCLE(effect_params_t* params) {
|
||||
return underglow_effect_runner(params, &CYCLE_SPIRAL_math, true);
|
||||
}
|
||||
|
||||
// Pixel rain effect but the underglow is a rainbow spiral
|
||||
static bool PIXEL_RAIN_UNDERGLOW_CYCLE(effect_params_t* params) {
|
||||
PIXEL_RAIN(params);
|
||||
return underglow_effect_runner(params, &CYCLE_SPIRAL_math, false);
|
||||
}
|
||||
|
||||
#endif
|
@ -1,20 +0,0 @@
|
||||
# Enables Audio control and System control Keycodes
|
||||
EXTRAKEY_ENABLE = yes
|
||||
# Enables Mousekeys
|
||||
MOUSEKEY_ENABLE = yes
|
||||
# Encoder Support
|
||||
ENCODER_ENABLE = yes
|
||||
# Use Enocoder Mapping
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
|
||||
# Enables RGB Lighting Effects
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
|
||||
# Allows use of `qmk console` for debugging
|
||||
CONSOLE_ENABLE = yes
|
||||
|
||||
# Enables VIA
|
||||
VIA_ENABLE = yes
|
||||
|
||||
# Custom RGB Matrix Effect
|
||||
RGB_MATRIX_CUSTOM_USER = yes
|
Loading…
Reference in New Issue
Block a user