Sofle Pico 'default' keymap created/fixed

Based on the sofle_choc Brian Low default
This commit is contained in:
Ryan Neff 2023-10-19 11:59:36 -07:00
parent edd4f42337
commit 0ca4c65fd9
4 changed files with 69 additions and 218 deletions

View File

@ -1,17 +1,37 @@
// Copyright 2022 Dane Skalski (@Daneski13)
// Copyright 2023 Ryan Neff (@JellyTitan)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
/* - 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
/* Set tapdance speed */
#define TAPPING_TERM 210
/* Allows for the setting of constant mouse speed levels. */
/* Delay between pressing a movement key and cursor movement */
#define MOUSEKEY_DELAY 10
/* Time between cursor movements in milliseconds */
#define MOUSEKEY_INTERVAL 16
/* Step size */
#define MOUSEKEY_MOVE_DELTA 8
/* Maximum cursor speed at which acceleration stops */
#define MOUSEKEY_MAX_SPEED 2
/* Time until maximum cursor speed is reached */
#define MOUSEKEY_TIME_TO_MAX 40
/* Maximum number of scroll steps per scroll action */
#define MOUSEKEY_WHEEL_MAX_SPEED 42
/* Time until maximum scroll speed is reached */
#define MOUSEKEY_WHEEL_TIME_TO_MAX 15
#define POINTING_DEVICE_ROTATION_90
#define SPLIT_POINTING_ENABLE
#define POINTING_DEVICE_RIGHT
#define POINTING_DEVICE_TASK_THROTTLE_MS 8
/*
- RGB Stuff -
All effects can be found in the QMK docs:
@ -19,6 +39,12 @@
*/
#ifdef RGB_MATRIX_ENABLE
# define RGB_DISABLE_WHEN_USB_SUSPENDED
// Decrease decay of heatmap rgb effect
# define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
// If you're setting colors per key, this is required.
# define SPLIT_LAYER_STATE_ENABLE
// Default effect when EEPROM cleared
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_RAINBOW_MOVING_CHEVRON
@ -34,5 +60,4 @@
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# define ENABLE_RGB_MATRIX_PIXEL_RAIN
#endif

View File

@ -1,161 +1,36 @@
// Copyright 2022 Dane Skalski (@Daneski13)
// Copyright 2023 Ryan Neff (@JellyTitan)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
// Layers enum
enum sofle_pico_layers { _QWERTY, _COLEMAK_DH, _SYMB, _EXT, _ADJUST };
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 XXX N M , . / Sft
CtrWinAltDelSpc SftBspAltWinCtr
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_NO, 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 XXX K H , . / Sft
CtrWinAltDelSpc SftBspAltWinCtr
For macOS - GUI (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_NO, 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 F10F11F12
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, _______,
_______, _______, _______, MO(_ADJUST), _______, _______, _______, _______, _______, _______
),
/*
Extension/Function Layer
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
PGUPEnd 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_MPLY, _______, KC_F1, KC_F2, KC_F3, KC_F12, _______,
_______, _______, _______, _______, _______, _______, MO(_ADJUST), _______, _______, _______
),
/*
Adjust Layer, Keyboard Settings
SpdUHueUSatUValURnxt EClrRbt DBUGBOOT
SpdDHueDSatDValDRprvRTgl QWRTCOLE
_______________ _______________
*/
[_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_NO, 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, DF(_QWERTY), DF(_COLEMAK_DH), KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
// clang-format on
};
/*
--- Rotary Encoder Mappings ---
* QWERTY
* ,-----------------------------------------. ,-----------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
* |------+------+------+------+------+------| Mute | | Pause |------+------+------+------+------+------|
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LCTL | LGUI | LCMD | LALT | /Enter / \Space \ | RALT | RCMD | RGUI | RCTL |
* | | | | |/ / \ \ | | | | |
* `----------------------------------' '------''---------------------------'
*/
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 keycode 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
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
// Base layer encoder mappings:
// index 0: mouse wheel up (CCW)/down (CW) index 1: volume down/up index 2: mouse wheel up/down 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_MS_WH_UP, KC_MS_WH_DOWN), 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 layers
[_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) },
// On the extension layer, the right side's left encoder by the thumb keys (mouse wheel up/down) is traded for media previous/next
[_EXT] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
// Passes through
[_ADJUST] = { 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) },
// clang-format on
LAYOUT_split4x6_r1(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
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_LCMD, KC_LALT, KC_ENT, KC_SPC, KC_RALT, KC_RCMD, KC_RGUI, KC_RCTL
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
{ ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
};
#endif

View File

@ -1,57 +0,0 @@
# Default sofle_pico Keymap
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.
Layers are very similar to Shift on a normal keyboard, where "a" becomes "A" when holding down shift. With a custom layer, you can have "j" become "4" for example and make an entire side of the keyboard become a number pad.
The [symbol layer](#symbol-layer) is accessed by holding down backspace, the [extension layer](#extension-layer) is accessed by holding down delete, and the [adjust layer](#adjust-layer) is accessed by holding down both delete and backspace.
## Default Base Layer (QWERTY)
Grey keys are rotary encoders (the ones on far left and far right are optional). Middle legend is pressing down the encoder, bottom left legend is counter-clockwise turn, and bottom right legend is clockwise turn of the encoder.
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_pico's QWERTY Layout](https://i.imgur.com/fXGt5Jh.png)
## Symbol Layer
This layer is accessed by holding down backspace on the base layer, thus that key is blacked out.
On the symbol layer, the right side is a number pad, and the left side contains all the typical symbols (geared for programming).
Holding down delete within the symbol layer will take you to the adjust layer.
![sofle_pico's Symbol Layer](https://i.imgur.com/6F35Z4Wh.png)
## Extension Layer
This layer's theme is navigation/extras, its accessed by holding down delete on the base layer, thus that key is blacked out.
On the extension layer, the right side is the function keys in a number-pad-esque layout with screen brightness up/down, and the left side has navigation keys and caps lock. Also, the rotary on the right side encoder becomes media controls.
Holding down backspace within the extension layer will take you to the adjust layer.
![sofle_pico's Extension Layer](https://i.imgur.com/FETcqkCh.png)
## Adjust Layer
This layer's theme is adjusting the keyboard's settings, it's accessed by holding down both delete and backspace on the base layer.
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_pico's Adjust Layer](https://i.imgur.com/fRsdlt3h.png)
## Colemak-DH
This keymap offers Colemak-DH as an alternative base layer to QWERTY.
QWERTY is default when flashing your keyboard, but you can change it to Colemak-DH by selecting it's key on the adjust layer.
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_pico's Colemak-DH Layout](https://i.imgur.com/8biZfn2h.png)

View File

@ -1,5 +1,3 @@
# Change from yes to no to disable features
# Enables Audio control and System control Keycodes
EXTRAKEY_ENABLE = yes
# Enables Mousekeys
@ -8,9 +6,19 @@ MOUSEKEY_ENABLE = yes
ENCODER_ENABLE = yes
# Use Enocoder Mapping
ENCODER_MAP_ENABLE = yes
# Turn on tap dance:
TAP_DANCE_ENABLE = no
# Enables RGB Lighting Effects
RGB_MATRIX_ENABLE = yes
# Dynamic Tapping Term:
DYNAMIC_TAPPING_TERM_ENABLE = yes
# Allows use of `qmk console` for debugging
CONSOLE_ENABLE = yes
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
AUDIO_ENABLE = no # Audio output
OLED_ENABLE = yes
# OLED_DRIVER = SSD1306
WPM_ENABLE = yes