diff options
Diffstat (limited to 'keyboards/keychron/q0/base')
-rw-r--r-- | keyboards/keychron/q0/base/base.c | 57 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/config.h | 27 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/info.json | 75 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/keymaps/default/keymap.c | 37 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/keymaps/keychron/keymap.c | 65 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/keymaps/keychron/rules.mk | 4 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/keymaps/via/keymap.c | 53 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/keymaps/via/rules.mk | 1 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/readme.md | 1 | ||||
-rw-r--r-- | keyboards/keychron/q0/base/rules.mk | 1 |
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 |