Skip to content

Commit

Permalink
Update Keychron Q4 (#21996)
Browse files Browse the repository at this point in the history
  • Loading branch information
adophoxia committed Oct 5, 2023
1 parent 5f33a25 commit a7406a4
Show file tree
Hide file tree
Showing 32 changed files with 320 additions and 620 deletions.
3 changes: 3 additions & 0 deletions data/mappings/keyboard_aliases.hjson
Original file line number Diff line number Diff line change
Expand Up @@ -896,6 +896,9 @@
"keychron/q1": {
"target": "keychron/q1v1"
}
"keychron/q4": {
"target": "keychron/q4/ansi"
}
"kprepublic/bm40hsrgb": {
"target": "kprepublic/bm40hsrgb/rev1"
},
Expand Down
20 changes: 20 additions & 0 deletions keyboards/keychron/q4/ansi/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* Copyright 2022 @ 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

/* Enable CapsLcok LED*/
#define CAPS_LOCK_LED_INDEX 28
147 changes: 147 additions & 0 deletions keyboards/keychron/q4/ansi/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
{
"usb": {
"pid": "0x0140",
"device_version": "1.0.6"
},
"rgb_matrix": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 81, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 97, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 113, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 129, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 145, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 161, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 177, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 193, "y": 0, "flags": 4},
{"matrix": [0, 13], "x": 218, "y": 0, "flags": 1},

{"matrix": [1, 0], "x": 4,"y": 16, "flags": 1},
{"matrix": [1, 1], "x": 24,"y": 16, "flags": 4},
{"matrix": [1, 2], "x": 40,"y": 16, "flags": 4},
{"matrix": [1, 3], "x": 56,"y": 16, "flags": 4},
{"matrix": [1, 4], "x": 73,"y": 16, "flags": 4},
{"matrix": [1, 5], "x": 89,"y": 16, "flags": 4},
{"matrix": [1, 6], "x": 105,"y": 16, "flags": 4},
{"matrix": [1, 7], "x": 121,"y": 16, "flags": 4},
{"matrix": [1, 8], "x": 137,"y": 16, "flags": 4},
{"matrix": [1, 9], "x": 153,"y": 16, "flags": 4},
{"matrix": [1, 10], "x": 169,"y": 16, "flags": 4},
{"matrix": [1, 11], "x": 185,"y": 16, "flags": 4},
{"matrix": [1, 12], "x": 202,"y": 16, "flags": 4},
{"matrix": [1, 13], "x": 222,"y": 16, "flags": 4},

{"matrix": [2, 0], "x": 6, "y": 32, "flags": 8},
{"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
{"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
{"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
{"matrix": [2, 4], "x": 77, "y": 32, "flags": 4},
{"matrix": [2, 5], "x": 93, "y": 32, "flags": 4},
{"matrix": [2, 6], "x": 109, "y": 32, "flags": 4},
{"matrix": [2, 7], "x": 125, "y": 32, "flags": 4},
{"matrix": [2, 8], "x": 141, "y": 32, "flags": 4},
{"matrix": [2, 9], "x": 157, "y": 32, "flags": 4},
{"matrix": [2, 10], "x": 173, "y": 32, "flags": 4},
{"matrix": [2, 11], "x": 189, "y": 32, "flags": 4},
{"matrix": [2, 13], "x": 216, "y": 32, "flags": 1},

{"matrix": [3, 0], "x": 10, "y": 48, "flags": 1},
{"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
{"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
{"matrix": [3, 4], "x": 69, "y": 48, "flags": 4},
{"matrix": [3, 5], "x": 85, "y": 48, "flags": 4},
{"matrix": [3, 6], "x": 101, "y": 48, "flags": 4},
{"matrix": [3, 7], "x": 117, "y": 48, "flags": 4},
{"matrix": [3, 8], "x": 133, "y": 48, "flags": 4},
{"matrix": [3, 9], "x": 149, "y": 48, "flags": 4},
{"matrix": [3, 10], "x": 165, "y": 48, "flags": 4},
{"matrix": [3, 11], "x": 181, "y": 48, "flags": 4},
{"matrix": [3, 13], "x": 212, "y": 48, "flags": 1},

{"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
{"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
{"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
{"matrix": [4, 6], "x": 103, "y": 64, "flags": 4},
{"matrix": [4, 10], "x": 164, "y": 64, "flags": 1},
{"matrix": [4, 11], "x": 184, "y": 64, "flags": 1},
{"matrix": [4, 12], "x": 204, "y": 64, "flags": 1},
{"matrix": [4, 13], "x": 224, "y": 64, "flags": 1}

]
},
"layouts": {
"LAYOUT_ansi_61": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},

{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},

{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},

{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},

{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
}
}
}
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,7 @@
#define DRIVER_ADDR_2 SNLED27351_I2C_ADDRESS_GND

/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 31
#define DRIVER_2_LED_TOTAL 30
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#define RGB_MATRIX_LED_COUNT 61

/* Scan phase of led driver set as SNLED27351_MSKPHASE_9CHANNEL(defined as 0x03 in SNLED27351.h) */
#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL
#define SNLED27351_CURRENT_TUNE \
{ 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }

/* Enable CapsLcok LED*/
#define CAPS_LOCK_LED_INDEX 28
1 change: 1 addition & 0 deletions keyboards/keychron/q4/ansi/v1/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# This file intentionally left blank
Original file line number Diff line number Diff line change
Expand Up @@ -92,33 +92,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_14, D_14, E_14},
};

#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 },
},
{
// LED Index to Physical Position
{0,0}, {16,0}, {32,0}, {48,0}, {64,0}, {81,0}, {97,0}, {113,0}, {129,0}, {145,0}, {161,0}, {177,0}, {193,0}, {218,0},
{4,16}, {24,16}, {40,16}, {56,16}, {73,16}, {89,16}, {105,16}, {121,16}, {137,16}, {153,16}, {169,16}, {185,16}, {202,16}, {222,16},
{6,32}, {28,32}, {44,32}, {60,32}, {77,32}, {93,32}, {109,32}, {125,32}, {141,32}, {157,32}, {173,32}, {189,32}, {216,32},
{10,48}, {36,48}, {52,48}, {69,48}, {85,48}, {101,48}, {117,48}, {133,48}, {149,48}, {165,48}, {181,48}, {212,48},
{2,64}, {22,64}, {42,64}, {103,64}, {164,64}, {184,64}, {204,64}, {224,64},
},
{
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 1, 4, 1, 1, 1, 1,
}
};

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,4 @@
#define DRIVER_ADDR_1 SNLED27351_I2C_ADDRESS_GND

/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 61
#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL

#define SNLED27351_CURRENT_TUNE \
{ 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }

/* Enable CapsLcok LED*/
#define CAPS_LOCK_LED_INDEX 28
#define RGB_MATRIX_LED_COUNT 61
1 change: 1 addition & 0 deletions keyboards/keychron/q4/ansi/v2/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# This file intentionally left blank
Original file line number Diff line number Diff line change
Expand Up @@ -92,33 +92,4 @@ const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_16, D_16, E_16},
};

