// Copyright 2024 binaryDiv (@binaryDiv) // SPDX-License-Identifier: GPL-2.0-or-later #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] = { // -- 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) ), // 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_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] = { // -- 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 [L_KBDCTL] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) } }; #endif