summaryrefslogtreecommitdiff
path: root/keyboards/keychron/q0/base
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/keychron/q0/base')
-rw-r--r--keyboards/keychron/q0/base/base.c57
-rw-r--r--keyboards/keychron/q0/base/config.h27
-rw-r--r--keyboards/keychron/q0/base/info.json75
-rw-r--r--keyboards/keychron/q0/base/keymaps/default/keymap.c37
-rw-r--r--keyboards/keychron/q0/base/keymaps/keychron/keymap.c65
-rw-r--r--keyboards/keychron/q0/base/keymaps/keychron/rules.mk4
-rw-r--r--keyboards/keychron/q0/base/keymaps/via/keymap.c53
-rw-r--r--keyboards/keychron/q0/base/keymaps/via/rules.mk1
-rw-r--r--keyboards/keychron/q0/base/readme.md1
-rw-r--r--keyboards/keychron/q0/base/rules.mk1
10 files changed, 321 insertions, 0 deletions
diff --git a/keyboards/keychron/q0/base/base.c b/keyboards/keychron/q0/base/base.c
new file mode 100644
index 0000000000..05803234c0
--- /dev/null
+++ b/keyboards/keychron/q0/base/base.c
@@ -0,0 +1,57 @@
+/* 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/>.
+ */
+
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+// clang-format off
+
+const snled27351_led_t PROGMEM g_snled27351_leds[RGB_MATRIX_LED_COUNT] = {
+/* Refer to SNLED27351 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, F_5, D_5, E_5}, // 0
+ {0, I_5, G_5, H_5}, // 1
+ {0, L_5, J_5, K_5}, // 2
+ {0, C_5, A_5, B_5}, // 3
+
+ {0, F_4, D_4, E_4}, // 4
+ {0, I_4, G_4, H_4}, // 5
+ {0, L_4, J_4, K_4}, // 6
+ {0, C_4, A_4, B_4}, // 7
+
+ {0, F_6, D_6, E_6}, // 8
+ {0, I_6, G_6, H_6}, // 9
+ {0, L_6, J_6, K_6}, // 10
+
+ {0, F_3, D_3, E_3}, // 11
+ {0, I_3, G_3, H_3}, // 12
+ {0, L_3, J_3, K_3}, // 13
+ {0, C_6, A_6, B_6}, // 14
+
+ {0, F_2, D_2, E_2}, // 15
+ {0, I_2, G_2, H_2}, // 16
+ {0, L_2, J_2, K_2}, // 17
+
+ {0, F_1, D_1, E_1}, // 18
+ {0, L_1, J_1, K_1}, // 19
+ {0, C_2, A_2, B_2}, // 20
+};
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q0/base/config.h b/keyboards/keychron/q0/base/config.h
new file mode 100644
index 0000000000..566f808762
--- /dev/null
+++ b/keyboards/keychron/q0/base/config.h
@@ -0,0 +1,27 @@
+/* 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
+
+/* RGB Matrix Driver Configuration */
+#define SNLED27351_DRIVER_COUNT 1
+#define DRIVER_ADDR_1 SNLED27351_I2C_ADDRESS_GND
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 21
+
+/* Enable num-lock LED */
+#define NUM_LOCK_LED_INDEX 4
diff --git a/keyboards/keychron/q0/base/info.json b/keyboards/keychron/q0/base/info.json
new file mode 100644
index 0000000000..ad89cf84da
--- /dev/null
+++ b/keyboards/keychron/q0/base/info.json
@@ -0,0 +1,75 @@
+{
+ "keyboard_name": "Q0",
+ "usb": {
+ "pid": "0x0130",
+ "device_version": "1.0.2"
+ },
+ "matrix_pins": {
+ "cols": ["A5", "A6", "A7", "B0"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "rgb_matrix": {
+ "center_point": [56, 16],
+ "layout": [
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 1], "x": 37, "y": 0},
+ {"flags": 1, "matrix": [0, 2], "x": 75, "y": 0},
+ {"flags": 1, "matrix": [0, 3], "x": 112, "y": 0},
+
+ {"flags": 9, "matrix": [1, 0], "x": 0, "y": 6},
+ {"flags": 4, "matrix": [1, 1], "x": 37, "y": 6},
+ {"flags": 4, "matrix": [1, 2], "x": 75, "y": 6},
+ {"flags": 4, "matrix": [1, 3], "x": 112, "y": 6},
+
+ {"flags": 4, "matrix": [2, 0], "x": 0, "y": 13},
+ {"flags": 4, "matrix": [2, 1], "x": 37, "y": 13},
+ {"flags": 4, "matrix": [2, 2], "x": 75, "y": 13},
+
+ {"flags": 4, "matrix": [3, 0], "x": 0, "y": 19},
+ {"flags": 4, "matrix": [3, 1], "x": 37, "y": 19},
+ {"flags": 4, "matrix": [3, 2], "x": 75, "y": 19},
+ {"flags": 4, "matrix": [2, 3], "x": 112, "y": 16},
+
+ {"flags": 4, "matrix": [4, 0], "x": 0, "y": 25},
+ {"flags": 4, "matrix": [4, 1], "x": 37, "y": 25},
+ {"flags": 4, "matrix": [4, 2], "x": 75, "y": 25},
+
+ {"flags": 4, "matrix": [5, 0], "x": 18, "y": 32},
+ {"flags": 4, "matrix": [5, 2], "x": 75, "y": 32},
+ {"flags": 1, "matrix": [4, 3], "x": 112, "y": 29}
+ ]
+ },
+ "community_layouts": ["numpad_6x4"],
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "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": [1, 0], "x": 0, "y": 1},
+ {"matrix": [1, 1], "x": 1, "y": 1},
+ {"matrix": [1, 2], "x": 2, "y": 1},
+ {"matrix": [1, 3], "x": 3, "y": 1},
+
+ {"matrix": [2, 0], "x": 0, "y": 2},
+ {"matrix": [2, 1], "x": 1, "y": 2},
+ {"matrix": [2, 2], "x": 2, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3},
+ {"matrix": [3, 1], "x": 1, "y": 3},
+ {"matrix": [3, 2], "x": 2, "y": 3},
+ {"matrix": [2, 3], "x": 3, "y": 2, "h": 2},
+
+ {"matrix": [4, 0], "x": 0, "y": 4},
+ {"matrix": [4, 1], "x": 1, "y": 4},
+ {"matrix": [4, 2], "x": 2, "y": 4},
+
+ {"matrix": [5, 0], "x": 0, "y": 5, "w": 2},
+ {"matrix": [5, 2], "x": 2, "y": 5},
+ {"matrix": [4, 3], "x": 3, "y": 4, "h": 2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q0/base/keymaps/default/keymap.c b/keyboards/keychron/q0/base/keymaps/default/keymap.c
new file mode 100644
index 0000000000..387ff2d686
--- /dev/null
+++ b/keyboards/keychron/q0/base/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* 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/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers { _BASE, _FN1};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_numpad_6x4(
+ MO(_FN1), KC_ESC, KC_BSPC, KC_TAB,
+ KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT),
+
+ [_FN1] = LAYOUT_numpad_6x4(
+ _______, KC_MUTE, KC_VOLD, KC_VOLU,
+ RGB_MOD, RGB_VAI, RGB_HUI, KC_DEL,
+ RGB_RMOD, RGB_VAD, RGB_HUD,
+ RGB_SAI, RGB_SPI, KC_MPRV, _______,
+ RGB_SAD, RGB_SPD, KC_MPLY,
+ RGB_TOG, KC_MNXT, _______)
+};
diff --git a/keyboards/keychron/q0/base/keymaps/keychron/keymap.c b/keyboards/keychron/q0/base/keymaps/keychron/keymap.c
new file mode 100644
index 0000000000..73826716fc
--- /dev/null
+++ b/keyboards/keychron/q0/base/keymaps/keychron/keymap.c
@@ -0,0 +1,65 @@
+/* Copyright 2023 @ 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 { _BASE, _FN1, _RESERVED1, _RESERVED2 };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_numpad_6x4(
+ MO(_FN1), KC_ESC, KC_BSPC, KC_TAB,
+ KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT),
+
+ [_FN1] = LAYOUT_numpad_6x4(
+ _______, KC_MUTE, KC_VOLD, KC_VOLU,
+ RGB_MOD, RGB_VAI, RGB_HUI, KC_DEL,
+ RGB_RMOD, RGB_VAD, RGB_HUD,
+ RGB_SAI, RGB_SPI, KC_MPRV, _______,
+ RGB_SAD, RGB_SPD, KC_MPLY,
+ RGB_TOG, KC_MNXT, _______),
+
+ [_RESERVED1] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______),
+
+ [_RESERVED2] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______)
+};
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/q0/base/keymaps/keychron/rules.mk b/keyboards/keychron/q0/base/keymaps/keychron/rules.mk
new file mode 100644
index 0000000000..495e8907b4
--- /dev/null
+++ b/keyboards/keychron/q0/base/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q0/base/keymaps/via/keymap.c b/keyboards/keychron/q0/base/keymaps/via/keymap.c
new file mode 100644
index 0000000000..32fd198cf0
--- /dev/null
+++ b/keyboards/keychron/q0/base/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* 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/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers { _BASE, _FN1, _RESERVED1, _RESERVED2 };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_numpad_6x4(
+ MO(_FN1), KC_ESC, KC_BSPC, KC_TAB,
+ KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT),
+
+ [_FN1] = LAYOUT_numpad_6x4(
+ _______, KC_MUTE, KC_VOLD, KC_VOLU,
+ RGB_MOD, RGB_VAI, RGB_HUI, KC_DEL,
+ RGB_RMOD, RGB_VAD, RGB_HUD,
+ RGB_SAI, RGB_SPI, KC_MPRV, _______,
+ RGB_SAD, RGB_SPD, KC_MPLY,
+ RGB_TOG, KC_MNXT, _______),
+
+ [_RESERVED1] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______),
+
+ [_RESERVED2] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______)
+};
diff --git a/keyboards/keychron/q0/base/keymaps/via/rules.mk b/keyboards/keychron/q0/base/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/keychron/q0/base/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/q0/base/readme.md b/keyboards/keychron/q0/base/readme.md
new file mode 100644
index 0000000000..a6db5bc015
--- /dev/null
+++ b/keyboards/keychron/q0/base/readme.md
@@ -0,0 +1 @@
+# The base variant of the Keychron Q0
diff --git a/keyboards/keychron/q0/base/rules.mk b/keyboards/keychron/q0/base/rules.mk
new file mode 100644
index 0000000000..7ff128fa69
--- /dev/null
+++ b/keyboards/keychron/q0/base/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank \ No newline at end of file