forked from qmk/qmk_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Ryan <[email protected]> Co-authored-by: Drashna Jaelre <[email protected]>
Showing
16 changed files
with
736 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* 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 | ||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = { | ||
/* Refer to CKLED2001 manual for these locations | ||
* driver | ||
* | R location | ||
* | | G location | ||
* | | | B location | ||
* | | | | */ | ||
{0, L_16, J_16, K_16}, | ||
{0, L_15, J_15, K_15}, | ||
{0, L_14, J_14, K_14}, | ||
{0, L_13, J_13, K_13}, | ||
{0, L_12, J_12, K_12}, | ||
{0, L_11, J_11, K_11}, | ||
{0, L_10, J_10, K_10}, | ||
{0, L_9, J_9, K_9}, | ||
{0, L_8, J_8, K_8}, | ||
{0, L_7, J_7, K_7}, | ||
{0, L_6, J_6, K_6}, | ||
{0, L_5, J_5, K_5}, | ||
{0, L_4, J_4, K_4}, | ||
{0, L_3, J_3, K_3}, | ||
// {0, L_2, J_2, K_2}, | ||
|
||
{0, C_16, A_16, B_16}, | ||
{0, C_15, A_15, B_15}, | ||
{0, C_14, A_14, B_14}, | ||
{0, C_13, A_13, B_13}, | ||
{0, C_12, A_12, B_12}, | ||
{0, C_11, A_11, B_11}, | ||
{0, C_10, A_10, B_10}, | ||
{0, C_9, A_9, B_9}, | ||
{0, C_8, A_8, B_8}, | ||
{0, C_7, A_7, B_7}, | ||
{0, C_6, A_6, B_6}, | ||
{0, C_5, A_5, B_5}, | ||
{0, C_3, A_3, B_3}, | ||
{0, C_2, A_2, B_2}, | ||
|
||
{0, I_16, G_16, H_16}, | ||
{0, I_14, G_14, H_14}, | ||
{0, I_13, G_13, H_13}, | ||
{0, I_12, G_12, H_12}, | ||
{0, I_11, G_11, H_11}, | ||
{0, I_10, G_10, H_10}, | ||
{0, I_9, G_9, H_9}, | ||
{0, I_8, G_8, H_8}, | ||
{0, I_7, G_7, H_7}, | ||
{0, I_6, G_6, H_6}, | ||
{0, I_5, G_5, H_5}, | ||
{0, I_3, G_3, H_3}, | ||
{0, I_2, G_2, H_2}, | ||
|
||
{0, F_16, D_16, E_16}, | ||
{0, F_15, D_15, E_15}, | ||
{0, F_14, D_14, E_14}, | ||
{0, F_13, D_13, E_13}, | ||
{0, F_10, D_10, E_10}, | ||
{0, F_7, D_7, E_7}, | ||
{0, F_6, D_6, E_6}, | ||
{0, F_5, D_5, E_5}, | ||
{0, F_4, D_4, E_4}, | ||
{0, F_3, D_3, E_3}, | ||
{0, F_2, D_2, E_2}, | ||
{0, C_4, A_4, B_4}, | ||
}; | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
/* 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 Configuration */ | ||
#define RGB_MATRIX_LED_COUNT 53 | ||
|
||
/* Encoder Configuration */ | ||
#define ENCODER_DEFAULT_POS 0x3 | ||
|
||
/* Enable caps-lock LED */ | ||
#define CAPS_LOCK_LED_INDEX 14 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
{ | ||
"usb": { | ||
"pid": "0x0194", | ||
"device_version": "1.0.0" | ||
}, | ||
"rgb_matrix": { | ||
"layout": [ | ||
{"matrix":[0, 0], "flags":1, "x":2, "y":0}, | ||
{"matrix":[0, 1], "flags":4, "x":20, "y":0}, | ||
{"matrix":[0, 2], "flags":4, "x":35, "y":0}, | ||
{"matrix":[0, 3], "flags":4, "x":50, "y":0}, | ||
{"matrix":[0, 4], "flags":4, "x":65, "y":0}, | ||
{"matrix":[0, 5], "flags":4, "x":80, "y":0}, | ||
{"matrix":[0, 6], "flags":4, "x":94, "y":0}, | ||
{"matrix":[0, 7], "flags":4, "x":109, "y":0}, | ||
{"matrix":[0, 8], "flags":4, "x":124, "y":0}, | ||
{"matrix":[0, 9], "flags":4, "x":139, "y":0}, | ||
{"matrix":[0, 10], "flags":4, "x":154, "y":0}, | ||
{"matrix":[0, 11], "flags":4, "x":168, "y":0}, | ||
{"matrix":[0, 12], "flags":1, "x":183, "y":0}, | ||
{"matrix":[0, 13], "flags":1, "x":202, "y":0}, | ||
|
||
{"matrix":[1, 0], "flags":8, "x":4, "y":21}, | ||
{"matrix":[1, 1], "flags":4, "x":24, "y":21}, | ||
{"matrix":[1, 2], "flags":4, "x":39, "y":21}, | ||
{"matrix":[1, 3], "flags":4, "x":54, "y":21}, | ||
{"matrix":[1, 4], "flags":4, "x":68, "y":21}, | ||
{"matrix":[1, 5], "flags":4, "x":83, "y":21}, | ||
{"matrix":[1, 6], "flags":4, "x":98, "y":21}, | ||
{"matrix":[1, 7], "flags":4, "x":113, "y":21}, | ||
{"matrix":[1, 8], "flags":4, "x":128, "y":21}, | ||
{"matrix":[1, 9], "flags":4, "x":142, "y":21}, | ||
{"matrix":[1, 10], "flags":4, "x":157, "y":21}, | ||
{"matrix":[1, 11], "flags":4, "x":172, "y":21}, | ||
{"matrix":[1, 13], "flags":1, "x":196, "y":21}, | ||
{"matrix":[1, 14], "flags":1, "x":224, "y":21}, | ||
|
||
{"matrix":[2, 0], "flags":1, "x":7, "y":43}, | ||
{"matrix":[2, 2], "flags":4, "x":31, "y":43}, | ||
{"matrix":[2, 3], "flags":4, "x":46, "y":43}, | ||
{"matrix":[2, 4], "flags":4, "x":61, "y":43}, | ||
{"matrix":[2, 5], "flags":4, "x":76, "y":43}, | ||
{"matrix":[2, 6], "flags":4, "x":91, "y":43}, | ||
{"matrix":[2, 7], "flags":4, "x":105, "y":43}, | ||
{"matrix":[2, 8], "flags":4, "x":120, "y":43}, | ||
{"matrix":[2, 9], "flags":4, "x":135, "y":43}, | ||
{"matrix":[2, 10], "flags":4, "x":150, "y":43}, | ||
{"matrix":[2, 11], "flags":4, "x":165, "y":43}, | ||
{"matrix":[2, 13], "flags":1, "x":185, "y":43}, | ||
{"matrix":[2, 14], "flags":1, "x":205, "y":43}, | ||
|
||
{"matrix":[3, 0], "flags":1, "x":0, "y":64}, | ||
{"matrix":[3, 1], "flags":1, "x":18, "y":64}, | ||
{"matrix":[3, 2], "flags":1, "x":37, "y":64}, | ||
{"matrix":[3, 3], "flags":1, "x":55, "y":64}, | ||
{"matrix":[3, 6], "flags":4, "x":81, "y":64}, | ||
{"matrix":[3, 9], "flags":4, "x":118, "y":64}, | ||
{"matrix":[3, 10], "flags":1, "x":146, "y":64}, | ||
{"matrix":[3, 11], "flags":1, "x":161, "y":64}, | ||
{"matrix":[3, 12], "flags":1, "x":176, "y":64}, | ||
{"matrix":[3, 13], "flags":1, "x":190, "y":64}, | ||
{"matrix":[3, 14], "flags":1, "x":205, "y":64}, | ||
{"matrix":[1, 12], "flags":1, "x":224, "y":64} | ||
] | ||
} | ||
} |
71 changes: 71 additions & 0 deletions
71
keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
/* 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 | ||
|
||
enum layers{ | ||
MAC_BASE, | ||
WIN_BASE, | ||
MAC_FN1, | ||
WIN_FN1, | ||
FN2, | ||
}; | ||
|
||
#define KC_TASK LGUI(KC_TAB) | ||
#define KC_FLXP LGUI(KC_E) | ||
|
||
// clang-format off | ||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[MAC_BASE] = LAYOUT_54_ansi( | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MUTE, | ||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, | ||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN1), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(FN2), KC_LEFT, KC_DOWN, KC_RGHT), | ||
|
||
[WIN_BASE] = LAYOUT_54_ansi( | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MUTE, | ||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, | ||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN1), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN1), MO(FN2), KC_LEFT, KC_DOWN, KC_RGHT), | ||
|
||
[MAC_FN1] = LAYOUT_54_ansi( | ||
KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, | ||
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | ||
|
||
[WIN_FN1] = LAYOUT_54_ansi( | ||
KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, | ||
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | ||
|
||
[FN2] = LAYOUT_54_ansi( | ||
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, _______, | ||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) | ||
}; | ||
|
||
#if defined(ENCODER_MAP_ENABLE) | ||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { | ||
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, | ||
[WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, | ||
[FN2] = {ENCODER_CCW_CW(_______, _______)} | ||
}; | ||
#endif |
2 changes: 2 additions & 0 deletions
2
keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
VIA_ENABLE = yes | ||
ENCODER_MAP_ENABLE = yes |
80 changes: 80 additions & 0 deletions
80
keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
/* 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{ | ||
MAC_BASE, | ||
WIN_BASE, | ||
MAC_FN1, | ||
WIN_FN1, | ||
FN2, | ||
}; | ||
|
||
// clang-format off | ||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[MAC_BASE] = LAYOUT_54_ansi( | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MUTE, | ||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, | ||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
KC_LCTL, KC_LOPTN, KC_LCMMD, MO(MAC_FN1), KC_SPC, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(FN2), KC_LEFT, KC_DOWN, KC_RGHT), | ||
|
||
[WIN_BASE] = LAYOUT_54_ansi( | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MUTE, | ||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, | ||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN1), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN1), MO(FN2), KC_LEFT, KC_DOWN, KC_RGHT), | ||
|
||
[MAC_FN1] = LAYOUT_54_ansi( | ||
KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, | ||
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | ||
|
||
[WIN_FN1] = LAYOUT_54_ansi( | ||
KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, | ||
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | ||
|
||
[FN2] = LAYOUT_54_ansi( | ||
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, _______, | ||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) | ||
}; | ||
|
||
#if defined(ENCODER_MAP_ENABLE) | ||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { | ||
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, | ||
[WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, | ||
[FN2] = {ENCODER_CCW_CW(_______, _______)} | ||
}; | ||
#endif | ||
|
||
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; | ||
} |
5 changes: 5 additions & 0 deletions
5
keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
VIA_ENABLE = yes | ||
ENCODER_MAP_ENABLE = yes | ||
|
||
VPATH += keyboards/keychron/common | ||
SRC += keychron_common.c |
71 changes: 71 additions & 0 deletions
71
keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
/* 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 | ||
|
||
enum layers{ | ||
MAC_BASE, | ||
WIN_BASE, | ||
MAC_FN1, | ||
WIN_FN1, | ||
FN2, | ||
}; | ||
|
||
#define KC_TASK LGUI(KC_TAB) | ||
#define KC_FLXP LGUI(KC_E) | ||
|
||
// clang-format off | ||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
[MAC_BASE] = LAYOUT_54_ansi( | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MUTE, | ||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, | ||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN1), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(FN2), KC_LEFT, KC_DOWN, KC_RGHT), | ||
|
||
[WIN_BASE] = LAYOUT_54_ansi( | ||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_MUTE, | ||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_HOME, | ||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, | ||
KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN1), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN1), MO(FN2), KC_LEFT, KC_DOWN, KC_RGHT), | ||
|
||
[MAC_FN1] = LAYOUT_54_ansi( | ||
KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, | ||
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | ||
|
||
[WIN_FN1] = LAYOUT_54_ansi( | ||
KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG, | ||
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), | ||
|
||
[FN2] = LAYOUT_54_ansi( | ||
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, _______, | ||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) | ||
}; | ||
|
||
#if defined(ENCODER_MAP_ENABLE) | ||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { | ||
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, | ||
[MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, | ||
[WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, | ||
[FN2] = {ENCODER_CCW_CW(_______, _______)} | ||
}; | ||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
VIA_ENABLE = yes | ||
ENCODER_MAP_ENABLE = yes |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
/* 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 | ||
|
||
/* Disable DIP switch in matrix data */ | ||
#define MATRIX_MASKED | ||
|
||
/* DIP switch */ | ||
#define DIP_SWITCH_MATRIX_GRID {{ 3, 4 }} | ||
|
||
/* RGB Matrix Driver Configuration */ | ||
#define DRIVER_COUNT 1 | ||
#define DRIVER_ADDR_1 0b1110100 | ||
|
||
/* Increase I2C speed to 1000 KHz */ | ||
#define I2C1_TIMINGR_PRESC 0U | ||
#define I2C1_TIMINGR_SCLDEL 3U | ||
#define I2C1_TIMINGR_SDADEL 0U | ||
#define I2C1_TIMINGR_SCLH 15U | ||
#define I2C1_TIMINGR_SCLL 51U | ||
|
||
/* Set LED driver current */ | ||
#define CKLED2001_CURRENT_TUNE \ | ||
{ 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70, 0xF8, 0xF8, 0x70 } | ||
|
||
/* turn off effects when suspended */ | ||
#define RGB_DISABLE_WHEN_USB_SUSPENDED | ||
|
||
/* EEPROM Driver Configuration */ | ||
#define WEAR_LEVELING_LOGICAL_SIZE 2048 | ||
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) | ||
|
||
// RGB Matrix Animation modes. Explicitly enabled | ||
// For full list of effects, see: | ||
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects | ||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS | ||
#define RGB_MATRIX_KEYPRESSES | ||
|
||
/* Old default behavior of mod-taps */ | ||
#define HOLD_ON_OTHER_KEY_PRESS | ||
|
||
/* Factory test keys */ | ||
#define F_RESET_KEY1 KC_7 | ||
#define FN_KEY1 MO(4) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
/* Copyright 2020 QMK | ||
* | ||
* 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 | ||
|
||
#define HAL_USE_I2C TRUE | ||
|
||
#include_next <halconf.h> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
{ | ||
"keyboard_name": "Keychron Q9 Plus", | ||
"manufacturer": "Keychron", | ||
"url": "https://github.com/Keychron", | ||
"maintainer": "lalalademaxiya1", | ||
"processor": "STM32L432", | ||
"bootloader": "stm32-dfu", | ||
"usb": { | ||
"vid": "0x3434" | ||
}, | ||
"features": { | ||
"bootmagic": true, | ||
"command": false, | ||
"console": false, | ||
"extrakey": true, | ||
"mousekey": true, | ||
"dip_switch": true, | ||
"encoder": true, | ||
"nkro": true, | ||
"rgb_matrix": true | ||
}, | ||
"matrix_pins": { | ||
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"], | ||
"rows": ["B3", "A15", "A14", "A13"] | ||
}, | ||
"diode_direction": "ROW2COL", | ||
"encoder": { | ||
"rotary": [ | ||
{"pin_a": "B4", "pin_b": "B5"} | ||
] | ||
}, | ||
"dynamic_keymap": { | ||
"layer_count": 5 | ||
}, | ||
"layouts": { | ||
"LAYOUT_54_ansi": { | ||
"layout": [ | ||
{"matrix":[0,0], "x":0, "y":0, "w":1.5}, | ||
{"matrix":[0,1], "x":1.5, "y":0}, | ||
{"matrix":[0,2], "x":2.5, "y":0}, | ||
{"matrix":[0,3], "x":3.5, "y":0}, | ||
{"matrix":[0,4], "x":4.5, "y":0}, | ||
{"matrix":[0,5], "x":5.5, "y":0}, | ||
{"matrix":[0,6], "x":6.5, "y":0}, | ||
{"matrix":[0,7], "x":7.5, "y":0}, | ||
{"matrix":[0,8], "x":8.5, "y":0}, | ||
{"matrix":[0,9], "x":9.5, "y":0}, | ||
{"matrix":[0,10], "x":10.5, "y":0}, | ||
{"matrix":[0,11], "x":11.5, "y":0}, | ||
{"matrix":[0,12], "x":12.5, "y":0}, | ||
{"matrix":[0,13], "x":13.5, "y":0, "w":1.5}, | ||
{"matrix":[0,14], "x":15.25, "y":0}, | ||
|
||
{"matrix":[1,0], "x":0, "y":1, "w":1.75}, | ||
{"matrix":[1,1], "x":1.75, "y":1}, | ||
{"matrix":[1,2], "x":2.75, "y":1}, | ||
{"matrix":[1,3], "x":3.75, "y":1}, | ||
{"matrix":[1,4], "x":4.75, "y":1}, | ||
{"matrix":[1,5], "x":5.75, "y":1}, | ||
{"matrix":[1,6], "x":6.75, "y":1}, | ||
{"matrix":[1,7], "x":7.75, "y":1}, | ||
{"matrix":[1,8], "x":8.75, "y":1}, | ||
{"matrix":[1,9], "x":9.75, "y":1}, | ||
{"matrix":[1,10], "x":10.75, "y":1}, | ||
{"matrix":[1,11], "x":11.75, "y":1}, | ||
{"matrix":[1,13], "x":12.75, "y":1, "w":2.25}, | ||
{"matrix":[1,14], "x":15.25, "y":1.25}, | ||
|
||
{"matrix":[2,0], "x":0, "y":2, "w":2.25}, | ||
{"matrix":[2,2], "x":2.25, "y":2}, | ||
{"matrix":[2,3], "x":3.25, "y":2}, | ||
{"matrix":[2,4], "x":4.25, "y":2}, | ||
{"matrix":[2,5], "x":5.25, "y":2}, | ||
{"matrix":[2,6], "x":6.25, "y":2}, | ||
{"matrix":[2,7], "x":7.25, "y":2}, | ||
{"matrix":[2,8], "x":8.25, "y":2}, | ||
{"matrix":[2,9], "x":9.25, "y":2}, | ||
{"matrix":[2,10], "x":10.25, "y":2}, | ||
{"matrix":[2,11], "x":11.25, "y":2}, | ||
{"matrix":[2,13], "x":12.25, "y":2, "w":1.75}, | ||
{"matrix":[2,14], "x":14, "y":2}, | ||
|
||
{"matrix":[3,0], "x":0, "y":3, "w":1.25}, | ||
{"matrix":[3,1], "x":1.25, "y":3, "w":1.25}, | ||
{"matrix":[3,2], "x":2.5, "y":3, "w":1.25}, | ||
{"matrix":[3,3], "x":3.75, "y":3, "w":1.25}, | ||
{"matrix":[3,6], "x":5, "y":3, "w":2.25}, | ||
{"matrix":[3,9], "x":7.25, "y":3, "w":2.75}, | ||
{"matrix":[3,10], "x":10, "y":3}, | ||
{"matrix":[3,11], "x":11, "y":3}, | ||
{"matrix":[3,12], "x":12, "y":3}, | ||
{"matrix":[3,13], "x":13, "y":3}, | ||
{"matrix":[3,14], "x":14, "y":3}, | ||
{"matrix":[1,12], "x":15, "y":3} | ||
] | ||
} | ||
}, | ||
"rgb_matrix": { | ||
"driver": "ckled2001", | ||
"animations": { | ||
"breathing": true, | ||
"band_spiral_val": true, | ||
"cycle_all": true, | ||
"cycle_left_right": true, | ||
"cycle_up_down": true, | ||
"rainbow_moving_chevron": true, | ||
"cycle_out_in": true, | ||
"cycle_out_in_dual": true, | ||
"cycle_pinwheel": true, | ||
"cycle_spiral": true, | ||
"dual_beacon": true, | ||
"rainbow_beacon": true, | ||
"jellybean_raindrops": true, | ||
"pixel_rain": true, | ||
"typing_heatmap": true, | ||
"digital_rain": true, | ||
"solid_reactive_simple": true, | ||
"solid_reactive_multiwide": true, | ||
"solid_reactive_multinexus": true, | ||
"splash": true, | ||
"solid_splash": true | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/* Copyright 2020 QMK | ||
* | ||
* 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_next <mcuconf.h> | ||
|
||
#undef STM32_I2C_USE_I2C1 | ||
#define STM32_I2C_USE_I2C1 TRUE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
/* 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" | ||
|
||
const matrix_row_t matrix_mask[] = { | ||
0b111111111111111, | ||
0b111111111111111, | ||
0b111111111111111, | ||
0b111111111101111, | ||
}; | ||
|
||
#ifdef DIP_SWITCH_ENABLE | ||
bool dip_switch_update_kb(uint8_t index, bool active) { | ||
if (!dip_switch_update_user(index, active)) { | ||
return false; | ||
} | ||
if (index == 0) { | ||
default_layer_set(1UL << (active ? 1 : 0)); | ||
} | ||
return true; | ||
} | ||
#endif | ||
|
||
#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) | ||
|
||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) { | ||
if (!process_record_user(keycode, record)) { | ||
return false; | ||
} | ||
switch (keycode) { | ||
case RGB_TOG: | ||
if (record->event.pressed) { | ||
switch (rgb_matrix_get_flags()) { | ||
case LED_FLAG_ALL: { | ||
rgb_matrix_set_flags(LED_FLAG_NONE); | ||
rgb_matrix_set_color_all(0, 0, 0); | ||
} break; | ||
default: { | ||
rgb_matrix_set_flags(LED_FLAG_ALL); | ||
} break; | ||
} | ||
} | ||
if (!rgb_matrix_is_enabled()) { | ||
rgb_matrix_set_flags(LED_FLAG_ALL); | ||
rgb_matrix_enable(); | ||
} | ||
return false; | ||
} | ||
return true; | ||
} | ||
|
||
bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { | ||
if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { | ||
return false; | ||
} | ||
// RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue); | ||
|
||
if (host_keyboard_led_state().caps_lock) { | ||
RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 255, 255, 255); | ||
} else { | ||
if (!rgb_matrix_get_flags()) { | ||
RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 0, 0, 0); | ||
} | ||
} | ||
return true; | ||
} | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Keychron Q9 Plus | ||
|
||
 | ||
|
||
A customizable 40% keyboard. | ||
|
||
* Keyboard Maintainer: [Keychron](https://github.com/keychron) | ||
* Hardware Supported: Keychron Q9 Plus | ||
* Hardware Availability:[Keychron Q9 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q9-qmk-custom-mechanical-keyboard) | ||
|
||
Make example for this keyboard (after setting up your build environment): | ||
|
||
make keychron/q9_plus/ansi_encoder:default | ||
|
||
Flashing example for this keyboard: | ||
|
||
make keychron/q9_plus/ansi:default:flash | ||
|
||
**Reset Key**: Hold down the key located at *K00*, programmed as *TAB* while plugging in the keyboard. | ||
|
||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). |