Added Q10 Max ISO

This commit is contained in:
lokher 2024-11-29 18:23:30 +08:00
parent 4a55278fa6
commit ebdaa0469c
13 changed files with 1225 additions and 21 deletions

View file

@ -23,9 +23,9 @@ const snled27351_led_t g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
* | | G location
* | | | B location
* | | | | */
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},

View file

@ -18,28 +18,19 @@
#ifdef RGB_MATRIX_ENABLE
/* RGB Matrix driver configuration */
# define DRIVER_COUNT 2
# define RGB_MATRIX_LED_COUNT 89
# define SPI_SCK_PIN A5
# define SPI_MISO_PIN A6
# define SPI_MOSI_PIN A7
# define DRIVER_COUNT 2
# define DRIVER_CS_PINS \
{ B8, B10 }
# define SNLED23751_SPI_DIVISOR 16
# define SPI_DRIVER SPID1
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in snled27351.h) */
# define SNLED27351_PHASE_CHANNEL MSKPHASE_12CHANNEL
/* Set LED driver current */
# define SNLED27351_CURRENT_TUNE \
{ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32 }
/* Set to infinit, which is use in USB mode by default */
# define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE
/* Allow shutdown of led driver to save power */
# define RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE
/* Turn off backlight on low brightness to save power */

View file

@ -20,6 +20,19 @@
#define ENCODER_DEFAULT_POS 0x3
#define ENCODER_MAP_KEY_DELAY 2
#if defined(RGB_MATRIX_ENABLE) || defined(LED_MATRIX_ENABLE) || defined(LK_WIRELESS_ENABLE)
/* SPI configuration */
# define SPI_DRIVER SPID1
# define SPI_SCK_PIN A5
# define SPI_MISO_PIN A6
# define SPI_MOSI_PIN A7
#endif
#if defined(RGB_MATRIX_ENABLE) || defined(LED_MATRIX_ENABLE)
# define LED_DRIVER_SHUTDOWN_PIN B9
# define SNLED23751_SPI_DIVISOR 16
#endif
#ifdef LK_WIRELESS_ENABLE
/* Hardware configuration */
@ -40,8 +53,6 @@
# if defined(RGB_MATRIX_ENABLE)
# define LED_DRIVER_SHUTDOWN_PIN B9
# define BT_HOST_LED_MATRIX_LIST \
{ 17, 18, 19 }
@ -67,12 +78,6 @@
/* Enable bluetooth NKRO */
# define WIRELESS_NKRO_ENABLE
/* Raw hid command for factory test and bluetooth DFU */
# define RAW_HID_CMD 0xAA ... 0xAB
#else
/* Raw hid command for factory test */
# define RAW_HID_CMD 0xAB
#endif
/* Factory test keys */

View file

@ -0,0 +1,47 @@
/* Copyright 2024 @ 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/>.
*/
#pragma once
#ifdef RGB_MATRIX_ENABLE
/* RGB Matrix driver configuration */
# define RGB_MATRIX_LED_COUNT 90
# define DRIVER_COUNT 2
# define DRIVER_CS_PINS \
{ B8, B10 }
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in snled27351.h) */
# define SNLED27351_PHASE_CHANNEL MSKPHASE_12CHANNEL
/* Set LED driver current */
# define SNLED27351_CURRENT_TUNE \
{ 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32 }
/* Set to infinit, which is use in USB mode by default */
# define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE
/* Allow shutdown of led driver to save power */
# define RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE
/* Turn off backlight on low brightness to save power */
# define RGB_MATRIX_BRIGHTNESS_TURN_OFF_VAL 32
/* Indications */
# define CAPS_LOCK_INDEX 48
# define LOW_BAT_IND_INDEX \
{ 82, 84 }
# define RGB_MATRIX_KEYPRESSES
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#endif

View file

