Firmware: Implement mode switching; add numpad and Procreate modes

This commit is contained in:
Lexi / Zoe 2024-06-05 23:55:24 +02:00
parent 79560566a1
commit 8182df079f
Signed by: binaryDiv
GPG Key ID: F8D4956E224DA232
1 changed files with 83 additions and 30 deletions

View File

@ -3,49 +3,102 @@
#include QMK_KEYBOARD_H
// Define layer names for better readability
enum layer_names {
// -- Mode layers: Different "modes" for app-specific key bindings that can be selected as default layer.
// Mode 1: Numpad
L_MODE_NUMPAD,
// Mode 2: Procreate shortcuts
L_MODE_PROCREATE,
// Mode 3: Factorio extra quick bars
L_MODE_FACTORIO,
// RGB control mode: Change RGB lighting
L_MODE_RGB_CTRL,
// -- Special layers
// Keyboard control layer: Used to switch the current mode / default layer and other keyboard configuration.
L_KBDCTL,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Kbd-Fn
*
* Alt+6 Alt+7 Alt+8 Alt+9 Alt+0
*
* Alt+1 Alt+2 Alt+3 Alt+4 Alt+5
*
* Ctrl+6 Ctrl+7 Ctrl+8 Ctrl+9 Ctrl+0
*
* Ctrl+1 Ctrl+2 Ctrl+3 Ctrl+4 Ctrl+5
*
*/
// Default layer for Factorio tertiary/quarternary quick bars
[0] = LAYOUT_ortho_5x5(
_______, _______, _______, MO(1), _______,
// -- Mode layers
// Mode 1: Numpad mode
[L_MODE_NUMPAD] = LAYOUT_ortho_5x5(
KC_ESCAPE, KC_KP_SLASH, KC_KP_ASTERISK, MO(L_KBDCTL), KC_NUM_LOCK,
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_KP_EQUAL,
KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_BACKSPACE,
KC_KP_1, KC_KP_2, KC_KP_3, KC_UP, KC_KP_ENTER,
KC_KP_0, KC_KP_DOT, KC_LEFT, KC_DOWN, KC_RIGHT
),
// Mode 2: Procreate shortcuts
[L_MODE_PROCREATE] = LAYOUT_ortho_5x5(
KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_GRAVE, MO(L_KBDCTL), _______,
LCMD(KC_B), LCMD(KC_U), KC_L, KC_B, KC_E,
LCMD(KC_0), LCMD(KC_K), KC_S, LCMD(KC_Z), LCMD(LSFT(KC_Z)),
KC_X, KC_C, KC_V, KC_UP, KC_LEFT_ALT,
KC_LCMD, KC_SPACE, KC_LEFT, KC_DOWN, KC_RIGHT
),
// Mode 3: Factorio extra quick bars
[L_MODE_FACTORIO] = LAYOUT_ortho_5x5(
_______, _______, _______, MO(L_KBDCTL), _______,
LALT(KC_6), LALT(KC_7), LALT(KC_8), LALT(KC_9), LALT(KC_0),
LALT(KC_1), LALT(KC_2), LALT(KC_3), LALT(KC_4), LALT(KC_5),
LCTL(KC_6), LCTL(KC_7), LCTL(KC_8), LCTL(KC_9), LCTL(KC_0),
LCTL(KC_1), LCTL(KC_2), LCTL(KC_3), LCTL(KC_4), LCTL(KC_5)
),
// Keyboard control layer for entering bootloader and controlling the RGB light (hold 0,4)
[1] = LAYOUT_ortho_5x5(
QK_BOOTLOADER, QK_REBOOT, QK_DEBUG_TOGGLE, _______, QK_CLEAR_EEPROM,
RGB_TOG, RGB_MODE_REVERSE, RGB_MODE_FORWARD, _______, _______,
// RGB control mode: Change RGB lighting
[L_MODE_RGB_CTRL] = LAYOUT_ortho_5x5(
RGB_TOG, RGB_MODE_REVERSE, RGB_MODE_FORWARD, MO(L_KBDCTL), _______,
RGB_VAI, RGB_SAI, RGB_HUI, RGB_SPI, _______,
RGB_VAD, RGB_SAD, RGB_HUD, RGB_SPD, _______,
RGB_MODE_PLAIN, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, RGB_MODE_SWIRL, _______
_______, _______, _______, _______, _______,
RGB_MODE_PLAIN, RGB_MODE_RGBTEST, _______, _______, _______
),
// -- Special layers
// Keyboard control layer: Used to switch the current mode / default layer and other keyboard configuration.
[L_KBDCTL] = LAYOUT_ortho_5x5(
QK_BOOTLOADER, QK_REBOOT, QK_DEBUG_TOGGLE, _______, QK_CLEAR_EEPROM,
_______, _______, _______, RGB_TOG, DF(L_MODE_RGB_CTRL),
_______, _______, _______, _______, _______,
DF(L_MODE_NUMPAD), DF(L_MODE_PROCREATE), DF(L_MODE_FACTORIO), _______, _______,
_______, _______, _______, _______, _______
)
};
// Define mapping for rotary encoder
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
// Default layer: Emulate scroll wheel
[0] = {
// -- Mode layers
// Mode 1: Numpad - Scroll wheel
[L_MODE_NUMPAD] = {
ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN)
},
// Mode 2: Procreate - Decrease/increase brush size
[L_MODE_PROCREATE] = {
ENCODER_CCW_CW(LCMD(KC_LEFT_BRACKET), LCMD(KC_RIGHT_BRACKET))
},
// Mode 3: Factorio extra quick bars
[L_MODE_FACTORIO] = {
ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN)
},
// RGB control mode: Control RGB LED brightness
[L_MODE_RGB_CTRL] = {
ENCODER_CCW_CW(RGB_VAD, RGB_VAI)
},
// -- Special layers
// Keyboard control layer: Control RGB LED brightness
[1] = {
[L_KBDCTL] = {
ENCODER_CCW_CW(RGB_VAD, RGB_VAI)
}
};