diff options
Diffstat (limited to 'keyboards/keychron/q0/plus')
-rw-r--r-- | keyboards/keychron/q0/plus/config.h | 32 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/info.json | 94 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/keymaps/default/keymap.c | 49 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/keymaps/default/rules.mk | 1 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/keymaps/keychron/keymap.c | 83 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/keymaps/keychron/rules.mk | 5 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/keymaps/via/keymap.c | 69 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/keymaps/via/rules.mk | 2 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/plus.c | 62 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/readme.md | 12 | ||||
-rw-r--r-- | keyboards/keychron/q0/plus/rules.mk | 1 |
11 files changed, 410 insertions, 0 deletions
diff --git a/keyboards/keychron/q0/plus/config.h b/keyboards/keychron/q0/plus/config.h new file mode 100644 index 0000000000..a27ec9cfa6 --- /dev/null +++ b/keyboards/keychron/q0/plus/config.h @@ -0,0 +1,32 @@ +/* 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/>. + */ + +#pragma once + +/* RGB Matrix Driver Configuration */ +#define SNLED27351_DRIVER_COUNT 1 +#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_VDDIO + +/* RGB Matrix Configuration */ +#define RGB_MATRIX_LED_COUNT 26 + +#define SNLED27351_PHASE_CHANNEL SNLED27351_MSKPHASE_9CHANNEL + +/* Encoder Configuration*/ +#define ENCODER_DEFAULT_POS 0x3 + +/* Enable num-lock LED */ +#define NUM_LOCK_LED_INDEX 5 diff --git a/keyboards/keychron/q0/plus/info.json b/keyboards/keychron/q0/plus/info.json new file mode 100644 index 0000000000..b187a79139 --- /dev/null +++ b/keyboards/keychron/q0/plus/info.json @@ -0,0 +1,94 @@ +{ + "keyboard_name": "Keychron Q0 Plus", + "usb": { + "pid": "0x0131", + "device_version": "1.0.0" + }, + "matrix_pins": { + "cols": ["C14", "C15", "A0", "A1", "A2"], + "rows": ["B5", "B4", "B3", "A15", "A14", "A13"] + }, + "encoder": { + "enabled": true, + "rotary": [ + {"pin_a": "A3", "pin_b": "A4"} + ] + }, + "bootmagic": { + "matrix": [0, 1] + }, + "rgb_matrix": { + "layout": [ + {"flags": 1, "matrix": [0, 1], "x": 56, "y": 0}, + {"flags": 1, "matrix": [0, 2], "x": 112, "y": 0}, + {"flags": 1, "matrix": [0, 3], "x": 168, "y": 0}, + {"flags": 1, "matrix": [0, 4], "x": 224, "y": 0}, + + {"flags": 4, "matrix": [1, 0], "x": 0, "y": 15}, + {"flags": 8, "matrix": [1, 1], "x": 56, "y": 15}, + {"flags": 4, "matrix": [1, 2], "x": 112, "y": 15}, + {"flags": 4, "matrix": [1, 3], "x": 168, "y": 15}, + {"flags": 4, "matrix": [1, 4], "x": 224, "y": 15}, + + {"flags": 4, "matrix": [2, 0], "x": 0, "y": 27}, + {"flags": 4, "matrix": [2, 1], "x": 56, "y": 27}, + {"flags": 4, "matrix": [2, 2], "x": 112, "y": 27}, + {"flags": 4, "matrix": [2, 3], "x": 168, "y": 27}, + {"flags": 4, "matrix": [2, 4], "x": 224, "y": 34}, + + {"flags": 4, "matrix": [3, 0], "x": 0, "y": 40}, + {"flags": 4, "matrix": [3, 1], "x": 56, "y": 40}, + {"flags": 4, "matrix": [3, 2], "x": 112, "y": 40}, + {"flags": 4, "matrix": [3, 3], "x": 168, "y": 40}, + + {"flags": 4, "matrix": [4, 0], "x": 0, "y": 52}, + {"flags": 4, "matrix": [4, 1], "x": 56, "y": 52}, + {"flags": 4, "matrix": [4, 2], "x": 112, "y": 52}, + {"flags": 4, "matrix": [4, 3], "x": 168, "y": 52}, + {"flags": 4, "matrix": [4, 4], "x": 224, "y": 58}, + + {"flags": 4, "matrix": [5, 0], "x": 0, "y": 64}, + {"flags": 4, "matrix": [5, 1], "x": 84, "y": 64}, + {"flags": 1, "matrix": [5, 3], "x": 168, "y": 64} + ] + }, + "community_layouts": ["numpad_6x5"], + "layouts": { + "LAYOUT_numpad_6x5": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1.25, "y": 0}, + {"matrix": [0, 2], "x": 2.25, "y": 0}, + {"matrix": [0, 3], "x": 3.25, "y": 0}, + {"matrix": [0, 4], "x": 4.25, "y": 0}, + + {"matrix": [1, 0], "x": 0, "y": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1.25}, + {"matrix": [1, 2], "x": 2.25, "y": 1.25}, + {"matrix": [1, 3], "x": 3.25, "y": 1.25}, + {"matrix": [1, 4], "x": 4.25, "y": 1.25}, + + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1.25, "y": 2.25}, + {"matrix": [2, 2], "x": 2.25, "y": 2.25}, + {"matrix": [2, 3], "x": 3.25, "y": 2.25}, + {"matrix": [2, 4], "x": 4.25, "y": 2.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3.25}, + {"matrix": [3, 3], "x": 3.25, "y": 3.25}, + + {"matrix": [4, 0], "x": 0, "y": 4.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"matrix": [4, 4], "x": 4.25, "y": 4.25, "h": 2}, + + {"matrix": [5, 0], "x": 0, "y": 5.25}, + {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 2}, + {"matrix": [5, 3], "x": 3.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/keychron/q0/plus/keymaps/default/keymap.c b/keyboards/keychron/q0/plus/keymaps/default/keymap.c new file mode 100644 index 0000000000..4e281d4d7d --- /dev/null +++ b/keyboards/keychron/q0/plus/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* 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 + +// clang-format off + +enum layers { + BASE, + FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_numpad_6x5( + KC_MUTE, MO(FUNC), KC_ESC, KC_BSPC, KC_TAB, + _______, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + _______, KC_P7, KC_P8, KC_P9, KC_PPLS, + _______, KC_P4, KC_P5, KC_P6, + _______, KC_P1, KC_P2, KC_P3, KC_PENT, + _______, KC_P0, KC_PDOT), + + [FUNC] = LAYOUT_numpad_6x5( + RGB_TOG, _______, 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), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [FUNC] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/q0/plus/keymaps/default/rules.mk b/keyboards/keychron/q0/plus/keymaps/default/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/keychron/q0/plus/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/keychron/q0/plus/keymaps/keychron/keymap.c b/keyboards/keychron/q0/plus/keymaps/keychron/keymap.c new file mode 100644 index 0000000000..795c275543 --- /dev/null +++ b/keyboards/keychron/q0/plus/keymaps/keychron/keymap.c @@ -0,0 +1,83 @@ +/* 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" + +// clang-format off + +enum layers { + BASE, + FUNC, + L2, + L3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_numpad_6x5( + KC_MUTE, MO(FUNC), KC_ESC, KC_BSPC, KC_TAB, + MC_1, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + MC_2, KC_P7, KC_P8, KC_P9, KC_PPLS, + MC_3, KC_P4, KC_P5, KC_P6, + MC_4, KC_P1, KC_P2, KC_P3, KC_PENT, + MC_5, KC_P0, KC_PDOT), + + [FUNC] = LAYOUT_numpad_6x5( + RGB_TOG, _______, KC_MUTE, KC_VOLD, KC_VOLU, + MC_1, RGB_MOD, RGB_VAI, RGB_HUI, KC_DEL, + MC_2, RGB_RMOD, RGB_VAD, RGB_HUD, _______, + MC_3, RGB_SAI, RGB_SPI, KC_MPRV, + MC_4, RGB_SAD, RGB_SPD, KC_MPLY, _______, + MC_5, RGB_TOG, KC_MNXT), + + [L2] = LAYOUT_numpad_6x5( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______), + + [L3] = LAYOUT_numpad_6x5( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [FUNC] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [L2] = { ENCODER_CCW_CW(_______, _______) }, + [L3] = { ENCODER_CCW_CW(_______, _______) } +}; +#endif // ENCODER_MAP_ENABLE + +// clang-format on + +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/plus/keymaps/keychron/rules.mk b/keyboards/keychron/q0/plus/keymaps/keychron/rules.mk new file mode 100644 index 0000000000..9cf1a9b56c --- /dev/null +++ b/keyboards/keychron/q0/plus/keymaps/keychron/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes + +VPATH += keyboards/keychron/common +SRC += keychron_common.c diff --git a/keyboards/keychron/q0/plus/keymaps/via/keymap.c b/keyboards/keychron/q0/plus/keymaps/via/keymap.c new file mode 100644 index 0000000000..935d3edb76 --- /dev/null +++ b/keyboards/keychron/q0/plus/keymaps/via/keymap.c @@ -0,0 +1,69 @@ +/* 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 + + // clang-format off + +enum layers { + BASE, + FUNC, + L2, + L3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = LAYOUT_numpad_6x5( + KC_MUTE, MO(FUNC), KC_ESC, KC_BSPC, KC_TAB, + MC_0, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + MC_2, KC_P7, KC_P8, KC_P9, KC_PPLS, + MC_3, KC_P4, KC_P5, KC_P6, + MC_4, KC_P1, KC_P2, KC_P3, KC_PENT, + MC_5, KC_P0, KC_PDOT), + + [FUNC] = LAYOUT_numpad_6x5( + RGB_TOG, _______, KC_MUTE, KC_VOLD, KC_VOLU, + MC_1, RGB_MOD, RGB_VAI, RGB_HUI, KC_DEL, + MC_2, RGB_RMOD, RGB_VAD, RGB_HUD, _______, + MC_3, RGB_SAI, RGB_SPI, KC_MPRV, + MC_4, RGB_SAD, RGB_SPD, KC_MPLY, _______, + MC_5, RGB_TOG, KC_MNXT), + + [L2] = LAYOUT_numpad_6x5( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______), + + [L3] = LAYOUT_numpad_6x5( + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [FUNC] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [L2] = { ENCODER_CCW_CW(_______, _______) }, + [L3] = { ENCODER_CCW_CW(_______, _______) } +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/q0/plus/keymaps/via/rules.mk b/keyboards/keychron/q0/plus/keymaps/via/rules.mk new file mode 100644 index 0000000000..f1adcab005 --- /dev/null +++ b/keyboards/keychron/q0/plus/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/keychron/q0/plus/plus.c b/keyboards/keychron/q0/plus/plus.c new file mode 100644 index 0000000000..0466e1a584 --- /dev/null +++ b/keyboards/keychron/q0/plus/plus.c @@ -0,0 +1,62 @@ +/* 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 "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, 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, 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, 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, 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, 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, F_6, D_6, E_6}, + {0, F_7, D_7, E_7}, + {0, F_9, D_9, E_9}, +}; +#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/keychron/q0/plus/readme.md b/keyboards/keychron/q0/plus/readme.md new file mode 100644 index 0000000000..6cc6e263f4 --- /dev/null +++ b/keyboards/keychron/q0/plus/readme.md @@ -0,0 +1,12 @@ +# Keychron Q0 Plus + +![Keychron Q0 Plus](https://i.imgur.com/EDbfVVOh.jpg) + +* Keyboard Maintainer: [Keychron](https://github.com/keychron) +* Hardware Supported: Keychron Q0 Plus +* Hardware Availability: [Keychron Q0 Plus QMK Custom Number Pad](https://www.keychron.com/products/keychron-q0-plus-qmk-custom-number-pad) + +1. The name of this keyboard is "Keychron Q0 Plus" +2. Enables EC11 rotary encoder + - Turn clockwise to increase volume and turn anti-clockwise to decrease volume + - Press the knob button to mute diff --git a/keyboards/keychron/q0/plus/rules.mk b/keyboards/keychron/q0/plus/rules.mk new file mode 100644 index 0000000000..7ff128fa69 --- /dev/null +++ b/keyboards/keychron/q0/plus/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank
\ No newline at end of file |