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

Add new boards for Keychron Q1 #19307

Closed
wants to merge 56 commits into from
Closed
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
d82082d
Add new boards for Keychron Q1
galican Dec 13, 2022
6f586f6
Update readme.md
galican Dec 13, 2022
9125133
Update readme.md
galican Dec 13, 2022
ed92916
Update readme.md
galican Dec 13, 2022
b9d87fd
Update readme.md
galican Dec 13, 2022
298ac9e
Update readme.md
galican Dec 13, 2022
2f780e5
Merge branch 'temp' into keychron-q1v1-q1v2
galican Jan 5, 2023
15b050e
Update info.json
KeychronMacro Jan 19, 2023
84f0d7e
Update info.json
KeychronMacro Jan 19, 2023
15584d9
Merge branch 'develop' into keychron-q1v1-q1v2
KeychronMacro Jan 19, 2023
a488951
Merge branch 'develop' into keychron-q1v1-q1v2
KeychronMacro Feb 7, 2023
56eec88
Update keyboards/keychron/q1/ansi_atmega32u4/config.h
KeychronMacro Feb 7, 2023
5120421
Update keyboards/keychron/q1/ansi_atmega32u4_encoder/config.h
KeychronMacro Feb 7, 2023
0ea5e40
Update keyboards/keychron/q1/ansi_stm32l432/config.h
KeychronMacro Feb 7, 2023
a36f626
Update keyboards/keychron/q1/ansi_stm32l432_encoder/config.h
KeychronMacro Feb 7, 2023
0a90097
Update keyboards/keychron/q1/ansi_stm32l432/rules.mk
KeychronMacro Feb 7, 2023
01833e3
Update keyboards/keychron/q1/jis_stm32l432/info.json
KeychronMacro Feb 7, 2023
0de39ca
Update keyboards/keychron/q1/jis_stm32l432_encoder/config.h
KeychronMacro Feb 7, 2023
e545605
Update keyboards/keychron/q1/jis_stm32l432/rules.mk
KeychronMacro Feb 7, 2023
32b5529
Update keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk
KeychronMacro Feb 7, 2023
9e8b310
Update keyboards/keychron/q1/jis_stm32l432_encoder/info.json
KeychronMacro Feb 7, 2023
508b7c4
Update keyboards/keychron/q1/ansi_stm32l432/info.json
KeychronMacro Feb 7, 2023
57db71b
Update keyboards/keychron/q1/ansi_stm32l432_encoder/info.json
KeychronMacro Feb 7, 2023
8a2443f
Update keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk
KeychronMacro Feb 7, 2023
1484a0e
Update keyboards/keychron/q1/iso_atmega32u4/config.h
KeychronMacro Feb 7, 2023
adf6129
Update keyboards/keychron/q1/iso_atmega32u4_encoder/config.h
KeychronMacro Feb 7, 2023
9791d12
Update keyboards/keychron/q1/iso_stm32l432/config.h
KeychronMacro Feb 7, 2023
2d66172
Update keyboards/keychron/q1/iso_stm32l432/rules.mk
KeychronMacro Feb 7, 2023
fb6cbf7
Update keyboards/keychron/q1/iso_stm32l432/info.json
KeychronMacro Feb 7, 2023
27c8a9f
Update keyboards/keychron/q1/iso_stm32l432_encoder/config.h
KeychronMacro Feb 7, 2023
019e0eb
Update keyboards/keychron/q1/iso_stm32l432_encoder/info.json
KeychronMacro Feb 7, 2023
c4b4a96
Update keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk
KeychronMacro Feb 7, 2023
0cee0e7
Update keyboards/keychron/q1/jis_stm32l432/config.h
KeychronMacro Feb 7, 2023
32f08f1
Fix some issues
KeychronMacro Feb 7, 2023
ae08e21
Merge branch 'develop' into keychron-q1v1-q1v2
KeychronMacro Feb 9, 2023
6ef5a54
Merge branch 'develop' into keychron-q1v1-q1v2
galican Feb 13, 2023
64b9c2d
Merge branch 'develop' into keychron-q1v1-q1v2
galican Feb 24, 2023
80e2fe4
Update keyboards/keychron/q1/ansi_stm32l432_encoder/info.json
KeychronMacro Feb 24, 2023
60f4b4e
Update keyboards/keychron/q1/iso_stm32l432_encoder/config.h
KeychronMacro Feb 24, 2023
fab84c5
Update keyboards/keychron/q1/iso_stm32l432_encoder/info.json
KeychronMacro Feb 24, 2023
22d9b96
Update keyboards/keychron/q1/jis_stm32l432_encoder/info.json
KeychronMacro Feb 24, 2023
30e82cd
Update keyboards/keychron/q1/ansi_stm32l432_encoder/config.h
KeychronMacro Feb 24, 2023
2d4d348
Update keyboards/keychron/q1/jis_stm32l432_encoder/config.h
KeychronMacro Feb 24, 2023
b24bdb2
Merge branch 'develop' into keychron-q1v1-q1v2
galican Feb 27, 2023
79aa140
Fix rules.mk file in via of ansi_stm32l432_encoder
galican Mar 5, 2023
dfefab9
Merge branch 'develop' into keychron-q1v1-q1v2
galican Mar 11, 2023
2e7ba65
Moved matrix definition into the info.json file
galican Mar 11, 2023
1f687ad
Used null instead of NO_PIN in matrix definition
galican Mar 11, 2023
7fbfae5
Back to last commit
galican Mar 11, 2023
561b59a
Used null instead of NO_PIN in matrix definition
galican Mar 11, 2023
4639793
Merge qmk develop into keychron-q1v1-q1v2
galican Mar 18, 2023
850112f
Merge branch 'develop' into keychron-q1v1-q1v2
galican Apr 10, 2023
42856b8
Smaller the PR
galican Apr 11, 2023
1008d68
Delete q1
galican Apr 11, 2023
8cffbec
Merge branch 'develop' into keychron-q1v1-q1v2
galican Apr 11, 2023
78e071e
Added q1
galican Apr 11, 2023
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
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,16 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include "ansi.h"
#include "ansi_atmega32u4.h"

