Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Keychron Q4 #21996

Merged
merged 11 commits into from
Oct 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions data/mappings/keyboard_aliases.hjson
Original file line number Diff line number Diff line change
Expand Up @@ -893,6 +893,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}
]
}
}
}
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