@ -0,0 +1,108 @@
{
"usb": {
"pid": "0x08A1",
"device_version": "1.0.0"
},
"layouts": {
"LAYOUT_iso_91": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.5, "y": 0},
{"matrix": [0, 2], "x": 2.75, "y": 0},
{"matrix": [0, 3], "x": 3.75, "y": 0},
{"matrix": [0, 4], "x": 4.75, "y": 0},
{"matrix": [0, 5], "x": 5.75, "y": 0.25},
{"matrix": [0, 6], "x": 7, "y": 0.5},
{"matrix": [0, 7], "x": 8, "y": 0.75},
{"matrix": [0, 8], "x": 9.75, "y": 0.75},
{"matrix": [0, 9], "x": 10.75, "y": 0.5},
{"matrix": [0, 10], "x": 12, "y": 0.25},
{"matrix": [0, 11], "x": 13, "y": 0},
{"matrix": [0, 12], "x": 14, "y": 0},
{"matrix": [0, 13], "x": 15, "y": 0},
{"matrix": [0, 14], "x": 16.5, "y": 0},
{"matrix": [0, 15], "x": 18, "y": 0},
{"matrix": [1, 0], "x": 0.5, "y": 1.25},
{"matrix": [1, 1], "x": 2, "y": 1.25},
{"matrix": [1, 2], "x": 3, "y": 1.25},
{"matrix": [1, 3], "x": 4, "y": 1.25},
{"matrix": [1, 4], "x": 5, "y": 1.5},
{"matrix": [1, 5], "x": 6, "y": 1.75},
{"matrix": [1, 6], "x": 7, "y": 2},
{"matrix": [1, 7], "x": 8, "y": 2},
{"matrix": [1, 8], "x": 9.5, "y": 2},
{"matrix": [1, 9], "x": 10.5, "y": 2},
{"matrix": [1, 10], "x": 11.5, "y": 1.75},
{"matrix": [1, 11], "x": 12.5, "y": 1.5},
{"matrix": [1, 12], "x": 13.5, "y": 1.25},
{"matrix": [1, 13], "x": 14.5, "y": 1.25},
{"matrix": [1, 14], "x": 15.5, "y": 1.25, "w": 2},
{"matrix": [1, 15], "x": 18, "y": 1.25},
{"matrix": [2, 0], "x": 0.25, "y": 2.25},
{"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
{"matrix": [2, 2], "x": 3.25, "y": 2.25},
{"matrix": [2, 3], "x": 4.25, "y": 2.25},
{"matrix": [2, 4], "x": 5.25, "y": 2.5},
{"matrix": [2, 5], "x": 6.25, "y": 2.75},
{"matrix": [2, 6], "x": 7.25, "y": 3},
{"matrix": [2, 7], "x": 9.25, "y": 3.25},
{"matrix": [2, 8], "x": 10.25, "y": 3},
{"matrix": [2, 9], "x": 11.25, "y": 2.75},
{"matrix": [2, 10], "x": 12.25, "y": 2.5},
{"matrix": [2, 11], "x": 13, "y": 2.25},
{"matrix": [2, 12], "x": 14.25, "y": 2.25},
{"matrix": [2, 13], "x": 15.25, "y": 2.25},
{"matrix": [2, 15], "x": 18, "y": 2.25},
{"matrix": [3, 0], "x": 0.25, "y": 3.25},
{"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
{"matrix": [3, 2], "x": 3.25, "y": 3.25},
{"matrix": [3, 3], "x": 4.25, "y": 3.5},
{"matrix": [3, 4], "x": 5.25, "y": 3.5},
{"matrix": [3, 5], "x": 6.25, "y": 3.75},
{"matrix": [3, 6], "x": 7.25, "y": 4},
{"matrix": [3, 8], "x": 9.75, "y": 4},
{"matrix": [3, 9], "x": 10.5, "y": 4},
{"matrix": [3, 10], "x": 11.5, "y": 3.75},
{"matrix": [3, 11], "x": 12.5, "y": 3.5},
{"matrix": [3, 12], "x": 13.75, "y": 3.25},
{"matrix": [3, 13], "x": 14.75, "y": 3.25},
{"matrix": [3, 14], "x": 15.75, "y": 3.25},
{"matrix": [2, 14], "x": 16.75, "y": 2.25, "w": 1.5, "h": 2},
{"matrix": [3, 15], "x": 18.25, "y": 3.25},
{"matrix": [4, 0], "x": 0, "y": 4.25},
{"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4.25},
{"matrix": [4, 3], "x": 3.5, "y": 4.25},
{"matrix": [4, 4], "x": 4.75, "y": 4.5},
{"matrix": [4, 5], "x": 5.5, "y": 4.75},
{"matrix": [4, 6], "x": 6.5, "y": 4.75},
{"matrix": [4, 7], "x": 7.5, "y": 5},
{"matrix": [4, 8], "x": 9, "y": 5.25},
{"matrix": [4, 9], "x": 10, "y": 5},
{"matrix": [4, 10], "x": 11, "y": 4.75},
{"matrix": [4, 11], "x": 12, "y": 4.5},
{"matrix": [4, 12], "x": 13, "y": 4.5},
{"matrix": [4, 13], "x": 14, "y": 4.25},
{"matrix": [4, 14], "x": 15, "y": 4.25, "w": 1.75},
{"matrix": [4, 15], "x": 17.25, "y": 4.5},
{"matrix": [5, 0], "x": 0, "y": 5.25},
{"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 3], "x": 4.5, "y": 5.5, "w": 1.25},
{"matrix": [5, 4], "x": 5.75, "y": 5.75, "w": 2.25},
{"matrix": [5, 7], "x": 7.75, "y": 6.25},
{"matrix": [5, 8], "x": 9.25, "y": 6, "w": 2.75},
{"matrix": [5, 9], "x": 12, "y": 5.75},
{"matrix": [5, 10], "x": 13, "y": 5.5},
{"matrix": [5, 13], "x": 16.25, "y": 5.5},
{"matrix": [5, 14], "x": 17.25, "y": 5.5},
{"matrix": [5, 15], "x": 18.25, "y": 5.5}
]
}
}
}

View file

@ -0,0 +1,157 @@
/* Copyright 2024 @ 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 "quantum.h"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
const snled27351_led_t g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},
{0, F_5, D_5, E_5},
{0, F_6, D_6, E_6},
{0, F_7, D_7, E_7},
{0, F_8, D_8, E_8},
{0, F_9, D_9, E_9},
{0, F_10, D_10, E_10},
{0, F_11, D_11, E_11},
{0, F_12, D_12, E_12},
{0, F_13, D_13, E_13},
{0, F_14, D_14, E_14},
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_1, J_1, K_1},
{0, L_2, J_2, K_2},
{0, L_3, J_3, K_3},
{0, L_4, J_4, K_4},
{0, L_5, J_5, K_5},
{0, L_6, J_6, K_6},
{0, L_7, J_7, K_7},
{0, L_8, J_8, K_8},
{0, L_9, J_9, K_9},
{0, L_10, J_10, K_10},
{0, L_11, J_11, K_11},
{0, L_12, J_12, K_12},
{0, L_13, J_13, K_13},
{0, L_14, J_14, K_14},
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{0, C_1, A_1, B_1},
{0, C_2, A_2, B_2},
{0, C_3, A_3, B_3},
{0, C_4, A_4, B_4},
{0, C_5, A_5, B_5},
{0, C_6, A_6, B_6},
{0, C_7, A_7, B_7},
{0, C_8, A_8, B_8},
{0, C_9, A_9, B_9},
{0, C_10, A_10, B_10},
{0, C_11, A_11, B_11},
{0, C_12, A_12, B_12},
{0, C_13, A_13, B_13},
{0, C_14, A_14, B_14},
{0, C_15, A_15, B_15},
{0, C_16, A_16, B_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
{1, C_14, A_14, B_14},
{1, C_13, A_13, B_13},
{1, C_12, A_12, B_12},
{1, C_11, A_11, B_11},
{1, C_10, A_10, B_10},
{1, C_8, A_8, B_8},
{1, C_7, A_7, B_7},
{1, C_6, A_6, B_6},
{1, C_5, A_5, B_5},
{1, C_4, A_4, B_4},
{1, C_3, A_3, B_3},
{1, C_2, A_2, B_2},
{1, C_1, A_1, B_1},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
{1, I_14, G_14, H_14},
{1, I_13, G_13, H_13},
{1, I_12, G_12, H_12},
{1, I_11, G_11, H_11},
{1, I_10, G_10, H_10},
{1, I_9, G_9, H_9},
{1, I_8, G_8, H_8},
{1, I_7, G_7, H_7},
{1, I_6, G_6, H_6},
{1, I_5, G_5, H_5},
{1, I_4, G_4, H_4},
{1, I_3, G_3, H_3},
{1, I_2, G_2, H_2},
{1, I_1, G_1, H_1},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
{1, F_14, D_14, E_14},
{1, F_13, D_13, E_13},
{1, F_12, D_12, E_12},
{1, F_9, D_9, E_9},
{1, F_8, D_8, E_8},
{1, F_7, D_7, E_7},
{1, F_6, D_6, E_6},
{1, F_3, D_3, E_3},
{1, F_2, D_2, E_2},
{1, F_1, D_1, E_1},
};
#define __ NO_LED
led_config_t g_led_config = {
{
// Key Matrix to LED Index
{ __, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
{ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46 },
{ 47, 48, 49, 50, 51, 52, 53, __, 54, 55, 56, 57, 58, 59, 60, 61 },
{ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77 },
{ 78, 79, 80, 81, 82, __, __, 83, 84, 85, 86, __, __, 87, 88, 89 },
},
{
// LED Index to Physical Position
{19, 0}, {34, 0}, {46, 0}, {59, 1}, {71, 3}, {86, 6}, { 98, 8}, {121, 8}, {133, 6}, {147, 3}, {159, 1}, {173, 0}, {185, 0}, {203, 0}, {220, 0},
{5,14}, {24,14}, {36,14}, {48,13}, {61,15}, {73,17}, {85,20}, { 97,22}, {116,22}, {128,20}, {140,17}, {152,15}, {165,13}, {177,14}, {195,14}, {220,14},
{4,24}, {24,24}, {40,24}, {53,24}, {65,27}, {77,29}, {89,31}, {113,33}, {125,31}, {137,29}, {149,26}, {161,24}, {174,24}, {186,24}, {201,24}, {222,24},
{2,34}, {23,34}, {40,34}, {53,35}, {65,37}, {77,39}, {89,42}, {118,42}, {130,40}, {142,38}, {154,36}, {167,34}, {179,34}, {199,34}, {224,35},
{0,45}, {20,45}, {31,45}, {44,45}, {57,46}, {69,48}, {81,51}, { 93,53}, {112,54}, {124,52}, {136,50}, {148,48}, {160,46}, {173,45}, {190,45}, {210,47},
{0,55}, {18,55}, {33,55}, {56,57}, {77,61}, { 96,64}, {125,63}, {147,58}, {159,56}, {198,58}, {210,58}, {222,58}
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
}
};
#endif

View file

@ -0,0 +1,77 @@
/* Copyright 2024 @ 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
#include "keychron_common.h"
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN,
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_91(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTRL, KC_LNPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMMD, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_91(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, BT_HST1, BT_HST2, BT_HST3, P2P4G, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
_______, _______, _______, _______, _______, _______, _______, BAT_LVL, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_iso_91(
KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_91(
RGB_TOG, _______, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, BT_HST1, BT_HST2, BT_HST3, P2P4G, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
_______, _______, _______, _______, _______, _______, _______, BAT_LVL, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
};
#endif // ENCODER_MAP_ENABLE
// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron_common(keycode, record)) {
return false;
}
return true;
}

View file

@ -0,0 +1,77 @@
/* Copyright 2024 @ 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
#include "keychron_common.h"
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN,
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_91(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTRL, KC_LNPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMMD, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_91(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, BT_HST1, BT_HST2, BT_HST3, P2P4G, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
_______, _______, _______, _______, _______, _______, _______, BAT_LVL, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_iso_91(
KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_91(
RGB_TOG, _______, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, BT_HST1, BT_HST2, BT_HST3, P2P4G, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
_______, _______, _______, _______, _______, _______, _______, BAT_LVL, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
};
#endif // ENCODER_MAP_ENABLE
// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron_common(keycode, record)) {
return false;
}
return true;
}

View file

@ -0,0 +1 @@
VIA_ENABLE = yes

View file

@ -0,0 +1 @@
# This file intentionally left blank

View file

@ -11,10 +11,12 @@ A customizable 75% ergonomic keyboard.
Make example for this keyboard (after setting up your build environment):
make keychron/q10_max/ansi_encoder:default
make keychron/q10_max/iso_encoder:default
Flashing example for this keyboard:
make keychron/q10_max/ansi_encoder:default:flash
make keychron/q10_max/iso_encoder:default:flash
**Reset Key**: Toggle mode switch to "Cable", hold down the *Esc* key or reset button underneath space bar while connecting the USB cable,

View file

@ -0,0 +1,399 @@
{
"name": "Keychron Q10 Max ISO knob",
"vendorId": "0x3434",
"productId": "0x08A1",
"keycodes": ["qmk_lighting"],
"menus": [
{
"label": "Lighting",
"content": [
{
"label": "Backlight",
"content": [
{
"label": "Brightness",
"type": "range",
"options": [0, 255],
"content": ["id_qmk_rgb_matrix_brightness", 3, 1]
},
{
"label": "Effect",
"type": "dropdown",
"content": ["id_qmk_rgb_matrix_effect", 3, 2],
"options": [
["None", 0],
["Solid Color", 1],
["Breathing", 2],
["Band Spiral Val", 3],
["Cycle All", 4],
["Cycle Left Right", 5],
["Cycle Up Down", 6],
["Rainbow Moving Chevron", 7],
["Cycle Out In", 8],
["Cycle Out In Dual", 9],
["Cycle Pinwheel", 10],
["Cycle Spiral", 11],
["Dual Beacon", 12],
["Rainbow Beacon", 13],
["Jellybean Raindrops", 14],
["Pixel Rain", 15],
["Typing Heatmap", 16],
["Digital Rain", 17],
["Reactive Simple", 18],
["Reactive Multiwide", 19],
["Reactive Multinexus", 20],
["Splash", 21],
["Solid Splash", 22]
]
},
{
"showIf": "{id_qmk_rgb_matrix_effect} > 1",
"label": "Effect Speed",
"type": "range",
"options": [0, 255],
"content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
},
{
"showIf": "{id_qmk_rgb_matrix_effect} != 0 && ( {id_qmk_rgb_matrix_effect} < 4 || {id_qmk_rgb_matrix_effect} == 18 || ({id_qmk_rgb_matrix_effect} > 17 && {id_qmk_rgb_matrix_effect} != 21) ) ",
"label": "Color",
"type": "color",
"content": ["id_qmk_rgb_matrix_color", 3, 4]
}
]
}
]
}
],
"customKeycodes": [
{"name": "Left Option", "title": "Left Option", "shortName": "LOpt"},
{"name": "Right Option", "title": "Right Option", "shortName": "ROpt"},
{"name": "Left Cmd", "title": "Left Command", "shortName": "LCmd"},
{"name": "Right Cmd", "title": "Right Command", "shortName": "RCmd"},
{"name": "Misson Control", "title": "Misson Control in Mac", "shortName": "MCtl"},
{"name": "Lanuch Pad", "title": "Lanuch Pad in Windows", "shortName": "LPad"},
{"name": "Task View", "title": "Task View in Windows", "shortName": "Task"},
{"name": "File Explorer", "title": "File Explorer in Windows", "shortName": "File"},
{"name": "Screen shot", "title": "Screenshot in macOS", "shortName": "SShot"},
{"name": "Cortana", "title": "Cortana in Windows", "shortName": "Cortana"},
{"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
{"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"},
{"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"},
{"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"},
{"name": "2.4G", "title": "2.4G", "shortName": "2.4G"},
{"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"}
],
"matrix": {"rows": 6, "cols": 16},
"layouts": {
"keymap": [
[
{
"x": 0.5,
"c": "#aaaaaa"
},
"0,0\n\n\n\n\n\n\n\n\ne0",
{
"x": 0.5,
"c": "#777777"
},
"0,1\nESC",
{
"x": 0.25,
"c": "#cccccc"
},
"0,2",
"0,3",
{
"x": 9.35
},
"0,12",
"0,13",
{
"x": 0.45,
"c": "#aaaaaa"
},
"0,14",
{
"x": 0.45
},
"0,15"
],
[
{
"y": 0.25,
"x": 0.75
},
"1,0",
{
"x": 0.5
},
"1,1",
{
"c": "#cccccc"
},
"1,2",
"1,3",
{
"x": 8.65
},
"1,12",
"1,13",
{
"c": "#aaaaaa",
"w": 2
},
"1,14",
{
"x": 0.6
},
"1,15"
],
[
{
"x": 0.5
},
"2,0",
{
"x": 0.5,
"w": 1.5
},
"2,1",
{
"c": "#cccccc"
},
"2,2",
{
"x": 10.25
},
"2,12",
"2,13",
{
"x": 0.25,
"c": "#aaaaaa",
"w": 1.25,
"h": 2,
"w2": 1.5,
"h2": 1,
"x2": -0.25
},
"2,14",
{
"x": 0.45
},
"2,15"
],
[
{
"x": 0.25
},
"3,0",
{
"x": 0.5,
"w": 1.75
},
"3,1",
{
"c": "#cccccc"
},
"3,2",
{
"x": 9.5
},
"3,12",
"3,13",
"3,14",
{
"x": 1.9,
"c": "#aaaaaa"
},
"3,15"
],
[
"4,0",
{
"x": 0.5,
"w": 1.25
},
"4,1",
"4,2",
{
"c": "#cccccc"
},
"4,3",
{
"x": 9.75
},
"4,13",
{
"c": "#aaaaaa",
"w": 1.75
},
"4,14"
],
[
{
"y": -0.75,
"x": 17.5,
"c": "#777777"
},
"4,15"
],
[
{
"y": -0.25,
"c": "#aaaaaa"
},
"5,0",
{
"x": 0.5,
"w": 1.25
},
"5,1",
{
"w": 1.25
},
"5,2"
],
[
{
"y": -0.75,
"x": 16.5,
"c": "#777777"
},
"5,13",
"5,14",
"5,15"
],
[
{
"r": 6,
"y": -7.05,
"x": 5.4,
"c": "#cccccc"
},
"0,4",
"0,5",
{
"x": 0.25,
"c": "#aaaaaa"
},
"0,6",
"0,7"
],
[
{
"y": 0.25,
"x": 5.55,
"c": "#cccccc"
},
"1,4",
"1,5",
"1,6",
"1,7"
],
[
{
"x": 4.9
},
"2,3",
"2,4",
"2,5",
"2,6"
],
[
{
"x": 5
},
"3,3",
"3,4",
"3,5",
"3,6"
],
[
{
"x": 5.35
},
"4,4",
"4,5",
"4,6",
"4,7"
],
[
{
"x": 5.35,
"c": "#aaaaaa",
"w": 1.25
},
"5,3",
{
"w": 2.25
},
"5,4",
"5,7"
],
[
{
"r": -6,
"y": -4.25,
"x": 10.05
},
"0,8",
"0,9",
{
"x": 0.25,
"c": "#cccccc"
},
"0,10",
"0,11"
],
[
{
"y": 0.25,
"x": 9.4
},
"1,8",
"1,9",
"1,10",
"1,11"
],
[
{
"x": 8.9
},
"2,7",
"2,8",
"2,9",
"2,10",
"2,11"
],
[
{
"x": 9.4
},
"3,8",
"3,9",
"3,10",
"3,11"
],
[
{
"x": 8.85
},
"4,8",
"4,9",
"4,10",
"4,11",
"4,12"
],
[
{
"x": 8.85,
"c": "#aaaaaa",
"w": 2.55
},
"5,8",
"5,9",
"5,10"
]
]
}
}

View file

@ -0,0 +1,339 @@
{
"name": "Keychron Q5 Max ISO Knob",
"vendorId": "0x3434",
"productId": "0x0851",
"keycodes": ["qmk_lighting"],
"menus": [
{
"label": "Lighting",
"content": [
{
"label": "Backlight",
"content": [
{
"label": "Brightness",
"type": "range",
"options": [0, 255],
"content": ["id_qmk_rgb_matrix_brightness", 3, 1]
},
{
"label": "Effect",
"type": "dropdown",
"content": ["id_qmk_rgb_matrix_effect", 3, 2],
"options": [
["None", 0],
["Solid Color", 1],
["Breathing", 2],
["Band Spiral Val", 3],
["Cycle All", 4],
["Cycle Left Right", 5],
["Cycle Up Down", 6],
["Rainbow Moving Chevron", 7],
["Cycle Out In", 8],
["Cycle Out In Dual", 9],
["Cycle Pinwheel", 10],
["Cycle Spiral", 11],
["Dual Beacon", 12],
["Rainbow Beacon", 13],
["Jellybean Raindrops", 14],
["Pixel Rain", 15],
["Typing Heatmap", 16],
["Digital Rain", 17],
["Reactive Simple", 18],
["Reactive Multiwide", 19],
["Reactive Multinexus", 20],
["Splash", 21],
["Solid Splash", 22]
]
},
{
"showIf": "{id_qmk_rgb_matrix_effect} > 1",
"label": "Effect Speed",
"type": "range",
"options": [0, 255],
"content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
},
{
"showIf": "{id_qmk_rgb_matrix_effect} != 0 && ( {id_qmk_rgb_matrix_effect} < 4 || {id_qmk_rgb_matrix_effect} == 18 || ({id_qmk_rgb_matrix_effect} > 17 && {id_qmk_rgb_matrix_effect} != 21) ) ",
"label": "Color",
"type": "color",
"content": ["id_qmk_rgb_matrix_color", 3, 4]
}
]
}
]
}
],
"customKeycodes": [
{"name": "Left Option", "title": "Left Option", "shortName": "LOpt"},
{"name": "Right Option", "title": "Right Option", "shortName": "ROpt"},
{"name": "Left Cmd", "title": "Left Command", "shortName": "LCmd"},
{"name": "Right Cmd", "title": "Right Command", "shortName": "RCmd"},
{"name": "Misson Control", "title": "Misson Control in Mac", "shortName": "MCtl"},
{"name": "Lanuch Pad", "title": "Lanuch Pad in Windows", "shortName": "LPad"},
{"name": "Task View", "title": "Task View in Windows", "shortName": "Task"},
{"name": "File Explorer", "title": "File Explorer in Windows", "shortName": "File"},
{"name": "Screen shot", "title": "Screenshot in macOS", "shortName": "SShot"},
{"name": "Cortana", "title": "Cortana in Windows", "shortName": "Cortana"},
{"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
{"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"},
{"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"},
{"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"},
{"name": "2.4G", "title": "2.4G", "shortName": "2.4G"},
{"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"}
],
"matrix": {"rows": 6, "cols": 19},
"layouts": {
"keymap": [
[
{
"c": "#777777"
},
"0,0\nESC",
{
"x": 1,
"c": "#cccccc"
},
"0,1",
"0,2",
"0,3",
"0,4",
{
"x": 0.5,
"c": "#aaaaaa"
},
"0,5",
"0,6",
"0,7",
"0,8",
{
"x": 0.5,
"c": "#cccccc"
},
"0,9",
"0,10",
"0,11",
"0,12",
{
"x": 0.25,
"c": "#aaaaaa"
},
"0,13",
{
"x": 0.25,
"c": "#cccccc"
},
"0,15",
"0,16",
"0,17",
"0,18\n\n\n\n\n\n\n\n\ne0"
],
[
{
"y": 0.25
},
"1,0",
{
"c": "#cccccc"
},
"1,1",
"1,2",
"1,3",
"1,4",
"1,5",
"1,6",
"1,7",
"1,8",
"1,9",
"1,10",
"1,11",
"1,12",
{
"c": "#aaaaaa",
"w": 2
},
"1,13",
{
"x": 0.25
},
"1,14",
{
"x": 0.25,
"c": "#cccccc"
},
"1,15",
"1,16",
"1,17",
"1,18"
],
[
{
"c": "#aaaaaa",
"w": 1.5
},
"2,0",
{
"c": "#cccccc"
},
"2,1",
"2,2",
"2,3",
"2,4",
"2,5",
"2,6",
"2,7",
"2,8",
"2,9",
"2,10",
"2,11",
"2,12",
{
"x": 0.25,
"c": "#aaaaaa",
"w": 1.25,
"h": 2,
"w2": 1.5,
"h2": 1,
"x2": -0.25
},
"2,13",
{
"x": 0.25
},
"2,14",
{
"x": 0.25,
"c": "#cccccc"
},
"2,15",
"2,16",
"2,17",
{
"h": 2
},
"2,18"
],
[
{
"c": "#aaaaaa",
"w": 1.75
},
"3,0",
{
"c": "#cccccc"
},
"3,1",
"3,2",
"3,3",
"3,4",
"3,5",
"3,6",
"3,7",
"3,8",
"3,9",
"3,10",
"3,11",
"3,12",
{
"c": "#aaaaaa",
"x": 1.5
},
"3,13",
{
"x": 0.25,
"c": "#cccccc"
},
"3,15",
"3,16",
"3,17"
],
[
{
"c": "#aaaaaa",
"w": 1.25
},
"4,0",
{
"c": "#cccccc"
},
"4,1",
"4,2",
"4,3",
"4,4",
"4,5",
"4,6",
"4,7",
"4,8",
"4,9",
"4,10",
"4,11",
{
"c": "#aaaaaa",
"w": 1.75
},
"4,12",
{
"x": 2.5,
"c": "#cccccc"
},
"4,15",
"4,16",
"4,17",
{
"h": 2
},
"4,18"
],
[
{
"y": -0.75,
"x": 14.25
},
"4,13"
],
[
{
"y": -0.25,
"c": "#aaaaaa",
"w": 1.25
},
"5,0",
{
"w": 1.25
},
"5,1",
{
"w": 1.25
},
"5,2",
{
"c": "#cccccc",
"w": 6.25
},
"5,6",
{
"c": "#aaaaaa"
},
"5,9",
"5,10",
"5,11",
{
"x": 3.5,
"c": "#cccccc",
"w": 2
},
"5,16",
"5,17"
],
[
{
"y": -0.75,
"x": 13.25
},
"5,12",
"5,13",
"5,14"
]
]
}
}