const matrix_row_t matrix_mask[] = {
0b0111111111111101,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
};

#ifdef RGB_MATRIX_ENABLE

Expand Down Expand Up @@ -112,7 +121,6 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}

};

#define __ NO_LED
Expand All @@ -138,7 +146,7 @@ led_config_t g_led_config = {
},
{
// 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 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, 1, 1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,15 @@
#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }

/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { {0,1} }

/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1011111

/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 59
#define DRIVER_2_LED_TOTAL 23
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,19 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include "ansi_encoder.h"
#include "ansi_atmega32u4_encoder.h"

const matrix_row_t matrix_mask[] = {
0b0111111111111101,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
0b0111111111111111,
};

#ifdef RGB_MATRIX_ENABLE

const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
Expand Down Expand Up @@ -136,7 +146,7 @@ led_config_t g_led_config = {
},
{
// 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 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, 1, 1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@
#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }

/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { {0,1} }

/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1011111

/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 59
#define DRIVER_2_LED_TOTAL 23
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
{"matrix":[0,11], "x":10.75, "y":0},
{"matrix":[0,12], "x":11.75, "y":0},
{"matrix":[0,13], "x":12.75, "y":0},
{"matrix":[0,14], "x":14, "y":0},
{"matrix":[4,14], "x":15.25, "y":0},
{"matrix":[4,14], "x":14, "y":0},
{"matrix":[0,14], "x":15.25, "y":0},

{"matrix":[1, 0], "x":0, "y":1},
{"matrix":[1, 1], "x":1, "y":1},
Expand Down
158 changes: 158 additions & 0 deletions keyboards/keychron/q1/ansi_stm32l432/ansi_stm32l432.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
/* Copyright 2021 @ 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 "ansi_stm32l432.h"

const matrix_row_t matrix_mask[] = {
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111111111,
0b1111111111101111,
};

#ifdef RGB_MATRIX_ENABLE

const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{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_16, A_16, B_16},

{0, I_1, G_1, H_1},
{0, I_2, G_2, H_2},
{0, I_3, G_3, H_3},
{0, I_4, G_4, H_4},
{0, I_5, G_5, H_5},
{0, I_6, G_6, H_6},
{0, I_7, G_7, H_7},
{0, I_8, G_8, H_8},
{0, I_9, G_9, H_9},
{0, I_10, G_10, H_10},
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
{0, I_14, G_14, H_14},
{0, I_16, G_16, H_16},

{0, F_1, D_1, E_1},
{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_16, D_16, E_16},

{1, I_1, G_1, H_1},
{1, I_2, G_2, H_2},
{1, I_3, G_3, H_3},
{1, I_4, G_4, H_4},
{1, I_5, G_5, H_5},
{1, I_6, G_6, H_6},
{1, I_7, G_7, H_7},
{1, I_8, G_8, H_8},
{1, I_9, G_9, H_9},
{1, I_10, G_10, H_10},
{1, I_11, G_11, H_11},
{1, I_12, G_12, H_12},
{1, I_14, G_14, H_14},
{1, I_16, G_16, H_16},

{1, F_1, D_1, E_1},
{1, F_3, D_3, E_3},
{1, F_4, D_4, E_4},
{1, F_5, D_5, E_5},
{1, F_6, D_6, E_6},
{1, F_7, D_7, E_7},
{1, F_8, D_8, E_8},
{1, F_9, D_9, E_9},
{1, F_10, D_10, E_10},
{1, F_11, D_11, E_11},
{1, F_12, D_12, E_12},
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},

{1, C_1, A_1, B_1},
{1, C_2, A_2, B_2},
{1, C_3, A_3, B_3},
{1, C_7, A_7, B_7},
{1, C_11, A_11, B_11},
{1, C_12, A_12, B_12},
{1, C_13, A_13, B_13},
{1, C_14, A_14, B_14},
{1, C_15, A_15, B_15},
{1, C_16, A_16, B_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, 61, 62, 63, 64, 65, 66, 67, 68, 69, __, 70, 71, __ },
{ 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 80, 81 }
},
{
// LED Index to Physical Position
{0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
{0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
{4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
{6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
{9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
{2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};

#endif // RGB_MATRIX_ENABLE
53 changes: 53 additions & 0 deletions keyboards/keychron/q1/ansi_stm32l432/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/* Copyright 2021 @ 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

/* key matrix pins */
#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these should be moved to the info.json file.

Also, the NO_PIN's should be removed

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, It failed to compile when i removed the NO_PINs from matrix_pins definiton😂.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Compile information to remind me that: keychron/q1/ansi_stm32l432: led_config: ansi_stm32l432.c: Number of columns in row 0 (16) does not match matrix (8) and that: keychron/q1/ansi_stm32l432: led_config: ansi_stm32l432.c: Number of columns in row 0 (16) does not match matrix (8)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a higher level that has MATRIX_COLS and MATRIX_ROWS defined? If so, that would be why

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This board uses a custom matrix; pins declared as NO_PIN are actually connected to a shift register. The code is mostly the same as for other similar Keychron boards already in the repo (q10, q12, q3, q5, q6, q65, v1, v10, v3, v5, v6).


/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { {5,4} }

/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
#define DRIVER_ADDR_2 0b1110100

/* Increase I2C speed to 1000 KHz */
#define I2C1_TIMINGR_PRESC 0U
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U

/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 45
#define DRIVER_2_LED_TOTAL 37
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)

/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
#define CKLED2001_CURRENT_TUNE \
{ 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }

/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)

/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 45
Loading