vial-qmk/keyboards/keychron/q9_plus/ansi_encoder/keymaps/vial/keymap.c
Rogier Spieker 1638f5da2b
Added Keychron Q9 Plus vial keymap (#928)
Co-authored-by: Rogier Spieker <rogier@konfirm.io>
2025-08-31 22:47:39 -06:00

164 lines
18 KiB
C
Executable file

/* Based on Keychron Q9 Vial by Keychron (https://www.keychron.com)
*
* 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/>.
*/
#include QMK_KEYBOARD_H
enum layers{
MAC_BASE,
WIN_BASE,
MAC_FN1,
WIN_FN1,
FN2,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
#define MO_MAC MO(MAC_FN1)
#define MO_WIN MO(WIN_FN1)
#define MO_FN2 MO(FN2)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | * MUTE *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | HOME |
// | | | | | | | | | | | | | | | |
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | CNTL | OPT | CMD | MAC_FN | SPC | SPC | CMD | MAC_FN | FN2 | LEFT | DOWN | RGHT |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[MAC_BASE] = LAYOUT_54_ansi(
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS , KC_MUTE,
KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_HOME,
KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL , KC_LOPT , KC_LCMD, MO_MAC , KC_SPC , KC_SPC , KC_RCMD, MO_MAC , MO_FN2 , KC_LEFT, KC_DOWN ,KC_RGHT
),
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | * MUTE *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | HOME |
// | | | | | | | | | | | | | | | |
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | CNTL | WIN | ALT | WIN_FN | SPC | SPC | ALT | WIN_FN | FN2 | LEFT | DOWN | RGHT |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[WIN_BASE] = LAYOUT_54_ansi(
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS , KC_MUTE,
KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_HOME,
KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL , KC_LWIN , KC_LALT, MO_WIN , KC_SPC , KC_SPC , KC_RALT, MO_WIN , MO_FN2 , KC_LEFT, KC_DOWN, KC_RGHT
),
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | ` | SCR- | SCR+ | MCTL | LPAD | BRI- | BRI+ | PREV | PLAY | NEXT | VOL- | VOL+ | | | * RGBTGL *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | RGBTGL | RMNEXT | BRI+ | HUE+ | SAT+ | SPD+ | | | | | | | | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
// | | | | | | | | | | | | | | | |
// | | RMPREV | BRI- | HEU- | SAT- | SPD- | NKTGL | | | | | | | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[MAC_FN1] = LAYOUT_54_ansi(
KC_GRV , KC_BRID , KC_BRIU, KC_MCTL, KC_LPAD, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______ , RM_TOGG,
RM_TOGG , RM_NEXT , RM_VALU, RM_HUEU, RM_SATU ,RM_SPDU, _______, _______, _______, _______, _______, _______, _______ , _______,
_______ , RM_PREV , RM_VALD, RM_HUED, RM_SATD, RM_SPDD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
),
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | ` | SCR- | SCR+ | TASK | FILE | BRI- | BRI+ | PREV | PLAY | NEXT | VOL- | VOL+ | | | * RGBTGL *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | RGBTGL | RMNEXT | BRI+ | HUE+ | SAT+ | SPD+ | | | | | | | | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
// | | | | | | | | | | | | | | | |
// | | RMPREV | BRI- | HEU- | SAT- | SPD- | NKTGL | | | | | | | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[WIN_FN1] = LAYOUT_54_ansi(
KC_GRV , KC_BRID , KC_BRIU, KC_TASK, KC_FLXP, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______ , RM_TOGG,
RM_TOGG , RM_NEXT , RM_VALU, RM_HUEU, RM_SATU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______ , _______,
_______ , RM_PREV , RM_VALD, RM_HUED, RM_SATD, RM_SPDD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
),
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | BACK | * *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
// | | | | | | | | | | | | | | | |
// | | | | | | | | | | | | | | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[FN2] = LAYOUT_54_ansi(
KC_TILD , 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_BSPC , _______,
KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, _______ , _______,
_______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN1] = {ENCODER_CCW_CW(RM_VALD, RM_VALU)},
[WIN_FN1] = {ENCODER_CCW_CW(RM_VALD, RM_VALU)},
[FN2] = {ENCODER_CCW_CW(RM_HUED, RM_HUEU)}
};
#endif