#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 },
},
{
// LED Index to Physical Position
{0,0}, {16,0}, {32,0}, {48,0}, {64,0}, {81,0}, {97,0}, {113,0}, {129,0}, {145,0}, {161,0}, {177,0}, {193,0}, {218,0},
{4,16}, {24,16}, {40,16}, {56,16}, {73,16}, {89,16}, {105,16}, {121,16}, {137,16}, {153,16}, {169,16}, {185,16}, {202,16}, {222,16},
{6,32}, {28,32}, {44,32}, {60,32}, {77,32}, {93,32}, {109,32}, {125,32}, {141,32}, {157,32}, {173,32}, {189,32}, {216,32},
{10,48}, {36,48}, {52,48}, {69,48}, {85,48}, {101,48}, {117,48}, {133,48}, {149,48}, {165,48}, {181,48}, {212,48},
{2,64}, {22,64}, {42,64}, {103,64}, {164,64}, {184,64}, {204,64}, {224,64},
},
{
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 1, 4, 1, 1, 1, 1,
}
};

#endif
92 changes: 0 additions & 92 deletions keyboards/keychron/q4/ansi_v1/info.json

This file was deleted.

15 changes: 0 additions & 15 deletions keyboards/keychron/q4/ansi_v1/rules.mk

This file was deleted.

Loading

0 comments on commit a7406a4

Please sign in to comment.