aboutsummaryrefslogtreecommitdiff
path: root/keyboards/keychron/q1
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/keychron/q1')
-rw-r--r--keyboards/keychron/q1/config.h22
-rw-r--r--keyboards/keychron/q1/q1.c127
-rw-r--r--keyboards/keychron/q1/q1.h7
-rw-r--r--keyboards/keychron/q1/rev_0100/config.h7
-rw-r--r--keyboards/keychron/q1/rev_0100/info.json2
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c6
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c4
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q1/rev_0100/readme.md22
-rw-r--r--keyboards/keychron/q1/rev_0100/rev_0100.c143
-rw-r--r--keyboards/keychron/q1/rev_0100/rules.mk8
-rw-r--r--keyboards/keychron/q1/rev_0102/config.h31
-rw-r--r--keyboards/keychron/q1/rev_0102/info.json101
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c64
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c64
-rw-r--r--keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk2
-rw-r--r--keyboards/keychron/q1/rev_0102/readme.md1
-rw-r--r--keyboards/keychron/q1/rev_0102/rev_0102.c143
-rw-r--r--keyboards/keychron/q1/rev_0102/rev_0102.h37
-rw-r--r--keyboards/keychron/q1/rev_0102/rules.mk25
20 files changed, 650 insertions, 168 deletions
diff --git a/keyboards/keychron/q1/config.h b/keyboards/keychron/q1/config.h
index fb6a70c86..2a8665c1b 100644
--- a/keyboards/keychron/q1/config.h
+++ b/keyboards/keychron/q1/config.h
@@ -32,15 +32,11 @@
32/* Set 0 if debouncing isn't needed */ 32/* Set 0 if debouncing isn't needed */
33#define DEBOUNCE 5 33#define DEBOUNCE 5
34 34
35/* RGB LED Matrix Configuration */ 35/* RGB Matrix Driver Configuration */
36#define DRIVER_COUNT 2 36#define DRIVER_COUNT 2
37#define DRIVER_ADDR_1 0b1010000 37#define DRIVER_ADDR_1 0b1010000
38#define DRIVER_ADDR_2 0b1011111 38#define DRIVER_ADDR_2 0b1011111
39 39
40#define DRIVER_1_LED_TOTAL 59
41#define DRIVER_2_LED_TOTAL 23
42#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
43
44/* DIP switch */ 40/* DIP switch */
45#define DIP_SWITCH_MATRIX_GRID { {0,1} } 41#define DIP_SWITCH_MATRIX_GRID { {0,1} }
46 42
@@ -49,3 +45,19 @@
49 45
50/* NKRO */ 46/* NKRO */
51#define FORCE_NKRO 47#define FORCE_NKRO
48
49/* Disable a single effect */
50#define DISABLE_RGB_MATRIX_ALPHAS_MODS
51#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
52#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
53#define DISABLE_RGB_MATRIX_BAND_SAT
54#define DISABLE_RGB_MATRIX_BAND_VAL
55#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
56#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
57#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
58#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
59#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
60#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
61#define DISABLE_RGB_MATRIX_HUE_BREATHING
62#define DISABLE_RGB_MATRIX_HUE_PENDULUM
63#define DISABLE_RGB_MATRIX_HUE_WAVE \ No newline at end of file
diff --git a/keyboards/keychron/q1/q1.c b/keyboards/keychron/q1/q1.c
index 6beb96e7e..a316c1fdc 100644
--- a/keyboards/keychron/q1/q1.c
+++ b/keyboards/keychron/q1/q1.c
@@ -16,6 +16,7 @@
16 16
17#include "q1.h" 17#include "q1.h"
18 18
19
19const matrix_row_t matrix_mask[] = { 20const matrix_row_t matrix_mask[] = {
20 0b0111111111111101, 21 0b0111111111111101,
21 0b0111111111111111, 22 0b0111111111111111,
@@ -32,129 +33,3 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
32 } 33 }
33 return true; 34 return true;
34} 35}
35
36const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
37/* Refer to IS31 manual for these locations
38 * driver
39 * | R location
40 * | | G location
41 * | | | B location
42 * | | | | */
43
44 {0, A_1, C_1, B_1},
45 {0, A_3, C_3, B_3},
46 {0, A_4, C_4, B_4},
47 {0, A_5, C_5, B_5},
48 {0, A_6, C_6, B_6},
49 {0, A_7, C_7, B_7},
50 {0, A_8, C_8, B_8},
51 {0, A_9, C_9, B_9},
52 {0, A_10, C_10, B_10},
53 {0, A_11, C_11, B_11},
54 {0, A_12, C_12, B_12},
55 {0, A_13, C_13, B_13},
56 {0, A_14, C_14, B_14},
57 {0, A_15, C_15, B_15},
58 {0, A_16, C_16, B_16},
59
60 {0, D_1, F_1, E_1},
61 {0, D_2, F_2, E_2},
62 {0, D_3, F_3, E_3},
63 {0, D_4, F_4, E_4},
64 {0, D_5, F_5, E_5},
65 {0, D_6, F_6, E_6},
66 {0, D_7, F_7, E_7},
67 {0, D_8, F_8, E_8},
68 {0, D_9, F_9, E_9},
69 {0, D_10, F_10, E_10},
70 {0, D_11, F_11, E_11},
71 {0, D_12, F_12, E_12},
72 {0, D_13, F_13, E_13},
73 {0, D_14, F_14, E_14},
74 {0, D_16, F_16, E_16},
75
76 {0, G_1, I_1, H_1},
77 {0, G_2, I_2, H_2},
78 {0, G_3, I_3, H_3},
79 {0, G_4, I_4, H_4},
80 {0, G_5, I_5, H_5},
81 {0, G_6, I_6, H_6},
82 {0, G_7, I_7, H_7},
83 {0, G_8, I_8, H_8},
84 {0, G_9, I_9, H_9},
85 {0, G_10, I_10, H_10},
86 {0, G_11, I_11, H_11},
87 {0, G_12, I_12, H_12},
88 {0, G_13, I_13, H_13},
89 {0, G_14, I_14, H_14},
90 {0, G_16, I_16, H_16},
91
92 {0, J_1, L_1, K_1},
93 {0, J_2, L_2, K_2},
94 {0, J_3, L_3, K_3},
95 {0, J_4, L_4, K_4},
96 {0, J_5, L_5, K_5},
97 {0, J_6, L_6, K_6},
98 {0, J_7, L_7, K_7},
99 {0, J_8, L_8, K_8},
100 {0, J_9, L_9, K_9},
101 {0, J_10, L_10, K_10},
102 {0, J_11, L_11, K_11},
103 {0, J_12, L_12, K_12},
104 {0, J_14, L_14, K_14},
105 {0, J_16, L_16, K_16},
106 {1, A_1, C_1, B_1},
107
108 {1, A_3, C_3, B_3},
109 {1, A_4, C_4, B_4},
110 {1, A_5, C_5, B_5},
111 {1, A_6, C_6, B_6},
112 {1, A_7, C_7, B_7},
113 {1, A_8, C_8, B_8},
114 {1, A_9, C_9, B_9},
115 {1, A_10, C_10, B_10},
116 {1, A_11, C_11, B_11},
117 {1, A_12, C_12, B_12},
118 {1, A_14, C_14, B_14},
119 {1, A_15, C_15, B_15},
120
121 {1, D_1, F_1, E_1},
122 {1, D_2, F_2, E_2},
123 {1, D_3, F_3, E_3},
124 {1, D_7, F_7, E_7},
125 {1, D_11, F_11, E_11},
126 {1, D_12, F_12, E_12},
127 {1, D_13, F_13, E_13},
128 {1, D_14, F_14, E_14},
129 {1, D_15, F_15, E_15},
130 {1, D_16, F_16, E_16}
131
132};
133
134led_config_t g_led_config = {
135 {
136 { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
137 { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
138 { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
139 { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
140 { 59, NO_LED, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
141 { 72, 73, 74, NO_LED, NO_LED, NO_LED,75, NO_LED, NO_LED, NO_LED, 76, 77, 78, 79, 81 }
142 },
143 {
144 {0,0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
145 {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13},
146 {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {195,26}, {224,26},
147 {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {195,39}, {224,39},
148 {0,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {195,52}, {210,52},
149 {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
150 },
151 {
152 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
153 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
154 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
155 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
156 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
157 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
158
159 }
160};
diff --git a/keyboards/keychron/q1/q1.h b/keyboards/keychron/q1/q1.h
index 1e92a062a..eb9a7d69a 100644
--- a/keyboards/keychron/q1/q1.h
+++ b/keyboards/keychron/q1/q1.h
@@ -18,6 +18,9 @@
18 18
19#include "quantum.h" 19#include "quantum.h"
20 20
21#if defined(KEYBOARD_keychron_q1_rev_0100) 21
22#if defined(KEYBOARD_keychron_q1_rev_0100)
22# include "rev_0100.h" 23# include "rev_0100.h"
23#endif 24#elif defined(KEYBOARD_keychron_q1_rev_0102)
25# include "rev_0102.h"
26#endif \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/config.h b/keyboards/keychron/q1/rev_0100/config.h
index 5b910f738..435f386a5 100644
--- a/keyboards/keychron/q1/rev_0100/config.h
+++ b/keyboards/keychron/q1/rev_0100/config.h
@@ -19,8 +19,13 @@
19 19
20/* USB Device descriptor parameter */ 20/* USB Device descriptor parameter */
21#define PRODUCT_ID 0x0100 21#define PRODUCT_ID 0x0100
22#define DEVICE_VER 0x0001 22#define DEVICE_VER 0x0100
23 23
24/* key matrix pins */ 24/* key matrix pins */
25#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 } 25#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 }
26#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 } 26#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
27
28/* RGB Matrix Configuration */
29#define DRIVER_1_LED_TOTAL 59
30#define DRIVER_2_LED_TOTAL 23
31#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/info.json b/keyboards/keychron/q1/rev_0100/info.json
index 4d101eac7..215c7b050 100644
--- a/keyboards/keychron/q1/rev_0100/info.json
+++ b/keyboards/keychron/q1/rev_0100/info.json
@@ -1,7 +1,7 @@
1{ 1{
2 "keyboard_name": "Keychron Q1", 2 "keyboard_name": "Keychron Q1",
3 "url": "https://github.com/Keychron", 3 "url": "https://github.com/Keychron",
4 "maintainer": "lokher", 4 "maintainer": "lalalademaxiya1",
5 "width": 16.25, 5 "width": 16.25,
6 "height": 6.25, 6 "height": 6.25,
7 "layouts": { 7 "layouts": {
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
index fa6f79175..e000dd7dd 100644
--- a/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c
@@ -24,18 +24,16 @@ enum layers{
24 WIN_FN 24 WIN_FN
25}; 25};
26 26
27
28#define KC_TASK LGUI(KC_TAB) 27#define KC_TASK LGUI(KC_TAB)
29#define KC_FLXP LGUI(KC_E) 28#define KC_FLXP LGUI(KC_E)
30 29
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 31
34[MAC_BASE] = LAYOUT_ansi_82( 32[MAC_BASE] = LAYOUT_ansi_82(
35 KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS, 33 KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
36 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, 34 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,
37 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_PGDN, 35 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_PGDN,
38 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, 36 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,
39 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, 37 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,
40 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), 38 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
41 39
@@ -63,4 +61,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) 62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
65 63
66}; 64}; \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
index 4108ade04..e000dd7dd 100644
--- a/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
@@ -24,11 +24,9 @@ enum layers{
24 WIN_FN 24 WIN_FN
25}; 25};
26 26
27
28#define KC_TASK LGUI(KC_TAB) 27#define KC_TASK LGUI(KC_TAB)
29#define KC_FLXP LGUI(KC_E) 28#define KC_FLXP LGUI(KC_E)
30 29
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 31
34[MAC_BASE] = LAYOUT_ansi_82( 32[MAC_BASE] = LAYOUT_ansi_82(
@@ -63,4 +61,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
64 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) 62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
65 63
66}; 64}; \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk b/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk
index 96d2d189b..bee21da52 100644
--- a/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk
+++ b/keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
1VIA_ENABLE = yes 1VIA_ENABLE = yes
2MOUSEKEY_ENABLE = no 2MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0100/readme.md b/keyboards/keychron/q1/rev_0100/readme.md
index 0131794c1..5cf488f04 100644
--- a/keyboards/keychron/q1/rev_0100/readme.md
+++ b/keyboards/keychron/q1/rev_0100/readme.md
@@ -1,21 +1 @@
1# Keychron Q1 # The ANSI variant of the Keychron Q1 \ No newline at end of file
2
3![Keychron Q1](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/pf-823ebdc7--1073.jpg)
4
5A customizable 75% keyboard.
6
7* Keyboard Maintainer: [Keychron](https://github.com/keychron)
8* Hardware Supported: Keychron Q1, Atmega32u4
9* Hardware Availability: [Keychron](https://www.keychron.com)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make keychron/q1/rev_0100:default
14
15Flashing example for this keyboard:
16
17 make keychron/q1/rev_0100:default:flash
18
19**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
20
21See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/keychron/q1/rev_0100/rev_0100.c b/keyboards/keychron/q1/rev_0100/rev_0100.c
new file mode 100644
index 000000000..abc4f2716
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/rev_0100.c
@@ -0,0 +1,143 @@
1/* Copyright 2021 @ Keychron (https://www.keychron.com)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "quantum.h"
18
19
20const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
21/* Refer to IS31 manual for these locations
22 * driver
23 * | R location
24 * | | G location
25 * | | | B location
26 * | | | | */
27 {0, C_1, A_1, B_1},
28 {0, C_3, A_3, B_3},
29 {0, C_4, A_4, B_4},
30 {0, C_5, A_5, B_5},
31 {0, C_6, A_6, B_6},
32 {0, C_7, A_7, B_7},
33 {0, C_8, A_8, B_8},
34 {0, C_9, A_9, B_9},
35 {0, C_10, A_10, B_10},
36 {0, C_11, A_11, B_11},
37 {0, C_12, A_12, B_12},
38 {0, C_13, A_13, B_13},
39 {0, C_14, A_14, B_14},
40 {0, C_15, A_15, B_15},
41 {0, C_16, A_16, B_16},
42
43 {0, F_1, D_1, E_1},
44 {0, F_2, D_2, E_2},
45 {0, F_3, D_3, E_3},
46 {0, F_4, D_4, E_4},
47 {0, F_5, D_5, E_5},
48 {0, F_6, D_6, E_6},
49 {0, F_7, D_7, E_7},
50 {0, F_8, D_8, E_8},
51 {0, F_9, D_9, E_9},
52 {0, F_10, D_10, E_10},
53 {0, F_11, D_11, E_11},
54 {0, F_12, D_12, E_12},
55 {0, F_13, D_13, E_13},
56 {0, F_14, D_14, E_14},
57 {0, F_16, D_16, E_16},
58
59 {0, I_1, G_1, H_1},
60 {0, I_2, G_2, H_2},
61 {0, I_3, G_3, H_3},
62 {0, I_4, G_4, H_4},
63 {0, I_5, G_5, H_5},
64 {0, I_6, G_6, H_6},
65 {0, I_7, G_7, H_7},
66 {0, I_8, G_8, H_8},
67 {0, I_9, G_9, H_9},
68 {0, I_10, G_10, H_10},
69 {0, I_11, G_11, H_11},
70 {0, I_12, G_12, H_12},
71 {0, I_13, G_13, H_13},
72 {0, I_14, G_14, H_14},
73 {0, I_16, G_16, H_16},
74
75 {0, L_1, J_1, K_1},
76 {0, L_2, J_2, K_2},
77 {0, L_3, J_3, K_3},
78 {0, L_4, J_4, K_4},
79 {0, L_5, J_5, K_5},
80 {0, L_6, J_6, K_6},
81 {0, L_7, J_7, K_7},
82 {0, L_8, J_8, K_8},
83 {0, L_9, J_9, K_9},
84 {0, L_10, J_10, K_10},
85 {0, L_11, J_11, K_11},
86 {0, L_12, J_12, K_12},
87 {0, L_14, J_14, K_14},
88 {0, L_16, J_16, K_16},
89
90 {1, C_1, A_1, B_1},
91 {1, C_3, A_3, B_3},
92 {1, C_4, A_4, B_4},
93 {1, C_5, A_5, B_5},
94 {1, C_6, A_6, B_6},
95 {1, C_7, A_7, B_7},
96 {1, C_8, A_8, B_8},
97 {1, C_9, A_9, B_9},
98 {1, C_10, A_10, B_10},
99 {1, C_11, A_11, B_11},
100 {1, C_12, A_12, B_12},
101 {1, C_14, A_14, B_14},
102 {1, C_15, A_15, B_15},
103
104 {1, F_1, D_1, E_1},
105 {1, F_2, D_2, E_2},
106 {1, F_3, D_3, E_3},
107 {1, F_7, D_7, E_7},
108 {1, F_11, D_11, E_11},
109 {1, F_12, D_12, E_12},
110 {1, F_13, D_13, E_13},
111 {1, F_14, D_14, E_14},
112 {1, F_15, D_15, E_15},
113 {1, F_16, D_16, E_16}
114
115};
116
117led_config_t g_led_config = {
118 {
119 { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
120 { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
121 { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
122 { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
123 { 59, NO_LED, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
124 { 72, 73, 74, NO_LED, NO_LED, NO_LED, 75, NO_LED, NO_LED, NO_LED, 76, 77, 78, 79, 81 }
125 },
126 {
127 {0,0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
128 {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13},
129 {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {195,26}, {224,26},
130 {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {195,39}, {224,39},
131 {0,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {195,52}, {210,52},
132 {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
133 },
134 {
135 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
136 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
137 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
138 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
139 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
140 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
141
142 }
143};
diff --git a/keyboards/keychron/q1/rev_0100/rules.mk b/keyboards/keychron/q1/rev_0100/rules.mk
index a6c318ac2..9615d19b5 100644
--- a/keyboards/keychron/q1/rev_0100/rules.mk
+++ b/keyboards/keychron/q1/rev_0100/rules.mk
@@ -8,10 +8,10 @@ BOOTLOADER = atmel-dfu
8# change yes to no to disable 8# change yes to no to disable
9# 9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite 10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = no # Mouse keys 11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control 12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug 13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration 14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/keychron/q1/rev_0102/config.h b/keyboards/keychron/q1/rev_0102/config.h
new file mode 100644
index 000000000..a537ab4e0
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/config.h
@@ -0,0 +1,31 @@
1/* Copyright 2021 @ Keychron (https://www.keychron.com)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19
20/* USB Device descriptor parameter */
21#define PRODUCT_ID 0x0102
22#define DEVICE_VER 0x0100
23
24/* key matrix pins */
25#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 }
26#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
27
28/* RGB Matrix Configuration */
29#define DRIVER_1_LED_TOTAL 59
30#define DRIVER_2_LED_TOTAL 24
31#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/info.json b/keyboards/keychron/q1/rev_0102/info.json
new file mode 100644
index 000000000..cac67830b
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/info.json
@@ -0,0 +1,101 @@
1{
2 "keyboard_name": "Keychron Q1",
3 "url": "https://github.com/Keychron",
4 "maintainer": "lalalademaxiya1",
5 "width": 16.25,
6 "height": 6.5,
7 "layouts": {
8 "LAYOUT_iso_83": {
9 "layout": [
10 {"label":"Esc", "x":0, "y":0},
11 {"label":"F1", "x":1.25, "y":0},
12 {"label":"F2", "x":2.25, "y":0},
13 {"label":"F3", "x":3.25, "y":0},
14 {"label":"F4", "x":4.25, "y":0},
15 {"label":"F5", "x":5.5, "y":0},
16 {"label":"F6", "x":6.5, "y":0},
17 {"label":"F7", "x":7.5, "y":0},
18 {"label":"F8", "x":8.5, "y":0},
19 {"label":"F9", "x":9.75, "y":0},
20 {"label":"F10", "x":10.75, "y":0},
21 {"label":"F11", "x":11.75, "y":0},
22 {"label":"F12", "x":12.75, "y":0},
23 {"label":"Delete", "x":14, "y":0},
24 {"label":"Insert", "x":15.25, "y":0},
25
26 {"label":"~", "x":0, "y":1.25},
27 {"label":"!", "x":1, "y":1.25},
28 {"label":"@", "x":2, "y":1.25},
29 {"label":"#", "x":3, "y":1.25},
30 {"label":"$", "x":4, "y":1.25},
31 {"label":"%", "x":5, "y":1.25},
32 {"label":"^", "x":6, "y":1.25},
33 {"label":"&", "x":7, "y":1.25},
34 {"label":"*", "x":8, "y":1.25},
35 {"label":"(", "x":9, "y":1.25},
36 {"label":")", "x":10, "y":1.25},
37 {"label":"_", "x":11, "y":1.25},
38 {"label":"+", "x":12, "y":1.25},
39 {"label":"Backspace", "x":13, "y":1.25, "w":2},
40 {"label":"Page Up", "x":15.25, "y":1.25},
41
42 {"label":"Tab", "x":0, "y":2.25, "w":1.5},
43 {"label":"Q", "x":1.5, "y":2.25},
44 {"label":"W", "x":2.5, "y":2.25},
45 {"label":"E", "x":3.5, "y":2.25},
46 {"label":"R", "x":4.5, "y":2.25},
47 {"label":"T", "x":5.5, "y":2.25},
48 {"label":"Y", "x":6.5, "y":2.25},
49 {"label":"U", "x":7.5, "y":2.25},
50 {"label":"I", "x":8.5, "y":2.25},
51 {"label":"O", "x":9.5, "y":2.25},
52 {"label":"P", "x":10.5, "y":2.25},
53 {"label":"{", "x":11.5, "y":2.25},
54 {"label":"}", "x":12.5, "y":2.25},
55 {"label":"Page Down", "x":15.25, "y":2.25},
56
57 {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
58 {"label":"A", "x":1.75, "y":3.25},
59 {"label":"S", "x":2.75, "y":3.25},
60 {"label":"D", "x":3.75, "y":3.25},
61 {"label":"F", "x":4.75, "y":3.25},
62 {"label":"G", "x":5.75, "y":3.25},
63 {"label":"H", "x":6.75, "y":3.25},
64 {"label":"J", "x":7.75, "y":3.25},
65 {"label":"K", "x":8.75, "y":3.25},
66 {"label":"L", "x":9.75, "y":3.25},
67 {"label":":", "x":10.75, "y":3.25},
68 {"label":"\"", "x":11.75, "y":3.25},
69 {"label":"#~", "x":12.75, "y":3.25},
70 {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
71 {"label":"Home", "x":15.25, "y":3.25},
72
73 {"label":"Shift", "x":0, "y":4.25, "w":1.25},
74 {"label":"\\|", "x":1.25, "y":4.25},
75 {"label":"Z", "x":2.25, "y":4.25},
76 {"label":"X", "x":3.25, "y":4.25},
77 {"label":"C", "x":4.25, "y":4.25},
78 {"label":"V", "x":5.25, "y":4.25},
79 {"label":"B", "x":6.25, "y":4.25},
80 {"label":"N", "x":7.25, "y":4.25},
81 {"label":"M", "x":8.25, "y":4.25},
82 {"label":"<", "x":9.25, "y":4.25},
83 {"label":">", "x":10.25, "y":4.25},
84 {"label":"?", "x":11.25, "y":4.25},
85 {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
86 {"label":"\u2191", "x":14.25, "y":4.5},
87
88 {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
89 {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
90 {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
91 {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
92 {"label":"Alt", "x":10, "y":5.25},
93 {"label":"Fn", "x":11, "y":5.25},
94 {"label":"Ctrl", "x":12, "y":5.25},
95 {"label":"\u2190", "x":13.25, "y":5.5},
96 {"label":"\u2193", "x":14.25, "y":5.5},
97 {"label":"\u2192", "x":15.25, "y":5.5}
98 ]
99 }
100 }
101}
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c
new file mode 100644
index 000000000..b4a7d6442
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c
@@ -0,0 +1,64 @@
1/* Copyright 2021 @ Keychron (https://www.keychron.com)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19
20enum layers{
21 MAC_BASE,
22 MAC_FN,
23 WIN_BASE,
24 WIN_FN
25};
26
27#define KC_TASK LGUI(KC_TAB)
28#define KC_FLXP LGUI(KC_E)
29
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31
32[MAC_BASE] = LAYOUT_iso_83(
33 KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
34 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,
35 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,
36 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,
37 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
38 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
39
40[MAC_FN] = LAYOUT_iso_83(
41 KC_TRNS, 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_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
43 RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
47
48[WIN_BASE] = LAYOUT_iso_83(
49 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_DEL, KC_INS,
50 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,
51 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,
52 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,
53 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
54 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
55
56[WIN_FN] = LAYOUT_iso_83(
57 KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
58 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
59 RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
60 KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
63
64}; \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c b/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c
new file mode 100644
index 000000000..b4a7d6442
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
1/* Copyright 2021 @ Keychron (https://www.keychron.com)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19
20enum layers{
21 MAC_BASE,
22 MAC_FN,
23 WIN_BASE,
24 WIN_FN
25};
26
27#define KC_TASK LGUI(KC_TAB)
28#define KC_FLXP LGUI(KC_E)
29
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31
32[MAC_BASE] = LAYOUT_iso_83(
33 KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
34 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,
35 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,
36 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,
37 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
38 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
39
40[MAC_FN] = LAYOUT_iso_83(
41 KC_TRNS, 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_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
43 RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
47
48[WIN_BASE] = LAYOUT_iso_83(
49 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_DEL, KC_INS,
50 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,
51 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,
52 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,
53 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
54 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
55
56[WIN_FN] = LAYOUT_iso_83(
57 KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
58 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
59 RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
60 KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
61 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
62 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
63
64}; \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk b/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk
new file mode 100644
index 000000000..bee21da52
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/readme.md b/keyboards/keychron/q1/rev_0102/readme.md
new file mode 100644
index 000000000..777ce0477
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/readme.md
@@ -0,0 +1 @@
# The ISO variant of the Keychron Q1 \ No newline at end of file
diff --git a/keyboards/keychron/q1/rev_0102/rev_0102.c b/keyboards/keychron/q1/rev_0102/rev_0102.c
new file mode 100644
index 000000000..722284aaa
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/rev_0102.c
@@ -0,0 +1,143 @@
1/* Copyright 2021 @ Keychron (https://www.keychron.com)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "quantum.h"
18
19
20const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
21/* Refer to IS31 manual for these locations
22 * driver
23 * | R location
24 * | | G location
25 * | | | B location
26 * | | | | */
27 {0, C_1, A_1, B_1},
28 {0, C_3, A_3, B_3},
29 {0, C_4, A_4, B_4},
30 {0, C_5, A_5, B_5},
31 {0, C_6, A_6, B_6},
32 {0, C_7, A_7, B_7},
33 {0, C_8, A_8, B_8},
34 {0, C_9, A_9, B_9},
35 {0, C_10, A_10, B_10},
36 {0, C_11, A_11, B_11},
37 {0, C_12, A_12, B_12},
38 {0, C_13, A_13, B_13},
39 {0, C_14, A_14, B_14},
40 {0, C_15, A_15, B_15},
41 {0, C_16, A_16, B_16},
42
43 {0, F_1, D_1, E_1},
44 {0, F_2, D_2, E_2},
45 {0, F_3, D_3, E_3},
46 {0, F_4, D_4, E_4},
47 {0, F_5, D_5, E_5},
48 {0, F_6, D_6, E_6},
49 {0, F_7, D_7, E_7},
50 {0, F_8, D_8, E_8},
51 {0, F_9, D_9, E_9},
52 {0, F_10, D_10, E_10},
53 {0, F_11, D_11, E_11},
54 {0, F_12, D_12, E_12},
55 {0, F_13, D_13, E_13},
56 {0, F_14, D_14, E_14},
57 {0, F_16, D_16, E_16},
58
59 {0, I_1, G_1, H_1},
60 {0, I_2, G_2, H_2},
61 {0, I_3, G_3, H_3},
62 {0, I_4, G_4, H_4},
63 {0, I_5, G_5, H_5},
64 {0, I_6, G_6, H_6},
65 {0, I_7, G_7, H_7},
66 {0, I_8, G_8, H_8},
67 {0, I_9, G_9, H_9},
68 {0, I_10, G_10, H_10},
69 {0, I_11, G_11, H_11},
70 {0, I_12, G_12, H_12},
71 {0, I_13, G_13, H_13},
72 {0, I_16, G_16, H_16},
73
74 {0, L_1, J_1, K_1},
75 {0, L_2, J_2, K_2},
76 {0, L_3, J_3, K_3},
77 {0, L_4, J_4, K_4},
78 {0, L_5, J_5, K_5},
79 {0, L_6, J_6, K_6},
80 {0, L_7, J_7, K_7},
81 {0, L_8, J_8, K_8},
82 {0, L_9, J_9, K_9},
83 {0, L_10, J_10, K_10},
84 {0, L_11, J_11, K_11},
85 {0, L_12, J_12, K_12},
86 {0, L_14, J_14, K_14},
87 {0, I_14, G_14, H_14},
88 {0, L_16, J_16, K_16},
89
90 {1, C_1, A_1, B_1},
91 {1, C_2, A_2, B_2},
92 {1, C_3, A_3, B_3},
93 {1, C_4, A_4, B_4},
94 {1, C_5, A_5, B_5},
95 {1, C_6, A_6, B_6},
96 {1, C_7, A_7, B_7},
97 {1, C_8, A_8, B_8},
98 {1, C_9, A_9, B_9},
99 {1, C_10, A_10, B_10},
100 {1, C_11, A_11, B_11},
101 {1, C_12, A_12, B_12},
102 {1, C_14, A_14, B_14},
103 {1, C_15, A_15, B_15},
104
105 {1, F_1, D_1, E_1},
106 {1, F_2, D_2, E_2},
107 {1, F_3, D_3, E_3},
108 {1, F_7, D_7, E_7},
109 {1, F_11, D_11, E_11},
110 {1, F_12, D_12, E_12},
111 {1, F_13, D_13, E_13},
112 {1, F_14, D_14, E_14},
113 {1, F_15, D_15, E_15},
114 {1, F_16, D_16, E_16}
115};
116
117led_config_t g_led_config = {
118 {
119 { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
120 { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
121 { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, 43 },
122 { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 72, 56, 58 },
123 { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 81, 71, 13 },
124 { 73, 74, 75, NO_LED, NO_LED, NO_LED, 76, NO_LED, NO_LED, NO_LED, 77, 78, 79, 80, 82 }
125 },
126 {
127 {0,0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
128 {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13}, {224,13},
129 {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {224,26},
130 {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {180,39}, {195,26}, {224,39},
131 {0,52}, {15,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52}, {180,52}, {210,52},
132 {0,64}, {15,64}, {30,64}, {90,64}, {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
133 },
134 {
135 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
136 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
137 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
138 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
139 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
140 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
141
142 }
143};
diff --git a/keyboards/keychron/q1/rev_0102/rev_0102.h b/keyboards/keychron/q1/rev_0102/rev_0102.h
new file mode 100644
index 000000000..a13ffa56c
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/rev_0102.h
@@ -0,0 +1,37 @@
1/* Copyright 2021 @ Keychron (https://www.keychron.com)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21#define xxx KC_NO
22
23#define LAYOUT_iso_83( \
24 K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, K0E, \
25 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
26 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
27 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K2D, K3E, \
28 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K3C, \
29 K50, K51, K52, K56, K5A, K5B, K5C, K5D, K4C, K5E \
30) { \
31 { K00, xxx, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
32 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
33 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
34 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
35 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
36 { K50, K51, K52, xxx, xxx, xxx, K56, xxx, xxx, xxx, K5A, K5B, K5C, K5D, K5E } \
37}
diff --git a/keyboards/keychron/q1/rev_0102/rules.mk b/keyboards/keychron/q1/rev_0102/rules.mk
new file mode 100644
index 000000000..9b1725158
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0102/rules.mk
@@ -0,0 +1,25 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = yes # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23DIP_SWITCH_ENABLE = yes
24RGB_MATRIX_ENABLE = yes
25RGB_MATRIX_DRIVER = IS31FL3733 \ No newline at end of file