From 5f33a251b32677cc2cbc71adf47b1e1969d15598 Mon Sep 17 00:00:00 2001 From: adophoxia <100170946+adophoxia@users.noreply.github.com> Date: Wed, 4 Oct 2023 21:59:06 -0700 Subject: Update Keychron Q0 (#22068) Co-authored-by: Ryan Co-authored-by: Duncan Sutherland --- .../keychron/q0/plus/keymaps/default/keymap.c | 49 +++++++++++++ .../keychron/q0/plus/keymaps/default/rules.mk | 1 + .../keychron/q0/plus/keymaps/keychron/keymap.c | 83 ++++++++++++++++++++++ .../keychron/q0/plus/keymaps/keychron/rules.mk | 5 ++ keyboards/keychron/q0/plus/keymaps/via/keymap.c | 69 ++++++++++++++++++ keyboards/keychron/q0/plus/keymaps/via/rules.mk | 2 + 6 files changed, 209 insertions(+) create mode 100644 keyboards/keychron/q0/plus/keymaps/default/keymap.c create mode 100644 keyboards/keychron/q0/plus/keymaps/default/rules.mk create mode 100644 keyboards/keychron/q0/plus/keymaps/keychron/keymap.c create mode 100644 keyboards/keychron/q0/plus/keymaps/keychron/rules.mk create mode 100644 keyboards/keychron/q0/plus/keymaps/via/keymap.c create mode 100644 keyboards/keychron/q0/plus/keymaps/via/rules.mk (limited to 'keyboards/keychron/q0/plus/keymaps') 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 . + */ + +#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 . + */ + +#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 . + */ + +#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 -- cgit v1.2.3