Added Keychron Q9 Plus vial keymap (#928)

Co-authored-by: Rogier Spieker <rogier@konfirm.io>
This commit is contained in:
Rogier Spieker 2025-09-01 06:47:39 +02:00 committed by GitHub
parent af590c4220
commit 1638f5da2b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 362 additions and 0 deletions

View file

@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0x74, 0x8F, 0x33, 0x91, 0x5F, 0x20, 0x08, 0x70}
#define VIAL_UNLOCK_COMBO_ROWS { 0, 1 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }

View file

@ -0,0 +1,164 @@
/* 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

View file

@ -0,0 +1,5 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
VIALRGB_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View file

@ -0,0 +1,185 @@
{
"name": "Keychron Q9 Plus",
"lighting": "vialrgb",
"matrix": {
"rows": 4,
"cols": 15
},
"customKeycodes": [
{
"name": "Mission Control",
"title": "Mission Control in macOS",
"shortName": "Mission Control"
},
{
"name": "Launch Pad",
"title": "Launch Pad in macOS",
"shortName": "Launch Pad"
},
{
"name": "Left Option",
"title": "Left Option in macOS",
"shortName": "Left Option"
},
{
"name": "Right Option",
"title": "Right Option in macOS",
"shortName": "Right Option"
},
{
"name": "Left Cmd",
"title": "Left Command in macOS",
"shortName": "Left Command"
},
{
"name": "Right Cmd",
"title": "Right Command in macOS",
"shortName": "Right Command"
},
{
"name": "Task View",
"title": "Task View in windows",
"shortName": "Task View"
},
{
"name": "File Explorer",
"title": "File Explorer in windows",
"shortName": "File Explorer"
}
],
"layouts": {
"keymap": [
[
{
"x": 15.25,
"c": "#aaaaaa"
},
"0,14",
{
"x": 0.25
},
"0,0\n\n\n\n\n\n\n\n\ne",
"0,1\n\n\n\n\n\n\n\n\ne"
],
[
{
"w": 1.5
},
"0, 0",
"0, 1",
"0, 2",
"0, 3",
"0, 4",
"0, 5",
"0, 6",
"0, 7",
"0, 8",
"0, 9",
"0, 10",
"0, 11",
"0, 12",
{
"w": 1.5
},
"0, 13",
{
"x": 0.25,
"c": "#000000",
"t": "#cccccc"
},
"0, 14"
],
[
{
"c": "#cccccc",
"t": "#000000",
"w": 1.75
},
"1, 0",
"1, 1",
"1, 2",
"1, 3",
"1, 4",
"1, 5",
"1, 6",
"1, 7",
"1, 8",
"1, 9",
"1, 10",
"1, 11",
{
"w": 2.25
},
"1, 13"
],
[
{
"y": -0.75,
"x": 15.25
},
"1, 14"
],
[
{
"y": -0.25,
"w": 2.25
},
"2, 0",
"2, 2",
"2, 3",
"2, 4",
"2, 5",
"2, 6",
"2, 7",
"2, 8",
"2, 9",
"2, 10",
"2, 11",
{
"w": 1.75
},
"2, 13",
{
"c": "#bbbbbb"
},
"2, 14"
],
[
{
"c": "#cccccc",
"w": 1.25
},
"3, 0",
{
"w": 1.25
},
"3, 1",
{
"w": 1.25
},
"3, 2",
{
"w": 1.25
},
"3, 3",
{
"w": 2.25
},
"3, 6",
{
"w": 2.75
},
"3, 9",
"3, 10",
"3, 11",
"3, 12",
{
"c": "#bbbbbb"
},
"3, 13",
"3, 14",
"1, 12"
]
]
}
}