plasticrake's QMK Userspace
Overview
The "smallest" keyboards I use are 65%. I try not to be too clever with my layers; as I like to keep good muscle memory for "standard" keyboards or laptop keyboards. I do like RGB keys, but I like them to be utilized practically and not for just "looks". And I wanted to find a good balance of features.
The code in this userspace is designed to be very modular. Modular code also means that it should be easy to identify and adapt specific pieces to your own firmware.
Keyboards and Keymaps
The following keyboards use the files in this userspace:
- GMMK Pro
qmk compile users/plasticrake/keymaps/gmmk-pro-rev1-ansi.json
- Keychron Q1
qmk compile users/plasticrake/keymaps/keychron-q1v2-ansi_encoder.json
Features
- Caps Word,
CAPS_WORD_ENABLE
andBOTH_SHIFTS_TURNS_ON_CAPS_WORD
are on by default. - Mouse jiggler, adapted from replicaJunction
- Secrets, adapted from replicaJunction and Drashna
- Dip Switch Layers. Many Keychron keyboards have a dip switch that swaps the default layers from 0/1 to 2/3. This userspace makes the layer count configurable and also updates the tri layer feature to match. I use it to have 4 layers per switch and the tri layer feature lets me access all 4 of each set of layers.
- Layer colors. Each layer has a configurable color and non-transparent keys in a layer will change color when active.
Mouse Jiggler
This adds a keycode that will move the mouse cursor on each matrix scan. Used to prevent the screen from locking if you're temporarily doing something else (working on a different machine, reading/writing, etc.).
Settings for rules.mk
(with defaults):
USER_MOUSE_JIGGLE_ENABLE
, set toyes
to enableUSER_MOUSE_JIGGLE_OUTPUT = no
USER_MOUSE_JIGGLE_RGB_MATRIX_MODE = RGB_MATRIX_BAND_VAL
If USER_MOUSE_JIGGLE_OUTPUT
is set to yes, when you press the keycode, the
keyboard will optionally write the text "Mouse jiggler enabled" to signify
that the behavior is active. I suggest opening a Notepad window before pressing
the key.
If USER_MOUSE_JIGGLE_RGB_MATRIX_MODE
is set to an rgb_matrix_effect
setting, it will be activated while the jiggler is enabled.
Pressing any key will automatically disable the feature again. This is because it causes a huge hit to the reliability and performance of the keyboard while it's active (adding stuff to every matrix scan will do that).
The feature also depends on the Mouse Keys feature, so ensure you don't disable
MOUSEKEY_ENABLE
.
Secrets
This implementation of the "secrets" concept is nearly identical to replicaJunction
which was based on Drashna
's. The only thing missing is a file called
user_secret_definitions.h
(configurable with USER_SECRET_DEFINITIONS_H
),
which contains the actual text contained in those macros.
Settings for rules.mk
:
USER_SECRETS_ENABLE
, set toyes
to enable
Settings for config.h
:
USER_SECRET_DEFINITIONS_H
, location of secrets header file.
To use my implementation, create a file of that name in the same directory. Make
sure you've got a .gitignore
file in place, and add these contents to the
definitions file:
#pragma once
static const char * const secrets[] = {
"secret1",
"secret2",
"secret3",
"secret4",
"secret5"
}
Change the quoted text to the text you'd like and you're golden. If you need
more (or fewer) items, you'll probably need to adjust the code in secrets.c
as well, since it looks for up to five items in a switch case.
Credits
License
Copyright 2023 D Patrick Seal (@plasticrake)
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/.