summaryrefslogtreecommitdiff
path: root/keyboards/keychron/q0/rev_0130
diff options
context:
space:
mode:
authoradophoxia <100170946+adophoxia@users.noreply.github.com>2022-09-24 11:53:22 -0700
committerGitHub <noreply@github.com>2022-09-24 11:53:22 -0700
commit7caf0b1ab89224c92671e4617f023b6ea1fa1531 (patch)
tree21977fbe90a54ea87e2b3be1c18102074b51e979 /keyboards/keychron/q0/rev_0130
parentdfa6fd4b2a5087b4775288038b8956051fd034f8 (diff)
[Keyboard] Add Keychron Q0 (#18348)
Diffstat (limited to 'keyboards/keychron/q0/rev_0130')
-rw-r--r--keyboards/keychron/q0/rev_0130/config.h24
-rw-r--r--keyboards/keychron/q0/rev_0130/info.json43
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c37
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c53
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk1
-rw-r--r--keyboards/keychron/q0/rev_0130/readme.md1
-rw-r--r--keyboards/keychron/q0/rev_0130/rev_0130.c88
-rw-r--r--keyboards/keychron/q0/rev_0130/rev_0130.h38
-rw-r--r--keyboards/keychron/q0/rev_0130/rules.mk27
9 files changed, 312 insertions, 0 deletions
diff --git a/keyboards/keychron/q0/rev_0130/config.h b/keyboards/keychron/q0/rev_0130/config.h
new file mode 100644
index 0000000000..e7fabed664
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/config.h
@@ -0,0 +1,24 @@
+/* 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 Configuration */
+#define DRIVER_1_LED_TOTAL 21
+#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+
+/* Enable num-lock LED */
+#define NUM_LOCK_LED_INDEX 4
diff --git a/keyboards/keychron/q0/rev_0130/info.json b/keyboards/keychron/q0/rev_0130/info.json
new file mode 100644
index 0000000000..d42a43ef66
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/info.json
@@ -0,0 +1,43 @@
+{
+ "keyboard_name": "Q0",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0130",
+ "device_version": "1.0.2"
+ },
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "layout": [
+ {"label":"Fn", "x":0, "y":0},
+ {"label":"Esc", "x":1, "y":0},
+ {"label":"Backspace", "x":2, "y":0},
+ {"label":"Tab", "x":3, "y":0},
+
+ {"label":"Num Lock", "x":0, "y":1},
+ {"label":"/", "x":1, "y":1},
+ {"label":"*", "x":2, "y":1},
+ {"label":"-", "x":3, "y":1},
+
+ {"label":"7", "x":0, "y":2},
+ {"label":"8", "x":1, "y":2},
+ {"label":"9", "x":2, "y":2},
+
+ {"label":"4", "x":0, "y":3},
+ {"label":"5", "x":1, "y":3},
+ {"label":"6", "x":2, "y":3},
+ {"label":"+", "x":3, "y":2, "h":2},
+
+ {"label":"1", "x":0, "y":4},
+ {"label":"2", "x":1, "y":4},
+ {"label":"3", "x":2, "y":4},
+
+ {"label":"0", "x":0, "y":5, "w":2},
+ {"label":".", "x":2, "y":5},
+ {"label":"Enter", "x":3, "y":4, "h":2}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6a05648074
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/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_BSPACE, KC_TAB,
+ KC_NUMLOCK, 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/rev_0130/keymaps/via/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
new file mode 100644
index 0000000000..078ede4041
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/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_BSPACE, KC_TAB,
+ KC_NUMLOCK, 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/rev_0130/keymaps/via/rules.mk b/keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/q0/rev_0130/readme.md b/keyboards/keychron/q0/rev_0130/readme.md
new file mode 100644
index 0000000000..a6db5bc015
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/readme.md
@@ -0,0 +1 @@
+# The base variant of the Keychron Q0
diff --git a/keyboards/keychron/q0/rev_0130/rev_0130.c b/keyboards/keychron/q0/rev_0130/rev_0130.c
new file mode 100644
index 0000000000..468e3cf04f
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/rev_0130.c
@@ -0,0 +1,88 @@
+/* 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
+
+const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL] = {
+/* Refer to CKLED 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
+};
+
+#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, 14 },
+ { 11, 12, 13, __ },
+ { 15, 16, 17, 20 },
+ { 18, __, 19, __ }
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {74,0}, {150,0}, {224,0},
+ {0,13}, {74,13}, {150,13}, {224,13},
+ {0,26}, {74,26}, {150,26},
+ {0,38}, {74,38}, {150,38}, {224,32},
+ {0,51}, {74,51}, {150,51},
+ {36,64}, {150,64}, {224,58},
+ },
+ {
+ // LED Index to Flag
+ 1, 1, 1, 1,
+ 9, 4, 4, 4,
+ 4, 4, 4,
+ 4, 4, 4, 4,
+ 4, 4, 4,
+ 4, 4, 1
+ }
+};
+
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q0/rev_0130/rev_0130.h b/keyboards/keychron/q0/rev_0130/rev_0130.h
new file mode 100644
index 0000000000..d66c880aa9
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/rev_0130.h
@@ -0,0 +1,38 @@
+/* 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
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_numpad_6x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, \
+ K30, K31, K32, K23, \
+ K40, K41, K42, \
+ K50, K52, K43 \
+) \
+{ \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, XXX }, \
+ { K40, K41, K42, K43 }, \
+ { K50, XXX, K52, XXX }, \
+}
diff --git a/keyboards/keychron/q0/rev_0130/rules.mk b/keyboards/keychron/q0/rev_0130/rules.mk
new file mode 100644
index 0000000000..5a04c755cd
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = STM32L432
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable.
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable USB N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+DIP_SWITCH_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = CKLED2001
+LTO_ENABLE = yes
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE