From 945b7f3cc4e9a724a42cf4d02a4d338c7bae908b Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Thu, 12 Oct 2023 17:52:35 +0800
Subject: [PATCH 01/27] Move keychron all boards to new branch
---
keyboards/keychron/c1/ansi/rgb/config.h | 93 +++++
keyboards/keychron/c1/ansi/rgb/info.json | 130 +++++++
.../ansi/rgb/keymaps/default/keymap.c | 14 +-
.../ansi/rgb/keymaps/keychron/keymap.c | 18 +-
.../ansi/rgb/keymaps/keychron/rules.mk | 2 +-
.../ansi/rgb/keymaps/via/keymap.c | 12 +-
.../ansi/rgb/keymaps/via/rules.mk | 0
.../keychron/{c1_pro => c1}/ansi/rgb/rgb.c | 82 ++--
keyboards/keychron/c1/ansi/rgb/rules.mk | 8 +
keyboards/keychron/c1/ansi/white/config.h | 72 ++++
keyboards/keychron/c1/ansi/white/info.json | 130 +++++++
.../ansi/white/keymaps/default}/keymap.c | 12 +-
.../ansi/white/keymaps/keychron/keymap.c | 20 +-
.../ansi/white}/keymaps/keychron/rules.mk | 2 +-
.../ansi/white/keymaps/via}/keymap.c | 12 +-
.../ansi/white/keymaps/via/rules.mk | 0
keyboards/keychron/c1/ansi/white/rules.mk | 8 +
.../{c1_pro => c1}/ansi/white/white.c | 94 ++---
keyboards/keychron/c1/c1.c | 212 ++++++++++
keyboards/keychron/{c1_pro => c1}/config.h | 8 +-
keyboards/keychron/{c1_pro => c1}/halconf.h | 0
keyboards/keychron/{c1_pro => c1}/mcuconf.h | 0
keyboards/keychron/{c1_pro => c1}/readme.md | 6 +-
keyboards/keychron/c1_pro/ansi/rgb/info.json | 229 -----------
keyboards/keychron/c1_pro/ansi/rgb/rules.mk | 1 -
keyboards/keychron/c1_pro/ansi/white/config.h | 48 ---
.../keychron/c1_pro/ansi/white/info.json | 226 -----------
keyboards/keychron/c1_pro/ansi/white/rules.mk | 1 -
keyboards/keychron/c1_pro/c1_pro.c | 44 ---
keyboards/keychron/c1_pro/info.json | 26 --
keyboards/keychron/c2/ansi/rgb/config.h | 93 +++++
keyboards/keychron/c2/ansi/rgb/info.json | 147 +++++++
.../ansi/rgb/keymaps/default/keymap.c | 22 +-
.../ansi/rgb/keymaps/keychron/keymap.c | 24 +-
.../c2/ansi/rgb/keymaps/keychron/rules.mk | 3 +
.../ansi/rgb/keymaps/via/keymap.c | 20 +-
.../ansi/rgb/keymaps/via/rules.mk | 0
.../keychron/{c2_pro => c2}/ansi/rgb/rgb.c | 38 +-
keyboards/keychron/c2/ansi/rgb/rules.mk | 14 +
keyboards/keychron/c2/ansi/white/config.h | 70 ++++
keyboards/keychron/c2/ansi/white/info.json | 147 +++++++
.../ansi/white/keymaps/default/keymap.c | 20 +-
.../ansi/white/keymaps/keychron/keymap.c | 25 +-
.../c2/ansi/white/keymaps/keychron/rules.mk | 3 +
.../ansi/white/keymaps/via/keymap.c | 20 +-
.../ansi/white/keymaps/via/rules.mk | 0
keyboards/keychron/c2/ansi/white/rules.mk | 14 +
.../{c2_pro => c2}/ansi/white/white.c | 39 +-
keyboards/keychron/c2/c2.c | 169 ++++++++
keyboards/keychron/{c2_pro => c2}/config.h | 11 +-
keyboards/keychron/{c2_pro => c2}/halconf.h | 0
keyboards/keychron/{c2_pro => c2}/mcuconf.h | 0
keyboards/keychron/{c2_pro => c2}/readme.md | 2 +-
keyboards/keychron/c2_pro/ansi/rgb/config.h | 46 ---
keyboards/keychron/c2_pro/ansi/rgb/info.json | 266 -------------
keyboards/keychron/c2_pro/ansi/rgb/rules.mk | 2 -
keyboards/keychron/c2_pro/ansi/white/config.h | 44 ---
.../keychron/c2_pro/ansi/white/info.json | 261 -------------
keyboards/keychron/c2_pro/ansi/white/rules.mk | 2 -
keyboards/keychron/c2_pro/c2_pro.c | 129 ------
keyboards/keychron/c2_pro/info.json | 27 --
keyboards/keychron/common/keychron_common.c | 134 ++++++-
keyboards/keychron/common/keychron_common.h | 10 +-
.../keychron/common/keychron_ft_common.c | 366 ++++++++++++++++++
.../keychron/common/keychron_ft_common.h | 48 +++
.../keychron/{c2_pro => common}/matrix.c | 4 +-
keyboards/keychron/q0/config.h | 62 ++-
keyboards/keychron/q0/factory.c | 93 +++++
keyboards/keychron/q0/halconf.h | 3 +
keyboards/keychron/q0/q0.c | 44 ---
keyboards/keychron/q0/readme.md | 6 +-
keyboards/keychron/q0/rev_0130/info.json | 120 ++----
.../q0/rev_0130/keymaps/default/keymap.c | 23 +-
.../q0/rev_0130/keymaps/keychron/keymap.c | 60 +--
.../q0/rev_0130/keymaps/keychron/rules.mk | 4 +-
.../keychron/q0/rev_0130/keymaps/via/keymap.c | 53 +--
keyboards/keychron/q0/rev_0130/readme.md | 1 -
keyboards/keychron/q0/rev_0130/rev_0130.c | 39 +-
keyboards/keychron/q0/rev_0130/rules.mk | 7 +
keyboards/keychron/q0/rev_0131/info.json | 133 ++-----
.../q0/rev_0131/keymaps/default/keymap.c | 20 +-
.../q0/rev_0131/keymaps/keychron/keymap.c | 29 +-
.../q0/rev_0131/keymaps/keychron/rules.mk | 3 +-
.../keychron/q0/rev_0131/keymaps/via/keymap.c | 22 +-
keyboards/keychron/q0/rev_0131/readme.md | 16 +-
keyboards/keychron/q0/rev_0131/rev_0131.c | 39 +-
keyboards/keychron/q0/rev_0131/rules.mk | 7 +
keyboards/keychron/q1/ansi/config.h | 22 --
keyboards/keychron/q1/ansi/info.json | 115 ------
.../keychron/q1/ansi/keymaps/default/keymap.c | 61 ---
.../q1/ansi/keymaps/gtg465x/README.md | 21 -
.../keychron/q1/ansi/keymaps/gtg465x/config.h | 25 --
.../keychron/q1/ansi/keymaps/gtg465x/keymap.c | 70 ----
.../q1/ansi/keymaps/gtg465x/rgb_matrix_user.c | 72 ----
.../q1/ansi/keymaps/gtg465x/rgb_matrix_user.h | 24 --
.../keychron/q1/ansi/keymaps/gtg465x/rules.mk | 6 -
.../q1/ansi/keymaps/keychron/keymap.c | 67 ----
.../q1/ansi/keymaps/keychron/rules.mk | 4 -
.../q1/ansi/keymaps/mkillewald/config.h | 23 --
.../q1/ansi/keymaps/mkillewald/keymap.c | 153 --------
.../q1/ansi/keymaps/mkillewald/keymap_user.h | 33 --
.../q1/ansi/keymaps/mkillewald/readme.md | 54 ---
.../ansi/keymaps/mkillewald/rgb_matrix_user.c | 84 ----
.../ansi/keymaps/mkillewald/rgb_matrix_user.h | 26 --
.../q1/ansi/keymaps/mkillewald/rules.mk | 6 -
.../keychron/q1/ansi/keymaps/teimor/config.h | 32 --
.../keychron/q1/ansi/keymaps/teimor/keymap.c | 67 ----
.../q1/ansi/keymaps/teimor/keymap_user.h | 48 ---
.../keychron/q1/ansi/keymaps/teimor/readme.md | 13 -
.../q1/ansi/keymaps/teimor/rgb_matrix_user.c | 92 -----
.../q1/ansi/keymaps/teimor/rgb_matrix_user.h | 25 --
.../keychron/q1/ansi/keymaps/teimor/rules.mk | 14 -
.../ansi/keymaps/teimor/tap_dance_mac_caps.c | 50 ---
.../ansi/keymaps/teimor/tap_dance_mac_caps.h | 23 --
.../q1/ansi/keymaps/teimor/tap_dance_setup.c | 49 ---
.../q1/ansi/keymaps/teimor/tap_dance_setup.h | 38 --
.../q1/ansi/keymaps/teimor/tap_dance_user.c | 28 --
.../ansi/keymaps/teimor/tap_dance_win_caps.c | 50 ---
.../ansi/keymaps/teimor/tap_dance_win_caps.h | 23 --
.../keychron/q1/ansi/keymaps/via/keymap.c | 61 ---
keyboards/keychron/q1/ansi/readme.md | 1 -
keyboards/keychron/q1/ansi/rules.mk | 15 -
.../ansi_atmega32u4.c} | 44 ++-
.../config.h | 14 +-
.../keychron/q1/ansi_atmega32u4/info.json | 126 ++++++
.../ansi_atmega32u4/keymaps/default/keymap.c | 63 +++
.../ansi_atmega32u4/keymaps/keychron/keymap.c | 81 ++++
.../keymaps/keychron/rules.mk | 2 +-
.../q1/ansi_atmega32u4/keymaps/via/keymap.c | 63 +++
.../keymaps/via/rules.mk | 0
.../keychron/q1/ansi_atmega32u4/rules.mk | 1 +
.../ansi_atmega32u4_encoder.c} | 63 ++-
.../ansi_atmega32u4_encoder}/config.h | 15 +-
.../q1/ansi_atmega32u4_encoder/info.json | 131 +++++++
.../keymaps/default/keymap.c | 72 ++++
.../keymaps/default/rules.mk | 0
.../keymaps/keychron/keymap.c | 90 +++++
.../keymaps/keychron/rules.mk | 2 +-
.../keymaps/via/keymap.c | 72 ++++
.../keymaps/via/rules.mk | 0
.../q1/ansi_atmega32u4_encoder/rules.mk | 1 +
keyboards/keychron/q1/ansi_encoder/info.json | 120 ------
.../q1/ansi_encoder/keymaps/default/keymap.c | 67 ----
.../q1/ansi_encoder/keymaps/default/rules.mk | 1 -
.../q1/ansi_encoder/keymaps/keychron/keymap.c | 76 ----
.../q1/ansi_encoder/keymaps/via/keymap.c | 67 ----
keyboards/keychron/q1/ansi_encoder/readme.md | 4 -
keyboards/keychron/q1/ansi_encoder/rules.mk | 16 -
.../ansi_stm32l432/ansi_stm32l432.c} | 43 +-
.../ansi/rgb => q1/ansi_stm32l432}/config.h | 37 +-
.../keychron/q1/ansi_stm32l432/info.json | 125 ++++++
.../ansi_stm32l432/keymaps/default}/keymap.c | 2 +-
.../ansi_stm32l432}/keymaps/keychron/keymap.c | 9 +-
.../ansi_stm32l432/keymaps/keychron/rules.mk | 3 +
.../ansi_stm32l432/keymaps/via}/keymap.c | 4 +-
.../keymaps/via/rules.mk | 0
keyboards/keychron/q1/ansi_stm32l432/rules.mk | 14 +
.../ansi_stm32l432_encoder.c | 158 ++++++++
.../ansi_stm32l432_encoder}/config.h | 41 +-
.../q1/ansi_stm32l432_encoder/info.json | 130 +++++++
.../keymaps/default/keymap.c | 4 +-
.../keymaps/default/rules.mk | 1 +
.../keymaps/keychron/keymap.c | 11 +-
.../keymaps/keychron/rules.mk | 4 +
.../keymaps/via/keymap.c | 9 +-
.../keymaps/via/rules.mk | 1 +
.../q1/ansi_stm32l432_encoder/rules.mk | 14 +
keyboards/keychron/q1/config.h | 24 +-
keyboards/keychron/{q1v2 => q1}/halconf.h | 3 +
keyboards/keychron/q1/iso/config.h | 22 --
keyboards/keychron/q1/iso/info.json | 116 ------
.../keychron/q1/iso/keymaps/default/keymap.c | 61 ---
.../keychron/q1/iso/keymaps/keychron/keymap.c | 67 ----
.../keychron/q1/iso/keymaps/keychron/rules.mk | 4 -
.../q1/iso/keymaps/kubahorak/README.md | 16 -
.../q1/iso/keymaps/kubahorak/config.h | 25 --
.../q1/iso/keymaps/kubahorak/keymap.c | 66 ----
.../iso/keymaps/kubahorak/rgb_matrix_user.c | 76 ----
.../iso/keymaps/kubahorak/rgb_matrix_user.h | 24 --
.../q1/iso/keymaps/kubahorak/rules.mk | 6 -
.../q1/iso/keymaps/mkillewald_iso/config.h | 23 --
.../q1/iso/keymaps/mkillewald_iso/keymap.c | 153 --------
.../iso/keymaps/mkillewald_iso/keymap_user.h | 33 --
.../q1/iso/keymaps/mkillewald_iso/readme.md | 54 ---
.../keymaps/mkillewald_iso/rgb_matrix_user.c | 84 ----
.../keymaps/mkillewald_iso/rgb_matrix_user.h | 26 --
.../q1/iso/keymaps/mkillewald_iso/rules.mk | 6 -
.../keychron/q1/iso/keymaps/via/keymap.c | 61 ---
.../q1/iso/keymaps/victorsavu3/config.h | 69 ----
.../q1/iso/keymaps/victorsavu3/keymap.c | 146 -------
.../q1/iso/keymaps/victorsavu3/readme.md | 4 -
.../q1/iso/keymaps/victorsavu3/rules.mk | 3 -
keyboards/keychron/q1/iso/readme.md | 1 -
keyboards/keychron/q1/iso/rules.mk | 15 -
.../{iso_encoder => iso_atmega32u4}/config.h | 5 +-
.../keychron/q1/iso_atmega32u4/info.json | 127 ++++++
.../iso_atmega32u4.c} | 19 +-
.../iso_atmega32u4/keymaps/default/keymap.c | 63 +++
.../keymaps/keychron/keymap.c | 33 +-
.../iso_atmega32u4}/keymaps/keychron/rules.mk | 2 +-
.../q1/iso_atmega32u4/keymaps/via/keymap.c | 63 +++
.../iso_atmega32u4}/keymaps/via/rules.mk | 0
keyboards/keychron/q1/iso_atmega32u4/rules.mk | 1 +
.../iso_atmega32u4_encoder}/config.h | 15 +-
.../q1/iso_atmega32u4_encoder/info.json | 132 +++++++
.../iso_atmega32u4_encoder.c} | 71 ++--
.../keymaps/default/keymap.c | 24 +-
.../keymaps/default/rules.mk | 1 +
.../keymaps/keychron/keymap.c | 27 +-
.../keymaps/keychron/rules.mk | 2 +-
.../keymaps/via/keymap.c | 25 +-
.../keymaps/via/rules.mk | 0
.../q1/iso_atmega32u4_encoder/rules.mk | 1 +
keyboards/keychron/q1/iso_encoder/info.json | 121 ------
.../q1/iso_encoder/keymaps/default/rules.mk | 1 -
.../q1/iso_encoder/keymaps/via/rules.mk | 2 -
keyboards/keychron/q1/iso_encoder/readme.md | 5 -
keyboards/keychron/q1/iso_encoder/rules.mk | 18 -
keyboards/keychron/q1/iso_stm32l432/config.h | 51 +++
keyboards/keychron/q1/iso_stm32l432/info.json | 126 ++++++
.../iso_stm32l432/iso_stm32l432.c} | 43 +-
.../iso_stm32l432/keymaps/default}/keymap.c | 2 +-
.../iso_stm32l432}/keymaps/keychron/keymap.c | 9 +-
.../iso_stm32l432/keymaps/keychron/rules.mk | 3 +
.../iso_stm32l432/keymaps/via}/keymap.c | 2 +-
.../iso_stm32l432}/keymaps/via/rules.mk | 0
keyboards/keychron/q1/iso_stm32l432/rules.mk | 14 +
.../q1/iso_stm32l432_encoder/config.h | 54 +++
.../q1/iso_stm32l432_encoder/info.json | 131 +++++++
.../iso_stm32l432_encoder.c} | 43 +-
.../keymaps/default/keymap.c | 72 ++++
.../keymaps/default/rules.mk | 1 +
.../keymaps/keychron/keymap.c | 92 +++++
.../keymaps/keychron/rules.mk | 4 +
.../keymaps/via/keymap.c | 72 ++++
.../keymaps/via/rules.mk | 0
.../q1/iso_stm32l432_encoder/rules.mk | 14 +
keyboards/keychron/q1/jis_stm32l432/config.h | 50 +++
keyboards/keychron/q1/jis_stm32l432/info.json | 129 ++++++
.../jis_stm32l432/jis_stm32l432.c} | 43 +-
.../jis_stm32l432/keymaps/default}/keymap.c | 10 +-
.../jis_stm32l432}/keymaps/keychron/keymap.c | 17 +-
.../jis_stm32l432/keymaps/keychron/rules.mk | 3 +
.../jis_stm32l432/keymaps/via}/keymap.c | 10 +-
.../jis_stm32l432}/keymaps/via/rules.mk | 0
keyboards/keychron/q1/jis_stm32l432/rules.mk | 14 +
.../q1/jis_stm32l432_encoder/config.h | 54 +++
.../q1/jis_stm32l432_encoder/info.json | 134 +++++++
.../jis_stm32l432_encoder.c} | 43 +-
.../keymaps/default}/keymap.c | 12 +-
.../keymaps/default/rules.mk | 1 +
.../keymaps/keychron/keymap.c | 21 +-
.../keymaps/keychron/rules.mk | 4 +
.../keymaps/via}/keymap.c | 12 +-
.../keymaps/via/rules.mk | 0
.../q1/jis_stm32l432_encoder/rules.mk | 14 +
keyboards/keychron/{q1v2 => q1}/mcuconf.h | 0
keyboards/keychron/q1/q1.c | 19 +-
keyboards/keychron/q1/readme.md | 26 +-
.../keychron/q10/ansi_encoder/ansi_encoder.c | 14 +-
keyboards/keychron/q10/ansi_encoder/info.json | 198 +++++-----
.../q10/ansi_encoder/keymaps/default/keymap.c | 4 +-
.../ansi_encoder/keymaps/keychron/keymap.c | 9 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q10/ansi_encoder/keymaps/via/keymap.c | 4 +-
keyboards/keychron/q10/ansi_encoder/readme.md | 5 -
keyboards/keychron/q10/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/q10/config.h | 30 +-
keyboards/keychron/q10/halconf.h | 3 +
keyboards/keychron/q10/iso_encoder/info.json | 200 +++++-----
.../keychron/q10/iso_encoder/iso_encoder.c | 6 +-
.../q10/iso_encoder/keymaps/default/keymap.c | 4 +-
.../q10/iso_encoder/keymaps/keychron/keymap.c | 9 +-
.../q10/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../q10/iso_encoder/keymaps/via/keymap.c | 4 +-
keyboards/keychron/q10/iso_encoder/readme.md | 5 -
keyboards/keychron/q10/iso_encoder/rules.mk | 18 +-
keyboards/keychron/q10/matrix.c | 208 ----------
keyboards/keychron/q10/q10.c | 51 +--
keyboards/keychron/q10/readme.md | 6 +-
.../keychron/q11/ansi_encoder/ansi_encoder.c | 63 ++-
keyboards/keychron/q11/ansi_encoder/config.h | 5 +-
keyboards/keychron/q11/ansi_encoder/info.json | 247 +++++++-----
.../q11/ansi_encoder/keymaps/default/keymap.c | 16 +-
.../ansi_encoder/keymaps/keychron/keymap.c | 34 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q11/ansi_encoder/keymaps/via/keymap.c | 14 +-
keyboards/keychron/q11/ansi_encoder/rules.mk | 5 +-
keyboards/keychron/q11/config.h | 70 +++-
keyboards/keychron/q11/factory.c | 130 +++++++
keyboards/keychron/q11/halconf.h | 3 +
keyboards/keychron/q11/info.json | 290 --------------
keyboards/keychron/q11/iso_encoder/config.h | 3 -
keyboards/keychron/q11/iso_encoder/info.json | 249 +++++++-----
.../keychron/q11/iso_encoder/iso_encoder.c | 54 +++
.../q11/iso_encoder/keymaps/default/keymap.c | 14 +-
.../q11/iso_encoder/keymaps/keychron/keymap.c | 22 +-
.../q11/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q11/iso_encoder/keymaps/via/keymap.c | 16 +-
keyboards/keychron/q11/iso_encoder/rules.mk | 7 +-
keyboards/keychron/q11/q11.c | 83 +---
keyboards/keychron/q11/readme.md | 4 +-
.../keychron/q12/ansi_encoder/ansi_encoder.c | 216 +++++------
keyboards/keychron/q12/ansi_encoder/config.h | 1 +
keyboards/keychron/q12/ansi_encoder/info.json | 224 ++++++-----
.../q12/ansi_encoder/keymaps/default/keymap.c | 4 +-
.../ansi_encoder/keymaps/keychron/keymap.c | 9 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q12/ansi_encoder/keymaps/via/keymap.c | 4 +-
keyboards/keychron/q12/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/q12/config.h | 31 +-
keyboards/keychron/q12/halconf.h | 4 +-
keyboards/keychron/q12/iso_encoder/config.h | 1 +
keyboards/keychron/q12/iso_encoder/info.json | 226 ++++++-----
.../q12/iso_encoder/keymaps/default/keymap.c | 4 +-
.../q12/iso_encoder/keymaps/keychron/keymap.c | 9 +-
.../q12/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../q12/iso_encoder/keymaps/via/keymap.c | 4 +-
keyboards/keychron/q12/iso_encoder/rules.mk | 17 +-
keyboards/keychron/q12/matrix.c | 208 ----------
keyboards/keychron/q12/q12.c | 54 ---
keyboards/keychron/q12/readme.md | 10 +-
keyboards/keychron/q1v2/ansi/config.h | 25 --
keyboards/keychron/q1v2/ansi/info.json | 190 ---------
.../q1v2/ansi/keymaps/keychron/rules.mk | 4 -
keyboards/keychron/q1v2/ansi/rules.mk | 1 -
.../keychron/q1v2/ansi_encoder/ansi_encoder.c | 117 ------
.../keychron/q1v2/ansi_encoder/info.json | 199 ----------
.../ansi_encoder/keymaps/default/rules.mk | 1 -
.../ansi_encoder/keymaps/keychron/rules.mk | 5 -
keyboards/keychron/q1v2/ansi_encoder/rules.mk | 1 -
keyboards/keychron/q1v2/info.json | 58 ---
keyboards/keychron/q1v2/iso/config.h | 25 --
keyboards/keychron/q1v2/iso/info.json | 192 ---------
.../q1v2/iso/keymaps/keychron/rules.mk | 4 -
keyboards/keychron/q1v2/iso/rules.mk | 1 -
keyboards/keychron/q1v2/iso_encoder/info.json | 201 ----------
.../q1v2/iso_encoder/keymaps/default/keymap.c | 72 ----
.../q1v2/iso_encoder/keymaps/default/rules.mk | 1 -
.../iso_encoder/keymaps/keychron/rules.mk | 5 -
.../q1v2/iso_encoder/keymaps/via/keymap.c | 72 ----
keyboards/keychron/q1v2/iso_encoder/rules.mk | 1 -
keyboards/keychron/q1v2/jis/config.h | 25 --
keyboards/keychron/q1v2/jis/info.json | 198 ----------
.../q1v2/jis/keymaps/keychron/rules.mk | 4 -
keyboards/keychron/q1v2/jis/rules.mk | 1 -
keyboards/keychron/q1v2/jis_encoder/info.json | 207 ----------
.../q1v2/jis_encoder/keymaps/default/rules.mk | 1 -
.../jis_encoder/keymaps/keychron/rules.mk | 5 -
keyboards/keychron/q1v2/jis_encoder/rules.mk | 1 -
keyboards/keychron/q1v2/matrix.c | 205 ----------
keyboards/keychron/q1v2/q1v2.c | 86 ----
keyboards/keychron/q1v2/readme.md | 31 --
keyboards/keychron/q2/ansi/ansi.c | 15 +-
keyboards/keychron/q2/ansi/config.h | 5 +-
keyboards/keychron/q2/ansi/info.json | 151 ++++----
.../keychron/q2/ansi/keymaps/default/keymap.c | 66 ++--
.../keymap_user.h => keychron/config.h} | 14 +-
.../q2/ansi/keymaps/keychron/keymap.c | 78 ++--
.../q2/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q2/ansi/keymaps/ladduro/config.h | 25 --
.../keychron/q2/ansi/keymaps/ladduro/keymap.c | 68 ----
.../q2/ansi/keymaps/ladduro/readme.md | 29 --
.../q2/ansi/keymaps/ladduro/rgb_matrix_user.c | 73 ----
.../q2/ansi/keymaps/ladduro/rgb_matrix_user.h | 25 --
.../keychron/q2/ansi/keymaps/ladduro/rules.mk | 5 -
.../ansi/keymaps/via/config.h} | 15 +-
.../keychron/q2/ansi/keymaps/via/keymap.c | 66 ++--
keyboards/keychron/q2/ansi/readme.md | 1 -
keyboards/keychron/q2/ansi/rules.mk | 16 +-
.../keychron/q2/ansi_encoder/ansi_encoder.c | 15 +-
keyboards/keychron/q2/ansi_encoder/config.h | 5 +-
keyboards/keychron/q2/ansi_encoder/info.json | 151 ++++----
.../q2/ansi_encoder/keymaps/default/keymap.c | 80 ++--
.../q2/ansi_encoder/keymaps/default/rules.mk | 2 +-
.../ansi_encoder/keymaps/keychron/config.h} | 15 +-
.../q2/ansi_encoder/keymaps/keychron/keymap.c | 92 +++--
.../q2/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../keymaps/via/config.h} | 12 +-
.../q2/ansi_encoder/keymaps/via/keymap.c | 80 ++--
.../q2/ansi_encoder/keymaps/via/rules.mk | 2 +-
keyboards/keychron/q2/ansi_encoder/readme.md | 5 -
keyboards/keychron/q2/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/q2/config.h | 36 +-
keyboards/keychron/q2/halconf.h | 3 +
keyboards/keychron/q2/iso/config.h | 5 +-
keyboards/keychron/q2/iso/info.json | 153 ++++----
keyboards/keychron/q2/iso/iso.c | 13 +-
.../keychron/q2/iso/keymaps/default/keymap.c | 66 ++--
.../keychron/q2/iso/keymaps/keychron/config.h | 17 +
.../keychron/q2/iso/keymaps/keychron/keymap.c | 78 ++--
.../keychron/q2/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q2/iso/keymaps/via/config.h | 17 +
.../keychron/q2/iso/keymaps/via/keymap.c | 66 ++--
keyboards/keychron/q2/iso/readme.md | 1 -
keyboards/keychron/q2/iso/rules.mk | 16 +-
keyboards/keychron/q2/iso_encoder/config.h | 5 +-
keyboards/keychron/q2/iso_encoder/info.json | 153 ++++----
.../keychron/q2/iso_encoder/iso_encoder.c | 13 +-
.../q2/iso_encoder/keymaps/default/keymap.c | 80 ++--
.../q2/iso_encoder/keymaps/default/rules.mk | 2 +-
.../q2/iso_encoder/keymaps/dhertz/keymap.c | 95 -----
.../q2/iso_encoder/keymaps/dhertz/rules.mk | 1 -
.../q2/iso_encoder/keymaps/keychron/config.h | 17 +
.../q2/iso_encoder/keymaps/keychron/keymap.c | 88 +++--
.../q2/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q2/iso_encoder/keymaps/via/config.h | 17 +
.../q2/iso_encoder/keymaps/via/keymap.c | 80 ++--
keyboards/keychron/q2/iso_encoder/readme.md | 5 -
keyboards/keychron/q2/iso_encoder/rules.mk | 16 +-
keyboards/keychron/q2/jis/config.h | 4 +-
keyboards/keychron/q2/jis/info.json | 157 ++++----
keyboards/keychron/q2/jis/jis.c | 8 +-
.../keychron/q2/jis/keymaps/default/keymap.c | 20 +-
.../keychron/q2/jis/keymaps/keychron/config.h | 17 +
.../keychron/q2/jis/keymaps/keychron/keymap.c | 29 +-
.../keychron/q2/jis/keymaps/keychron/rules.mk | 2 +-
.../keychron/q2/jis/keymaps/via/config.h | 17 +
.../keychron/q2/jis/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q2/jis/rules.mk | 15 +-
keyboards/keychron/q2/jis_encoder/config.h | 4 +-
keyboards/keychron/q2/jis_encoder/info.json | 158 ++++----
.../keychron/q2/jis_encoder/jis_encoder.c | 8 +-
.../q2/jis_encoder/keymaps/default/keymap.c | 28 +-
.../q2/jis_encoder/keymaps/keychron/config.h | 17 +
.../q2/jis_encoder/keymaps/keychron/keymap.c | 45 ++-
.../q2/jis_encoder/keymaps/keychron/rules.mk | 3 +-
.../q2/jis_encoder/keymaps/via/config.h | 17 +
.../q2/jis_encoder/keymaps/via/keymap.c | 26 +-
.../q2/jis_encoder/keymaps/via/rules.mk | 1 -
keyboards/keychron/q2/jis_encoder/rules.mk | 16 +-
keyboards/keychron/q2/q2.c | 56 +--
keyboards/keychron/q2/readme.md | 14 +-
keyboards/keychron/q3/ansi/ansi.c | 8 +-
keyboards/keychron/q3/ansi/config.h | 11 -
keyboards/keychron/q3/ansi/info.json | 194 +++++-----
.../keychron/q3/ansi/keymaps/default/keymap.c | 11 +-
.../q3/ansi/keymaps/keychron/keymap.c | 12 +-
.../q3/ansi/keymaps/keychron/rules.mk | 6 +-
.../keychron/q3/ansi/keymaps/via/keymap.c | 11 +-
keyboards/keychron/q3/ansi/readme.md | 1 -
keyboards/keychron/q3/ansi/rules.mk | 16 +-
.../keychron/q3/ansi_encoder/ansi_encoder.c | 11 +-
keyboards/keychron/q3/ansi_encoder/config.h | 8 +-
keyboards/keychron/q3/ansi_encoder/info.json | 196 +++++-----
.../q3/ansi_encoder/keymaps/default/keymap.c | 19 +-
.../q3/ansi_encoder/keymaps/keychron/keymap.c | 60 +--
.../q3/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q3/ansi_encoder/keymaps/via/keymap.c | 19 +-
keyboards/keychron/q3/ansi_encoder/readme.md | 5 -
keyboards/keychron/q3/ansi_encoder/rules.mk | 19 +-
keyboards/keychron/q3/config.h | 27 +-
keyboards/keychron/q3/halconf.h | 3 +
keyboards/keychron/q3/iso/config.h | 10 -
keyboards/keychron/q3/iso/info.json | 196 +++++-----
keyboards/keychron/q3/iso/iso.c | 8 +-
.../keychron/q3/iso/keymaps/default/keymap.c | 42 +-
.../keychron/q3/iso/keymaps/keychron/keymap.c | 6 +
.../keychron/q3/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q3/iso/keymaps/via/keymap.c | 42 +-
keyboards/keychron/q3/iso/readme.md | 1 -
keyboards/keychron/q3/iso/rules.mk | 16 +-
keyboards/keychron/q3/iso_encoder/config.h | 8 +-
keyboards/keychron/q3/iso_encoder/info.json | 198 +++++-----
.../keychron/q3/iso_encoder/iso_encoder.c | 8 +-
.../q3/iso_encoder/keymaps/default/keymap.c | 23 +-
.../q3/iso_encoder/keymaps/keychron/keymap.c | 64 +--
.../q3/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../q3/iso_encoder/keymaps/via/keymap.c | 23 +-
keyboards/keychron/q3/iso_encoder/readme.md | 5 -
keyboards/keychron/q3/iso_encoder/rules.mk | 19 +-
keyboards/keychron/q3/jis/config.h | 13 -
keyboards/keychron/q3/jis/info.json | 202 +++++-----
keyboards/keychron/q3/jis/jis.c | 198 +++++-----
.../keychron/q3/jis/keymaps/default/keymap.c | 15 +-
.../keychron/q3/jis/keymaps/keychron/keymap.c | 16 +-
.../keychron/q3/jis/keymaps/keychron/rules.mk | 2 +-
.../keychron/q3/jis/keymaps/via/keymap.c | 15 +-
keyboards/keychron/q3/jis/readme.md | 1 -
keyboards/keychron/q3/jis/rules.mk | 16 +-
keyboards/keychron/q3/jis_encoder/config.h | 9 -
keyboards/keychron/q3/jis_encoder/info.json | 204 +++++-----
.../keychron/q3/jis_encoder/jis_encoder.c | 200 +++++-----
.../q3/jis_encoder/keymaps/default/keymap.c | 27 +-
.../q3/jis_encoder/keymaps/keychron/keymap.c | 60 +--
.../q3/jis_encoder/keymaps/keychron/rules.mk | 3 +-
.../q3/jis_encoder/keymaps/via/keymap.c | 25 +-
keyboards/keychron/q3/jis_encoder/readme.md | 5 -
keyboards/keychron/q3/jis_encoder/rules.mk | 19 +-
keyboards/keychron/q3/matrix.c | 197 ----------
keyboards/keychron/q3/q3.c | 49 +--
keyboards/keychron/q3/readme.md | 22 +-
keyboards/keychron/q4/ansi_v1/ansi_v1.c | 4 +-
keyboards/keychron/q4/ansi_v1/config.h | 3 +-
keyboards/keychron/q4/ansi_v1/info.json | 137 ++++---
.../q4/ansi_v1/keymaps/default/keymap.c | 27 +-
.../q4/ansi_v1/keymaps/keychron/keymap.c | 34 +-
.../q4/ansi_v1/keymaps/keychron/rules.mk | 2 +-
.../keychron/q4/ansi_v1/keymaps/via/keymap.c | 27 +-
.../keychron/q4/ansi_v1/keymaps/via/rules.mk | 2 +-
keyboards/keychron/q4/ansi_v1/readme.md | 1 -
keyboards/keychron/q4/ansi_v1/rules.mk | 14 +-
keyboards/keychron/q4/ansi_v2/ansi_v2.c | 4 +-
keyboards/keychron/q4/ansi_v2/config.h | 3 -
keyboards/keychron/q4/ansi_v2/info.json | 137 ++++---
.../q4/ansi_v2/keymaps/default/keymap.c | 27 +-
.../q4/ansi_v2/keymaps/keychron/keymap.c | 34 +-
.../q4/ansi_v2/keymaps/keychron/rules.mk | 2 +-
.../keychron/q4/ansi_v2/keymaps/via/keymap.c | 27 +-
.../keychron/q4/ansi_v2/keymaps/via/rules.mk | 2 +-
keyboards/keychron/q4/ansi_v2/readme.md | 1 -
keyboards/keychron/q4/ansi_v2/rules.mk | 14 +-
keyboards/keychron/q4/config.h | 22 +-
keyboards/keychron/q4/iso/config.h | 3 -
keyboards/keychron/q4/iso/info.json | 139 ++++---
keyboards/keychron/q4/iso/iso.c | 4 +-
.../keychron/q4/iso/keymaps/default/keymap.c | 27 +-
.../keychron/q4/iso/keymaps/keychron/keymap.c | 28 +-
.../keychron/q4/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q4/iso/keymaps/via/keymap.c | 27 +-
.../keychron/q4/iso/keymaps/via/rules.mk | 2 +-
keyboards/keychron/q4/iso/readme.md | 1 -
keyboards/keychron/q4/iso/rules.mk | 14 +-
keyboards/keychron/q4/q4.c | 46 ---
keyboards/keychron/q4/readme.md | 10 +-
keyboards/keychron/q5/ansi/ansi.c | 34 +-
keyboards/keychron/q5/ansi/config.h | 4 +-
keyboards/keychron/q5/ansi/info.json | 220 ++++++-----
.../keychron/q5/ansi/keymaps/default/keymap.c | 39 +-
.../q5/ansi/keymaps/keychron/keymap.c | 44 ++-
.../q5/ansi/keymaps/keychron/rules.mk | 3 +-
.../keychron/q5/ansi/keymaps/via/keymap.c | 39 +-
keyboards/keychron/q5/ansi/readme.md | 1 -
keyboards/keychron/q5/ansi/rules.mk | 17 +-
.../keychron/q5/ansi_encoder/ansi_encoder.c | 32 +-
keyboards/keychron/q5/ansi_encoder/config.h | 4 +-
keyboards/keychron/q5/ansi_encoder/info.json | 216 ++++++-----
.../q5/ansi_encoder/keymaps/default/keymap.c | 51 +--
.../q5/ansi_encoder/keymaps/keychron/keymap.c | 72 ++--
.../q5/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q5/ansi_encoder/keymaps/via/keymap.c | 51 +--
keyboards/keychron/q5/ansi_encoder/readme.md | 5 -
keyboards/keychron/q5/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/q5/config.h | 40 +-
keyboards/keychron/q5/halconf.h | 3 +
keyboards/keychron/q5/iso/config.h | 4 +-
keyboards/keychron/q5/iso/info.json | 222 ++++++-----
keyboards/keychron/q5/iso/iso.c | 38 +-
.../keychron/q5/iso/keymaps/default/keymap.c | 41 +-
.../keychron/q5/iso/keymaps/keychron/keymap.c | 44 ++-
.../keychron/q5/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/q5/iso/keymaps/via/keymap.c | 39 +-
keyboards/keychron/q5/iso/readme.md | 1 -
keyboards/keychron/q5/iso/rules.mk | 17 +-
keyboards/keychron/q5/iso_encoder/config.h | 4 +-
keyboards/keychron/q5/iso_encoder/info.json | 218 ++++++-----
.../keychron/q5/iso_encoder/iso_encoder.c | 32 +-
.../q5/iso_encoder/keymaps/default/keymap.c | 51 +--
.../q5/iso_encoder/keymaps/keychron/keymap.c | 56 +--
.../q5/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../q5/iso_encoder/keymaps/via/keymap.c | 63 +--
keyboards/keychron/q5/iso_encoder/readme.md | 5 -
keyboards/keychron/q5/iso_encoder/rules.mk | 18 +-
keyboards/keychron/q5/matrix.c | 113 +++---
keyboards/keychron/q5/q5.c | 60 +--
keyboards/keychron/q5/readme.md | 14 +-
keyboards/keychron/q6/ansi/ansi.c | 42 +-
keyboards/keychron/q6/ansi/config.h | 15 +-
keyboards/keychron/q6/ansi/info.json | 236 +++++------
.../keychron/q6/ansi/keymaps/default/keymap.c | 39 +-
.../q6/ansi/keymaps/keychron/keymap.c | 40 +-
.../q6/ansi/keymaps/keychron/rules.mk | 3 +-
.../keychron/q6/ansi/keymaps/via/keymap.c | 39 +-
keyboards/keychron/q6/ansi/readme.md | 1 -
keyboards/keychron/q6/ansi/rules.mk | 18 +-
.../keychron/q6/ansi_encoder/ansi_encoder.c | 44 +--
keyboards/keychron/q6/ansi_encoder/config.h | 16 +-
keyboards/keychron/q6/ansi_encoder/info.json | 238 ++++++------
.../q6/ansi_encoder/keymaps/default/keymap.c | 43 +-
.../q6/ansi_encoder/keymaps/keychron/keymap.c | 46 ++-
.../q6/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q6/ansi_encoder/keymaps/via/keymap.c | 55 +--
.../q6/ansi_encoder/keymaps/via/rules.mk | 2 +-
keyboards/keychron/q6/ansi_encoder/readme.md | 5 -
keyboards/keychron/q6/ansi_encoder/rules.mk | 19 +-
keyboards/keychron/q6/config.h | 31 +-
keyboards/keychron/q6/halconf.h | 3 +
keyboards/keychron/q6/iso/config.h | 15 +-
keyboards/keychron/q6/iso/info.json | 238 ++++++------
keyboards/keychron/q6/iso/iso.c | 44 +--
.../keychron/q6/iso/keymaps/default/keymap.c | 39 +-
.../keychron/q6/iso/keymaps/keychron/keymap.c | 40 +-
.../keychron/q6/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/q6/iso/keymaps/via/keymap.c | 39 +-
keyboards/keychron/q6/iso/readme.md | 1 -
keyboards/keychron/q6/iso/rules.mk | 19 +-
keyboards/keychron/q6/iso_encoder/config.h | 16 +-
keyboards/keychron/q6/iso_encoder/info.json | 240 ++++++------
.../keychron/q6/iso_encoder/iso_encoder.c | 44 +--
.../q6/iso_encoder/keymaps/default/keymap.c | 41 +-
.../q6/iso_encoder/keymaps/keychron/keymap.c | 61 +--
.../q6/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../q6/iso_encoder/keymaps/via/keymap.c | 53 +--
keyboards/keychron/q6/iso_encoder/readme.md | 5 -
keyboards/keychron/q6/iso_encoder/rules.mk | 20 +-
keyboards/keychron/q6/matrix.c | 219 -----------
keyboards/keychron/q6/q6.c | 60 +--
keyboards/keychron/q6/readme.md | 12 +-
keyboards/keychron/q60/ansi/ansi.c | 4 +-
keyboards/keychron/q60/ansi/config.h | 3 +-
keyboards/keychron/q60/ansi/info.json | 135 ++++---
.../q60/ansi/keymaps/default/keymap.c | 32 +-
.../q60/ansi/keymaps/keychron/config.h | 17 +
.../q60/ansi/keymaps/keychron/keymap.c | 17 +-
.../q60/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q60/ansi/keymaps/via/config.h | 17 +
.../keychron/q60/ansi/keymaps/via/keymap.c | 6 +-
keyboards/keychron/q60/ansi/rules.mk | 13 +-
keyboards/keychron/q60/config.h | 18 +-
keyboards/keychron/q60/q60.c | 4 +-
keyboards/keychron/q60/readme.md | 4 +-
.../keychron/q65/ansi_encoder/ansi_encoder.c | 12 +-
keyboards/keychron/q65/ansi_encoder/info.json | 166 ++++----
.../q65/ansi_encoder/keymaps/default/keymap.c | 26 +-
.../ansi_encoder/keymaps/keychron/config.h | 17 +
.../ansi_encoder/keymaps/keychron/keymap.c | 38 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q65/ansi_encoder/keymaps/via/config.h | 17 +
.../q65/ansi_encoder/keymaps/via/keymap.c | 24 +-
keyboards/keychron/q65/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/q65/config.h | 32 +-
keyboards/keychron/q65/halconf.h | 3 +
keyboards/keychron/q65/matrix.c | 231 -----------
keyboards/keychron/q65/q65.c | 47 ---
keyboards/keychron/q65/readme.md | 4 +-
keyboards/keychron/q7/ansi/ansi.c | 8 +-
keyboards/keychron/q7/ansi/config.h | 2 +-
keyboards/keychron/q7/ansi/info.json | 159 ++++----
.../keychron/q7/ansi/keymaps/default/keymap.c | 20 +-
.../q7/ansi/keymaps/keychron/config.h | 17 +
.../q7/ansi/keymaps/keychron/keymap.c | 29 +-
.../q7/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q7/ansi/keymaps/via/config.h | 17 +
.../keychron/q7/ansi/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q7/ansi/rules.mk | 15 +-
keyboards/keychron/q7/config.h | 16 +-
keyboards/keychron/q7/iso/config.h | 2 +-
keyboards/keychron/q7/iso/info.json | 161 ++++----
keyboards/keychron/q7/iso/iso.c | 6 +-
.../keychron/q7/iso/keymaps/default/keymap.c | 20 +-
.../keychron/q7/iso/keymaps/keychron/config.h | 17 +
.../keychron/q7/iso/keymaps/keychron/keymap.c | 29 +-
.../keychron/q7/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q7/iso/keymaps/via/config.h | 17 +
.../keychron/q7/iso/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q7/iso/rules.mk | 15 +-
keyboards/keychron/q7/q7.c | 48 +--
keyboards/keychron/q7/readme.md | 6 +-
keyboards/keychron/q8/ansi/ansi.c | 8 +-
keyboards/keychron/q8/ansi/config.h | 2 +-
keyboards/keychron/q8/ansi/info.json | 153 ++++----
.../keychron/q8/ansi/keymaps/default/keymap.c | 20 +-
.../q8/ansi/keymaps/keychron/config.h | 17 +
.../q8/ansi/keymaps/keychron/keymap.c | 25 +-
.../q8/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q8/ansi/keymaps/via/config.h | 17 +
.../keychron/q8/ansi/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q8/ansi/readme.md | 1 -
keyboards/keychron/q8/ansi/rules.mk | 15 +-
.../keychron/q8/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/q8/ansi_encoder/info.json | 153 ++++----
.../q8/ansi_encoder/keymaps/default/keymap.c | 28 +-
.../q8/ansi_encoder/keymaps/keychron/config.h | 17 +
.../q8/ansi_encoder/keymaps/keychron/keymap.c | 33 +-
.../q8/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q8/ansi_encoder/keymaps/via/config.h | 17 +
.../q8/ansi_encoder/keymaps/via/keymap.c | 28 +-
keyboards/keychron/q8/ansi_encoder/readme.md | 5 -
keyboards/keychron/q8/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/q8/config.h | 16 +-
keyboards/keychron/q8/halconf.h | 3 +
keyboards/keychron/q8/iso/config.h | 2 +-
keyboards/keychron/q8/iso/info.json | 155 ++++----
keyboards/keychron/q8/iso/iso.c | 8 +-
.../keychron/q8/iso/keymaps/default/keymap.c | 20 +-
.../keychron/q8/iso/keymaps/keychron/config.h | 17 +
.../keychron/q8/iso/keymaps/keychron/keymap.c | 25 +-
.../keychron/q8/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q8/iso/keymaps/via/config.h | 17 +
.../keychron/q8/iso/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q8/iso/readme.md | 1 -
keyboards/keychron/q8/iso/rules.mk | 15 +-
keyboards/keychron/q8/iso_encoder/config.h | 2 +-
keyboards/keychron/q8/iso_encoder/info.json | 155 ++++----
.../keychron/q8/iso_encoder/iso_encoder.c | 8 +-
.../q8/iso_encoder/keymaps/default/keymap.c | 28 +-
.../q8/iso_encoder/keymaps/keychron/config.h | 17 +
.../q8/iso_encoder/keymaps/keychron/keymap.c | 35 +-
.../q8/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q8/iso_encoder/keymaps/via/config.h | 17 +
.../q8/iso_encoder/keymaps/via/keymap.c | 30 +-
keyboards/keychron/q8/iso_encoder/readme.md | 5 -
keyboards/keychron/q8/iso_encoder/rules.mk | 16 +-
keyboards/keychron/q8/q8.c | 51 +--
keyboards/keychron/q8/readme.md | 10 +-
keyboards/keychron/q9/ansi/ansi.c | 8 +-
keyboards/keychron/q9/ansi/config.h | 2 +-
keyboards/keychron/q9/ansi/info.json | 119 +++---
.../keychron/q9/ansi/keymaps/default/keymap.c | 20 +-
.../q9/ansi/keymaps/keychron/config.h | 17 +
.../q9/ansi/keymaps/keychron/keymap.c | 29 +-
.../q9/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q9/ansi/keymaps/via/config.h | 17 +
.../keychron/q9/ansi/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q9/ansi/readme.md | 1 -
keyboards/keychron/q9/ansi/rules.mk | 15 +-
.../keychron/q9/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/q9/ansi_encoder/config.h | 2 +-
keyboards/keychron/q9/ansi_encoder/info.json | 119 +++---
.../q9/ansi_encoder/keymaps/default/keymap.c | 30 +-
.../q9/ansi_encoder/keymaps/keychron/config.h | 17 +
.../q9/ansi_encoder/keymaps/keychron/keymap.c | 35 +-
.../q9/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q9/ansi_encoder/keymaps/via/config.h | 17 +
.../q9/ansi_encoder/keymaps/via/keymap.c | 30 +-
keyboards/keychron/q9/ansi_encoder/readme.md | 5 -
keyboards/keychron/q9/ansi_encoder/rules.mk | 17 +-
keyboards/keychron/q9/config.h | 14 +-
keyboards/keychron/q9/halconf.h | 3 +
keyboards/keychron/q9/iso/config.h | 2 +-
keyboards/keychron/q9/iso/info.json | 121 +++---
keyboards/keychron/q9/iso/iso.c | 12 +-
.../keychron/q9/iso/keymaps/default/keymap.c | 16 +-
.../keychron/q9/iso/keymaps/keychron/config.h | 17 +
.../keychron/q9/iso/keymaps/keychron/keymap.c | 27 +-
.../keychron/q9/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q9/iso/keymaps/via/config.h | 17 +
.../keychron/q9/iso/keymaps/via/keymap.c | 16 +-
keyboards/keychron/q9/iso/readme.md | 1 -
keyboards/keychron/q9/iso/rules.mk | 15 +-
keyboards/keychron/q9/iso_encoder/config.h | 2 +-
keyboards/keychron/q9/iso_encoder/info.json | 121 +++---
.../keychron/q9/iso_encoder/iso_encoder.c | 14 +-
.../q9/iso_encoder/keymaps/default/keymap.c | 30 +-
.../q9/iso_encoder/keymaps/keychron/config.h | 17 +
.../q9/iso_encoder/keymaps/keychron/keymap.c | 35 +-
.../q9/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q9/iso_encoder/keymaps/via/config.h | 17 +
.../q9/iso_encoder/keymaps/via/keymap.c | 28 +-
keyboards/keychron/q9/iso_encoder/readme.md | 5 -
keyboards/keychron/q9/iso_encoder/rules.mk | 17 +-
keyboards/keychron/q9/q9.c | 48 +--
keyboards/keychron/q9/readme.md | 12 +-
.../q9_plus/ansi_encoder/ansi_encoder.c | 29 +-
.../keychron/q9_plus/ansi_encoder/config.h | 3 +-
.../keychron/q9_plus/ansi_encoder/info.json | 144 ++++---
.../ansi_encoder/keymaps/default/keymap.c | 21 +-
.../ansi_encoder/keymaps/default/rules.mk | 1 -
.../ansi_encoder/keymaps/keychron/config.h | 17 +
.../ansi_encoder/keymaps/keychron/keymap.c | 28 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q9_plus/ansi_encoder/keymaps/via/config.h | 17 +
.../q9_plus/ansi_encoder/keymaps/via/keymap.c | 21 +-
.../q9_plus/ansi_encoder/keymaps/via/rules.mk | 0
.../keychron/q9_plus/ansi_encoder/rules.mk | 8 +
keyboards/keychron/q9_plus/config.h | 54 ++-
keyboards/keychron/q9_plus/halconf.h | 3 +
keyboards/keychron/q9_plus/info.json | 124 ------
keyboards/keychron/q9_plus/mcuconf.h | 0
keyboards/keychron/q9_plus/q9_plus.c | 49 +--
keyboards/keychron/q9_plus/readme.md | 10 +-
keyboards/keychron/s1/ansi/rgb/config.h | 8 +-
keyboards/keychron/s1/ansi/rgb/info.json | 187 ++++-----
.../s1/ansi/rgb/keymaps/default/keymap.c | 2 +-
.../s1/ansi/rgb/keymaps/keychron/keymap.c | 13 +-
.../s1/ansi/rgb/keymaps/keychron/rules.mk | 2 +-
.../keychron/s1/ansi/rgb/keymaps/via/keymap.c | 2 +-
keyboards/keychron/s1/ansi/rgb/rgb.c | 10 +-
keyboards/keychron/s1/ansi/rgb/rules.mk | 15 +-
keyboards/keychron/s1/ansi/white/config.h | 36 +-
keyboards/keychron/s1/ansi/white/info.json | 189 ++++-----
.../s1/ansi/white/keymaps/default/keymap.c | 2 +-
.../s1/ansi/white/keymaps/keychron/keymap.c | 11 +
.../s1/ansi/white/keymaps/keychron/rules.mk | 2 +-
.../s1/ansi/white/keymaps/via/keymap.c | 2 +-
keyboards/keychron/s1/ansi/white/rules.mk | 15 +-
keyboards/keychron/s1/ansi/white/white.c | 11 +-
keyboards/keychron/s1/config.h | 7 +-
keyboards/keychron/s1/readme.md | 30 +-
keyboards/keychron/s1/s1.c | 96 +----
keyboards/keychron/v1/ansi/ansi.c | 8 +-
keyboards/keychron/v1/ansi/config.h | 5 +-
keyboards/keychron/v1/ansi/info.json | 184 +++++----
.../keychron/v1/ansi/keymaps/default/keymap.c | 4 +-
.../v1/ansi/keymaps/keychron/keymap.c | 9 +-
.../v1/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v1/ansi/keymaps/via/keymap.c | 4 +-
.../keychron/v1/ansi/keymaps/vnmm/keymap.c | 54 ---
.../keychron/v1/ansi/keymaps/vnmm/readme.md | 10 -
.../keychron/v1/ansi/keymaps/vnmm/rules.mk | 1 -
keyboards/keychron/v1/ansi/rules.mk | 17 +-
.../keychron/v1/ansi_encoder/ansi_encoder.c | 10 +-
keyboards/keychron/v1/ansi_encoder/config.h | 5 +-
keyboards/keychron/v1/ansi_encoder/info.json | 184 +++++----
.../v1/ansi_encoder/keymaps/default/keymap.c | 10 +-
.../v1/ansi_encoder/keymaps/keychron/keymap.c | 15 +-
.../v1/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v1/ansi_encoder/keymaps/via/keymap.c | 6 +-
.../v1/ansi_encoder/keymaps/via/rules.mk | 1 -
keyboards/keychron/v1/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/v1/config.h | 30 +-
keyboards/keychron/v1/halconf.h | 3 +
keyboards/keychron/v1/iso/config.h | 5 +-
keyboards/keychron/v1/iso/info.json | 186 +++++----
keyboards/keychron/v1/iso/iso.c | 8 +-
.../keychron/v1/iso/keymaps/default/keymap.c | 4 +-
.../keychron/v1/iso/keymaps/keychron/keymap.c | 13 +-
.../keychron/v1/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/v1/iso/keymaps/via/keymap.c | 4 +-
keyboards/keychron/v1/iso/rules.mk | 17 +-
keyboards/keychron/v1/iso_encoder/config.h | 5 +-
keyboards/keychron/v1/iso_encoder/info.json | 186 +++++----
.../keychron/v1/iso_encoder/iso_encoder.c | 10 +-
.../v1/iso_encoder/keymaps/default/keymap.c | 52 +--
.../v1/iso_encoder/keymaps/keychron/keymap.c | 61 +--
.../v1/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v1/iso_encoder/keymaps/via/keymap.c | 52 +--
keyboards/keychron/v1/iso_encoder/rules.mk | 18 +-
keyboards/keychron/v1/jis/config.h | 5 +-
keyboards/keychron/v1/jis/info.json | 192 ++++-----
keyboards/keychron/v1/jis/jis.c | 10 +-
.../keychron/v1/jis/keymaps/default/keymap.c | 50 +--
.../keychron/v1/jis/keymaps/keychron/keymap.c | 61 +--
.../keychron/v1/jis/keymaps/keychron/rules.mk | 3 +-
.../keychron/v1/jis/keymaps/via/keymap.c | 50 +--
keyboards/keychron/v1/jis/rules.mk | 17 +-
keyboards/keychron/v1/jis_encoder/config.h | 5 +-
keyboards/keychron/v1/jis_encoder/info.json | 192 ++++-----
.../keychron/v1/jis_encoder/jis_encoder.c | 10 +-
.../v1/jis_encoder/keymaps/default/keymap.c | 52 +--
.../v1/jis_encoder/keymaps/keychron/keymap.c | 63 +--
.../v1/jis_encoder/keymaps/keychron/rules.mk | 3 +-
.../v1/jis_encoder/keymaps/via/keymap.c | 52 +--
keyboards/keychron/v1/jis_encoder/rules.mk | 18 +-
keyboards/keychron/v1/matrix.c | 222 -----------
keyboards/keychron/v1/readme.md | 14 +-
keyboards/keychron/v1/v1.c | 48 +--
.../keychron/v10/ansi_encoder/ansi_encoder.c | 10 +-
keyboards/keychron/v10/ansi_encoder/config.h | 2 +-
keyboards/keychron/v10/ansi_encoder/info.json | 200 +++++-----
.../v10/ansi_encoder/keymaps/default/keymap.c | 6 +-
.../ansi_encoder/keymaps/keychron/keymap.c | 39 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v10/ansi_encoder/keymaps/via/keymap.c | 32 +-
keyboards/keychron/v10/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/v10/config.h | 36 +-
keyboards/keychron/v10/halconf.h | 4 +-
keyboards/keychron/v10/iso_encoder/info.json | 198 +++++-----
.../keychron/v10/iso_encoder/iso_encoder.c | 8 +-
.../v10/iso_encoder/keymaps/default/keymap.c | 6 +-
.../v10/iso_encoder/keymaps/keychron/keymap.c | 41 +-
.../v10/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v10/iso_encoder/keymaps/via/keymap.c | 32 +-
keyboards/keychron/v10/iso_encoder/rules.mk | 18 +-
keyboards/keychron/v10/matrix.c | 215 ----------
keyboards/keychron/v10/readme.md | 4 +-
keyboards/keychron/v10/v10.c | 52 +--
keyboards/keychron/v2/ansi/ansi.c | 12 +-
keyboards/keychron/v2/ansi/config.h | 5 +-
keyboards/keychron/v2/ansi/info.json | 149 +++----
.../keychron/v2/ansi/keymaps/default/keymap.c | 20 +-
.../v2/ansi/keymaps/keychron/config.h | 17 +
.../v2/ansi/keymaps/keychron/keymap.c | 29 +-
.../v2/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v2/ansi/keymaps/via/config.h | 17 +
.../keychron/v2/ansi/keymaps/via/keymap.c | 20 +-
.../keychron/v2/ansi/keymaps/vnmm/keymap.c | 57 ---
.../keychron/v2/ansi/keymaps/vnmm/readme.md | 10 -
.../keychron/v2/ansi/keymaps/vnmm/rules.mk | 1 -
keyboards/keychron/v2/ansi/rules.mk | 15 +-
.../keychron/v2/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/v2/ansi_encoder/config.h | 2 +-
keyboards/keychron/v2/ansi_encoder/info.json | 151 ++++----
.../v2/ansi_encoder/keymaps/default/keymap.c | 30 +-
.../v2/ansi_encoder/keymaps/keychron/config.h | 17 +
.../v2/ansi_encoder/keymaps/keychron/keymap.c | 37 +-
.../v2/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../v2/ansi_encoder/keymaps/via/config.h | 17 +
.../v2/ansi_encoder/keymaps/via/keymap.c | 30 +-
keyboards/keychron/v2/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/v2/config.h | 19 +-
keyboards/keychron/v2/halconf.h | 3 +
keyboards/keychron/v2/iso/config.h | 2 +-
keyboards/keychron/v2/iso/info.json | 151 ++++----
keyboards/keychron/v2/iso/iso.c | 6 +-
.../keychron/v2/iso/keymaps/default/keymap.c | 20 +-
.../keychron/v2/iso/keymaps/keychron/config.h | 17 +
.../keychron/v2/iso/keymaps/keychron/keymap.c | 29 +-
.../keychron/v2/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v2/iso/keymaps/via/config.h | 17 +
.../keychron/v2/iso/keymaps/via/keymap.c | 20 +-
keyboards/keychron/v2/iso/rules.mk | 15 +-
keyboards/keychron/v2/iso_encoder/config.h | 2 +-
keyboards/keychron/v2/iso_encoder/info.json | 154 ++++----
.../keychron/v2/iso_encoder/iso_encoder.c | 8 +-
.../v2/iso_encoder/keymaps/default/keymap.c | 30 +-
.../v2/iso_encoder/keymaps/keychron/config.h | 17 +
.../v2/iso_encoder/keymaps/keychron/keymap.c | 37 +-
.../v2/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../v2/iso_encoder/keymaps/via/config.h | 17 +
.../v2/iso_encoder/keymaps/via/keymap.c | 30 +-
keyboards/keychron/v2/iso_encoder/rules.mk | 16 +-
keyboards/keychron/v2/jis/config.h | 5 +-
keyboards/keychron/v2/jis/info.json | 157 ++++----
keyboards/keychron/v2/jis/jis.c | 6 +-
.../keychron/v2/jis/keymaps/default/keymap.c | 20 +-
.../keychron/v2/jis/keymaps/keychron/config.h | 17 +
.../keychron/v2/jis/keymaps/keychron/keymap.c | 29 +-
.../keychron/v2/jis/keymaps/keychron/rules.mk | 2 +-
.../keychron/v2/jis/keymaps/via/config.h | 17 +
.../keychron/v2/jis/keymaps/via/keymap.c | 20 +-
keyboards/keychron/v2/jis/rules.mk | 15 +-
keyboards/keychron/v2/jis_encoder/config.h | 5 +-
keyboards/keychron/v2/jis_encoder/info.json | 157 ++++----
.../keychron/v2/jis_encoder/jis_encoder.c | 8 +-
.../v2/jis_encoder/keymaps/default/keymap.c | 28 +-
.../v2/jis_encoder/keymaps/keychron/config.h | 17 +
.../v2/jis_encoder/keymaps/keychron/keymap.c | 37 +-
.../v2/jis_encoder/keymaps/keychron/rules.mk | 2 +-
.../v2/jis_encoder/keymaps/via/config.h | 17 +
.../v2/jis_encoder/keymaps/via/keymap.c | 26 +-
keyboards/keychron/v2/jis_encoder/rules.mk | 16 +-
keyboards/keychron/v2/readme.md | 14 +-
keyboards/keychron/v2/v2.c | 47 +--
keyboards/keychron/v3/ansi/ansi.c | 6 +-
keyboards/keychron/v3/ansi/config.h | 14 +-
keyboards/keychron/v3/ansi/info.json | 196 +++++-----
.../keychron/v3/ansi/keymaps/default/keymap.c | 12 +-
.../v3/ansi/keymaps/keychron/keymap.c | 17 +-
.../v3/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v3/ansi/keymaps/via/keymap.c | 12 +-
keyboards/keychron/v3/ansi/rules.mk | 15 +-
.../keychron/v3/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/v3/ansi_encoder/config.h | 8 +-
keyboards/keychron/v3/ansi_encoder/info.json | 198 +++++-----
.../v3/ansi_encoder/keymaps/default/keymap.c | 14 +-
.../v3/ansi_encoder/keymaps/keychron/keymap.c | 19 +-
.../v3/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v3/ansi_encoder/keymaps/via/keymap.c | 14 +-
.../v3/ansi_encoder/keymaps/vnmm/keymap.c | 77 ----
keyboards/keychron/v3/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/v3/config.h | 24 +-
keyboards/keychron/v3/halconf.h | 5 +-
keyboards/keychron/v3/iso/config.h | 11 +-
keyboards/keychron/v3/iso/info.json | 198 +++++-----
keyboards/keychron/v3/iso/iso.c | 6 +-
.../keychron/v3/iso/keymaps/default/keymap.c | 12 +-
.../keychron/v3/iso/keymaps/keychron/keymap.c | 18 +-
.../keychron/v3/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v3/iso/keymaps/via/keymap.c | 12 +-
keyboards/keychron/v3/iso/rules.mk | 17 +-
keyboards/keychron/v3/iso_encoder/config.h | 8 +-
keyboards/keychron/v3/iso_encoder/info.json | 200 +++++-----
.../keychron/v3/iso_encoder/iso_encoder.c | 8 +-
.../v3/iso_encoder/keymaps/default/keymap.c | 14 +-
.../v3/iso_encoder/keymaps/keychron/keymap.c | 19 +-
.../v3/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v3/iso_encoder/keymaps/via/keymap.c | 14 +-
keyboards/keychron/v3/iso_encoder/rules.mk | 18 +-
keyboards/keychron/v3/jis/config.h | 15 +-
keyboards/keychron/v3/jis/info.json | 202 +++++-----
keyboards/keychron/v3/jis/jis.c | 110 +++---
.../keychron/v3/jis/keymaps/default/keymap.c | 4 +-
.../keychron/v3/jis/keymaps/keychron/keymap.c | 9 +-
.../keychron/v3/jis/keymaps/keychron/rules.mk | 2 +-
.../keychron/v3/jis/keymaps/via/keymap.c | 4 +-
keyboards/keychron/v3/jis/rules.mk | 17 +-
keyboards/keychron/v3/jis_encoder/config.h | 11 +-
keyboards/keychron/v3/jis_encoder/info.json | 204 +++++-----
.../keychron/v3/jis_encoder/jis_encoder.c | 112 +++---
.../v3/jis_encoder/keymaps/default/keymap.c | 10 +-
.../v3/jis_encoder/keymaps/keychron/keymap.c | 11 +-
.../v3/jis_encoder/keymaps/keychron/rules.mk | 3 +-
.../v3/jis_encoder/keymaps/via/keymap.c | 10 +-
keyboards/keychron/v3/jis_encoder/rules.mk | 18 +-
keyboards/keychron/v3/matrix.c | 222 -----------
keyboards/keychron/v3/readme.md | 14 +-
keyboards/keychron/v3/v3.c | 52 +--
keyboards/keychron/v4/ansi/ansi.c | 6 +-
keyboards/keychron/v4/ansi/config.h | 2 +-
keyboards/keychron/v4/ansi/info.json | 143 +++----
.../keychron/v4/ansi/keymaps/default/keymap.c | 24 +-
.../v4/ansi/keymaps/keychron/config.h | 17 +
.../v4/ansi/keymaps/keychron/keymap.c | 33 +-
.../v4/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v4/ansi/keymaps/via/config.h | 17 +
.../keychron/v4/ansi/keymaps/via/keymap.c | 24 +-
keyboards/keychron/v4/ansi/rules.mk | 13 +-
keyboards/keychron/v4/config.h | 19 +-
keyboards/keychron/v4/iso/config.h | 2 +-
keyboards/keychron/v4/iso/info.json | 145 +++----
keyboards/keychron/v4/iso/iso.c | 6 +-
.../keychron/v4/iso/keymaps/default/keymap.c | 24 +-
.../keychron/v4/iso/keymaps/keychron/config.h | 17 +
.../keychron/v4/iso/keymaps/keychron/keymap.c | 33 +-
.../keychron/v4/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v4/iso/keymaps/via/config.h | 17 +
.../keychron/v4/iso/keymaps/via/keymap.c | 24 +-
keyboards/keychron/v4/iso/rules.mk | 13 +-
keyboards/keychron/v4/readme.md | 4 +-
keyboards/keychron/v4/v4.c | 48 +--
keyboards/keychron/v5/ansi/ansi.c | 32 +-
keyboards/keychron/v5/ansi/config.h | 7 +-
keyboards/keychron/v5/ansi/info.json | 220 ++++++-----
.../keychron/v5/ansi/keymaps/default/keymap.c | 36 +-
.../v5/ansi/keymaps/keychron/keymap.c | 45 ++-
.../v5/ansi/keymaps/keychron/rules.mk | 3 +-
.../keychron/v5/ansi/keymaps/via/keymap.c | 36 +-
keyboards/keychron/v5/ansi/rules.mk | 17 +-
.../keychron/v5/ansi_encoder/ansi_encoder.c | 34 +-
keyboards/keychron/v5/ansi_encoder/config.h | 7 +-
keyboards/keychron/v5/ansi_encoder/info.json | 216 ++++++-----
.../v5/ansi_encoder/keymaps/default/keymap.c | 42 +-
.../v5/ansi_encoder/keymaps/keychron/keymap.c | 47 ++-
.../v5/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v5/ansi_encoder/keymaps/via/keymap.c | 42 +-
keyboards/keychron/v5/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/v5/config.h | 31 +-
keyboards/keychron/v5/halconf.h | 3 +
keyboards/keychron/v5/iso/config.h | 7 +-
keyboards/keychron/v5/iso/info.json | 222 ++++++-----
keyboards/keychron/v5/iso/iso.c | 40 +-
.../keychron/v5/iso/keymaps/default/keymap.c | 36 +-
.../keychron/v5/iso/keymaps/keychron/keymap.c | 45 ++-
.../keychron/v5/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/v5/iso/keymaps/via/keymap.c | 36 +-
keyboards/keychron/v5/iso/rules.mk | 17 +-
keyboards/keychron/v5/iso_encoder/config.h | 7 +-
keyboards/keychron/v5/iso_encoder/info.json | 218 ++++++-----
.../keychron/v5/iso_encoder/iso_encoder.c | 34 +-
.../v5/iso_encoder/keymaps/default/keymap.c | 42 +-
.../v5/iso_encoder/keymaps/keychron/keymap.c | 47 ++-
.../v5/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v5/iso_encoder/keymaps/via/keymap.c | 42 +-
keyboards/keychron/v5/iso_encoder/rules.mk | 18 +-
keyboards/keychron/v5/matrix.c | 222 -----------
keyboards/keychron/v5/readme.md | 10 +-
keyboards/keychron/v5/v5.c | 46 ---
keyboards/keychron/v6/ansi/ansi.c | 43 +-
keyboards/keychron/v6/ansi/config.h | 22 +-
keyboards/keychron/v6/ansi/info.json | 236 +++++------
.../keychron/v6/ansi/keymaps/default/keymap.c | 37 +-
.../v6/ansi/keymaps/keychron/keymap.c | 49 ++-
.../v6/ansi/keymaps/keychron/rules.mk | 3 +-
.../keychron/v6/ansi/keymaps/via/keymap.c | 36 +-
keyboards/keychron/v6/ansi/rules.mk | 15 +-
.../keychron/v6/ansi_encoder/ansi_encoder.c | 42 +-
keyboards/keychron/v6/ansi_encoder/config.h | 24 +-
keyboards/keychron/v6/ansi_encoder/info.json | 238 ++++++------
.../v6/ansi_encoder/keymaps/default/keymap.c | 40 +-
.../v6/ansi_encoder/keymaps/keychron/keymap.c | 51 +--
.../v6/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v6/ansi_encoder/keymaps/via/keymap.c | 40 +-
keyboards/keychron/v6/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/v6/config.h | 23 +-
keyboards/keychron/v6/halconf.h | 4 +-
keyboards/keychron/v6/iso/config.h | 22 +-
keyboards/keychron/v6/iso/info.json | 238 ++++++------
keyboards/keychron/v6/iso/iso.c | 40 +-
.../keychron/v6/iso/keymaps/default/keymap.c | 38 +-
.../keychron/v6/iso/keymaps/keychron/keymap.c | 49 ++-
.../keychron/v6/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/v6/iso/keymaps/via/keymap.c | 38 +-
keyboards/keychron/v6/iso/rules.mk | 15 +-
keyboards/keychron/v6/iso_encoder/config.h | 24 +-
keyboards/keychron/v6/iso_encoder/info.json | 240 ++++++------
.../keychron/v6/iso_encoder/iso_encoder.c | 42 +-
.../v6/iso_encoder/keymaps/default/keymap.c | 38 +-
.../v6/iso_encoder/keymaps/keychron/keymap.c | 67 ++--
.../v6/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v6/iso_encoder/keymaps/via/keymap.c | 38 +-
keyboards/keychron/v6/iso_encoder/rules.mk | 17 +-
.../{q1v2 => v6}/jis_encoder/config.h | 16 +-
keyboards/keychron/v6/jis_encoder/info.json | 161 ++++++++
.../keychron/v6/jis_encoder/jis_encoder.c | 178 +++++++++
.../v6/jis_encoder/keymaps/default/keymap.c | 69 ++++
.../v6/jis_encoder/keymaps/default/rules.mk | 1 +
.../v6/jis_encoder/keymaps/keychron/keymap.c | 87 +++++
.../v6/jis_encoder/keymaps/keychron/rules.mk | 4 +
.../v6/jis_encoder/keymaps/via/keymap.c | 69 ++++
.../jis_encoder/keymaps/via}/rules.mk | 0
keyboards/keychron/v6/jis_encoder/rules.mk | 14 +
keyboards/keychron/v6/matrix.c | 215 ----------
keyboards/keychron/v6/readme.md | 14 +-
keyboards/keychron/v6/v6.c | 67 +---
keyboards/keychron/v7/ansi/ansi.c | 4 +-
keyboards/keychron/v7/ansi/info.json | 159 ++++----
.../keychron/v7/ansi/keymaps/default/keymap.c | 18 +-
.../v7/ansi/keymaps/keychron/config.h | 17 +
.../v7/ansi/keymaps/keychron/keymap.c | 27 +-
.../v7/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v7/ansi/keymaps/via/config.h | 17 +
.../keychron/v7/ansi/keymaps/via/keymap.c | 16 +-
keyboards/keychron/v7/ansi/rules.mk | 13 +-
keyboards/keychron/v7/config.h | 18 +-
keyboards/keychron/v7/iso/info.json | 163 ++++----
keyboards/keychron/v7/iso/iso.c | 2 +-
.../keychron/v7/iso/keymaps/default/keymap.c | 18 +-
.../keychron/v7/iso/keymaps/keychron/config.h | 17 +
.../keychron/v7/iso/keymaps/keychron/keymap.c | 27 +-
.../keychron/v7/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v7/iso/keymaps/via/config.h | 17 +
.../keychron/v7/iso/keymaps/via/keymap.c | 18 +-
keyboards/keychron/v7/iso/rules.mk | 13 +-
keyboards/keychron/v7/readme.md | 6 +-
keyboards/keychron/v7/v7.c | 46 ---
keyboards/keychron/v8/ansi/ansi.c | 10 +-
keyboards/keychron/v8/ansi/info.json | 153 ++++----
.../keychron/v8/ansi/keymaps/default/keymap.c | 18 +-
.../v8/ansi/keymaps/keychron/config.h | 17 +
.../v8/ansi/keymaps/keychron/keymap.c | 27 +-
.../v8/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v8/ansi/keymaps/via/config.h | 17 +
.../keychron/v8/ansi/keymaps/via/keymap.c | 18 +-
keyboards/keychron/v8/ansi/rules.mk | 17 +-
.../keychron/v8/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/v8/ansi_encoder/info.json | 155 ++++----
.../v8/ansi_encoder/keymaps/default/keymap.c | 26 +-
.../v8/ansi_encoder/keymaps/keychron/config.h | 17 +
.../v8/ansi_encoder/keymaps/keychron/keymap.c | 35 +-
.../v8/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../v8/ansi_encoder/keymaps/via/config.h | 17 +
.../v8/ansi_encoder/keymaps/via/keymap.c | 26 +-
keyboards/keychron/v8/ansi_encoder/rules.mk | 17 +-
keyboards/keychron/v8/config.h | 18 +-
keyboards/keychron/v8/halconf.h | 3 +
keyboards/keychron/v8/iso/info.json | 156 ++++----
keyboards/keychron/v8/iso/iso.c | 6 +-
.../keychron/v8/iso/keymaps/default/keymap.c | 18 +-
.../keychron/v8/iso/keymaps/keychron/config.h | 17 +
.../keychron/v8/iso/keymaps/keychron/keymap.c | 29 +-
.../keychron/v8/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v8/iso/keymaps/via/config.h | 17 +
.../keychron/v8/iso/keymaps/via/keymap.c | 18 +-
keyboards/keychron/v8/iso/rules.mk | 16 +-
keyboards/keychron/v8/iso_encoder/info.json | 157 ++++----
.../keychron/v8/iso_encoder/iso_encoder.c | 6 +-
.../v8/iso_encoder/keymaps/default/keymap.c | 26 +-
.../v8/iso_encoder/keymaps/keychron/config.h | 17 +
.../v8/iso_encoder/keymaps/keychron/keymap.c | 35 +-
.../v8/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../v8/iso_encoder/keymaps/via/config.h | 17 +
.../v8/iso_encoder/keymaps/via/keymap.c | 28 +-
keyboards/keychron/v8/iso_encoder/rules.mk | 17 +-
keyboards/keychron/v8/readme.md | 10 +-
keyboards/keychron/v8/v8.c | 48 +--
1156 files changed, 21942 insertions(+), 24371 deletions(-)
create mode 100644 keyboards/keychron/c1/ansi/rgb/config.h
create mode 100644 keyboards/keychron/c1/ansi/rgb/info.json
rename keyboards/keychron/{c1_pro => c1}/ansi/rgb/keymaps/default/keymap.c (92%)
rename keyboards/keychron/{c1_pro => c1}/ansi/rgb/keymaps/keychron/keymap.c (93%)
rename keyboards/keychron/{c1_pro => c1}/ansi/rgb/keymaps/keychron/rules.mk (53%)
rename keyboards/keychron/{c1_pro => c1}/ansi/rgb/keymaps/via/keymap.c (93%)
rename keyboards/keychron/{c1_pro => c1}/ansi/rgb/keymaps/via/rules.mk (100%)
rename keyboards/keychron/{c1_pro => c1}/ansi/rgb/rgb.c (63%)
create mode 100644 keyboards/keychron/c1/ansi/rgb/rules.mk
create mode 100644 keyboards/keychron/c1/ansi/white/config.h
create mode 100644 keyboards/keychron/c1/ansi/white/info.json
rename keyboards/keychron/{c1_pro/ansi/white/keymaps/via => c1/ansi/white/keymaps/default}/keymap.c (93%)
rename keyboards/keychron/{c1_pro => c1}/ansi/white/keymaps/keychron/keymap.c (93%)
rename keyboards/keychron/{c2_pro/ansi/rgb => c1/ansi/white}/keymaps/keychron/rules.mk (53%)
rename keyboards/keychron/{c1_pro/ansi/white/keymaps/default => c1/ansi/white/keymaps/via}/keymap.c (93%)
rename keyboards/keychron/{c1_pro => c1}/ansi/white/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/c1/ansi/white/rules.mk
rename keyboards/keychron/{c1_pro => c1}/ansi/white/white.c (57%)
create mode 100644 keyboards/keychron/c1/c1.c
rename keyboards/keychron/{c1_pro => c1}/config.h (88%)
rename keyboards/keychron/{c1_pro => c1}/halconf.h (100%)
rename keyboards/keychron/{c1_pro => c1}/mcuconf.h (100%)
rename keyboards/keychron/{c1_pro => c1}/readme.md (85%)
delete mode 100644 keyboards/keychron/c1_pro/ansi/rgb/info.json
delete mode 100644 keyboards/keychron/c1_pro/ansi/rgb/rules.mk
delete mode 100644 keyboards/keychron/c1_pro/ansi/white/config.h
delete mode 100644 keyboards/keychron/c1_pro/ansi/white/info.json
delete mode 100644 keyboards/keychron/c1_pro/ansi/white/rules.mk
delete mode 100644 keyboards/keychron/c1_pro/c1_pro.c
delete mode 100644 keyboards/keychron/c1_pro/info.json
create mode 100644 keyboards/keychron/c2/ansi/rgb/config.h
create mode 100644 keyboards/keychron/c2/ansi/rgb/info.json
rename keyboards/keychron/{c2_pro => c2}/ansi/rgb/keymaps/default/keymap.c (93%)
rename keyboards/keychron/{c2_pro => c2}/ansi/rgb/keymaps/keychron/keymap.c (93%)
create mode 100644 keyboards/keychron/c2/ansi/rgb/keymaps/keychron/rules.mk
rename keyboards/keychron/{c2_pro => c2}/ansi/rgb/keymaps/via/keymap.c (93%)
rename keyboards/keychron/{c2_pro => c2}/ansi/rgb/keymaps/via/rules.mk (100%)
rename keyboards/keychron/{c2_pro => c2}/ansi/rgb/rgb.c (62%)
create mode 100644 keyboards/keychron/c2/ansi/rgb/rules.mk
create mode 100644 keyboards/keychron/c2/ansi/white/config.h
create mode 100644 keyboards/keychron/c2/ansi/white/info.json
rename keyboards/keychron/{c2_pro => c2}/ansi/white/keymaps/default/keymap.c (93%)
rename keyboards/keychron/{c2_pro => c2}/ansi/white/keymaps/keychron/keymap.c (93%)
create mode 100644 keyboards/keychron/c2/ansi/white/keymaps/keychron/rules.mk
rename keyboards/keychron/{c2_pro => c2}/ansi/white/keymaps/via/keymap.c (93%)
rename keyboards/keychron/{c2_pro => c2}/ansi/white/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/c2/ansi/white/rules.mk
rename keyboards/keychron/{c2_pro => c2}/ansi/white/white.c (50%)
create mode 100644 keyboards/keychron/c2/c2.c
rename keyboards/keychron/{c2_pro => c2}/config.h (86%)
rename keyboards/keychron/{c2_pro => c2}/halconf.h (100%)
rename keyboards/keychron/{c2_pro => c2}/mcuconf.h (100%)
rename keyboards/keychron/{c2_pro => c2}/readme.md (94%)
delete mode 100644 keyboards/keychron/c2_pro/ansi/rgb/config.h
delete mode 100644 keyboards/keychron/c2_pro/ansi/rgb/info.json
delete mode 100644 keyboards/keychron/c2_pro/ansi/rgb/rules.mk
delete mode 100644 keyboards/keychron/c2_pro/ansi/white/config.h
delete mode 100644 keyboards/keychron/c2_pro/ansi/white/info.json
delete mode 100644 keyboards/keychron/c2_pro/ansi/white/rules.mk
delete mode 100644 keyboards/keychron/c2_pro/c2_pro.c
delete mode 100644 keyboards/keychron/c2_pro/info.json
create mode 100644 keyboards/keychron/common/keychron_ft_common.c
create mode 100644 keyboards/keychron/common/keychron_ft_common.h
rename keyboards/keychron/{c2_pro => common}/matrix.c (98%)
create mode 100644 keyboards/keychron/q0/factory.c
delete mode 100644 keyboards/keychron/q0/rev_0130/readme.md
delete mode 100644 keyboards/keychron/q1/ansi/config.h
delete mode 100644 keyboards/keychron/q1/ansi/info.json
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/default/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/gtg465x/README.md
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/gtg465x/config.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/gtg465x/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/keychron/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/mkillewald/config.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap_user.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/mkillewald/readme.md
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/mkillewald/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/config.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/keymap_user.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/readme.md
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_user.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.c
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.h
delete mode 100644 keyboards/keychron/q1/ansi/keymaps/via/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi/readme.md
delete mode 100644 keyboards/keychron/q1/ansi/rules.mk
rename keyboards/keychron/q1/{ansi/ansi.c => ansi_atmega32u4/ansi_atmega32u4.c} (81%)
rename keyboards/keychron/q1/{ansi_encoder => ansi_atmega32u4}/config.h (71%)
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4/info.json
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4/keymaps/default/keymap.c
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/keymap.c
rename keyboards/keychron/{c1_pro/ansi/white => q1/ansi_atmega32u4}/keymaps/keychron/rules.mk (53%)
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/keymap.c
rename keyboards/keychron/q1/{ansi => ansi_atmega32u4}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4/rules.mk
rename keyboards/keychron/q1/{ansi_encoder/ansi_encoder.c => ansi_atmega32u4_encoder/ansi_atmega32u4_encoder.c} (77%)
rename keyboards/keychron/{q1v2/ansi_encoder => q1/ansi_atmega32u4_encoder}/config.h (72%)
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4_encoder/info.json
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/keymap.c
rename keyboards/keychron/{q2/jis_encoder => q1/ansi_atmega32u4_encoder}/keymaps/default/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/keymap.c
rename keyboards/keychron/q1/{ansi_encoder => ansi_atmega32u4_encoder}/keymaps/keychron/rules.mk (62%)
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/keymap.c
rename keyboards/keychron/q1/{ansi_encoder => ansi_atmega32u4_encoder}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/ansi_atmega32u4_encoder/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_encoder/info.json
delete mode 100644 keyboards/keychron/q1/ansi_encoder/keymaps/default/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_encoder/keymaps/keychron/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi_encoder/keymaps/via/keymap.c
delete mode 100644 keyboards/keychron/q1/ansi_encoder/readme.md
delete mode 100644 keyboards/keychron/q1/ansi_encoder/rules.mk
rename keyboards/keychron/{q1v2/ansi/ansi.c => q1/ansi_stm32l432/ansi_stm32l432.c} (61%)
rename keyboards/keychron/{c1_pro/ansi/rgb => q1/ansi_stm32l432}/config.h (58%)
create mode 100644 keyboards/keychron/q1/ansi_stm32l432/info.json
rename keyboards/keychron/{q1v2/ansi/keymaps/via => q1/ansi_stm32l432/keymaps/default}/keymap.c (98%)
rename keyboards/keychron/{q1v2/ansi => q1/ansi_stm32l432}/keymaps/keychron/keymap.c (96%)
create mode 100644 keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1v2/ansi/keymaps/default => q1/ansi_stm32l432/keymaps/via}/keymap.c (98%)
rename keyboards/keychron/q1/{iso => ansi_stm32l432}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/ansi_stm32l432/rules.mk
create mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/ansi_stm32l432_encoder.c
rename keyboards/keychron/{q1v2 => q1/ansi_stm32l432_encoder}/config.h (70%)
create mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/info.json
rename keyboards/keychron/{q1v2/ansi_encoder => q1/ansi_stm32l432_encoder}/keymaps/default/keymap.c (97%)
create mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/rules.mk
rename keyboards/keychron/{q1v2/ansi_encoder => q1/ansi_stm32l432_encoder}/keymaps/keychron/keymap.c (95%)
create mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1v2/ansi_encoder => q1/ansi_stm32l432_encoder}/keymaps/via/keymap.c (93%)
create mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/rules.mk
create mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk
rename keyboards/keychron/{q1v2 => q1}/halconf.h (92%)
delete mode 100644 keyboards/keychron/q1/iso/config.h
delete mode 100644 keyboards/keychron/q1/iso/info.json
delete mode 100644 keyboards/keychron/q1/iso/keymaps/default/keymap.c
delete mode 100644 keyboards/keychron/q1/iso/keymaps/keychron/keymap.c
delete mode 100644 keyboards/keychron/q1/iso/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/iso/keymaps/kubahorak/README.md
delete mode 100644 keyboards/keychron/q1/iso/keymaps/kubahorak/config.h
delete mode 100644 keyboards/keychron/q1/iso/keymaps/kubahorak/keymap.c
delete mode 100644 keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.c
delete mode 100644 keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.h
delete mode 100644 keyboards/keychron/q1/iso/keymaps/kubahorak/rules.mk
delete mode 100644 keyboards/keychron/q1/iso/keymaps/mkillewald_iso/config.h
delete mode 100644 keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap.c
delete mode 100644 keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap_user.h
delete mode 100644 keyboards/keychron/q1/iso/keymaps/mkillewald_iso/readme.md
delete mode 100644 keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c
delete mode 100644 keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h
delete mode 100644 keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rules.mk
delete mode 100644 keyboards/keychron/q1/iso/keymaps/via/keymap.c
delete mode 100644 keyboards/keychron/q1/iso/keymaps/victorsavu3/config.h
delete mode 100644 keyboards/keychron/q1/iso/keymaps/victorsavu3/keymap.c
delete mode 100644 keyboards/keychron/q1/iso/keymaps/victorsavu3/readme.md
delete mode 100644 keyboards/keychron/q1/iso/keymaps/victorsavu3/rules.mk
delete mode 100644 keyboards/keychron/q1/iso/readme.md
delete mode 100644 keyboards/keychron/q1/iso/rules.mk
rename keyboards/keychron/q1/{iso_encoder => iso_atmega32u4}/config.h (89%)
create mode 100644 keyboards/keychron/q1/iso_atmega32u4/info.json
rename keyboards/keychron/q1/{iso_encoder/iso_encoder.c => iso_atmega32u4/iso_atmega32u4.c} (92%)
create mode 100644 keyboards/keychron/q1/iso_atmega32u4/keymaps/default/keymap.c
rename keyboards/keychron/q1/{iso_encoder => iso_atmega32u4}/keymaps/keychron/keymap.c (88%)
rename keyboards/keychron/{c2_pro/ansi/white => q1/iso_atmega32u4}/keymaps/keychron/rules.mk (53%)
create mode 100644 keyboards/keychron/q1/iso_atmega32u4/keymaps/via/keymap.c
rename keyboards/keychron/{q1v2/ansi => q1/iso_atmega32u4}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/iso_atmega32u4/rules.mk
rename keyboards/keychron/{q1v2/iso_encoder => q1/iso_atmega32u4_encoder}/config.h (72%)
create mode 100644 keyboards/keychron/q1/iso_atmega32u4_encoder/info.json
rename keyboards/keychron/q1/{iso/iso.c => iso_atmega32u4_encoder/iso_atmega32u4_encoder.c} (75%)
rename keyboards/keychron/q1/{iso_encoder => iso_atmega32u4_encoder}/keymaps/default/keymap.c (85%)
create mode 100644 keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/rules.mk
rename keyboards/keychron/{q1v2/iso_encoder => q1/iso_atmega32u4_encoder}/keymaps/keychron/keymap.c (82%)
rename keyboards/keychron/q1/{iso_encoder => iso_atmega32u4_encoder}/keymaps/keychron/rules.mk (62%)
rename keyboards/keychron/q1/{iso_encoder => iso_atmega32u4_encoder}/keymaps/via/keymap.c (84%)
rename keyboards/keychron/{q1v2/ansi_encoder => q1/iso_atmega32u4_encoder}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/iso_atmega32u4_encoder/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_encoder/info.json
delete mode 100644 keyboards/keychron/q1/iso_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_encoder/keymaps/via/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_encoder/readme.md
delete mode 100644 keyboards/keychron/q1/iso_encoder/rules.mk
create mode 100644 keyboards/keychron/q1/iso_stm32l432/config.h
create mode 100644 keyboards/keychron/q1/iso_stm32l432/info.json
rename keyboards/keychron/{q1v2/iso/iso.c => q1/iso_stm32l432/iso_stm32l432.c} (61%)
rename keyboards/keychron/{q1v2/iso/keymaps/via => q1/iso_stm32l432/keymaps/default}/keymap.c (98%)
rename keyboards/keychron/{q1v2/iso => q1/iso_stm32l432}/keymaps/keychron/keymap.c (96%)
create mode 100644 keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1v2/iso/keymaps/default => q1/iso_stm32l432/keymaps/via}/keymap.c (98%)
rename keyboards/keychron/{q1v2/iso => q1/iso_stm32l432}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/iso_stm32l432/rules.mk
create mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/config.h
create mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/info.json
rename keyboards/keychron/{q1v2/iso_encoder/iso_encoder.c => q1/iso_stm32l432_encoder/iso_stm32l432_encoder.c} (61%)
create mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/keymap.c
create mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/rules.mk
create mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/keymap.c
create mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/rules.mk
create mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/keymap.c
rename keyboards/keychron/{q1v2/iso_encoder => q1/iso_stm32l432_encoder}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk
create mode 100644 keyboards/keychron/q1/jis_stm32l432/config.h
create mode 100644 keyboards/keychron/q1/jis_stm32l432/info.json
rename keyboards/keychron/{q1v2/jis/jis.c => q1/jis_stm32l432/jis_stm32l432.c} (61%)
rename keyboards/keychron/{q1v2/jis/keymaps/via => q1/jis_stm32l432/keymaps/default}/keymap.c (96%)
rename keyboards/keychron/{q1v2/jis => q1/jis_stm32l432}/keymaps/keychron/keymap.c (93%)
create mode 100644 keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1v2/jis/keymaps/default => q1/jis_stm32l432/keymaps/via}/keymap.c (96%)
rename keyboards/keychron/{q1v2/jis => q1/jis_stm32l432}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/jis_stm32l432/rules.mk
create mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/config.h
create mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/info.json
rename keyboards/keychron/{q1v2/jis_encoder/jis_encoder.c => q1/jis_stm32l432_encoder/jis_stm32l432_encoder.c} (61%)
rename keyboards/keychron/{q1v2/jis_encoder/keymaps/via => q1/jis_stm32l432_encoder/keymaps/default}/keymap.c (95%)
create mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/rules.mk
rename keyboards/keychron/{q1v2/jis_encoder => q1/jis_stm32l432_encoder}/keymaps/keychron/keymap.c (92%)
create mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1v2/jis_encoder/keymaps/default => q1/jis_stm32l432_encoder/keymaps/via}/keymap.c (95%)
rename keyboards/keychron/{q1v2/jis_encoder => q1/jis_stm32l432_encoder}/keymaps/via/rules.mk (100%)
create mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk
rename keyboards/keychron/{q1v2 => q1}/mcuconf.h (100%)
delete mode 100644 keyboards/keychron/q10/ansi_encoder/readme.md
delete mode 100644 keyboards/keychron/q10/iso_encoder/readme.md
delete mode 100644 keyboards/keychron/q10/matrix.c
mode change 100644 => 100755 keyboards/keychron/q11/ansi_encoder/rules.mk
create mode 100644 keyboards/keychron/q11/factory.c
delete mode 100755 keyboards/keychron/q11/info.json
delete mode 100644 keyboards/keychron/q12/matrix.c
delete mode 100644 keyboards/keychron/q1v2/ansi/config.h
delete mode 100644 keyboards/keychron/q1v2/ansi/info.json
delete mode 100644 keyboards/keychron/q1v2/ansi/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1v2/ansi/rules.mk
delete mode 100644 keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
delete mode 100644 keyboards/keychron/q1v2/ansi_encoder/info.json
delete mode 100644 keyboards/keychron/q1v2/ansi_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1v2/ansi_encoder/rules.mk
delete mode 100644 keyboards/keychron/q1v2/info.json
delete mode 100644 keyboards/keychron/q1v2/iso/config.h
delete mode 100644 keyboards/keychron/q1v2/iso/info.json
delete mode 100644 keyboards/keychron/q1v2/iso/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1v2/iso/rules.mk
delete mode 100644 keyboards/keychron/q1v2/iso_encoder/info.json
delete mode 100644 keyboards/keychron/q1v2/iso_encoder/keymaps/default/keymap.c
delete mode 100644 keyboards/keychron/q1v2/iso_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1v2/iso_encoder/keymaps/via/keymap.c
delete mode 100644 keyboards/keychron/q1v2/iso_encoder/rules.mk
delete mode 100644 keyboards/keychron/q1v2/jis/config.h
delete mode 100644 keyboards/keychron/q1v2/jis/info.json
delete mode 100644 keyboards/keychron/q1v2/jis/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1v2/jis/rules.mk
delete mode 100644 keyboards/keychron/q1v2/jis_encoder/info.json
delete mode 100644 keyboards/keychron/q1v2/jis_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1v2/jis_encoder/rules.mk
delete mode 100644 keyboards/keychron/q1v2/matrix.c
delete mode 100644 keyboards/keychron/q1v2/q1v2.c
delete mode 100644 keyboards/keychron/q1v2/readme.md
rename keyboards/keychron/q2/ansi/keymaps/{ladduro/keymap_user.h => keychron/config.h} (82%)
delete mode 100644 keyboards/keychron/q2/ansi/keymaps/ladduro/config.h
delete mode 100644 keyboards/keychron/q2/ansi/keymaps/ladduro/keymap.c
delete mode 100644 keyboards/keychron/q2/ansi/keymaps/ladduro/readme.md
delete mode 100644 keyboards/keychron/q2/ansi/keymaps/ladduro/rgb_matrix_user.c
delete mode 100644 keyboards/keychron/q2/ansi/keymaps/ladduro/rgb_matrix_user.h
delete mode 100644 keyboards/keychron/q2/ansi/keymaps/ladduro/rules.mk
rename keyboards/keychron/{q1/iso/keymaps/kubahorak/keymap_user.h => q2/ansi/keymaps/via/config.h} (80%)
delete mode 100644 keyboards/keychron/q2/ansi/readme.md
rename keyboards/keychron/{q1/ansi/keymaps/gtg465x/keymap_user.h => q2/ansi_encoder/keymaps/keychron/config.h} (80%)
rename keyboards/keychron/q2/{chconf.h => ansi_encoder/keymaps/via/config.h} (78%)
delete mode 100644 keyboards/keychron/q2/ansi_encoder/readme.md
create mode 100644 keyboards/keychron/q2/iso/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q2/iso/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q2/iso/readme.md
delete mode 100644 keyboards/keychron/q2/iso_encoder/keymaps/dhertz/keymap.c
delete mode 100644 keyboards/keychron/q2/iso_encoder/keymaps/dhertz/rules.mk
create mode 100644 keyboards/keychron/q2/iso_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q2/iso_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q2/iso_encoder/readme.md
create mode 100644 keyboards/keychron/q2/jis/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q2/jis/keymaps/via/config.h
create mode 100644 keyboards/keychron/q2/jis_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q2/jis_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q3/ansi/readme.md
delete mode 100644 keyboards/keychron/q3/ansi_encoder/readme.md
delete mode 100644 keyboards/keychron/q3/iso/readme.md
delete mode 100644 keyboards/keychron/q3/iso_encoder/readme.md
delete mode 100644 keyboards/keychron/q3/jis/readme.md
delete mode 100644 keyboards/keychron/q3/jis_encoder/readme.md
delete mode 100644 keyboards/keychron/q3/matrix.c
delete mode 100644 keyboards/keychron/q4/ansi_v1/readme.md
delete mode 100644 keyboards/keychron/q4/ansi_v2/readme.md
delete mode 100644 keyboards/keychron/q4/iso/readme.md
delete mode 100644 keyboards/keychron/q5/ansi/readme.md
delete mode 100644 keyboards/keychron/q5/ansi_encoder/readme.md
delete mode 100644 keyboards/keychron/q5/iso/readme.md
delete mode 100644 keyboards/keychron/q5/iso_encoder/readme.md
delete mode 100644 keyboards/keychron/q6/ansi/readme.md
delete mode 100644 keyboards/keychron/q6/ansi_encoder/readme.md
delete mode 100644 keyboards/keychron/q6/iso/readme.md
delete mode 100644 keyboards/keychron/q6/iso_encoder/readme.md
delete mode 100644 keyboards/keychron/q6/matrix.c
create mode 100644 keyboards/keychron/q60/ansi/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q60/ansi/keymaps/via/config.h
create mode 100644 keyboards/keychron/q65/ansi_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q65/ansi_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q65/matrix.c
create mode 100644 keyboards/keychron/q7/ansi/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q7/ansi/keymaps/via/config.h
create mode 100644 keyboards/keychron/q7/iso/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q7/iso/keymaps/via/config.h
create mode 100644 keyboards/keychron/q8/ansi/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q8/ansi/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q8/ansi/readme.md
create mode 100644 keyboards/keychron/q8/ansi_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q8/ansi_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q8/ansi_encoder/readme.md
create mode 100644 keyboards/keychron/q8/iso/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q8/iso/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q8/iso/readme.md
create mode 100644 keyboards/keychron/q8/iso_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q8/iso_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q8/iso_encoder/readme.md
create mode 100644 keyboards/keychron/q9/ansi/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q9/ansi/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q9/ansi/readme.md
create mode 100644 keyboards/keychron/q9/ansi_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q9/ansi_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q9/ansi_encoder/readme.md
create mode 100644 keyboards/keychron/q9/iso/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q9/iso/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q9/iso/readme.md
create mode 100644 keyboards/keychron/q9/iso_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/q9/iso_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q9/iso_encoder/readme.md
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/config.h
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/info.json
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
create mode 100644 keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/config.h
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
create mode 100644 keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/config.h
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/rules.mk
mode change 100755 => 100644 keyboards/keychron/q9_plus/ansi_encoder/rules.mk
mode change 100755 => 100644 keyboards/keychron/q9_plus/config.h
mode change 100755 => 100644 keyboards/keychron/q9_plus/halconf.h
delete mode 100755 keyboards/keychron/q9_plus/info.json
mode change 100755 => 100644 keyboards/keychron/q9_plus/mcuconf.h
mode change 100755 => 100644 keyboards/keychron/q9_plus/q9_plus.c
mode change 100755 => 100644 keyboards/keychron/q9_plus/readme.md
delete mode 100644 keyboards/keychron/v1/ansi/keymaps/vnmm/keymap.c
delete mode 100644 keyboards/keychron/v1/ansi/keymaps/vnmm/readme.md
delete mode 100644 keyboards/keychron/v1/ansi/keymaps/vnmm/rules.mk
delete mode 100644 keyboards/keychron/v1/matrix.c
delete mode 100644 keyboards/keychron/v10/matrix.c
create mode 100644 keyboards/keychron/v2/ansi/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v2/ansi/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v2/ansi/keymaps/vnmm/keymap.c
delete mode 100644 keyboards/keychron/v2/ansi/keymaps/vnmm/readme.md
delete mode 100644 keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk
create mode 100644 keyboards/keychron/v2/ansi_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v2/ansi_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/v2/iso/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v2/iso/keymaps/via/config.h
create mode 100644 keyboards/keychron/v2/iso_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v2/iso_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/v2/jis/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v2/jis/keymaps/via/config.h
create mode 100644 keyboards/keychron/v2/jis_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v2/jis_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/keymap.c
delete mode 100644 keyboards/keychron/v3/matrix.c
create mode 100644 keyboards/keychron/v4/ansi/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v4/ansi/keymaps/via/config.h
create mode 100644 keyboards/keychron/v4/iso/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v4/iso/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v5/matrix.c
rename keyboards/keychron/{q1v2 => v6}/jis_encoder/config.h (74%)
create mode 100644 keyboards/keychron/v6/jis_encoder/info.json
create mode 100644 keyboards/keychron/v6/jis_encoder/jis_encoder.c
create mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/default/keymap.c
create mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/default/rules.mk
create mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/keychron/keymap.c
create mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/keychron/rules.mk
create mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/via/keymap.c
rename keyboards/keychron/{v3/ansi_encoder/keymaps/vnmm => v6/jis_encoder/keymaps/via}/rules.mk (100%)
create mode 100644 keyboards/keychron/v6/jis_encoder/rules.mk
delete mode 100644 keyboards/keychron/v6/matrix.c
create mode 100644 keyboards/keychron/v7/ansi/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v7/ansi/keymaps/via/config.h
create mode 100644 keyboards/keychron/v7/iso/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v7/iso/keymaps/via/config.h
create mode 100644 keyboards/keychron/v8/ansi/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v8/ansi/keymaps/via/config.h
create mode 100644 keyboards/keychron/v8/ansi_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v8/ansi_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/v8/iso/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v8/iso/keymaps/via/config.h
create mode 100644 keyboards/keychron/v8/iso_encoder/keymaps/keychron/config.h
create mode 100644 keyboards/keychron/v8/iso_encoder/keymaps/via/config.h
diff --git a/keyboards/keychron/c1/ansi/rgb/config.h b/keyboards/keychron/c1/ansi/rgb/config.h
new file mode 100644
index 000000000000..b87b4221e128
--- /dev/null
+++ b/keyboards/keychron/c1/ansi/rgb/config.h
@@ -0,0 +1,93 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1110111
+#define DRIVER_ADDR_2 0b1110100
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 49
+#define DRIVER_2_LED_TOTAL 39
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+#define CKLED2001_CURRENT_TUNE \
+ { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
+
+/* turn off effects when suspended */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+#define CAPS_MAC_WIN_LOCK_LED_INDEX 87
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+// #define ENABLE_RGB_MATRIX_BAND_SAT
+// #define ENABLE_RGB_MATRIX_BAND_VAL
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// #define ENABLE_RGB_MATRIX_HUE_BREATHING
+// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+// #define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
+// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/keychron/c1/ansi/rgb/info.json b/keyboards/keychron/c1/ansi/rgb/info.json
new file mode 100644
index 000000000000..f1748d09d5ba
--- /dev/null
+++ b/keyboards/keychron/c1/ansi/rgb/info.json
@@ -0,0 +1,130 @@
+{
+ "keyboard_name": "Keychron C1 Pro",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0510",
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_ansi_87": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/c1/ansi/rgb/keymaps/default/keymap.c
similarity index 92%
rename from keyboards/keychron/c1_pro/ansi/rgb/keymaps/default/keymap.c
rename to keyboards/keychron/c1/ansi/rgb/keymaps/default/keymap.c
index 636e83b52752..9f046461af8c 100644
--- a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/default/keymap.c
+++ b/keyboards/keychron/c1/ansi/rgb/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_ansi_87(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,15 +45,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
+ [WIN_BASE] = LAYOUT_ansi_87(
+ KC_ESC, 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_PSCR, _______, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/keymap.c
similarity index 93%
rename from keyboards/keychron/c1_pro/ansi/rgb/keymaps/keychron/keymap.c
rename to keyboards/keychron/c1/ansi/rgb/keymaps/keychron/keymap.c
index 2b5a1957cd6c..b202555dfd78 100644
--- a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,9 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
@@ -25,7 +28,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
+ [MAC_BASE] = LAYOUT_ansi_87(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -33,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -41,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
+ [WIN_BASE] = LAYOUT_ansi_87(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -49,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +65,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/rules.mk
similarity index 53%
rename from keyboards/keychron/c1_pro/ansi/rgb/keymaps/keychron/rules.mk
rename to keyboards/keychron/c1/ansi/rgb/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/via/keymap.c b/keyboards/keychron/c1/ansi/rgb/keymaps/via/keymap.c
similarity index 93%
rename from keyboards/keychron/c1_pro/ansi/rgb/keymaps/via/keymap.c
rename to keyboards/keychron/c1/ansi/rgb/keymaps/via/keymap.c
index 636e83b52752..b01357703b5b 100644
--- a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/via/keymap.c
+++ b/keyboards/keychron/c1/ansi/rgb/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_ansi_87(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
+ [WIN_BASE] = LAYOUT_ansi_87(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/keymaps/via/rules.mk b/keyboards/keychron/c1/ansi/rgb/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/c1_pro/ansi/rgb/keymaps/via/rules.mk
rename to keyboards/keychron/c1/ansi/rgb/keymaps/via/rules.mk
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/rgb.c b/keyboards/keychron/c1/ansi/rgb/rgb.c
similarity index 63%
rename from keyboards/keychron/c1_pro/ansi/rgb/rgb.c
rename to keyboards/keychron/c1/ansi/rgb/rgb.c
index 04565f3b014b..a866576a8f33 100644
--- a/keyboards/keychron/c1_pro/ansi/rgb/rgb.c
+++ b/keyboards/keychron/c1/ansi/rgb/rgb.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,8 +16,10 @@
#include "quantum.h"
-// clang-format off
#ifdef RGB_MATRIX_ENABLE
+
+// clang-format off
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -92,8 +94,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_12, G_12, H_12},
{1, I_14, G_14, H_14},
- {0, I_14, G_14, H_14}, // CAPS_MAC_WIN_LED_INDEX
-
{1, C_1, A_1, B_1},
{1, C_3, A_3, B_3},
{1, C_4, A_4, B_4},
@@ -119,50 +119,40 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16},
{1, C_15, A_15, B_15},
-};
-// clang-format on
+ {0, I_14, G_14, H_14},
+};
-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;
-}
+#define __ NO_LED
-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;
+led_config_t g_led_config = {
+ {
+ // Key Matrix to LED Index
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 87, 13, 14 },
+ { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
+ { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 },
+ { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, 62, 15, 32 },
+ { 63, __, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 86, 75 },
+ { 76, 77, 78, __, __, __, 79, __, __, __, 80, 81, 82, 83, 84, 85 },
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {26,0}, {39,0}, {52,0}, {65,0}, {85,0}, {98,0}, {111,0}, {124,0}, {143,0}, {156,0}, {169,0}, {182,0}, {198,0}, {211,0}, {224,0},
+ {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
+ {3,27}, {20,27}, {33,27}, {46,27}, {59,27}, {72,27}, {85,27}, {98,27}, {111,27}, {124,27}, {137,27}, {150,27}, {163,27}, {179,27}, {198,27}, {211,27}, {224,27},
+ {5,39}, {23,39}, {36,39}, {49,39}, {62,39}, {75,39}, {88,39}, {101,39}, {114,39}, {127,39}, {140,39}, {153,39}, {174,39}, {221,39},
+ {8,52}, {29,52}, {42,52}, {55,52}, {68,52}, {82,52}, {95,52}, {108,52}, {121,52}, {134,52}, {147,52}, {171,52}, {211,52},
+ {2,64}, {18,64}, {34,64}, {83,64}, {132,64}, {148,64}, {165,64}, {181,64}, {198,64}, {211,64}, {224,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
- if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LED_INDEX, 0, 255, 255);
- } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LED_INDEX, 0, 0, 255);
- } else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LED_INDEX, 255, 255, 0);
- } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LED_INDEX, 255, 0, 0);
- }
- return true;
-}
+};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/c1/ansi/rgb/rules.mk b/keyboards/keychron/c1/ansi/rgb/rules.mk
new file mode 100644
index 000000000000..4bc1e23a57a0
--- /dev/null
+++ b/keyboards/keychron/c1/ansi/rgb/rules.mk
@@ -0,0 +1,8 @@
+# Build Options
+# change yes to no to disable.
+#
+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
diff --git a/keyboards/keychron/c1/ansi/white/config.h b/keyboards/keychron/c1/ansi/white/config.h
new file mode 100644
index 000000000000..95d5645d593c
--- /dev/null
+++ b/keyboards/keychron/c1/ansi/white/config.h
@@ -0,0 +1,72 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 1
+#define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 90
+#define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+#define CKLED2001_CURRENT_TUNE \
+ { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
+
+/* turn off effects when suspended */
+#define LED_DISABLE_WHEN_USB_SUSPENDED
+
+#define CAPS_LOCK_LED_INDEX 87
+#define MAC_LOCK_LED_INDEX 88
+#define WIN_LOCK_LED_INDEX 89
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+#define ENABLE_LED_MATRIX_NONE
+#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
+// #define ENABLE_LED_MATRIX_ALPHAS_MODS // Static dual val, speed is val for LEDs marked as modifiers
+#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
+// #define ENABLE_LED_MATRIX_BAND // Band fading brightness scrolling left to right
+#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
+#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
+#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+#define LED_MATRIX_KEYPRESSES
+#define LED_MATRIX_KEYRELEASES
+
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
+// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
+// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out
+// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out
+// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out
+#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
+// #endif
+#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
+#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
+// #define ENABLE_LED_MATRIX_EFFECT_MAX
diff --git a/keyboards/keychron/c1/ansi/white/info.json b/keyboards/keychron/c1/ansi/white/info.json
new file mode 100644
index 000000000000..01d4bcabda40
--- /dev/null
+++ b/keyboards/keychron/c1/ansi/white/info.json
@@ -0,0 +1,130 @@
+{
+ "keyboard_name": "Keychron C1 Pro",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0513",
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_ansi_87": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,13], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,12], "x":17.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,14], "x":17.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[3,15], "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/c1_pro/ansi/white/keymaps/via/keymap.c b/keyboards/keychron/c1/ansi/white/keymaps/default/keymap.c
similarity index 93%
rename from keyboards/keychron/c1_pro/ansi/white/keymaps/via/keymap.c
rename to keyboards/keychron/c1/ansi/white/keymaps/default/keymap.c
index a829c1189226..d2c71315ac3d 100644
--- a/keyboards/keychron/c1_pro/ansi/white/keymaps/via/keymap.c
+++ b/keyboards/keychron/c1/ansi/white/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ [MAC_BASE] = LAYOUT_ansi_87(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
+ [WIN_BASE] = LAYOUT_ansi_87(
KC_ESC, 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_PSCR, _______, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c1_pro/ansi/white/keymaps/keychron/keymap.c b/keyboards/keychron/c1/ansi/white/keymaps/keychron/keymap.c
similarity index 93%
rename from keyboards/keychron/c1_pro/ansi/white/keymaps/keychron/keymap.c
rename to keyboards/keychron/c1/ansi/white/keymaps/keychron/keymap.c
index e17d67eb7188..8b1e0a183de6 100644
--- a/keyboards/keychron/c1_pro/ansi/white/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c1/ansi/white/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,9 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
@@ -25,7 +28,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
+ [MAC_BASE] = LAYOUT_ansi_87(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -33,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -41,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
+ [WIN_BASE] = LAYOUT_ansi_87(
KC_ESC, 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_PSCR, KC_CRTA, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -49,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -58,13 +61,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+// clang-format on
+
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c1/ansi/white/keymaps/keychron/rules.mk
similarity index 53%
rename from keyboards/keychron/c2_pro/ansi/rgb/keymaps/keychron/rules.mk
rename to keyboards/keychron/c1/ansi/white/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/c1/ansi/white/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/c1_pro/ansi/white/keymaps/default/keymap.c b/keyboards/keychron/c1/ansi/white/keymaps/via/keymap.c
similarity index 93%
rename from keyboards/keychron/c1_pro/ansi/white/keymaps/default/keymap.c
rename to keyboards/keychron/c1/ansi/white/keymaps/via/keymap.c
index a829c1189226..d2c71315ac3d 100644
--- a/keyboards/keychron/c1_pro/ansi/white/keymaps/default/keymap.c
+++ b/keyboards/keychron/c1/ansi/white/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ [MAC_BASE] = LAYOUT_ansi_87(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
+ [WIN_BASE] = LAYOUT_ansi_87(
KC_ESC, 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_PSCR, _______, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c1_pro/ansi/white/keymaps/via/rules.mk b/keyboards/keychron/c1/ansi/white/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/c1_pro/ansi/white/keymaps/via/rules.mk
rename to keyboards/keychron/c1/ansi/white/keymaps/via/rules.mk
diff --git a/keyboards/keychron/c1/ansi/white/rules.mk b/keyboards/keychron/c1/ansi/white/rules.mk
new file mode 100644
index 000000000000..4bc1e23a57a0
--- /dev/null
+++ b/keyboards/keychron/c1/ansi/white/rules.mk
@@ -0,0 +1,8 @@
+# Build Options
+# change yes to no to disable.
+#
+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
diff --git a/keyboards/keychron/c1_pro/ansi/white/white.c b/keyboards/keychron/c1/ansi/white/white.c
similarity index 57%
rename from keyboards/keychron/c1_pro/ansi/white/white.c
rename to keyboards/keychron/c1/ansi/white/white.c
index 72e9ad4db139..944d279f25fc 100644
--- a/keyboards/keychron/c1_pro/ansi/white/white.c
+++ b/keyboards/keychron/c1/ansi/white/white.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,8 +16,10 @@
#include "quantum.h"
-// clang-format off
#ifdef LED_MATRIX_ENABLE
+
+// clang-format off
+
const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -71,7 +73,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, C_6}, // p
{0, C_5}, // [{
{0, C_4}, // ]}
- {0, C_3}, // \|
+ {0, C_3}, // \\|
{0, C_2}, // DEL
{0, C_1}, // END
{0, G_6}, // PGDN
@@ -90,10 +92,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, D_5}, // '"
{0, D_3}, // enter
- {0, H_7}, // CPAS
- {0, H_8}, // MAC
- {0, H_9}, // WIN
-
{0, E_16}, // left shift
{0, E_14}, // z
{0, E_13}, // x
@@ -119,58 +117,42 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, F_2}, // left
{0, F_1}, // down
{0, G_13}, // right
-};
-// clang-format on
+ {0, H_7}, // CPAS
+ {0, H_8}, // MAC
+ {0, H_9}, // WIN
+};
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- if (!process_record_user(keycode, record)) {
- return false;
- }
- switch (keycode) {
- case BL_TOGG:
- if (record->event.pressed) {
- switch (led_matrix_get_flags()) {
- case LED_FLAG_ALL: {
- led_matrix_set_flags(LED_FLAG_NONE);
- led_matrix_set_value_all(0);
- } break;
- default: {
- led_matrix_set_flags(LED_FLAG_ALL);
- } break;
- }
- }
- if (!led_matrix_is_enabled()) {
- led_matrix_set_flags(LED_FLAG_ALL);
- led_matrix_enable();
- }
- return false;
- }
- return true;
-}
+#define __ NO_LED
-bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
- if (!led_matrix_indicators_advanced_user(led_min, led_max)) {
- return false;
+led_config_t g_led_config = {
+ {
+ // Key Matrix to LED Index
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 87, 13, 14 },
+ { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
+ { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 },
+ { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 32, 62, 49, 86 },
+ { 63, __, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 87, 74, 88, 75 },
+ { 76, 77, 78, __, __, __, 79, 89, __, __, 80, 81, 82, 83, 84, 85 },
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {26,0}, {39,0}, {52,0}, {65,0}, {85,0}, {98,0}, {111,0}, {124,0}, {143,0}, {156,0}, {169,0}, {182,0}, {198,0}, {211,0}, {224,0},
+ {0,15}, {26,15}, {13,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
+ {3,27}, {20,27}, {46,27}, {59,27}, {33,27}, {72,27}, {85,27}, {98,27}, {111,27}, {124,27}, {137,27}, {150,27}, {163,27}, {179,27}, {198,27}, {211,27}, {224,27},
+ {5,39}, {23,39}, {36,39}, {49,39}, {62,39}, {75,39}, {88,39}, {101,39}, {114,39}, {127,39}, {140,39}, {153,39}, {174,39}, {198,39}, {211, 39},{224,39},
+ {8,52}, {29,52}, {42,52}, {55,52}, {68,52}, {82,52}, {95,52}, {108,52}, {121,52}, {134,52}, {147,52}, {171,52}, {211,52},
+ {2,64}, {18,64}, {34,64}, {83,64}, {132,64}, {149,64}, {181,64}, {165,64}, {198,64}, {211,64}, {224,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 8, 8,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
- if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
- led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
- } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
- led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
- } else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
- led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
- } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
- led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
- }
- return true;
-}
+};
#endif
diff --git a/keyboards/keychron/c1/c1.c b/keyboards/keychron/c1/c1.c
new file mode 100644
index 000000000000..88c4b350e40f
--- /dev/null
+++ b/keyboards/keychron/c1/c1.c
@@ -0,0 +1,212 @@
+/* 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 .
+ */
+
+#include "quantum.h"
+
+// clang-format off
+
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
+// clang-format on
+
+#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 ? 2 : 0));
+ }
+ return true;
+}
+
+#endif // DIP_SWITCH_ENABLE
+
+#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_MAC_WIN_LOCK_LED_INDEX)
+
+extern void rgb_matrix_update_pwm_buffers(void);
+
+bool rgb_matrix_indicators_kb(void) {
+ if (!rgb_matrix_indicators_user()) {
+ return false;
+ }
+ if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 255, 255);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 0, 255);
+ } else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 255, 0);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 0, 0);
+ }
+ return true;
+}
+
+void rgb_matrix_indicators_none_kb(void) {
+ rgb_matrix_indicators_kb();
+ rgb_matrix_update_pwm_buffers();
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+
+ if (rgb_matrix_is_enabled()
+# if defined(ENABLE_RGB_MATRIX_RAINDROPS)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_RAINDROPS)
+# endif
+# if defined(ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_JELLYBEAN_RAINDROPS)
+# endif
+# if defined(ENABLE_RGB_MATRIX_PIXEL_RAIN)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_PIXEL_RAIN)
+# endif
+ ) {
+ return res;
+ }
+
+ if (res) {
+# if defined(CAPS_MAC_WIN_LOCK_LED_INDEX)
+ if ((led_state.caps_lock) && (default_layer_state == (1 << 0))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 255, 255);
+ } else if ((!led_state.caps_lock) && (default_layer_state == (1 << 0))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 0, 255);
+ } else if ((led_state.caps_lock) && (default_layer_state == (1 << 2))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 255, 0);
+ } else if ((!led_state.caps_lock) && (default_layer_state == (1 << 2))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 0, 0);
+ }
+# endif
+ rgb_matrix_update_pwm_buffers();
+ }
+
+ return res;
+}
+
+void housekeeping_task_kb(void) {
+# if defined(RGB_MATRIX_ENABLE) && defined(CAPS_MAC_WIN_LOCK_LED_INDEX)
+ if (!rgb_matrix_is_enabled()) {
+ if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 255, 255);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 0, 255);
+ } else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 255, 0);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 0, 0);
+ }
+ rgb_matrix_update_pwm_buffers();
+ }
+# endif
+}
+
+#endif
+
+#if defined(LED_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) && defined(MAC_LOCK_LED_INDEX) && defined(WIN_LOCK_LED_INDEX)
+
+extern void led_matrix_update_pwm_buffers(void);
+
+bool led_matrix_indicators_kb(void) {
+ if (!led_matrix_indicators_user()) {
+ return false;
+ }
+ if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ } else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ }
+ return true;
+}
+
+void led_matrix_indicators_none_kb(void) {
+ led_matrix_indicators_kb();
+ led_matrix_update_pwm_buffers();
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+
+ if (res) {
+# if defined(CAPS_LOCK_LED_INDEX) && defined(MAC_LOCK_LED_INDEX) && defined(WIN_LOCK_LED_INDEX)
+ if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ } else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ }
+ led_matrix_update_pwm_buffers();
+# endif
+ }
+
+ return res;
+}
+
+void housekeeping_task_kb(void) {
+# if defined(LED_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) && defined(MAC_LOCK_LED_INDEX) && defined(WIN_LOCK_LED_INDEX)
+ if (!led_matrix_is_enabled()) {
+ if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ } else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ } else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ }
+ led_matrix_update_pwm_buffers();
+ }
+# endif
+}
+
+#endif
diff --git a/keyboards/keychron/c1_pro/config.h b/keyboards/keychron/c1/config.h
similarity index 88%
rename from keyboards/keychron/c1_pro/config.h
rename to keyboards/keychron/c1/config.h
index 2d8149047125..1ee14465720c 100644
--- a/keyboards/keychron/c1_pro/config.h
+++ b/keyboards/keychron/c1/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron(https://www.keychron.com)
+/* 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
@@ -18,6 +18,7 @@
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -33,5 +34,6 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* Old default behavior of mod-taps */
-#define HOLD_ON_OTHER_KEY_PRESS
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/c1_pro/halconf.h b/keyboards/keychron/c1/halconf.h
similarity index 100%
rename from keyboards/keychron/c1_pro/halconf.h
rename to keyboards/keychron/c1/halconf.h
diff --git a/keyboards/keychron/c1_pro/mcuconf.h b/keyboards/keychron/c1/mcuconf.h
similarity index 100%
rename from keyboards/keychron/c1_pro/mcuconf.h
rename to keyboards/keychron/c1/mcuconf.h
diff --git a/keyboards/keychron/c1_pro/readme.md b/keyboards/keychron/c1/readme.md
similarity index 85%
rename from keyboards/keychron/c1_pro/readme.md
rename to keyboards/keychron/c1/readme.md
index 7e9d0e905870..6640f2b069ab 100644
--- a/keyboards/keychron/c1_pro/readme.md
+++ b/keyboards/keychron/c1/readme.md
@@ -1,8 +1,8 @@
# Keychron C1 Pro
-![Keychron C1 Pro](https://i.imgur.com/Svdm4lph.jpg)
+![Keychron C1 Pro](https://i.imgur.com/Svdm4lp.jpg)
-A customizable 80% TKL keyboard.
+A customizable 100% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron C1 Pro
@@ -16,7 +16,7 @@ Make example for this keyboard (after setting up your build environment):
Flashing example for this keyboard:
make keychron/c1/ansi/rgb:default:flash
- make keychron/c1/ansi/white:default:flash
+ make keychron/c1/ansi/rbg:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/info.json b/keyboards/keychron/c1_pro/ansi/rgb/info.json
deleted file mode 100644
index c6011a28370a..000000000000
--- a/keyboards/keychron/c1_pro/ansi/rgb/info.json
+++ /dev/null
@@ -1,229 +0,0 @@
-{
- "usb": {
- "pid": "0x0510",
- "device_version": "1.0.0"
- },
- "features": {
- "rgb_matrix": true
- },
- "layouts": {
- "LAYOUT_tkl_ansi": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
- ]
- }
- },
- "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
- },
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":26, "y":0},
- {"matrix":[0, 2], "flags":1, "x":39, "y":0},
- {"matrix":[0, 3], "flags":1, "x":52, "y":0},
- {"matrix":[0, 4], "flags":1, "x":65, "y":0},
- {"matrix":[0, 5], "flags":1, "x":85, "y":0},
- {"matrix":[0, 6], "flags":1, "x":98, "y":0},
- {"matrix":[0, 7], "flags":1, "x":111, "y":0},
- {"matrix":[0, 8], "flags":1, "x":124, "y":0},
- {"matrix":[0, 9], "flags":1, "x":143, "y":0},
- {"matrix":[0, 10], "flags":1, "x":156, "y":0},
- {"matrix":[0, 11], "flags":1, "x":169, "y":0},
- {"matrix":[0, 12], "flags":1, "x":182, "y":0},
- {"matrix":[0, 14], "flags":1, "x":198, "y":0},
- {"matrix":[0, 15], "flags":1, "x":211, "y":0},
- {"matrix":[3, 14], "flags":1, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":15, "y":15},
- {"matrix":[1, 2], "flags":4, "x":26, "y":15},
- {"matrix":[1, 3], "flags":4, "x":39, "y":15},
- {"matrix":[1, 4], "flags":4, "x":52, "y":15},
- {"matrix":[1, 5], "flags":4, "x":65, "y":15},
- {"matrix":[1, 6], "flags":4, "x":78, "y":15},
- {"matrix":[1, 7], "flags":4, "x":91, "y":15},
- {"matrix":[1, 8], "flags":4, "x":104, "y":15},
- {"matrix":[1, 9], "flags":4, "x":117, "y":15},
- {"matrix":[1, 10], "flags":4, "x":130, "y":15},
- {"matrix":[1, 11], "flags":4, "x":143, "y":15},
- {"matrix":[1, 12], "flags":4, "x":156, "y":15},
- {"matrix":[1, 13], "flags":1, "x":176, "y":15},
- {"matrix":[1, 14], "flags":1, "x":198, "y":15},
- {"matrix":[1, 15], "flags":1, "x":211, "y":15},
- {"matrix":[3, 15], "flags":1, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":3, "y":27},
- {"matrix":[2, 1], "flags":4, "x":20, "y":27},
- {"matrix":[2, 2], "flags":4, "x":33, "y":27},
- {"matrix":[2, 3], "flags":4, "x":46, "y":27},
- {"matrix":[2, 4], "flags":4, "x":59, "y":27},
- {"matrix":[2, 5], "flags":4, "x":72, "y":27},
- {"matrix":[2, 6], "flags":4, "x":85, "y":27},
- {"matrix":[2, 7], "flags":4, "x":98, "y":27},
- {"matrix":[2, 8], "flags":4, "x":111, "y":27},
- {"matrix":[2, 9], "flags":4, "x":124, "y":27},
- {"matrix":[2, 10], "flags":4, "x":137, "y":27},
- {"matrix":[2, 11], "flags":4, "x":150, "y":27},
- {"matrix":[2, 12], "flags":4, "x":163, "y":27},
- {"matrix":[2, 13], "flags":4, "x":179, "y":27},
- {"matrix":[2, 14], "flags":1, "x":198, "y":27},
- {"matrix":[2, 15], "flags":1, "x":211, "y":27},
- {"matrix":[3, 12], "flags":1, "x":224, "y":27},
-
- {"matrix":[3, 0], "flags":8, "x":5, "y":39},
- {"matrix":[3, 1], "flags":4, "x":23, "y":39},
- {"matrix":[3, 2], "flags":4, "x":36, "y":39},
- {"matrix":[3, 3], "flags":4, "x":49, "y":39},
- {"matrix":[3, 4], "flags":4, "x":62, "y":39},
- {"matrix":[3, 5], "flags":4, "x":75, "y":39},
- {"matrix":[3, 6], "flags":4, "x":88, "y":39},
- {"matrix":[3, 7], "flags":4, "x":101, "y":39},
- {"matrix":[3, 8], "flags":4, "x":114, "y":39},
- {"matrix":[3, 9], "flags":4, "x":127, "y":39},
- {"matrix":[3, 10], "flags":4, "x":140, "y":39},
- {"matrix":[3, 11], "flags":4, "x":153, "y":39},
- {"matrix":[3, 13], "flags":1, "x":174, "y":39},
-
- {"matrix":[4, 12], "flags":8, "x":211, "y":39},
-
- {"matrix":[4, 0], "flags":1, "x":8, "y":52},
- {"matrix":[4, 2], "flags":4, "x":29, "y":52},
- {"matrix":[4, 3], "flags":4, "x":42, "y":52},
- {"matrix":[4, 4], "flags":4, "x":55, "y":52},
- {"matrix":[4, 5], "flags":4, "x":68, "y":52},
- {"matrix":[4, 6], "flags":4, "x":82, "y":52},
- {"matrix":[4, 7], "flags":4, "x":95, "y":52},
- {"matrix":[4, 8], "flags":4, "x":108, "y":52},
- {"matrix":[4, 9], "flags":4, "x":121, "y":52},
- {"matrix":[4, 10], "flags":4, "x":134, "y":52},
- {"matrix":[4, 11], "flags":4, "x":147, "y":52},
- {"matrix":[4, 13], "flags":1, "x":171, "y":52},
- {"matrix":[4, 15], "flags":1, "x":211, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":2, "y":64},
- {"matrix":[5, 1], "flags":1, "x":18, "y":64},
- {"matrix":[5, 2], "flags":1, "x":34, "y":64},
- {"matrix":[5, 6], "flags":4, "x":83, "y":64},
- {"matrix":[5, 10], "flags":1, "x":132, "y":64},
- {"matrix":[5, 11], "flags":1, "x":148, "y":64},
- {"matrix":[5, 12], "flags":4, "x":165, "y":64},
- {"matrix":[5, 13], "flags":1, "x":181, "y":64},
- {"matrix":[5, 14], "flags":1, "x":198, "y":64},
- {"matrix":[5, 15], "flags":1, "x":211, "y":64},
- {"matrix":[4, 14], "flags":1, "x":224, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/rules.mk b/keyboards/keychron/c1_pro/ansi/rgb/rules.mk
deleted file mode 100644
index 7307f9f9e79a..000000000000
--- a/keyboards/keychron/c1_pro/ansi/rgb/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-# Build Options
diff --git a/keyboards/keychron/c1_pro/ansi/white/config.h b/keyboards/keychron/c1_pro/ansi/white/config.h
deleted file mode 100644
index dd3e1da477bf..000000000000
--- a/keyboards/keychron/c1_pro/ansi/white/config.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
-/* LED Matrix Driver Configuration */
-#define DRIVER_COUNT 1
-#define DRIVER_ADDR_1 0b1110100
-
-/* LED Matrix Configuration */
-#define LED_MATRIX_LED_COUNT 90
-
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set led driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
-
-/* turn off effects when suspended */
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
-/* Enbale caps_lcok, win os and mac os indicator */
-#define CAPS_LOCK_LED_INDEX 63
-#define MAC_LOCK_LED_INDEX 64
-#define WIN_LOCK_LED_INDEX 65
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
-#define LED_MATRIX_KEYPRESSES
-#define LED_MATRIX_KEYRELEASES
diff --git a/keyboards/keychron/c1_pro/ansi/white/info.json b/keyboards/keychron/c1_pro/ansi/white/info.json
deleted file mode 100644
index 070ed6c4270f..000000000000
--- a/keyboards/keychron/c1_pro/ansi/white/info.json
+++ /dev/null
@@ -1,226 +0,0 @@
-{
- "usb": {
- "pid": "0x0513",
- "device_version": "1.0.0"
- },
- "features": {
- "led_matrix": true
- },
- "layouts": {
- "LAYOUT_tkl_ansi": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,13], "x":17.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,12], "x":17.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,14], "x":17.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[3,15], "x":17.25, "y":5.25}
- ]
- }
- },
- "led_matrix": {
- "driver": "ckled2001",
- "animations": {
- "none": true,
- "solid": true,
- "breathing": true,
- "band_pinwheel": true,
- "band_spiral": true,
- "cycle_left_right": true,
- "cycle_up_down": true,
- "cycle_out_in": true,
- "dual_beacon": true,
- "solid_reactive_simple": true,
- "solid_reactive_multiwide": true,
- "solid_reactive_multinexus": true,
- "solid_splash": true,
- "wave_left_right": true,
- "wave_up_down": true,
- "effect_max": true
- },
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":26, "y":0},
- {"matrix":[0, 2], "flags":1, "x":39, "y":0},
- {"matrix":[0, 3], "flags":1, "x":52, "y":0},
- {"matrix":[0, 4], "flags":1, "x":65, "y":0},
- {"matrix":[0, 5], "flags":1, "x":85, "y":0},
- {"matrix":[0, 6], "flags":1, "x":98, "y":0},
- {"matrix":[0, 7], "flags":1, "x":111, "y":0},
- {"matrix":[0, 8], "flags":1, "x":124, "y":0},
- {"matrix":[0, 9], "flags":1, "x":143, "y":0},
- {"matrix":[0, 10], "flags":1, "x":156, "y":0},
- {"matrix":[0, 11], "flags":1, "x":169, "y":0},
- {"matrix":[0, 12], "flags":1, "x":182, "y":0},
- {"matrix":[0, 14], "flags":1, "x":198, "y":0},
- {"matrix":[0, 15], "flags":1, "x":211, "y":0},
- {"matrix":[0, 13], "flags":1, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":15, "y":15},
- {"matrix":[1, 2], "flags":4, "x":26, "y":15},
- {"matrix":[1, 3], "flags":4, "x":39, "y":15},
- {"matrix":[1, 4], "flags":4, "x":52, "y":15},
- {"matrix":[1, 5], "flags":4, "x":65, "y":15},
- {"matrix":[1, 6], "flags":4, "x":78, "y":15},
- {"matrix":[1, 7], "flags":4, "x":91, "y":15},
- {"matrix":[1, 8], "flags":4, "x":104, "y":15},
- {"matrix":[1, 9], "flags":4, "x":117, "y":15},
- {"matrix":[1, 10], "flags":4, "x":130, "y":15},
- {"matrix":[1, 11], "flags":4, "x":143, "y":15},
- {"matrix":[1, 12], "flags":4, "x":156, "y":15},
- {"matrix":[1, 13], "flags":1, "x":176, "y":15},
- {"matrix":[1, 14], "flags":1, "x":198, "y":15},
- {"matrix":[1, 15], "flags":1, "x":211, "y":15},
- {"matrix":[3, 12], "flags":1, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":3, "y":27},
- {"matrix":[2, 1], "flags":4, "x":20, "y":27},
- {"matrix":[2, 2], "flags":4, "x":33, "y":27},
- {"matrix":[2, 3], "flags":4, "x":46, "y":27},
- {"matrix":[2, 4], "flags":4, "x":59, "y":27},
- {"matrix":[2, 5], "flags":4, "x":72, "y":27},
- {"matrix":[2, 6], "flags":4, "x":85, "y":27},
- {"matrix":[2, 7], "flags":4, "x":98, "y":27},
- {"matrix":[2, 8], "flags":4, "x":111, "y":27},
- {"matrix":[2, 9], "flags":4, "x":124, "y":27},
- {"matrix":[2, 10], "flags":4, "x":137, "y":27},
- {"matrix":[2, 11], "flags":4, "x":150, "y":27},
- {"matrix":[2, 12], "flags":4, "x":163, "y":27},
- {"matrix":[2, 13], "flags":4, "x":179, "y":27},
- {"matrix":[2, 14], "flags":1, "x":198, "y":27},
- {"matrix":[2, 15], "flags":1, "x":211, "y":27},
- {"matrix":[3, 14], "flags":1, "x":224, "y":27},
-
- {"matrix":[3, 0], "flags":8, "x":5, "y":39},
- {"matrix":[3, 1], "flags":4, "x":23, "y":39},
- {"matrix":[3, 2], "flags":4, "x":36, "y":39},
- {"matrix":[3, 3], "flags":4, "x":49, "y":39},
- {"matrix":[3, 4], "flags":4, "x":62, "y":39},
- {"matrix":[3, 5], "flags":4, "x":75, "y":39},
- {"matrix":[3, 6], "flags":4, "x":88, "y":39},
- {"matrix":[3, 7], "flags":4, "x":101, "y":39},
- {"matrix":[3, 8], "flags":4, "x":114, "y":39},
- {"matrix":[3, 9], "flags":4, "x":127, "y":39},
- {"matrix":[3, 10], "flags":4, "x":140, "y":39},
- {"matrix":[3, 11], "flags":4, "x":153, "y":39},
- {"matrix":[3, 13], "flags":1, "x":174, "y":39},
-
- {"matrix":[4, 12], "flags":8, "x":198, "y":39},
- {"matrix":[4, 12], "flags":8, "x":211, "y":39},
- {"matrix":[4, 12], "flags":8, "x":224, "y":39},
-
- {"matrix":[4, 0], "flags":1, "x":8, "y":52},
- {"matrix":[4, 2], "flags":4, "x":29, "y":52},
- {"matrix":[4, 3], "flags":4, "x":42, "y":52},
- {"matrix":[4, 4], "flags":4, "x":55, "y":52},
- {"matrix":[4, 5], "flags":4, "x":68, "y":52},
- {"matrix":[4, 6], "flags":4, "x":82, "y":52},
- {"matrix":[4, 7], "flags":4, "x":95, "y":52},
- {"matrix":[4, 8], "flags":4, "x":108, "y":52},
- {"matrix":[4, 9], "flags":4, "x":121, "y":52},
- {"matrix":[4, 10], "flags":4, "x":134, "y":52},
- {"matrix":[4, 11], "flags":4, "x":147, "y":52},
- {"matrix":[4, 13], "flags":1, "x":171, "y":52},
- {"matrix":[4, 15], "flags":1, "x":211, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":2, "y":64},
- {"matrix":[5, 1], "flags":1, "x":18, "y":64},
- {"matrix":[5, 2], "flags":1, "x":34, "y":64},
- {"matrix":[5, 6], "flags":4, "x":83, "y":64},
- {"matrix":[5, 10], "flags":1, "x":132, "y":64},
- {"matrix":[5, 11], "flags":1, "x":148, "y":64},
- {"matrix":[5, 12], "flags":4, "x":165, "y":64},
- {"matrix":[5, 13], "flags":1, "x":181, "y":64},
- {"matrix":[5, 14], "flags":1, "x":198, "y":64},
- {"matrix":[5, 15], "flags":1, "x":211, "y":64},
- {"matrix":[3, 15], "flags":1, "x":224, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/c1_pro/ansi/white/rules.mk b/keyboards/keychron/c1_pro/ansi/white/rules.mk
deleted file mode 100644
index 7307f9f9e79a..000000000000
--- a/keyboards/keychron/c1_pro/ansi/white/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-# Build Options
diff --git a/keyboards/keychron/c1_pro/c1_pro.c b/keyboards/keychron/c1_pro/c1_pro.c
deleted file mode 100644
index 607cd958ade9..000000000000
--- a/keyboards/keychron/c1_pro/c1_pro.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* 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 "quantum.h"
-
-// clang-format off
-
-const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
-};
-
-// clang-format on
-
-#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 ? 2 : 0));
- }
- return true;
-}
-
-#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/c1_pro/info.json b/keyboards/keychron/c1_pro/info.json
deleted file mode 100644
index 9c9b4bf16f85..000000000000
--- a/keyboards/keychron/c1_pro/info.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "keyboard_name": "Keychron C1 Pro",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "usb": {
- "vid": "0x3434"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "community_layouts": ["tkl_ansi"]
-}
diff --git a/keyboards/keychron/c2/ansi/rgb/config.h b/keyboards/keychron/c2/ansi/rgb/config.h
new file mode 100644
index 000000000000..c4c596a69031
--- /dev/null
+++ b/keyboards/keychron/c2/ansi/rgb/config.h
@@ -0,0 +1,93 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1110111
+#define DRIVER_ADDR_2 0b1110100
+
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56 }
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 60
+#define DRIVER_2_LED_TOTAL 48
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Enable indicator LED*/
+#define NUM_LOCK_INDEX 16
+#define CAPS_LOCK_INDEX 17
+#define MAC_OS_LED_INDEX 18
+#define WIN_OS_LED_INDEX 19
+
+/* turn off effects when suspended */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+// #define ENABLE_RGB_MATRIX_BAND_SAT
+// #define ENABLE_RGB_MATRIX_BAND_VAL
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// #define ENABLE_RGB_MATRIX_HUE_BREATHING
+// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+// #define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
+// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/keychron/c2/ansi/rgb/info.json b/keyboards/keychron/c2/ansi/rgb/info.json
new file mode 100644
index 000000000000..5b40fa62448f
--- /dev/null
+++ b/keyboards/keychron/c2/ansi/rgb/info.json
@@ -0,0 +1,147 @@
+{
+ "keyboard_name": "Keychron C2 Pro",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0520",
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_ansi_104": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/c2/ansi/rgb/keymaps/default/keymap.c
similarity index 93%
rename from keyboards/keychron/c2_pro/ansi/rgb/keymaps/default/keymap.c
rename to keyboards/keychron/c2/ansi/rgb/keymaps/default/keymap.c
index 07f523e30a0c..cae05ab83db4 100644
--- a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/default/keymap.c
+++ b/keyboards/keychron/c2/ansi/rgb/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,35 +29,35 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_ansi_104(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_ansi_104(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_ansi_104(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
-
- [WIN_FN] = LAYOUT(
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+
+ [WIN_FN] = LAYOUT_ansi_104(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/keymap.c
similarity index 93%
rename from keyboards/keychron/c2_pro/ansi/rgb/keymaps/keychron/keymap.c
rename to keyboards/keychron/c2/ansi/rgb/keymaps/keychron/keymap.c
index 9bc6b416bb3b..b62df5395839 100644
--- a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -27,48 +28,53 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [MAC_BASE] = LAYOUT_ansi_104(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_ansi_104(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_ansi_104(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_ansi_104(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..65df6fb72655
--- /dev/null
+++ b/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/via/keymap.c b/keyboards/keychron/c2/ansi/rgb/keymaps/via/keymap.c
similarity index 93%
rename from keyboards/keychron/c2_pro/ansi/rgb/keymaps/via/keymap.c
rename to keyboards/keychron/c2/ansi/rgb/keymaps/via/keymap.c
index 5120e9bacbf4..c7e4823ebca6 100644
--- a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/via/keymap.c
+++ b/keyboards/keychron/c2/ansi/rgb/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -27,35 +27,35 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_ansi_104(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_ansi_104(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_ansi_104(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_ansi_104(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/keymaps/via/rules.mk b/keyboards/keychron/c2/ansi/rgb/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/c2_pro/ansi/rgb/keymaps/via/rules.mk
rename to keyboards/keychron/c2/ansi/rgb/keymaps/via/rules.mk
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/rgb.c b/keyboards/keychron/c2/ansi/rgb/rgb.c
similarity index 62%
rename from keyboards/keychron/c2_pro/ansi/rgb/rgb.c
rename to keyboards/keychron/c2/ansi/rgb/rgb.c
index 998933081f1c..91885d892bbe 100644
--- a/keyboards/keychron/c2_pro/ansi/rgb/rgb.c
+++ b/keyboards/keychron/c2/ansi/rgb/rgb.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,6 +17,9 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
+
+// clang-format off
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -139,4 +142,37 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
};
+
+#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, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
+ { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
+ { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
+ { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
+ {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
+ }
+};
+
#endif //RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/c2/ansi/rgb/rules.mk b/keyboards/keychron/c2/ansi/rgb/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/c2/ansi/rgb/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/c2/ansi/white/config.h b/keyboards/keychron/c2/ansi/white/config.h
new file mode 100644
index 000000000000..284b94744ac5
--- /dev/null
+++ b/keyboards/keychron/c2/ansi/white/config.h
@@ -0,0 +1,70 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 1
+#define DRIVER_ADDR_1 0b1110100
+
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0 }
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 108
+#define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+
+/* Enable indicator LED*/
+#define NUM_LOCK_INDEX 16
+#define CAPS_LOCK_INDEX 17
+#define MAC_OS_LED_INDEX 18
+#define WIN_OS_LED_INDEX 19
+
+/* turn off effects when suspended */
+#define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+#define ENABLE_LED_MATRIX_NONE
+#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
+// #define ENABLE_LED_MATRIX_ALPHAS_MODS // Static dual val, speed is val for LEDs marked as modifiers
+#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
+// #define ENABLE_LED_MATRIX_BAND // Band fading brightness scrolling left to right
+#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
+#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
+#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+#define LED_MATRIX_KEYPRESSES
+#define LED_MATRIX_KEYRELEASES
+
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
+// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
+// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out
+// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out
+// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out
+#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
+// #endif
+#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
+#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
+// #define ENABLE_LED_MATRIX_EFFECT_MAX
diff --git a/keyboards/keychron/c2/ansi/white/info.json b/keyboards/keychron/c2/ansi/white/info.json
new file mode 100644
index 000000000000..f6219cd6c2bc
--- /dev/null
+++ b/keyboards/keychron/c2/ansi/white/info.json
@@ -0,0 +1,147 @@
+{
+ "keyboard_name": "Keychron C2 Pro",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0523",
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_ansi_104": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[1,19], "x":20.5, "y":1.25},
+ {"matrix":[0,17], "x":21.5, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[2,19], "x":20.5, "y":2.25},
+ {"matrix":[0,18], "x":21.5, "y":2.25, "h":2},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,19], "x":20.5, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,19], "x":20.5, "y":4.25},
+ {"matrix":[0,19], "x":21.5, "y":4.25, "h":2},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,19], "x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/c2_pro/ansi/white/keymaps/default/keymap.c b/keyboards/keychron/c2/ansi/white/keymaps/default/keymap.c
similarity index 93%
rename from keyboards/keychron/c2_pro/ansi/white/keymaps/default/keymap.c
rename to keyboards/keychron/c2/ansi/white/keymaps/default/keymap.c
index 70934e122e33..59ecca8bff02 100644
--- a/keyboards/keychron/c2_pro/ansi/white/keymaps/default/keymap.c
+++ b/keyboards/keychron/c2/ansi/white/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,35 +29,35 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ [MAC_BASE] = LAYOUT_ansi_104(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_ansi_104(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_ansi_104(
KC_ESC, 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_PSCR, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_ansi_104(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/c2_pro/ansi/white/keymaps/keychron/keymap.c b/keyboards/keychron/c2/ansi/white/keymaps/keychron/keymap.c
similarity index 93%
rename from keyboards/keychron/c2_pro/ansi/white/keymaps/keychron/keymap.c
rename to keyboards/keychron/c2/ansi/white/keymaps/keychron/keymap.c
index 09002c3d7a47..2a99ea852ea1 100644
--- a/keyboards/keychron/c2_pro/ansi/white/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c2/ansi/white/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,9 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
@@ -25,48 +28,52 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [MAC_BASE] = LAYOUT_ansi_104(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_ansi_104(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_ansi_104(
KC_ESC, 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_PSCR, KC_CRTA, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_ansi_104(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
return true;
}
diff --git a/keyboards/keychron/c2/ansi/white/keymaps/keychron/rules.mk b/keyboards/keychron/c2/ansi/white/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..65df6fb72655
--- /dev/null
+++ b/keyboards/keychron/c2/ansi/white/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/c2_pro/ansi/white/keymaps/via/keymap.c b/keyboards/keychron/c2/ansi/white/keymaps/via/keymap.c
similarity index 93%
rename from keyboards/keychron/c2_pro/ansi/white/keymaps/via/keymap.c
rename to keyboards/keychron/c2/ansi/white/keymaps/via/keymap.c
index 547521e099b2..582ee744a7a3 100644
--- a/keyboards/keychron/c2_pro/ansi/white/keymaps/via/keymap.c
+++ b/keyboards/keychron/c2/ansi/white/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -27,35 +27,35 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ [MAC_BASE] = LAYOUT_ansi_104(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_ansi_104(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_ansi_104(
KC_ESC, 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_PSCR, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_ansi_104(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/c2_pro/ansi/white/keymaps/via/rules.mk b/keyboards/keychron/c2/ansi/white/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/c2_pro/ansi/white/keymaps/via/rules.mk
rename to keyboards/keychron/c2/ansi/white/keymaps/via/rules.mk
diff --git a/keyboards/keychron/c2/ansi/white/rules.mk b/keyboards/keychron/c2/ansi/white/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/c2/ansi/white/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/c2_pro/ansi/white/white.c b/keyboards/keychron/c2/ansi/white/white.c
similarity index 50%
rename from keyboards/keychron/c2_pro/ansi/white/white.c
rename to keyboards/keychron/c2/ansi/white/white.c
index 963ac8755f8a..f7c894bc4620 100644
--- a/keyboards/keychron/c2_pro/ansi/white/white.c
+++ b/keyboards/keychron/c2/ansi/white/white.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,8 +16,10 @@
#include "quantum.h"
-// clang-format off
#ifdef LED_MATRIX_ENABLE
+
+// clang-format off
+
const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -138,4 +140,37 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, G_11},
{0, G_12},
};
+
+#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, 11, 12, __, 13, 14, 15, 40, 61, 94 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 },
+ { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 16, 74, 17, 18, 19, 75, 76, 77 },
+ { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, __, 90, __, 91, 92, 93 },
+ { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, __, 107 },
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
+ {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
+ }
+};
+
#endif //LED_MATRIX_ENABLE
diff --git a/keyboards/keychron/c2/c2.c b/keyboards/keychron/c2/c2.c
new file mode 100644
index 000000000000..5488b06ee4bc
--- /dev/null
+++ b/keyboards/keychron/c2/c2.c
@@ -0,0 +1,169 @@
+/* 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 .
+ */
+
+#include "quantum.h"
+// clang-format off
+const matrix_row_t matrix_mask[] = {
+ 0b11111111111111111111,
+ 0b11111111111111111111,
+ 0b11111111111111111111,
+ 0b11111111111111111111,
+ 0b11111111111111111111,
+ 0b11111111111111101111,
+};
+// clang-format on
+#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 ? 2 : 0));
+ }
+ return true;
+}
+
+#endif // DIP_SWITCH_ENABLE
+
+#if (defined(RGB_MATRIX_ENABLE) || defined(LED_MATRIX_ENABLE)) && defined(NUM_LOCK_INDEX) && defined(CAPS_LOCK_INDEX) && defined(MAC_OS_LED_INDEX) && defined(WIN_OS_LED_INDEX)
+
+# ifdef RGB_MATRIX_ENABLE
+# define LED_MATRIX_INDICATORS_KB rgb_matrix_indicators_kb
+# define LED_MATRIX_INDICATORS_USER rgb_matrix_indicators_user
+# define LED_MATRIX_SET_COLOR rgb_matrix_set_color
+# define LED_MATRIX_UPDATE_PWN_BUFFERS rgb_matrix_update_pwm_buffers
+# define LED_MATRIX_INDICATORS_NONE_KB rgb_matrix_indicators_none_kb
+# define LED_MATRIX_IS_ENABLED rgb_matrix_is_enabled
+# define COLOR_WHITE 255, 255, 255
+# define COLOR_BLACK 0, 0, 0
+# endif
+
+# ifdef LED_MATRIX_ENABLE
+# define LED_MATRIX_INDICATORS_KB led_matrix_indicators_kb
+# define LED_MATRIX_INDICATORS_USER led_matrix_indicators_user
+# define LED_MATRIX_SET_COLOR led_matrix_set_value
+# define LED_MATRIX_UPDATE_PWN_BUFFERS led_matrix_update_pwm_buffers
+# define LED_MATRIX_INDICATORS_NONE_KB led_matrix_indicators_none_kb
+# define LED_MATRIX_IS_ENABLED led_matrix_is_enabled
+# define COLOR_WHITE 255
+# define COLOR_BLACK 0
+# endif
+
+extern void LED_MATRIX_UPDATE_PWN_BUFFERS(void);
+
+bool LED_MATRIX_INDICATORS_KB(void) {
+ if (!LED_MATRIX_INDICATORS_USER()) {
+ return false;
+ }
+# if defined(CAPS_LOCK_INDEX)
+ if (host_keyboard_led_state().caps_lock) {
+ LED_MATRIX_SET_COLOR(CAPS_LOCK_INDEX, COLOR_WHITE);
+ } else {
+ LED_MATRIX_SET_COLOR(CAPS_LOCK_INDEX, COLOR_BLACK);
+ }
+# endif // CAPS_LOCK_INDEX
+# if defined(NUM_LOCK_INDEX)
+ if (host_keyboard_led_state().num_lock) {
+ LED_MATRIX_SET_COLOR(NUM_LOCK_INDEX, COLOR_WHITE);
+ } else {
+ LED_MATRIX_SET_COLOR(NUM_LOCK_INDEX, COLOR_BLACK);
+ }
+# endif // NUM_LOCK_INDEX
+# if defined(MAC_OS_LED_INDEX)
+ if (default_layer_state == (1 << 0)) {
+ LED_MATRIX_SET_COLOR(MAC_OS_LED_INDEX, COLOR_WHITE);
+ } else {
+ LED_MATRIX_SET_COLOR(MAC_OS_LED_INDEX, COLOR_BLACK);
+ }
+# endif // MAC_OS_LED_INDEX
+# if defined(WIN_OS_LED_INDEX)
+ if (default_layer_state == (1 << 2)) {
+ LED_MATRIX_SET_COLOR(WIN_OS_LED_INDEX, COLOR_WHITE);
+ } else {
+ LED_MATRIX_SET_COLOR(WIN_OS_LED_INDEX, COLOR_BLACK);
+ }
+# endif // WIN_OS_LED_INDEX
+ return true;
+}
+
+void LED_MATRIX_INDICATORS_NONE_KB(void) {
+ LED_MATRIX_INDICATORS_KB();
+ LED_MATRIX_UPDATE_PWN_BUFFERS();
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+
+ if (LED_MATRIX_IS_ENABLED()
+# if defined(RGB_MATRIX_ENABLE)
+# if defined(ENABLE_RGB_MATRIX_RAINDROPS)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_RAINDROPS)
+# endif
+# if defined(ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_JELLYBEAN_RAINDROPS)
+# endif
+# if defined(ENABLE_RGB_MATRIX_PIXEL_RAIN)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_PIXEL_RAIN)
+# endif
+# endif
+ ) {
+ return res;
+ }
+
+ if (res) {
+# if defined(NUM_LOCK_INDEX)
+ if (led_state.num_lock) {
+ LED_MATRIX_SET_COLOR(NUM_LOCK_INDEX, COLOR_WHITE);
+ } else {
+ LED_MATRIX_SET_COLOR(NUM_LOCK_INDEX, COLOR_BLACK);
+ }
+# endif // NUM_LOCK_INDEX
+# if defined(CAPS_LOCK_INDEX)
+ if (led_state.caps_lock) {
+ LED_MATRIX_SET_COLOR(CAPS_LOCK_INDEX, COLOR_WHITE);
+ } else {
+ LED_MATRIX_SET_COLOR(CAPS_LOCK_INDEX, COLOR_BLACK);
+ }
+# endif // CAPS_LOCK_INDEX
+
+ LED_MATRIX_UPDATE_PWN_BUFFERS();
+ }
+
+ return res;
+}
+
+void housekeeping_task_kb(void) {
+ if (!LED_MATRIX_IS_ENABLED()) {
+# if defined(MAC_OS_LED_INDEX)
+ if (default_layer_state == (1 << 0)) {
+ LED_MATRIX_SET_COLOR(MAC_OS_LED_INDEX, COLOR_WHITE);
+ } else {
+ LED_MATRIX_SET_COLOR(MAC_OS_LED_INDEX, COLOR_BLACK);
+ }
+# endif // MAC_OS_LED_INDEX
+# if defined(WIN_OS_LED_INDEX)
+ if (default_layer_state == (1 << 2)) {
+ LED_MATRIX_SET_COLOR(WIN_OS_LED_INDEX, COLOR_WHITE);
+ } else {
+ LED_MATRIX_SET_COLOR(WIN_OS_LED_INDEX, COLOR_BLACK);
+ }
+# endif // WIN_OS_LED_INDEX
+ LED_MATRIX_UPDATE_PWN_BUFFERS();
+ }
+}
+
+#endif
diff --git a/keyboards/keychron/c2_pro/config.h b/keyboards/keychron/c2/config.h
similarity index 86%
rename from keyboards/keychron/c2_pro/config.h
rename to keyboards/keychron/c2/config.h
index 6971ebd1aa8c..4ab73090a83f 100644
--- a/keyboards/keychron/c2_pro/config.h
+++ b/keyboards/keychron/c2/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron(https://www.keychron.com)
+/* 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
@@ -18,6 +18,7 @@
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -33,12 +34,12 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* Old default behavior of mod-taps */
-#define HOLD_ON_OTHER_KEY_PRESS
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
-/* HC595 used pins definiton */
#define HC595_STCP A0
#define HC595_SHCP A1
#define HC595_DS C15
#define SHIFT_COL_START 11
-#define SHIFT_COL_END 18
+#define SHIFT_COL_END 19
diff --git a/keyboards/keychron/c2_pro/halconf.h b/keyboards/keychron/c2/halconf.h
similarity index 100%
rename from keyboards/keychron/c2_pro/halconf.h
rename to keyboards/keychron/c2/halconf.h
diff --git a/keyboards/keychron/c2_pro/mcuconf.h b/keyboards/keychron/c2/mcuconf.h
similarity index 100%
rename from keyboards/keychron/c2_pro/mcuconf.h
rename to keyboards/keychron/c2/mcuconf.h
diff --git a/keyboards/keychron/c2_pro/readme.md b/keyboards/keychron/c2/readme.md
similarity index 94%
rename from keyboards/keychron/c2_pro/readme.md
rename to keyboards/keychron/c2/readme.md
index c0715929dfe7..cef903876e11 100644
--- a/keyboards/keychron/c2_pro/readme.md
+++ b/keyboards/keychron/c2/readme.md
@@ -1,6 +1,6 @@
# Keychron C2 Pro
-![Keychron C2 Pro](https://i.imgur.com/BQE1tFOh.jpg)
+![Keychron C2 Pro](https://i.imgur.com/BQE1tFO.jpg)
A customizable 100% keyboard.
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/config.h b/keyboards/keychron/c2_pro/ansi/rgb/config.h
deleted file mode 100644
index d62b756f5a8b..000000000000
--- a/keyboards/keychron/c2_pro/ansi/rgb/config.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110111
-#define DRIVER_ADDR_2 0b1110100
-
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56 }
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 60
-#define DRIVER_2_LED_TOTAL 48
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Enable indicator LED*/
-#define NUM_LED_INDEX 16
-#define CAPS_LED_INDEX 17
-#define MAC_LED_INDEX 18
-#define WIN_LED_INDEX 19
-
-/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-// 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
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/info.json b/keyboards/keychron/c2_pro/ansi/rgb/info.json
deleted file mode 100644
index e527af3371c1..000000000000
--- a/keyboards/keychron/c2_pro/ansi/rgb/info.json
+++ /dev/null
@@ -1,266 +0,0 @@
-{
- "usb": {
- "pid": "0x0520",
- "device_version": "1.0.0"
- },
- "features": {
- "rgb_matrix": true
- },
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
- ]
- }
- },
- "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
- },
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":21, "y":0},
- {"matrix":[0, 2], "flags":1, "x":31, "y":0},
- {"matrix":[0, 3], "flags":1, "x":42, "y":0},
- {"matrix":[0, 4], "flags":1, "x":52, "y":0},
- {"matrix":[0, 5], "flags":1, "x":68, "y":0},
- {"matrix":[0, 6], "flags":1, "x":78, "y":0},
- {"matrix":[0, 7], "flags":1, "x":89, "y":0},
- {"matrix":[0, 8], "flags":1, "x":99, "y":0},
- {"matrix":[0, 9], "flags":1, "x":115, "y":0},
- {"matrix":[0, 10], "flags":1, "x":125, "y":0},
- {"matrix":[0, 11], "flags":1, "x":136, "y":0},
- {"matrix":[0, 12], "flags":1, "x":146, "y":0},
- {"matrix":[0, 14], "flags":1, "x":159, "y":0},
- {"matrix":[0, 15], "flags":1, "x":169, "y":0},
- {"matrix":[0, 16], "flags":1, "x":180, "y":0},
-
- {"matrix":[0, 13], "flags":8, "x":193, "y":0},
- {"matrix":[0, 13], "flags":8, "x":203, "y":0},
- {"matrix":[0, 13], "flags":8, "x":214, "y":0},
- {"matrix":[0, 13], "flags":8, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":4, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":10, "y":15},
- {"matrix":[1, 2], "flags":4, "x":21, "y":15},
- {"matrix":[1, 3], "flags":4, "x":31, "y":15},
- {"matrix":[1, 4], "flags":4, "x":42, "y":15},
- {"matrix":[1, 5], "flags":4, "x":52, "y":15},
- {"matrix":[1, 6], "flags":4, "x":63, "y":15},
- {"matrix":[1, 7], "flags":4, "x":73, "y":15},
- {"matrix":[1, 8], "flags":4, "x":83, "y":15},
- {"matrix":[1, 9], "flags":4, "x":94, "y":15},
- {"matrix":[1, 10], "flags":4, "x":104, "y":15},
- {"matrix":[1, 11], "flags":4, "x":115, "y":15},
- {"matrix":[1, 12], "flags":4, "x":125, "y":15},
- {"matrix":[1, 13], "flags":1, "x":141, "y":15},
- {"matrix":[1, 14], "flags":1, "x":159, "y":15},
- {"matrix":[1, 15], "flags":1, "x":169, "y":15},
- {"matrix":[1, 16], "flags":1, "x":180, "y":15},
- {"matrix":[1, 17], "flags":8, "x":193, "y":15},
- {"matrix":[1, 18], "flags":4, "x":203, "y":15},
- {"matrix":[0, 17], "flags":4, "x":214, "y":15},
- {"matrix":[0, 18], "flags":4, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":3, "y":27},
- {"matrix":[2, 1], "flags":4, "x":16, "y":27},
- {"matrix":[2, 2], "flags":4, "x":26, "y":27},
- {"matrix":[2, 3], "flags":4, "x":36, "y":27},
- {"matrix":[2, 4], "flags":4, "x":47, "y":27},
- {"matrix":[2, 5], "flags":4, "x":57, "y":27},
- {"matrix":[2, 6], "flags":4, "x":68, "y":27},
- {"matrix":[2, 7], "flags":4, "x":78, "y":27},
- {"matrix":[2, 8], "flags":4, "x":89, "y":27},
- {"matrix":[2, 9], "flags":4, "x":99, "y":27},
- {"matrix":[2, 10], "flags":4, "x":109, "y":27},
- {"matrix":[2, 11], "flags":4, "x":120, "y":27},
- {"matrix":[2, 12], "flags":4, "x":130, "y":27},
- {"matrix":[2, 13], "flags":4, "x":143, "y":27},
- {"matrix":[2, 14], "flags":1, "x":159, "y":27},
- {"matrix":[2, 15], "flags":1, "x":169, "y":27},
- {"matrix":[2, 16], "flags":1, "x":180, "y":27},
- {"matrix":[2, 17], "flags":4, "x":193, "y":27},
- {"matrix":[2, 18], "flags":4, "x":203, "y":27},
- {"matrix":[3, 14], "flags":4, "x":214, "y":27},
- {"matrix":[3, 15], "flags":4, "x":224, "y":27},
-
- {"matrix":[3, 0], "flags":8, "x":4, "y":40},
- {"matrix":[3, 1], "flags":4, "x":18, "y":40},
- {"matrix":[3, 2], "flags":4, "x":29, "y":40},
- {"matrix":[3, 3], "flags":4, "x":39, "y":40},
- {"matrix":[3, 4], "flags":4, "x":50, "y":40},
- {"matrix":[3, 5], "flags":4, "x":60, "y":40},
- {"matrix":[3, 6], "flags":4, "x":70, "y":40},
- {"matrix":[3, 7], "flags":4, "x":81, "y":40},
- {"matrix":[3, 8], "flags":4, "x":91, "y":40},
- {"matrix":[3, 9], "flags":4, "x":102, "y":40},
- {"matrix":[3, 10], "flags":4, "x":112, "y":40},
- {"matrix":[3, 11], "flags":4, "x":123, "y":40},
- {"matrix":[3, 13], "flags":4, "x":139, "y":40},
- {"matrix":[3, 17], "flags":4, "x":193, "y":40},
- {"matrix":[3, 18], "flags":4, "x":203, "y":40},
- {"matrix":[3, 16], "flags":4, "x":214, "y":40},
-
- {"matrix":[4, 0], "flags":1, "x":7, "y":52},
- {"matrix":[4, 2], "flags":4, "x":23, "y":52},
- {"matrix":[4, 3], "flags":4, "x":34, "y":52},
- {"matrix":[4, 4], "flags":4, "x":44, "y":52},
- {"matrix":[4, 5], "flags":4, "x":55, "y":52},
- {"matrix":[4, 6], "flags":4, "x":65, "y":52},
- {"matrix":[4, 7], "flags":4, "x":76, "y":52},
- {"matrix":[4, 8], "flags":4, "x":86, "y":52},
- {"matrix":[4, 9], "flags":4, "x":96, "y":52},
- {"matrix":[4, 10], "flags":4, "x":107, "y":52},
- {"matrix":[4, 11], "flags":4, "x":117, "y":52},
- {"matrix":[4, 13], "flags":1, "x":137, "y":52},
- {"matrix":[4, 15], "flags":1, "x":169, "y":52},
- {"matrix":[4, 17], "flags":4, "x":193, "y":52},
- {"matrix":[4, 18], "flags":4, "x":203, "y":52},
- {"matrix":[4, 14], "flags":4, "x":214, "y":52},
- {"matrix":[4, 16], "flags":4, "x":224, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":1, "y":64},
- {"matrix":[5, 1], "flags":1, "x":14, "y":64},
- {"matrix":[5, 2], "flags":1, "x":27, "y":64},
- {"matrix":[5, 6], "flags":4, "x":66, "y":64},
- {"matrix":[5, 10], "flags":1, "x":105, "y":64},
- {"matrix":[5, 11], "flags":1, "x":118, "y":64},
- {"matrix":[5, 12], "flags":4, "x":131, "y":64},
- {"matrix":[5, 13], "flags":1, "x":145, "y":64},
- {"matrix":[5, 14], "flags":1, "x":159, "y":64},
- {"matrix":[5, 15], "flags":1, "x":169, "y":64},
- {"matrix":[5, 16], "flags":1, "x":180, "y":64},
- {"matrix":[5, 17], "flags":4, "x":198, "y":64},
- {"matrix":[5, 18], "flags":4, "x":214, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/c2_pro/ansi/rgb/rules.mk b/keyboards/keychron/c2_pro/ansi/rgb/rules.mk
deleted file mode 100644
index dab155104922..000000000000
--- a/keyboards/keychron/c2_pro/ansi/rgb/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-# Build Options
-SRC += matrix.c
diff --git a/keyboards/keychron/c2_pro/ansi/white/config.h b/keyboards/keychron/c2_pro/ansi/white/config.h
deleted file mode 100644
index d2a0e27b5793..000000000000
--- a/keyboards/keychron/c2_pro/ansi/white/config.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* LED Matrix Driver Configuration */
-#define DRIVER_COUNT 1
-#define DRIVER_ADDR_1 0b1110100
-
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0 }
-
-/* LED Matrix Configuration */
-#define LED_MATRIX_LED_COUNT 108
-
-/* Enable indicator LED*/
-#define NUM_LED_INDEX 16
-#define CAPS_LED_INDEX 17
-#define MAC_LED_INDEX 18
-#define WIN_LED_INDEX 19
-
-/* turn off effects when suspended */
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
-#define LED_MATRIX_KEYPRESSES
-#define LED_MATRIX_KEYRELEASES
diff --git a/keyboards/keychron/c2_pro/ansi/white/info.json b/keyboards/keychron/c2_pro/ansi/white/info.json
deleted file mode 100644
index dc58d1943bbd..000000000000
--- a/keyboards/keychron/c2_pro/ansi/white/info.json
+++ /dev/null
@@ -1,261 +0,0 @@
-{
- "usb": {
- "pid": "0x0523",
- "device_version": "1.0.0"
- },
- "features": {
- "led_matrix": true
- },
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[1,19], "x":20.5, "y":1.25},
- {"matrix":[0,17], "x":21.5, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[2,19], "x":20.5, "y":2.25},
- {"matrix":[0,18], "x":21.5, "y":2.25, "h":2},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,19], "x":20.5, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,19], "x":20.5, "y":4.25},
- {"matrix":[0,19], "x":21.5, "y":4.25, "h":2},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,19], "x":20.5, "y":5.25}
- ]
- }
- },
- "led_matrix": {
- "driver": "ckled2001",
- "animations": {
- "none": true,
- "solid": true,
- "breathing": true,
- "band_pinwheel": true,
- "band_spiral": true,
- "cycle_left_right": true,
- "cycle_up_down": true,
- "cycle_out_in": true,
- "dual_beacon": true,
- "solid_reactive_simple": true,
- "solid_reactive_multiwide": true,
- "solid_reactive_multinexus": true,
- "solid_splash": true,
- "wave_left_right": true,
- "wave_up_down": true,
- "effect_max": true
- },
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":21, "y":0},
- {"matrix":[0, 2], "flags":1, "x":31, "y":0},
- {"matrix":[0, 3], "flags":1, "x":42, "y":0},
- {"matrix":[0, 4], "flags":1, "x":52, "y":0},
- {"matrix":[0, 5], "flags":1, "x":68, "y":0},
- {"matrix":[0, 6], "flags":1, "x":78, "y":0},
- {"matrix":[0, 7], "flags":1, "x":89, "y":0},
- {"matrix":[0, 8], "flags":1, "x":99, "y":0},
- {"matrix":[0, 9], "flags":1, "x":115, "y":0},
- {"matrix":[0, 10], "flags":1, "x":125, "y":0},
- {"matrix":[0, 11], "flags":1, "x":136, "y":0},
- {"matrix":[0, 12], "flags":1, "x":146, "y":0},
- {"matrix":[0, 14], "flags":1, "x":159, "y":0},
- {"matrix":[0, 15], "flags":1, "x":169, "y":0},
- {"matrix":[0, 16], "flags":1, "x":180, "y":0},
-
- {"matrix":[0, 13], "flags":8, "x":193, "y":0},
- {"matrix":[0, 13], "flags":8, "x":203, "y":0},
- {"matrix":[0, 13], "flags":8, "x":214, "y":0},
- {"matrix":[0, 13], "flags":8, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":4, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":10, "y":15},
- {"matrix":[1, 2], "flags":4, "x":21, "y":15},
- {"matrix":[1, 3], "flags":4, "x":31, "y":15},
- {"matrix":[1, 4], "flags":4, "x":42, "y":15},
- {"matrix":[1, 5], "flags":4, "x":52, "y":15},
- {"matrix":[1, 6], "flags":4, "x":63, "y":15},
- {"matrix":[1, 7], "flags":4, "x":73, "y":15},
- {"matrix":[1, 8], "flags":4, "x":83, "y":15},
- {"matrix":[1, 9], "flags":4, "x":94, "y":15},
- {"matrix":[1, 10], "flags":4, "x":104, "y":15},
- {"matrix":[1, 11], "flags":4, "x":115, "y":15},
- {"matrix":[1, 12], "flags":4, "x":125, "y":15},
- {"matrix":[1, 13], "flags":1, "x":141, "y":15},
- {"matrix":[1, 14], "flags":1, "x":159, "y":15},
- {"matrix":[1, 15], "flags":1, "x":169, "y":15},
- {"matrix":[1, 16], "flags":1, "x":180, "y":15},
- {"matrix":[1, 17], "flags":8, "x":193, "y":15},
- {"matrix":[1, 18], "flags":4, "x":203, "y":15},
- {"matrix":[1, 19], "flags":4, "x":214, "y":15},
- {"matrix":[0, 17], "flags":4, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":3, "y":27},
- {"matrix":[2, 1], "flags":4, "x":16, "y":27},
- {"matrix":[2, 2], "flags":4, "x":26, "y":27},
- {"matrix":[2, 3], "flags":4, "x":36, "y":27},
- {"matrix":[2, 4], "flags":4, "x":47, "y":27},
- {"matrix":[2, 5], "flags":4, "x":57, "y":27},
- {"matrix":[2, 6], "flags":4, "x":68, "y":27},
- {"matrix":[2, 7], "flags":4, "x":78, "y":27},
- {"matrix":[2, 8], "flags":4, "x":89, "y":27},
- {"matrix":[2, 9], "flags":4, "x":99, "y":27},
- {"matrix":[2, 10], "flags":4, "x":109, "y":27},
- {"matrix":[2, 11], "flags":4, "x":120, "y":27},
- {"matrix":[2, 12], "flags":4, "x":130, "y":27},
- {"matrix":[2, 13], "flags":4, "x":143, "y":27},
- {"matrix":[2, 14], "flags":1, "x":159, "y":27},
- {"matrix":[2, 15], "flags":1, "x":169, "y":27},
- {"matrix":[2, 16], "flags":1, "x":180, "y":27},
- {"matrix":[2, 17], "flags":4, "x":193, "y":27},
- {"matrix":[2, 18], "flags":4, "x":203, "y":27},
- {"matrix":[2, 19], "flags":4, "x":214, "y":27},
- {"matrix":[0, 18], "flags":4, "x":224, "y":27},
-
- {"matrix":[3, 0], "flags":8, "x":4, "y":40},
- {"matrix":[3, 1], "flags":4, "x":18, "y":40},
- {"matrix":[3, 2], "flags":4, "x":29, "y":40},
- {"matrix":[3, 3], "flags":4, "x":39, "y":40},
- {"matrix":[3, 4], "flags":4, "x":50, "y":40},
- {"matrix":[3, 5], "flags":4, "x":60, "y":40},
- {"matrix":[3, 6], "flags":4, "x":70, "y":40},
- {"matrix":[3, 7], "flags":4, "x":81, "y":40},
- {"matrix":[3, 8], "flags":4, "x":91, "y":40},
- {"matrix":[3, 9], "flags":4, "x":102, "y":40},
- {"matrix":[3, 10], "flags":4, "x":112, "y":40},
- {"matrix":[3, 11], "flags":4, "x":123, "y":40},
- {"matrix":[3, 13], "flags":4, "x":139, "y":40},
- {"matrix":[3, 17], "flags":4, "x":193, "y":40},
- {"matrix":[3, 18], "flags":4, "x":203, "y":40},
- {"matrix":[3, 19], "flags":4, "x":214, "y":40},
-
- {"matrix":[4, 0], "flags":1, "x":7, "y":52},
- {"matrix":[4, 2], "flags":4, "x":23, "y":52},
- {"matrix":[4, 3], "flags":4, "x":34, "y":52},
- {"matrix":[4, 4], "flags":4, "x":44, "y":52},
- {"matrix":[4, 5], "flags":4, "x":55, "y":52},
- {"matrix":[4, 6], "flags":4, "x":65, "y":52},
- {"matrix":[4, 7], "flags":4, "x":76, "y":52},
- {"matrix":[4, 8], "flags":4, "x":86, "y":52},
- {"matrix":[4, 9], "flags":4, "x":96, "y":52},
- {"matrix":[4, 10], "flags":4, "x":107, "y":52},
- {"matrix":[4, 11], "flags":4, "x":117, "y":52},
- {"matrix":[4, 13], "flags":1, "x":137, "y":52},
- {"matrix":[4, 15], "flags":1, "x":169, "y":52},
- {"matrix":[4, 17], "flags":4, "x":193, "y":52},
- {"matrix":[4, 18], "flags":4, "x":203, "y":52},
- {"matrix":[4, 19], "flags":4, "x":214, "y":52},
- {"matrix":[0, 19], "flags":4, "x":224, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":1, "y":64},
- {"matrix":[5, 1], "flags":1, "x":14, "y":64},
- {"matrix":[5, 2], "flags":1, "x":27, "y":64},
- {"matrix":[5, 6], "flags":4, "x":66, "y":64},
- {"matrix":[5, 10], "flags":1, "x":105, "y":64},
- {"matrix":[5, 11], "flags":1, "x":118, "y":64},
- {"matrix":[5, 12], "flags":4, "x":131, "y":64},
- {"matrix":[5, 13], "flags":1, "x":145, "y":64},
- {"matrix":[5, 14], "flags":1, "x":159, "y":64},
- {"matrix":[5, 15], "flags":1, "x":169, "y":64},
- {"matrix":[5, 16], "flags":1, "x":180, "y":64},
- {"matrix":[5, 17], "flags":4, "x":198, "y":64},
- {"matrix":[5, 19], "flags":4, "x":214, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/c2_pro/ansi/white/rules.mk b/keyboards/keychron/c2_pro/ansi/white/rules.mk
deleted file mode 100644
index dab155104922..000000000000
--- a/keyboards/keychron/c2_pro/ansi/white/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-# Build Options
-SRC += matrix.c
diff --git a/keyboards/keychron/c2_pro/c2_pro.c b/keyboards/keychron/c2_pro/c2_pro.c
deleted file mode 100644
index 2cd58ab4d796..000000000000
--- a/keyboards/keychron/c2_pro/c2_pro.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* 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 "quantum.h"
-
-// clang-format off
-const matrix_row_t matrix_mask[] = {
- 0b11111111111111111111,
- 0b11111111111111111111,
- 0b11111111111111111111,
- 0b11111111111111111111,
- 0b11111111111111111111,
- 0b11111111111111101111,
-};
-
-// clang-format on
-
-#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 ? 2 : 0));
- }
- return true;
-}
-
-#endif // DIP_SWITCH_ENABLE
-
-# ifdef RGB_MATRIX_ENABLE
-# define LED_SET_FLAGS rgb_matrix_set_flags
-# define LED_GET_FLAGS rgb_matrix_get_flags
-# define LED_SET_ALL_OFF rgb_matrix_set_color_all(COLOR_BLACK)
-# define LED_IS_ENABLED rgb_matrix_is_enabled
-# define LED_ENABLE rgb_matrix_enable
-# define LED_MATRIX_INDICATORS_KB rgb_matrix_indicators_kb
-# define LED_MATRIX_INDICATORS_USER rgb_matrix_indicators_user
-# define LED_MATRIX_SET_COLOR rgb_matrix_set_color
-# define LED_MATRIX_UPDATE_PWN_BUFFERS rgb_matrix_update_pwm_buffers
-# define LED_MATRIX_INDICATORS_NONE_KB rgb_matrix_indicators_none_kb
-# define LED_MATRIX_IS_ENABLED rgb_matrix_is_enabled
-# define COLOR_WHITE 255, 255, 255
-# define COLOR_BLACK 0, 0, 0
-# endif
-
-# ifdef LED_MATRIX_ENABLE
-# define LED_SET_FLAGS led_matrix_set_flags
-# define LED_GET_FLAGS led_matrix_get_flags
-# define LED_SET_ALL_OFF led_matrix_set_value_all(COLOR_BLACK)
-# define LED_IS_ENABLED led_matrix_is_enabled
-# define LED_ENABLE led_matrix_enable
-# define LED_MATRIX_INDICATORS_KB led_matrix_indicators_kb
-# define LED_MATRIX_INDICATORS_USER led_matrix_indicators_user
-# define LED_MATRIX_SET_COLOR led_matrix_set_value
-# define LED_MATRIX_UPDATE_PWN_BUFFERS led_matrix_update_pwm_buffers
-# define LED_MATRIX_INDICATORS_NONE_KB led_matrix_indicators_none_kb
-# define LED_MATRIX_IS_ENABLED led_matrix_is_enabled
-# define COLOR_WHITE 255
-# define COLOR_BLACK 0
-
-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 (LED_GET_FLAGS()) {
- case LED_FLAG_ALL: {
- LED_SET_FLAGS(LED_FLAG_NONE);
- LED_SET_ALL_OFF;
- } break;
- default: {
- LED_SET_FLAGS(LED_FLAG_ALL);
- } break;
- }
- }
- if (!LED_IS_ENABLED()) {
- LED_SET_FLAGS(LED_FLAG_ALL);
- LED_ENABLE();
- }
- return false;
- }
- return true;
-}
-
-bool LED_MATRIX_INDICATORS_KB(void) {
- if (!LED_MATRIX_INDICATORS_USER()) {
- return false;
- }
- if (host_keyboard_led_state().caps_lock) {
- LED_MATRIX_SET_COLOR(CAPS_LED_INDEX, COLOR_WHITE);
- } else {
- LED_MATRIX_SET_COLOR(CAPS_LED_INDEX, COLOR_BLACK);
- }
- if (host_keyboard_led_state().num_lock) {
- LED_MATRIX_SET_COLOR(NUM_LED_INDEX, COLOR_WHITE);
- } else {
- LED_MATRIX_SET_COLOR(NUM_LED_INDEX, COLOR_BLACK);
- }
- if (default_layer_state == (1 << 0)) {
- LED_MATRIX_SET_COLOR(MAC_LED_INDEX, COLOR_WHITE);
- } else {
- LED_MATRIX_SET_COLOR(MAC_LED_INDEX, COLOR_BLACK);
- }
- if (default_layer_state == (1 << 2)) {
- LED_MATRIX_SET_COLOR(WIN_LED_INDEX, COLOR_WHITE);
- } else {
- LED_MATRIX_SET_COLOR(WIN_LED_INDEX, COLOR_BLACK);
- }
- return true;
-}
-
-#endif
diff --git a/keyboards/keychron/c2_pro/info.json b/keyboards/keychron/c2_pro/info.json
deleted file mode 100644
index dd97dd7adf24..000000000000
--- a/keyboards/keychron/c2_pro/info.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "keyboard_name": "Keychron C2 Pro",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "usb": {
- "vid": "0x3434"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "NO_PIN", "C14"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
- "custom": true,
- "custom_lite": true
- },
- "diode_direction": "ROW2COL"
-}
diff --git a/keyboards/keychron/common/keychron_common.c b/keyboards/keychron/common/keychron_common.c
index 9c7fc3ace572..e9cff630110e 100644
--- a/keyboards/keychron/common/keychron_common.c
+++ b/keyboards/keychron/common/keychron_common.c
@@ -14,12 +14,12 @@
* along with this program. If not, see .
*/
+#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "sync_timer.h"
-
-bool is_siri_active = false;
-uint32_t siri_timer = 0;
+bool is_siri_active = false;
+uint32_t siri_timer = 0;
+// clang-format off
key_combination_t key_comb_list[4] = {
{2, {KC_LWIN, KC_TAB}},
{2, {KC_LWIN, KC_E}},
@@ -27,8 +27,8 @@ key_combination_t key_comb_list[4] = {
{2, {KC_LWIN, KC_C}}
};
-static uint8_t mac_keycode[4] = { KC_LOPT, KC_ROPT, KC_LCMD, KC_RCMD };
-
+static uint8_t mac_keycode[4] = {KC_LOPT, KC_ROPT, KC_LCMD, KC_RCMD};
+// clang-format on
void housekeeping_task_keychron(void) {
if (is_siri_active) {
if (sync_timer_elapsed32(siri_timer) >= 500) {
@@ -47,14 +47,14 @@ bool process_record_keychron(uint16_t keycode, keyrecord_t *record) {
} else {
unregister_code(KC_MISSION_CONTROL);
}
- return false; // Skip all further processing of this key
+ return false; // Skip all further processing of this key
case QK_KB_1:
if (record->event.pressed) {
register_code(KC_LAUNCHPAD);
} else {
unregister_code(KC_LAUNCHPAD);
}
- return false; // Skip all further processing of this key
+ return false; // Skip all further processing of this key
case KC_LOPTN:
case KC_ROPTN:
case KC_LCMMD:
@@ -64,7 +64,7 @@ bool process_record_keychron(uint16_t keycode, keyrecord_t *record) {
} else {
unregister_code(mac_keycode[keycode - KC_LOPTN]);
}
- return false; // Skip all further processing of this key
+ return false; // Skip all further processing of this key
case KC_SIRI:
if (record->event.pressed) {
if (!is_siri_active) {
@@ -76,7 +76,7 @@ bool process_record_keychron(uint16_t keycode, keyrecord_t *record) {
} else {
// Do something else when release
}
- return false; // Skip all further processing of this key
+ return false; // Skip all further processing of this key
case KC_TASK:
case KC_FLXP:
case KC_SNAP:
@@ -90,8 +90,118 @@ bool process_record_keychron(uint16_t keycode, keyrecord_t *record) {
unregister_code(key_comb_list[keycode - KC_TASK].keycode[i]);
}
}
- return false; // Skip all further processing of this key
+ return false; // Skip all further processing of this key
default:
- return true; // Process all other keycodes normally
+ return true; // Process all other keycodes normally
+ }
+}
+
+#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_LOCK_LED_INDEX))
+
+# define CAPS_NUM_LOCK_MAX_BRIGHTNESS 0xFF
+# ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# undef CAPS_NUM_LOCK_MAX_BRIGHTNESS
+# define CAPS_NUM_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# endif
+
+# define CAPS_NUM_LOCK_VAL_STEP 8
+# ifdef RGB_MATRIX_VAL_STEP
+# undef CAPS_NUM_LOCK_VAL_STEP
+# define CAPS_NUM_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
+# endif
+
+extern void rgb_matrix_update_pwm_buffers(void);
+
+static uint8_t light_brightness_get(void) {
+ uint8_t value = rgb_matrix_get_val();
+ if (value < CAPS_NUM_LOCK_VAL_STEP) {
+ value = CAPS_NUM_LOCK_VAL_STEP;
+ } else if (value < (CAPS_NUM_LOCK_MAX_BRIGHTNESS - CAPS_NUM_LOCK_VAL_STEP)) {
+ value += CAPS_NUM_LOCK_VAL_STEP; // one step more than current brightness
+ } else {
+ value = CAPS_NUM_LOCK_MAX_BRIGHTNESS;
+ }
+ return value;
+}
+
+bool rgb_matrix_indicators_kb(void) {
+ if (!rgb_matrix_indicators_user()) {
+ return false;
+ }
+# if defined(CAPS_LOCK_LED_INDEX)
+ if (host_keyboard_led_state().caps_lock) {
+ uint8_t v = light_brightness_get();
+ rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, v, v, v); // white, with the adjusted brightness
+ }
+# endif
+# if defined(NUM_LOCK_LED_INDEX)
+ if (host_keyboard_led_state().num_lock) {
+ uint8_t v = light_brightness_get();
+ rgb_matrix_set_color(NUM_LOCK_LED_INDEX, v, v, v); // white, with the adjusted brightness
+ }
+# endif
+ return true;
+}
+
+void rgb_matrix_indicators_none_kb(void) {
+ rgb_matrix_indicators_kb();
+ rgb_matrix_update_pwm_buffers();
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+
+ if (rgb_matrix_is_enabled()
+# if defined(ENABLE_RGB_MATRIX_RAINDROPS)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_RAINDROPS)
+# endif
+# if defined(ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_JELLYBEAN_RAINDROPS)
+# endif
+# if defined(ENABLE_RGB_MATRIX_PIXEL_RAIN)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_PIXEL_RAIN)
+# endif
+ ) {
+ return res;
+ }
+
+ if (res) {
+# if defined(CAPS_LOCK_LED_INDEX)
+ if (led_state.caps_lock) {
+ uint8_t v = light_brightness_get();
+ rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, v, v, v);
+ } else {
+ rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, 0, 0, 0);
+ }
+# endif
+# if defined(NUM_LOCK_LED_INDEX)
+ if (led_state.num_lock) {
+ uint8_t v = light_brightness_get();
+ rgb_matrix_set_color(NUM_LOCK_LED_INDEX, v, v, v);
+ } else {
+ rgb_matrix_set_color(NUM_LOCK_LED_INDEX, 0, 0, 0);
+ }
+# endif
+ rgb_matrix_update_pwm_buffers();
+ }
+ return res;
+}
+
+#endif
+
+#if defined(ENCODER_ENABLE) && defined(PAL_USE_CALLBACKS)
+static void encoder_pad_cb(void *param) {
+ encoder_inerrupt_read((uint32_t)param & 0XFF);
+}
+
+__attribute__((weak)) void keyboard_post_init_kb(void) {
+ pin_t encoders_pad_a[NUM_ENCODERS] = ENCODERS_PAD_A;
+ pin_t encoders_pad_b[NUM_ENCODERS] = ENCODERS_PAD_B;
+ for (uint32_t i = 0; i < NUM_ENCODERS; i++) {
+ palEnableLineEvent(encoders_pad_a[i], PAL_EVENT_MODE_BOTH_EDGES);
+ palEnableLineEvent(encoders_pad_b[i], PAL_EVENT_MODE_BOTH_EDGES);
+ palSetLineCallback(encoders_pad_a[i], encoder_pad_cb, (void *)i);
+ palSetLineCallback(encoders_pad_b[i], encoder_pad_cb, (void *)i);
}
}
+#endif
diff --git a/keyboards/keychron/common/keychron_common.h b/keyboards/keychron/common/keychron_common.h
index 648a5d3371a7..26594b398736 100644
--- a/keyboards/keychron/common/keychron_common.h
+++ b/keyboards/keychron/common/keychron_common.h
@@ -16,18 +16,13 @@
#pragma once
-#include
-#include
-#include "action.h"
-
+#include "stdint.h"
#ifdef VIA_ENABLE
# include "via.h"
#endif
-#include "quantum_keycodes.h"
-
enum custom_keycodes {
- KC_LOPTN = QK_KB_2, // TECH DEBT: Starts at QK_KB_2 to maintain ordering with VIA definitions. See #19884. Revert to QK_KB_0 when VIA catches up with QMK.
+ KC_LOPTN = QK_KB_2,
KC_ROPTN,
KC_LCMMD,
KC_RCMMD,
@@ -50,3 +45,4 @@ typedef struct PACKED {
void housekeeping_task_keychron(void);
bool process_record_keychron(uint16_t keycode, keyrecord_t *record);
+void keyboard_post_init_keychron(void);
diff --git a/keyboards/keychron/common/keychron_ft_common.c b/keyboards/keychron/common/keychron_ft_common.c
new file mode 100644
index 000000000000..b4c36889ea15
--- /dev/null
+++ b/keyboards/keychron/common/keychron_ft_common.c
@@ -0,0 +1,366 @@
+/* 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 "keychron_ft_common.h"
+#include "raw_hid.h"
+
+#ifndef NKRO
+# include
+# define RAW_EPSIZE 32
+#endif
+
+#ifndef BL_TEST_KEY1
+# define BL_TEST_KEY1 KC_RIGHT
+#endif
+
+#ifndef BL_TEST_KEY2
+# define BL_TEST_KEY2 KC_HOME
+#endif
+
+// clang-format off
+enum {
+ OS_SWITCH = 0x01,
+};
+
+enum {
+ FACTORY_TEST_CMD_BACKLIGHT = 0x01,
+ FACTORY_TEST_CMD_OS_SWITCH,
+ FACTORY_TEST_CMD_JUMP_TO_BL,
+ FACTORY_TEST_CMD_EEPROM_CLEAR
+};
+// clang-format on
+
+uint16_t key_press_status = 0;
+uint32_t timer_3s_buffer = 0;
+uint32_t timer_300ms_buffer = 0;
+uint8_t factory_reset_count = 0;
+bool report_os_sw_state = false;
+extern matrix_row_t matrix[MATRIX_ROWS];
+
+#ifdef SPLIT_KEYBOARD
+# ifdef RGB_MATRIX_ENABLE
+uint8_t led_state = 0;
+uint8_t light_test_state = 0;
+HSV hsv;
+# endif
+#endif
+
+__attribute__((weak)) bool process_record_keychron_ft(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+#if defined(FN_KEY1) || defined(FN_KEY2)
+# ifdef FN_KEY1
+ case FN_KEY1: /* fall through */
+# endif
+# ifdef FN_KEY2
+ case FN_KEY2:
+# endif
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_0;
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_0;
+ timer_3s_buffer = 0;
+ }
+ return true;
+#endif
+ case KC_J:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_1;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_1;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case KC_Z:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_2;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_2;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case BL_TEST_KEY1:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_3;
+ if (led_test_mode) {
+ if (++led_test_mode >= LED_TEST_MODE_MAX) {
+ led_test_mode = LED_TEST_MODE_WHITE;
+ }
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_3;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case BL_TEST_KEY2:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_4;
+ if (led_test_mode) {
+ led_test_mode = LED_TEST_MODE_OFF;
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_4;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ default:
+ return true;
+ }
+}
+
+static void factory_reset(void) {
+ timer_300ms_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ factory_reset_count++;
+ layer_state_t default_layer = default_layer_state;
+ eeconfig_init();
+ default_layer_set(default_layer);
+ led_test_mode = LED_TEST_MODE_OFF;
+#ifdef LED_MATRIX_ENABLE
+ if (!led_matrix_is_enabled()) {
+ led_matrix_enable();
+ }
+ led_matrix_init();
+#endif
+#ifdef RGB_MATRIX_ENABLE
+ if (!rgb_matrix_is_enabled()) {
+ rgb_matrix_enable();
+ }
+ rgb_matrix_init();
+# ifdef SPLIT_KEYBOARD
+ led_state = rgb_matrix_get_mode();
+ hsv = rgb_matrix_get_hsv();
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+# endif
+#endif
+}
+
+static void timer_3s_task(void) {
+ if (sync_timer_elapsed32(timer_3s_buffer) > 3000) {
+ timer_3s_buffer = 0;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ factory_reset();
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+#ifdef SPLIT_KEYBOARD
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+#endif
+ led_test_mode = LED_TEST_MODE_WHITE;
+#ifdef LED_MATRIX_ENABLE
+ if (!led_matrix_is_enabled()) {
+ led_matrix_enable();
+ }
+#endif
+#ifdef RGB_MATRIX_ENABLE
+ if (!rgb_matrix_is_enabled()) {
+ rgb_matrix_enable();
+ }
+#endif
+ }
+ key_press_status = 0;
+ }
+}
+
+static void timer_300ms_task(void) {
+ if (sync_timer_elapsed32(timer_300ms_buffer) > 300) {
+ if (factory_reset_count++ > 6) {
+ timer_300ms_buffer = 0;
+ factory_reset_count = 0;
+#ifdef SPLIT_KEYBOARD
+ rgb_matrix_mode_noeeprom(led_state);
+ rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
+#endif
+ } else {
+ timer_300ms_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ }
+}
+
+#ifdef LED_MATRIX_ENABLE
+bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (factory_reset_count) {
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ led_matrix_set_value(i, factory_reset_count % 2 ? 0 : UINT8_MAX);
+ }
+ }
+ return true;
+}
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (factory_reset_count) {
+ if (rgb_matrix_get_mode() == RGB_MATRIX_SOLID_COLOR) {
+ if (factory_reset_count % 2) {
+ rgb_matrix_sethsv_noeeprom(HSV_RED);
+ } else {
+ rgb_matrix_sethsv_noeeprom(HSV_OFF);
+ }
+ } else {
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, factory_reset_count % 2 ? 0 : RGB_RED);
+ }
+ }
+ } else if (led_test_mode) {
+ switch (led_test_mode) {
+ case LED_TEST_MODE_WHITE:
+ if (rgb_matrix_get_mode() == RGB_MATRIX_SOLID_COLOR) {
+ rgb_matrix_sethsv_noeeprom(HSV_WHITE);
+ } else {
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, RGB_WHITE);
+ }
+ }
+ break;
+ case LED_TEST_MODE_RED:
+ if (rgb_matrix_get_mode() == RGB_MATRIX_SOLID_COLOR) {
+ rgb_matrix_sethsv_noeeprom(HSV_RED);
+ } else {
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, RGB_RED);
+ }
+ }
+ break;
+ case LED_TEST_MODE_GREEN:
+ if (rgb_matrix_get_mode() == RGB_MATRIX_SOLID_COLOR) {
+ rgb_matrix_sethsv_noeeprom(HSV_GREEN);
+ } else {
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, RGB_GREEN);
+ }
+ }
+ break;
+ case LED_TEST_MODE_BLUE:
+ if (rgb_matrix_get_mode() == RGB_MATRIX_SOLID_COLOR) {
+ rgb_matrix_sethsv_noeeprom(HSV_BLUE);
+ } else {
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, RGB_BLUE);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ return true;
+}
+#endif
+
+void housekeeping_task_keychron_ft(void) {
+ if (timer_3s_buffer) {
+ timer_3s_task();
+ }
+ if (timer_300ms_buffer) {
+ timer_300ms_task();
+ }
+}
+
+static void system_switch_state_report(uint8_t index, bool active) {
+ uint16_t checksum = 0;
+ uint8_t data[RAW_EPSIZE] = {0};
+ uint8_t payload[3] = {0};
+
+ if (report_os_sw_state) {
+ payload[0] = FACTORY_TEST_CMD_OS_SWITCH;
+ payload[1] = OS_SWITCH;
+#if defined(OS_SWITCH_REVERSE)
+ payload[2] = !active;
+#else
+ payload[2] = active;
+#endif
+ data[0] = 0xAB;
+ memcpy(&data[1], payload, 3);
+ for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
+ checksum += data[i];
+ }
+ data[RAW_EPSIZE - 2] = checksum & 0xFF;
+ data[RAW_EPSIZE - 1] = (checksum >> 8) & 0xFF;
+ raw_hid_send(data, RAW_EPSIZE);
+ }
+}
+
+bool dip_switch_update_user(uint8_t index, bool active) {
+ /* Send default layer state to host */
+ system_switch_state_report(index, active);
+ return true;
+}
+
+bool via_command_kb(uint8_t *data, uint8_t length) {
+ if (data[0] == 0xAB) {
+ uint16_t checksum = 0;
+ for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
+ checksum += data[i];
+ }
+ /* Verify checksum */
+ if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) {
+ return true;
+ }
+ switch (data[1]) {
+#if defined(RGB_MATRIX_ENABLE)
+ case FACTORY_TEST_CMD_BACKLIGHT:
+ led_test_mode = data[2];
+# if defined(SPLIT_KEYBOARD)
+ if (led_test_mode) {
+ light_test_state += 1;
+ if (light_test_state == 1) {
+ led_state = rgb_matrix_get_mode();
+ hsv = rgb_matrix_get_hsv();
+ }
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ } else {
+ if (light_test_state) {
+ light_test_state = 0;
+ rgb_matrix_mode_noeeprom(led_state);
+ rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
+ }
+ }
+# endif
+ timer_3s_buffer = 0;
+ break;
+#endif
+#if defined(DIP_SWITCH_ENABLE)
+ case FACTORY_TEST_CMD_OS_SWITCH:
+ report_os_sw_state = data[2];
+ if (report_os_sw_state) {
+ dip_switch_read(true);
+ }
+ break;
+#endif
+ case FACTORY_TEST_CMD_JUMP_TO_BL:
+ if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
+ if (memcmp(&data[2], "JumpToBootloader", strlen("JumpToBootloader")) == 0) bootloader_jump();
+ }
+ break;
+ case FACTORY_TEST_CMD_EEPROM_CLEAR:
+ if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
+ if (data[2]) {
+ factory_reset();
+ }
+ }
+ break;
+ }
+ return true;
+ }
+ return false;
+}
diff --git a/keyboards/keychron/common/keychron_ft_common.h b/keyboards/keychron/common/keychron_ft_common.h
new file mode 100644
index 000000000000..3bb25d47128d
--- /dev/null
+++ b/keyboards/keychron/common/keychron_ft_common.h
@@ -0,0 +1,48 @@
+/* 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 .
+ */
+
+#include "quantum.h"
+
+#define KEY_PRESS_STEP_0 (0x1 << 0)
+#define KEY_PRESS_STEP_1 (0x1 << 1)
+#define KEY_PRESS_STEP_2 (0x1 << 2)
+#define KEY_PRESS_STEP_3 (0x1 << 3)
+#define KEY_PRESS_STEP_4 (0x1 << 4)
+#define KEY_PRESS_FACTORY_RESET (KEY_PRESS_STEP_0 | KEY_PRESS_STEP_1 | KEY_PRESS_STEP_2)
+#define KEY_PRESS_LED_TEST (KEY_PRESS_STEP_0 | KEY_PRESS_STEP_3 | KEY_PRESS_STEP_4)
+// clang-format off
+enum {
+ LED_TEST_MODE_OFF,
+ LED_TEST_MODE_WHITE,
+ LED_TEST_MODE_RED,
+ LED_TEST_MODE_GREEN,
+ LED_TEST_MODE_BLUE,
+ LED_TEST_MODE_MAX
+} led_test_mode;
+// clang-format on
+
+extern uint16_t key_press_status;
+extern uint32_t timer_3s_buffer;
+#ifdef SPLIT_KEYBOARD
+# ifdef RGB_MATRIX_ENABLE
+extern uint8_t led_state;
+extern uint8_t light_test_state;
+extern HSV hsv;
+# endif
+#endif
+
+void housekeeping_task_keychron_ft(void);
+bool process_record_keychron_ft(uint16_t keycode, keyrecord_t *record);
diff --git a/keyboards/keychron/c2_pro/matrix.c b/keyboards/keychron/common/matrix.c
similarity index 98%
rename from keyboards/keychron/c2_pro/matrix.c
rename to keyboards/keychron/common/matrix.c
index 5065f97aa7d4..af7514c5adb8 100644
--- a/keyboards/keychron/c2_pro/matrix.c
+++ b/keyboards/keychron/common/matrix.c
@@ -24,10 +24,10 @@
#endif
#if defined(SHIFT_COL_START) && defined(SHIFT_COL_END)
-# if ((SHIFT_COL_END - SHIFT_COL_START + 1) > 16)
+# if ((SHIFT_COL_END - SHIFT_COL_START) > 16)
# define SIZE_T uint32_t
# define UNSELECT_ALL_COL 0xFFFFFFFF
-# elif ((SHIFT_COL_END - SHIFT_COL_START + 1) > 8)
+# elif ((SHIFT_COL_END - SHIFT_COL_START) > 8)
# define SIZE_T uint16_t
# define UNSELECT_ALL_COL 0xFFFF
# else
diff --git a/keyboards/keychron/q0/config.h b/keyboards/keychron/q0/config.h
index c0366b1ed882..840728a67ae6 100644
--- a/keyboards/keychron/q0/config.h
+++ b/keyboards/keychron/q0/config.h
@@ -16,7 +16,12 @@
#pragma once
-#define CKLED2001_CURRENT_TUNE { 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70 }
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70 }
+
+/* NKRO */
+#define FORCE_NKRO
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
@@ -25,5 +30,58 @@
#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 ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+// #define ENABLE_RGB_MATRIX_BAND_SAT
+// #define ENABLE_RGB_MATRIX_BAND_VAL
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// #define ENABLE_RGB_MATRIX_HUE_BREATHING
+// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+// #define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
+// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
\ No newline at end of file
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
diff --git a/keyboards/keychron/q0/factory.c b/keyboards/keychron/q0/factory.c
new file mode 100644
index 000000000000..ed9b099e2339
--- /dev/null
+++ b/keyboards/keychron/q0/factory.c
@@ -0,0 +1,93 @@
+/* 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 "keychron_ft_common.h"
+
+bool process_record_keychron_ft(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+#if defined(FN_KEY1) || defined(FN_KEY2)
+# ifdef FN_KEY1
+ case FN_KEY1: /* fall through */
+# endif
+# ifdef FN_KEY2
+ case FN_KEY2:
+# endif
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_0;
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_0;
+ timer_3s_buffer = 0;
+ }
+ return true;
+#endif
+ case RGB_SAD:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_1;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ } else {
+ }
+ } else {
+ rgb_matrix_decrease_sat_noeeprom();
+ key_press_status &= ~KEY_PRESS_STEP_1;
+ timer_3s_buffer = 0;
+ }
+ return false; // Skip all further processing of this key
+ case RGB_HUD:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_2;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ } else {
+ }
+ } else {
+ rgb_matrix_decrease_hue_noeeprom();
+ key_press_status &= ~KEY_PRESS_STEP_2;
+ timer_3s_buffer = 0;
+ }
+ return false; // Skip all further processing of this key
+ case KC_MPLY:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_3;
+ if (led_test_mode) {
+ if (++led_test_mode >= LED_TEST_MODE_MAX) {
+ led_test_mode = LED_TEST_MODE_WHITE;
+ }
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_3;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case KC_DEL:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_4;
+ if (led_test_mode) {
+ led_test_mode = LED_TEST_MODE_OFF;
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_4;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/keychron/q0/halconf.h b/keyboards/keychron/q0/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q0/halconf.h
+++ b/keyboards/keychron/q0/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q0/q0.c b/keyboards/keychron/q0/q0.c
index cfe26a583a1a..6131d01c0ebc 100644
--- a/keyboards/keychron/q0/q0.c
+++ b/keyboards/keychron/q0/q0.c
@@ -15,47 +15,3 @@
*/
#include "quantum.h"
-
-#if defined(RGB_MATRIX_ENABLE) && defined(NUM_LOCK_LED_INDEX)
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- if (!process_record_user(keycode, record)) {
- return false;
- }
- switch (keycode) {
-# ifdef RGB_MATRIX_ENABLE
- 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;
- }
- }
- return false;
-# endif
- }
- 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().num_lock) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
- } else {
- if (!rgb_matrix_get_flags()) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
- }
- }
- return true;
-}
-
-#endif // NUM_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q0/readme.md b/keyboards/keychron/q0/readme.md
index d0180d386e0f..24a6891046e4 100644
--- a/keyboards/keychron/q0/readme.md
+++ b/keyboards/keychron/q0/readme.md
@@ -1,18 +1,22 @@
# Keychron Q0
+![Keychron Q0](https://i.imgur.com/cLbEiZ0.jpg)
+
A customizable number keypad.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q0
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q0 QMK Custom Number Pad](https://www.keychron.com/products/keychron-q0-qmk-custom-number-pad)
Make example for this keyboard (after setting up your build environment):
make keychron/q0/rev_0130:default
+ make keychron/q0/rev_0131:default
Flashing example for this keyboard:
make keychron/q0/rev_0130:default:flash
+ make keychron/q0/rev_0131:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q0/rev_0130/info.json b/keyboards/keychron/q0/rev_0130/info.json
index f6225c884a94..135dbd6cbc22 100644
--- a/keyboards/keychron/q0/rev_0130/info.json
+++ b/keyboards/keychron/q0/rev_0130/info.json
@@ -1,117 +1,63 @@
{
- "keyboard_name": "Q0",
+ "keyboard_name": "Keychron Q0",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0130",
- "device_version": "1.0.2",
- "force_nkro": true
- },
- "matrix_pins": {
- "cols": ["A5", "A6", "A7", "B0"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "device_version": "1.0.3"
},
"features": {
- "audio": false,
- "backlight": false,
"bootmagic": true,
"command": false,
"console": false,
+ "dip_switch": true,
+ "encoder": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
- "rgb_matrix": true,
- "rgblight": false
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A5", "A6", "A7", "B0"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
- "rgb_matrix": {
- "driver": "ckled2001",
- "animations": {
- "band_spiral_val": true,
- "breathing": 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
- },
- "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}
- ]
- },
"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":[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":[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":[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":[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":[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}
+ {"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/rev_0130/keymaps/default/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
index 387ff2d6869b..87180ddc3d77 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
+++ b/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
@@ -16,22 +16,25 @@
#include QMK_KEYBOARD_H
-enum layers { _BASE, _FN1};
+enum layers {
+ L0,
+ L1
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_numpad_6x4(
- MO(_FN1), KC_ESC, KC_BSPC, KC_TAB,
+ [L0] = LAYOUT_numpad_6x4(
+ MO(L1), 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, _______)
+ [L1] = 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/keychron/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/keychron/keymap.c
index 73826716fca6..5db4f6aa9fe2 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q0/rev_0130/keymaps/keychron/keymap.c
@@ -16,50 +16,62 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
-enum layers { _BASE, _FN1, _RESERVED1, _RESERVED2 };
+enum layers {
+ L0,
+ L1,
+ L2,
+ L3
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_numpad_6x4(
- MO(_FN1), KC_ESC, KC_BSPC, KC_TAB,
+ [L0] = LAYOUT_numpad_6x4(
+ MO(L1), 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, _______),
+ [L1] = 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(
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______),
+ [L2] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______),
- [_RESERVED2] = LAYOUT_numpad_6x4(
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______)
+ [L3] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______)
};
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/keychron/rules.mk b/keyboards/keychron/q0/rev_0130/keymaps/keychron/rules.mk
index 495e8907b48c..c7a537b5d6e0 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q0/rev_0130/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c factory.c
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
index 32fd198cf00b..cd5b50d0ac8d 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
+++ b/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
@@ -16,38 +16,43 @@
#include QMK_KEYBOARD_H
-enum layers { _BASE, _FN1, _RESERVED1, _RESERVED2 };
+enum layers {
+ L0,
+ L1,
+ L2,
+ L3
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_numpad_6x4(
- MO(_FN1), KC_ESC, KC_BSPC, KC_TAB,
+ [L0] = LAYOUT_numpad_6x4(
+ MO(L1), 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, _______),
+ [L1] = 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(
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______),
+ [L2] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______),
- [_RESERVED2] = LAYOUT_numpad_6x4(
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______)
+ [L3] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______)
};
diff --git a/keyboards/keychron/q0/rev_0130/readme.md b/keyboards/keychron/q0/rev_0130/readme.md
deleted file mode 100644
index a6db5bc015e7..000000000000
--- a/keyboards/keychron/q0/rev_0130/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# 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
index ffe82a6d8c7e..897f74ac2ce5 100644
--- a/keyboards/keychron/q0/rev_0130/rev_0130.c
+++ b/keyboards/keychron/q0/rev_0130/rev_0130.c
@@ -18,10 +18,8 @@
#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -54,4 +52,37 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_1, J_1, K_1}, // 19
{0, C_2, A_2, B_2}, // 20
};
-#endif // RGB_MATRIX_ENABLE
+
+#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,
+ 8, 4, 4, 4,
+ 4, 4, 4,
+ 4, 4, 4, 4,
+ 4, 4, 4,
+ 4, 4, 4
+ }
+};
+
+#endif
diff --git a/keyboards/keychron/q0/rev_0130/rules.mk b/keyboards/keychron/q0/rev_0130/rules.mk
index f6868e88e334..9077e5e2e345 100644
--- a/keyboards/keychron/q0/rev_0130/rules.mk
+++ b/keyboards/keychron/q0/rev_0130/rules.mk
@@ -1,3 +1,10 @@
+# Build Options
+# change yes to no to disable.
+#
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
+
+VPATH += keyboards/keychron/common
diff --git a/keyboards/keychron/q0/rev_0131/info.json b/keyboards/keychron/q0/rev_0131/info.json
index c569e498f404..d972fe04b688 100644
--- a/keyboards/keychron/q0/rev_0131/info.json
+++ b/keyboards/keychron/q0/rev_0131/info.json
@@ -6,25 +6,25 @@
"usb": {
"vid": "0x3434",
"pid": "0x0131",
- "device_version": "1.0.0",
- "force_nkro": true
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "device_version": "1.0.1"
},
"features": {
- "audio": false,
- "backlight": false,
"bootmagic": true,
"command": false,
"console": false,
+ "dip_switch": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
- "rgb_matrix": true,
- "rgblight": false
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
"diode_direction": "ROW2COL",
"encoder": {
@@ -37,100 +37,41 @@
},
"processor": "STM32L432",
"bootloader": "stm32-dfu",
- "rgb_matrix": {
- "driver": "ckled2001",
- "animations": {
- "band_spiral_val": true,
- "breathing": 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
- },
- "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}
- ]
- },
"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":[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":[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":[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":[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":[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}
+ {"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/rev_0131/keymaps/default/keymap.c b/keyboards/keychron/q0/rev_0131/keymaps/default/keymap.c
index 4e281d4d7db9..ed9160d5ecd2 100644
--- a/keyboards/keychron/q0/rev_0131/keymaps/default/keymap.c
+++ b/keyboards/keychron/q0/rev_0131/keymaps/default/keymap.c
@@ -19,31 +19,31 @@
// clang-format off
enum layers {
- BASE,
- FUNC
+ L0,
+ L1
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [BASE] = LAYOUT_numpad_6x5(
- KC_MUTE, MO(FUNC), KC_ESC, KC_BSPC, KC_TAB,
+ [L0] = LAYOUT_numpad_6x5(
+ KC_MUTE, MO(L1), 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),
+ _______, KC_P0, KC_PDOT ),
- [FUNC] = LAYOUT_numpad_6x5(
+ [L1] = 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),
+ _______, 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) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [L0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [L1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/keychron/keymap.c b/keyboards/keychron/q0/rev_0131/keymaps/keychron/keymap.c
index 795c27554332..a34749676837 100644
--- a/keyboards/keychron/q0/rev_0131/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q0/rev_0131/keymaps/keychron/keymap.c
@@ -16,27 +16,28 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers {
- BASE,
- FUNC,
+ L0,
+ L1,
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,
+ [L0] = LAYOUT_numpad_6x5(
+ KC_MUTE, MO(L1), 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,
+ [L1] = 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,
@@ -49,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
- _______, _______, _______),
+ _______, _______, _______ ),
[L3] = LAYOUT_numpad_6x5(
_______, _______, _______, _______, _______,
@@ -57,13 +58,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
- _______, _______, _______)
+ _______, _______, _______ )
};
#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) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [L0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [L1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[L2] = { ENCODER_CCW_CW(_______, _______) },
[L3] = { ENCODER_CCW_CW(_______, _______) }
};
@@ -73,11 +74,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/keychron/rules.mk b/keyboards/keychron/q0/rev_0131/keymaps/keychron/rules.mk
index 9cf1a9b56cba..c7a537b5d6e0 100644
--- a/keyboards/keychron/q0/rev_0131/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q0/rev_0131/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c factory.c
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/via/keymap.c b/keyboards/keychron/q0/rev_0131/keymaps/via/keymap.c
index 935d3edb76b1..c5ab273f531f 100644
--- a/keyboards/keychron/q0/rev_0131/keymaps/via/keymap.c
+++ b/keyboards/keychron/q0/rev_0131/keymaps/via/keymap.c
@@ -19,23 +19,23 @@
// clang-format off
enum layers {
- BASE,
- FUNC,
+ L0,
+ L1,
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,
+ [L0] = LAYOUT_numpad_6x5(
+ KC_MUTE, MO(L1), 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,
+ [L1] = 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,
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
- _______, _______, _______),
+ _______, _______, _______ ),
[L3] = LAYOUT_numpad_6x5(
_______, _______, _______, _______, _______,
@@ -56,13 +56,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
- _______, _______, _______)
+ _______, _______, _______ )
};
#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) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [L0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [L1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[L2] = { ENCODER_CCW_CW(_______, _______) },
[L3] = { ENCODER_CCW_CW(_______, _______) }
};
diff --git a/keyboards/keychron/q0/rev_0131/readme.md b/keyboards/keychron/q0/rev_0131/readme.md
index df07c40e49ae..ad1e38c1968c 100644
--- a/keyboards/keychron/q0/rev_0131/readme.md
+++ b/keyboards/keychron/q0/rev_0131/readme.md
@@ -1,6 +1,12 @@
-# The enhanced version with encoder of the Keychron Q0
+# Keychron Q0 Plus
-- The name of this keyboard is "Q0 Plus"
-- Enable EC11 rotary encoder
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume
-- Press the knob button to mute
+![Keychron Q0 Plus](https://i.imgur.com/EDbfVVO.jpg[/img])
+
+* 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. Enable EC11 rotary encoder
+3. Turn clockwise to increase volume and turn anti-clockwise to decrease volume
+4. Press the knob button to mute
diff --git a/keyboards/keychron/q0/rev_0131/rev_0131.c b/keyboards/keychron/q0/rev_0131/rev_0131.c
index 282c511ce2ea..e4ecb4d87d06 100644
--- a/keyboards/keychron/q0/rev_0131/rev_0131.c
+++ b/keyboards/keychron/q0/rev_0131/rev_0131.c
@@ -18,10 +18,8 @@
#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -59,4 +57,37 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_7, D_7, E_7},
{0, F_9, D_9, E_9},
};
-#endif // RGB_MATRIX_ENABLE
+
+#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, 11, 12, 13 },
+ { 14, 15, 16, 17, __ },
+ { 18, 19, 20, 21, 22 },
+ { 23, 24, __, 25, __ },
+ },
+ {
+ // LED Index to Physical Position
+ {56,0}, {112,0}, {168,0}, {224,0},
+ {0,15}, {56,15}, {112,15}, {168,15}, {224,15},
+ {0,27}, {56,27}, {112,27}, {168,27}, {224,34},
+ {0,40}, {56,40}, {112,40}, {168,40},
+ {0,52}, {56,52}, {112,52}, {168,52}, {224,58},
+ {0,64}, {84,64}, {168,64},
+ },
+ {
+ // LED Index to Flag
+ 1, 1, 1, 1,
+ 4, 8, 4, 4, 4,
+ 4, 4, 4, 4, 4,
+ 4, 4, 4, 4,
+ 4, 4, 4, 4, 4,
+ 4, 4, 4,
+ }
+};
+
+#endif
diff --git a/keyboards/keychron/q0/rev_0131/rules.mk b/keyboards/keychron/q0/rev_0131/rules.mk
index f6868e88e334..9077e5e2e345 100644
--- a/keyboards/keychron/q0/rev_0131/rules.mk
+++ b/keyboards/keychron/q0/rev_0131/rules.mk
@@ -1,3 +1,10 @@
+# Build Options
+# change yes to no to disable.
+#
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
+
+VPATH += keyboards/keychron/common
diff --git a/keyboards/keychron/q1/ansi/config.h b/keyboards/keychron/q1/ansi/config.h
deleted file mode 100644
index c6d4e44c8777..000000000000
--- a/keyboards/keychron/q1/ansi/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2021 @ 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 59
-#define DRIVER_2_LED_TOTAL 23
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
\ No newline at end of file
diff --git a/keyboards/keychron/q1/ansi/info.json b/keyboards/keychron/q1/ansi/info.json
deleted file mode 100644
index 8ff2075747c3..000000000000
--- a/keyboards/keychron/q1/ansi/info.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
- "keyboard_name": "Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0100",
- "device_version": "1.0.0",
- "force_nkro": true
- },
- "rgb_matrix": {
- "driver": "is31fl3733"
- },
- "matrix_pins": {
- "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
- "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
- },
- "diode_direction": "ROW2COL",
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_ansi_82": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 2], "x": 1.25, "y": 0},
- {"matrix": [0, 3], "x": 2.25, "y": 0},
- {"matrix": [0, 4], "x": 3.25, "y": 0},
- {"matrix": [0, 5], "x": 4.25, "y": 0},
- {"matrix": [0, 6], "x": 5.5, "y": 0},
- {"matrix": [0, 7], "x": 6.5, "y": 0},
- {"matrix": [0, 8], "x": 7.5, "y": 0},
- {"matrix": [0, 9], "x": 8.5, "y": 0},
- {"matrix": [0, 10], "x": 9.75, "y": 0},
- {"matrix": [0, 11], "x": 10.75, "y": 0},
- {"matrix": [0, 12], "x": 11.75, "y": 0},
- {"matrix": [0, 13], "x": 12.75, "y": 0},
- {"matrix": [4, 14], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "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": [1, 4], "x": 4, "y": 1},
- {"matrix": [1, 5], "x": 5, "y": 1},
- {"matrix": [1, 6], "x": 6, "y": 1},
- {"matrix": [1, 7], "x": 7, "y": 1},
- {"matrix": [1, 8], "x": 8, "y": 1},
- {"matrix": [1, 9], "x": 9, "y": 1},
- {"matrix": [1, 10], "x": 10, "y": 1},
- {"matrix": [1, 11], "x": 11, "y": 1},
- {"matrix": [1, 12], "x": 12, "y": 1},
- {"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1},
-
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2},
- {"matrix": [2, 2], "x": 2.5, "y": 2},
- {"matrix": [2, 3], "x": 3.5, "y": 2},
- {"matrix": [2, 4], "x": 4.5, "y": 2},
- {"matrix": [2, 5], "x": 5.5, "y": 2},
- {"matrix": [2, 6], "x": 6.5, "y": 2},
- {"matrix": [2, 7], "x": 7.5, "y": 2},
- {"matrix": [2, 8], "x": 8.5, "y": 2},
- {"matrix": [2, 9], "x": 9.5, "y": 2},
- {"matrix": [2, 10], "x": 10.5, "y": 2},
- {"matrix": [2, 11], "x": 11.5, "y": 2},
- {"matrix": [2, 12], "x": 12.5, "y": 2},
- {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2},
-
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3},
- {"matrix": [3, 2], "x": 2.75, "y": 3},
- {"matrix": [3, 3], "x": 3.75, "y": 3},
- {"matrix": [3, 4], "x": 4.75, "y": 3},
- {"matrix": [3, 5], "x": 5.75, "y": 3},
- {"matrix": [3, 6], "x": 6.75, "y": 3},
- {"matrix": [3, 7], "x": 7.75, "y": 3},
- {"matrix": [3, 8], "x": 8.75, "y": 3},
- {"matrix": [3, 9], "x": 9.75, "y": 3},
- {"matrix": [3, 10], "x": 10.75, "y": 3},
- {"matrix": [3, 11], "x": 11.75, "y": 3},
- {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
- {"matrix": [3, 14], "x": 15.25, "y": 3},
-
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
- {"matrix": [4, 2], "x": 2.25, "y": 4},
- {"matrix": [4, 3], "x": 3.25, "y": 4},
- {"matrix": [4, 4], "x": 4.25, "y": 4},
- {"matrix": [4, 5], "x": 5.25, "y": 4},
- {"matrix": [4, 6], "x": 6.25, "y": 4},
- {"matrix": [4, 7], "x": 7.25, "y": 4},
- {"matrix": [4, 8], "x": 8.25, "y": 4},
- {"matrix": [4, 9], "x": 9.25, "y": 4},
- {"matrix": [4, 10], "x": 10.25, "y": 4},
- {"matrix": [4, 11], "x": 11.25, "y": 4},
- {"matrix": [4, 13], "x": 12.25, "y": 4, "w": 1.75},
- {"matrix": [3, 12], "x": 14.25, "y": 4.25},
-
- {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5},
- {"matrix": [5, 11], "x": 11, "y": 5},
- {"matrix": [5, 12], "x": 12, "y": 5},
- {"matrix": [5, 13], "x": 13.25, "y": 5.25},
- {"matrix": [4, 12], "x": 14.25, "y": 5.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/ansi/keymaps/default/keymap.c b/keyboards/keychron/q1/ansi/keymaps/default/keymap.c
deleted file mode 100644
index 092d446773d0..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/default/keymap.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright 2021 @ 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
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_ansi_82(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
diff --git a/keyboards/keychron/q1/ansi/keymaps/gtg465x/README.md b/keyboards/keychron/q1/ansi/keymaps/gtg465x/README.md
deleted file mode 100644
index c2d5799bb8b1..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/gtg465x/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# gtg465x's Keychron Q1 keymap
-
-- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences
-- RGB lighting turns off when the computer sleeps
-- Caps Lock and alpha keys turn red to indicate when Caps Lock is on
-- When the Fn layer is active, RGB lighting turns off for keys that are not assigned
-
-## Changelog
-
-### 10/3/2021 - 1.0.3
-
-- Feature: When the Fn layer is active, RGB lighting turns off for keys that are not assigned
-
-### 10/1/2021 - 1.0.2
-
-- Added Caps Lock indicator (my implementation is different, but this was inspired by mkillewald)
-- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so they can be labeled properly in VIA
-
-### 9/28/2021 - 1.0.1
-
-- Initial release
diff --git a/keyboards/keychron/q1/ansi/keymaps/gtg465x/config.h b/keyboards/keychron/q1/ansi/keymaps/gtg465x/config.h
deleted file mode 100644
index 5ac05d04c12f..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/gtg465x/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2021 @ Grayson Carr
- *
- * 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Configuration */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
-# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
-# define FN_LAYER_TRANSPARENT_KEYS_OFF
-#endif
diff --git a/keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap.c b/keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap.c
deleted file mode 100644
index 8da475c3c60a..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Copyright 2021 @ Grayson Carr
- *
- * 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 "keymap_user.h"
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix_user.h"
-#endif
-
-// clang-format off
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[MAC_FN] = LAYOUT_ansi_82(
- KC_TRNS, 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_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
-[WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[WIN_FN] = LAYOUT_ansi_82(
- KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-
-};
-
-// clang-format on
-
-void matrix_init_user(void) {
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init_user();
-#endif
-}
diff --git a/keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.c b/keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.c
deleted file mode 100644
index b7d12f9466ad..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2021 @ Grayson Carr
- *
- * 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 "rgb_matrix_user.h"
-#include "keymap_user.h"
-
-keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
-
-void rgb_matrix_init_user(void) {
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- for (uint8_t col = 0; col < MATRIX_COLS; col++) {
- uint8_t led_index = g_led_config.matrix_co[row][col];
- if (led_index != NO_LED) {
- led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
- }
- }
- }
-}
-
-bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
- uint8_t current_layer = get_highest_layer(layer_state);
- switch (current_layer) {
- case MAC_BASE:
- case WIN_BASE:
-#ifdef CAPS_LOCK_INDICATOR_COLOR
- if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
- }
-#endif
- break;
- case MAC_FN:
- case WIN_FN:
-#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
-#endif
- break;
- }
- return false;
-}
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
- for (uint8_t i = led_min; i < led_max; i++) {
- uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
- if ((*is_keycode)(keycode)) {
- rgb_matrix_set_color(i, red, green, blue);
- }
- }
-}
-
-bool is_caps_lock_indicator(uint16_t keycode) {
-#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
- return (KC_A <= keycode && keycode <= KC_Z) || keycode == KC_CAPS;
-#else
- return keycode == KC_CAPS;
-#endif
-}
-
-bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
diff --git a/keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.h b/keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.h
deleted file mode 100644
index dead4541676d..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2021 @ Grayson Carr
- *
- * 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 .
- */
-
-#pragma once
-
-void rgb_matrix_init_user(void);
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
-
-bool is_caps_lock_indicator(uint16_t keycode);
-bool is_transparent(uint16_t keycode);
diff --git a/keyboards/keychron/q1/ansi/keymaps/gtg465x/rules.mk b/keyboards/keychron/q1/ansi/keymaps/gtg465x/rules.mk
deleted file mode 100644
index 42ba38028d26..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/gtg465x/rules.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no
-
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
- SRC += rgb_matrix_user.c
-endif
diff --git a/keyboards/keychron/q1/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q1/ansi/keymaps/keychron/keymap.c
deleted file mode 100644
index e7c9fddcdcaa..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/keychron/keymap.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright 2021 @ 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"
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_ansi_82(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-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/q1/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi/keymaps/keychron/rules.mk
deleted file mode 100644
index 495e8907b48c..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
diff --git a/keyboards/keychron/q1/ansi/keymaps/mkillewald/config.h b/keyboards/keychron/q1/ansi/keymaps/mkillewald/config.h
deleted file mode 100644
index bc9fe405c35c..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/mkillewald/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 .
- */
-
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
-# define FN_LAYER_COLOR RGB_ORANGE
-#endif
\ No newline at end of file
diff --git a/keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap.c b/keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap.c
deleted file mode 100644
index 4fc8ad58e546..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 "keymap_user.h"
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix_user.h"
-#endif
-
-// clang-format off
-
-typedef union {
- uint32_t raw;
- struct {
- bool caps_lock_light_tab :1;
- bool caps_lock_light_alphas :1;
- bool fn_layer_transparent_keys_off :1;
- bool fn_layer_color_enable :1;
- };
-} user_config_t;
-
-user_config_t user_config;
-
-enum custom_keycodes {
- KC_LIGHT_TAB_TOGGLE = QK_KB_2, // TECH DEBT: Starts at QK_KB_2 to maintain ordering with VIA definitions. See #19884. Revert to QK_KB_0 when VIA catches up with QMK.
- KC_LIGHT_ALPHAS_TOGGLE,
- KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE,
- KC_FN_LAYER_COLOR_TOGGLE
-};
-
-#define KC_LTTOG KC_LIGHT_TAB_TOGGLE
-#define KC_LATOG KC_LIGHT_ALPHAS_TOGGLE
-#define KC_TKTOG KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE
-#define KC_FCTOG KC_FN_LAYER_COLOR_TOGGLE
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[MAC_FN] = LAYOUT_ansi_82(
- KC_TRNS, 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_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
-[WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[WIN_FN] = LAYOUT_ansi_82(
- KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-
-};
-
-// clang-format on
-
-void matrix_init_user(void) {
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init_user();
-#endif
-}
-
-void keyboard_post_init_user(void) {
- user_config.raw = eeconfig_read_user();
-}
-
-void eeconfig_init_user(void) {
- user_config.raw = 0;
- user_config.caps_lock_light_tab = false;
- user_config.caps_lock_light_alphas = false;
- user_config.fn_layer_transparent_keys_off = true;
- user_config.fn_layer_color_enable = false;
- eeconfig_update_user(user_config.raw);
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_LIGHT_TAB_TOGGLE:
- if (record->event.pressed) {
- user_config.caps_lock_light_tab ^= 1; // bitwise xor to toggle status bit
- eeconfig_update_user(user_config.raw);
- }
- return false; // Skip all further processing of this key
- case KC_LIGHT_ALPHAS_TOGGLE:
- if (record->event.pressed) {
- user_config.caps_lock_light_alphas ^= 1;
- eeconfig_update_user(user_config.raw);
- }
- return false; // Skip all further processing of this key
- case KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE:
- if (record->event.pressed) {
- user_config.fn_layer_transparent_keys_off ^= 1;
- eeconfig_update_user(user_config.raw);
- }
- return false; // Skip all further processing of this key
- case KC_FN_LAYER_COLOR_TOGGLE:
- if (record->event.pressed) {
- user_config.fn_layer_color_enable ^= 1;
- eeconfig_update_user(user_config.raw);
- }
- return false; // Skip all further processing of this key
- default:
- return true; // Process all other keycodes normally
- }
-}
-
-bool get_caps_lock_light_tab(void) {
- return user_config.caps_lock_light_tab;
-}
-
-bool get_caps_lock_light_alphas(void) {
- return user_config.caps_lock_light_alphas;
-}
-
-bool get_fn_layer_transparent_keys_off(void) {
- return user_config.fn_layer_transparent_keys_off;
-}
-
-bool get_fn_layer_color_enable(void) {
- return user_config.fn_layer_color_enable;
-}
diff --git a/keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap_user.h b/keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap_user.h
deleted file mode 100644
index 87b1baf47f23..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap_user.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 .
- */
-
-#pragma once
-
-// clang-format off
-
-enum layers {
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-// clang-format on
-
-bool get_caps_lock_light_tab(void);
-bool get_caps_lock_light_alphas(void);
-bool get_fn_layer_transparent_keys_off(void);
-bool get_fn_layer_color_enable(void);
\ No newline at end of file
diff --git a/keyboards/keychron/q1/ansi/keymaps/mkillewald/readme.md b/keyboards/keychron/q1/ansi/keymaps/mkillewald/readme.md
deleted file mode 100644
index 8ff2dbcc2cb9..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/mkillewald/readme.md
+++ /dev/null
@@ -1,54 +0,0 @@
-## mkillewald's Keychron Q1 keymap (ANSI rev_0100) v1.0.4
-
-This keymap builds on the keymap by Grayson Carr (gtg465x) but adds a couple options.
-
-## Features:
-- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences
-- RGB lighting turns off when the computer sleeps
-- Caps Lock RGB indicator
- - the Caps Lock key will light when Caps Lock is enabled with the following options:
- - #define CAPS_LOCK_INDICATOR_COLOR [color] in config.h to set the backlight color used for the indicator when Caps Lock is enabled (default: red)
- - Fn+Z will toggle lighting the TAB key when Caps Lock is enabled. This is useful with non backlit keycaps/legends. (default: off)
- - Fn+X will toggle lighting all the alpha keys when Caps Lock is enabled. (default: off)
-
-- Dynamic Fn layer RGB indicator
- - When the Fn key is held down, any keys defined on the Fn layer in this firmware or in VIA will be highlighted with the following options:
- - #define FN_LAYER_COLOR [color] in config.h to set a static color for defined keys (default: orange)
- - Fn+C will toggle turning off RGB for keys with no definition (default: RGB off)
- - Fn+V will toggle lighting the defined Fn layer keys with the static color set with FN_LAYER_COLOR (default: static color off)
-
-- All custom keycodes can be moved to different keys in VIA by using the ANY key with the following keycodes:
- - USER(0) (default: F3) macOS Mission Control
- - USER(1) (default: F4) macOS Launchpad
- - USER(2) (default: Fn+Z) Caps Lock light Tab toggle
- - USER(3) (default: Fn+X) Caps Lock light alphas toggle
- - USER(4) (default: Fn+C) Fn layer non-defined keys RGB toggle
- - USER(5) (default: Fn+V) Fn layer defined keys static color toggle
-
-RGB must be toggled on for all indicators to function. If you do not want an RGB mode active but still want the indicators, toggle RGB on and turn the brightness all the way off. The indicators will remain at full brightness.
-
-Please make sure to save any customizations you have made in VIA to a .json file before flashing the firmware. Sometimes it has been necessary to re-apply those changes in VIA after flashing the firmware. If that is the case, you will most likely need to manually add the USER(0) through USER(5) custom keycodes after loading your customizations from the saved .json file. Then re-save a new .json file which will have your previous customizations and the custom keycodes for future use as needed.
-
-#### USE AT YOUR OWN RISK
-
-## Changelog:
-
-v1.0.4 October 9, 2021
-- Caps Lock and Fn layer toggles are now stored in eeprom so settings will remain when Q1 is unplugged
-
-v1.0.3 October 8, 2021
-- now using keycode toggles instead of preprocessor directive to set the various Caps Lock and Fn Layer RGB lighting options. This allows for setting the options from user space without having to recompile.
-
-v1.0.2 October 7, 2021
-- adapted Grayson Carr's (gtg465x) Caps Lock alphas and dynamic Fn layer RGB routines
-- added CAPS_LOCK_INDICATOR_LIGHT_TAB config option to enable/disable lighting Tab with Caps Lock indicator
-- added FN_LAYER_COLOR config option to set FN layer static color
-
-v1.0.1 October 7, 2021
-- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so thay can be labeled properly in VIA (adopted change from gtg465x)
-
-v1.0.0 September 30, 2021
-- Initial release built upon keymap by Grayson Carr (gtg465x)
-- defined Mission Control (F3) and Launchpad (F4) keycodes for macOs
-- RGB backlight turns off when computer sleeps
-- added Caps Lock indicator lighting both the Caps Lock and Tab LEDs for better effect on non-backlit keycaps
diff --git a/keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.c b/keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.c
deleted file mode 100644
index c6fa5f1f155a..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 "rgb_matrix_user.h"
-#include "keymap_user.h"
-
-keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
-
-void rgb_matrix_init_user(void) {
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- for (uint8_t col = 0; col < MATRIX_COLS; col++) {
- uint8_t led_index = g_led_config.matrix_co[row][col];
- if (led_index != NO_LED) {
- led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
- }
- }
- }
-}
-
-bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
- uint8_t current_layer = get_highest_layer(layer_state);
- switch (current_layer) {
- case MAC_BASE:
- case WIN_BASE:
-#ifdef CAPS_LOCK_INDICATOR_COLOR
- if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
- }
-#endif
- break;
- case MAC_FN:
- case WIN_FN:
-#ifdef FN_LAYER_COLOR
- if (get_fn_layer_color_enable()) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, FN_LAYER_COLOR);
- }
-#endif
- if (get_fn_layer_transparent_keys_off()) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
- }
- break;
- }
- return false;
-}
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
- for (uint8_t i = led_min; i < led_max; i++) {
- uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
- if ((*is_keycode)(keycode)) {
- rgb_matrix_set_color(i, red, green, blue);
- }
- }
-}
-
-bool is_caps_lock_indicator(uint16_t keycode) {
- bool indicator = keycode == KC_CAPS;
-
- if (get_caps_lock_light_tab()) {
- indicator = keycode == KC_TAB || keycode == KC_CAPS;
- }
-
- if (get_caps_lock_light_alphas()) {
- return (KC_A <= keycode && keycode <= KC_Z) || indicator;
- } else {
- return indicator;
- }
-}
-
-bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
-bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; }
diff --git a/keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.h b/keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.h
deleted file mode 100644
index 1fb79c0b2a14..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 .
- */
-
-#pragma once
-
-void rgb_matrix_init_user(void);
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
-
-bool is_caps_lock_indicator(uint16_t keycode);
-bool is_transparent(uint16_t keycode);
-bool is_not_transparent(uint16_t keycode);
-
diff --git a/keyboards/keychron/q1/ansi/keymaps/mkillewald/rules.mk b/keyboards/keychron/q1/ansi/keymaps/mkillewald/rules.mk
deleted file mode 100644
index af720e37ee7b..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/mkillewald/rules.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no
-
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
- SRC += rgb_matrix_user.c
-endif
\ No newline at end of file
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/config.h b/keyboards/keychron/q1/ansi/keymaps/teimor/config.h
deleted file mode 100644
index 4378af4f5825..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/config.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 .
- */
-
-#pragma once
-
-#undef TAPPING_TERM
-#define TAPPING_TERM 200
-
-/* RGB Matrix Configuration */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define MAC_LAYER_DEFAULT_COLOR RGB_CYAN
-# define WIN_LAYER_DEFAULT_COLOR RGB_GREEN
-# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
-# define CAPS_LOCK_INDICATOR_LIGHT_60
-# define FN_LAYER_TRANSPARENT_KEYS_OFF
-# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set
-# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
-#endif
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/keymap.c b/keyboards/keychron/q1/ansi/keymaps/teimor/keymap.c
deleted file mode 100644
index 77af30c5b6a3..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/keymap.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 "keymap_user.h"
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix_user.h"
-#endif
-
-// clang-format off
-
-#define TG_NKRO MAGIC_TOGGLE_NKRO
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_HOME,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END,
- 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_PGUP,
- KC_LGMAC, 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_PGDN,
- 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_MACFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_82(
- _______, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MACPS, KC_INS,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
- KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, KC_LMAC, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_HOME,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END,
- 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_PGUP,
- KC_LGWIN, 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_PGDN,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_WINFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_ansi_82(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_INS,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
- KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-// clang-format on
-
-void matrix_init_user(void) {
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init_user();
-#endif
-}
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/keymap_user.h b/keyboards/keychron/q1/ansi/keymaps/teimor/keymap_user.h
deleted file mode 100644
index 57ac5258c267..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/keymap_user.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 .
- */
-
-#pragma once
-
-// clang-format off
-
-enum layers {
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-// clang-format on
-
-// Tap dance enums
-enum {
- MAC_CAPS_LANGUAGE_CHANGE,
- WIN_CAPS_LANGUAGE_CHANGE,
-};
-
-#ifdef TAP_DANCE_ENABLE
-# define KC_LGMAC TD(MAC_CAPS_LANGUAGE_CHANGE)
-# define KC_LGWIN TD(WIN_CAPS_LANGUAGE_CHANGE)
-#else
-# define KC_LGMAC KC_CAPS
-# define KC_LGWIN KC_CAPS
-#endif
-#define KC_MACFN MO(MAC_FN)
-#define KC_WINFN MO(WIN_FN)
-#define KC_LMAC C(G(KC_Q))
-#define KC_MACPS G(S(KC_5))
-#define KC_TASK G(KC_TAB)
-#define KC_FLXP G(KC_E)
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/readme.md b/keyboards/keychron/q1/ansi/keymaps/teimor/readme.md
deleted file mode 100644
index 9aa16f9a8939..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/readme.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# teimor's Keychron Q1 keymap
-
-- Via Enabled.
-- Tap dance enabled.
-- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences.
-- RGB lighting turns off when the computer sleeps.
-- The RGB lighting for keys that are not assigned turns off when the Fn layer is active
-- 60% layout turns red to indicate when Caps Lock is on.
-- Windows and macOS: A single tap will quickly change the language, and holding will trigger Caps Lock. (Using Tap Dance)
-- RGB Matrix based on layout - macOS base layout will turn on cyan color, Windows base layout will turn on green color.
-- `fn + N` will toggle NKRO, useful when using the keyboard on freebsd.
-- `fn + L` on macOS will lock the system.
-- `fn + del` will trigger screenshot on macOS and Windows.
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.c b/keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.c
deleted file mode 100644
index fbc37fb5bfbe..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 "rgb_matrix_user.h"
-#include "keymap_user.h"
-
-keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
-
-void rgb_matrix_init_user(void) {
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- for (uint8_t col = 0; col < MATRIX_COLS; col++) {
- uint8_t led_index = g_led_config.matrix_co[row][col];
- if (led_index != NO_LED) {
- led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
- }
- }
- }
-}
-
-bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
- uint8_t current_layer = get_highest_layer(layer_state | default_layer_state);
- switch (current_layer) {
- case MAC_BASE:
- case WIN_BASE:
-#if defined CAPS_LOCK_INDICATOR_COLOR && defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_COLOR
- if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
- } else if (current_layer == MAC_BASE)
- rgb_matrix_set_color_all(MAC_LAYER_DEFAULT_COLOR);
- else if (current_layer == WIN_BASE)
- rgb_matrix_set_color_all(WIN_LAYER_DEFAULT_COLOR);
-#endif
- break;
- case MAC_FN:
- case WIN_FN:
-#if defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_COLOR
- if (current_layer == MAC_FN) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, MAC_LAYER_DEFAULT_COLOR);
- } else if (current_layer == WIN_FN) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, WIN_LAYER_DEFAULT_COLOR);
- }
-#endif
-#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
-#endif
- break;
- }
- return false;
-}
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
- for (uint8_t i = led_min; i < led_max; i++) {
- uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
- if ((*is_keycode)(keycode)) {
- rgb_matrix_set_color(i, red, green, blue);
- }
-#if defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_COLOR
- else {
- if (layer == MAC_BASE)
- rgb_matrix_set_color(i, MAC_LAYER_DEFAULT_COLOR);
- else if (layer == WIN_BASE)
- rgb_matrix_set_color(i, WIN_LAYER_DEFAULT_COLOR);
- }
-#endif
- }
-}
-
-bool is_caps_lock_indicator(uint16_t keycode) {
- bool indicator = keycode == KC_CAPS || keycode == KC_LGMAC || keycode == KC_LGWIN;
-#ifdef CAPS_LOCK_INDICATOR_LIGHT_60
- return (KC_A <= keycode && keycode <= KC_CAPS) || (KC_LEFT_CTRL <= keycode && keycode <= KC_RIGHT_GUI) || keycode == KC_MACFN || keycode == KC_WINFN || indicator;
-#else
- return indicator;
-#endif
-}
-
-bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
-bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; }
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.h b/keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.h
deleted file mode 100644
index 5b53b5b8ec1f..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 .
- */
-
-#pragma once
-
-void rgb_matrix_init_user(void);
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
-
-bool is_caps_lock_indicator(uint16_t keycode);
-bool is_transparent(uint16_t keycode);
-bool is_not_transparent(uint16_t keycode);
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/rules.mk b/keyboards/keychron/q1/ansi/keymaps/teimor/rules.mk
deleted file mode 100644
index bafb40484bfc..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no
-TAP_DANCE_ENABLE = yes
-
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
- SRC += rgb_matrix_user.c
-endif
-
-ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
- SRC += tap_dance_user.c
- SRC += tap_dance_setup.c
- SRC += tap_dance_mac_caps.c
- SRC += tap_dance_win_caps.c
-endif
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.c b/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.c
deleted file mode 100644
index dfb0346ff16b..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright 2021 @ Teimor Epstein
- *
- * 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 .
- */
-
-/* macOS CapsLock language change */
-#include "tap_dance_mac_caps.h"
-
-static td_tap_t mac_caps_language_tap_state = {.is_press_action = true, .state = TD_NONE};
-
-void mac_caps_language_finished(tap_dance_state_t *state, void *user_data) {
- mac_caps_language_tap_state.state = current_dance(state);
- switch (mac_caps_language_tap_state.state) {
- case TD_SINGLE_TAP:
- register_code(KC_LCTL);
- register_code(KC_SPACE);
- break;
- case TD_SINGLE_HOLD:
- register_code(KC_CAPS_LOCK);
- break;
- default:
- break;
- }
-}
-
-void mac_caps_language_reset(tap_dance_state_t *state, void *user_data) {
- switch (mac_caps_language_tap_state.state) {
- case TD_SINGLE_TAP:
- unregister_code(KC_SPACE);
- unregister_code(KC_LCTL);
- break;
- case TD_SINGLE_HOLD:
- unregister_code(KC_CAPS_LOCK);
- break;
- default:
- break;
- }
- mac_caps_language_tap_state.state = TD_NONE;
-}
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.h b/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.h
deleted file mode 100644
index ef552a2c2c94..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2021 @ Teimor Epstein
- *
- * 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 .
- */
-
-/* macOS CapsLock language change */
-#pragma once
-
-#include "tap_dance_setup.h"
-
-void mac_caps_language_finished(tap_dance_state_t *state, void *user_data);
-void mac_caps_language_reset(tap_dance_state_t *state, void *user_data);
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.c b/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.c
deleted file mode 100644
index 07257e556a1a..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 "tap_dance_setup.h"
-
-td_state_t current_dance(tap_dance_state_t *state) {
- if (state->count == 1) {
- if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
- /* Key has not been interrupted, but the key is still held. Means you w ant to send a 'HOLD'. */
- else
- return TD_SINGLE_HOLD;
- } else if (state->count == 2) {
- /* TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
- action when hitting 'pp'. Suggested use case for this return value is when you want to send two
- keystrokes of the key, and not the 'double tap' action/macro. */
- if (state->interrupted)
- return TD_DOUBLE_SINGLE_TAP;
- else if (state->pressed)
- return TD_DOUBLE_HOLD;
- else
- return TD_DOUBLE_TAP;
- }
-
- /* Assumes no one is trying to type the same letter three times (at least not quickly).
- If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
- an exception here to return a 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP' */
- if (state->count == 3) {
- if (state->interrupted)
- return TD_TRIPLE_SINGLE_TAP;
- else if (state->pressed)
- return TD_TRIPLE_HOLD;
- else
- return TD_TRIPLE_TAP;
-
- } else
- return TD_UNKNOWN;
-}
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.h b/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.h
deleted file mode 100644
index 5d2f4acd577f..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 .
- */
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-typedef enum {
- TD_NONE,
- TD_UNKNOWN,
- TD_SINGLE_TAP,
- TD_SINGLE_HOLD,
- TD_DOUBLE_TAP,
- TD_DOUBLE_HOLD,
- TD_DOUBLE_SINGLE_TAP, // Send two single taps
- TD_TRIPLE_TAP,
- TD_TRIPLE_HOLD,
- TD_TRIPLE_SINGLE_TAP // Send three single tap
-} td_state_t;
-
-typedef struct {
- bool is_press_action;
- td_state_t state;
-} td_tap_t;
-
-td_state_t current_dance(tap_dance_state_t *state);
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_user.c b/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_user.c
deleted file mode 100644
index ed8120572eea..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_user.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 "keymap_user.h"
-#include "tap_dance_mac_caps.h"
-#include "tap_dance_win_caps.h"
-
-// clang-format off
-
-tap_dance_action_t tap_dance_actions[] = {
- [MAC_CAPS_LANGUAGE_CHANGE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, mac_caps_language_finished, mac_caps_language_reset),
- [WIN_CAPS_LANGUAGE_CHANGE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, win_caps_language_finished, win_caps_language_reset)
-};
-
-// clang-format on
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.c b/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.c
deleted file mode 100644
index 1c7c438d2e50..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 .
- */
-
-/* Windows CapsLock language change */
-#include "tap_dance_win_caps.h"
-
-static td_tap_t win_caps_language_tap_state = {.is_press_action = true, .state = TD_NONE};
-
-void win_caps_language_finished(tap_dance_state_t *state, void *user_data) {
- win_caps_language_tap_state.state = current_dance(state);
- switch (win_caps_language_tap_state.state) {
- case TD_SINGLE_TAP:
- register_code(KC_LGUI);
- register_code(KC_SPACE);
- break;
- case TD_SINGLE_HOLD:
- register_code(KC_CAPS_LOCK);
- break;
- default:
- break;
- }
-}
-
-void win_caps_language_reset(tap_dance_state_t *state, void *user_data) {
- switch (win_caps_language_tap_state.state) {
- case TD_SINGLE_TAP:
- unregister_code(KC_SPACE);
- unregister_code(KC_LGUI);
- break;
- case TD_SINGLE_HOLD:
- unregister_code(KC_CAPS_LOCK);
- break;
- default:
- break;
- }
- win_caps_language_tap_state.state = TD_NONE;
-}
diff --git a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.h b/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.h
deleted file mode 100644
index 2289cce32694..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2022 @ Teimor Epstein
- *
- * 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 .
- */
-
-/* Windows CapsLock language change */
-#pragma once
-
-#include "tap_dance_setup.h"
-
-void win_caps_language_finished(tap_dance_state_t *state, void *user_data);
-void win_caps_language_reset(tap_dance_state_t *state, void *user_data);
diff --git a/keyboards/keychron/q1/ansi/keymaps/via/keymap.c b/keyboards/keychron/q1/ansi/keymaps/via/keymap.c
deleted file mode 100644
index 6cbf71baf566..000000000000
--- a/keyboards/keychron/q1/ansi/keymaps/via/keymap.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright 2021 @ 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
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_ansi_82(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
diff --git a/keyboards/keychron/q1/ansi/readme.md b/keyboards/keychron/q1/ansi/readme.md
deleted file mode 100644
index 5cf488f04867..000000000000
--- a/keyboards/keychron/q1/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q1
\ No newline at end of file
diff --git a/keyboards/keychron/q1/ansi/rules.mk b/keyboards/keychron/q1/ansi/rules.mk
deleted file mode 100644
index 0379fdb94c47..000000000000
--- a/keyboards/keychron/q1/ansi/rules.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # 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 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 = yes
-RGB_MATRIX_ENABLE = yes
-LTO_ENABLE = yes
diff --git a/keyboards/keychron/q1/ansi/ansi.c b/keyboards/keychron/q1/ansi_atmega32u4/ansi_atmega32u4.c
similarity index 81%
rename from keyboards/keychron/q1/ansi/ansi.c
rename to keyboards/keychron/q1/ansi_atmega32u4/ansi_atmega32u4.c
index ee586fef93ce..fb6016527f31 100644
--- a/keyboards/keychron/q1/ansi/ansi.c
+++ b/keyboards/keychron/q1/ansi_atmega32u4/ansi_atmega32u4.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,15 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b111111111111101,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+};
+
#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
@@ -112,39 +121,38 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}
-
};
#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, 11, 12, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
- { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
- { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 81 }
- },
- {
+ { 0, __, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
+ { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
+ { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 81 }
+ },
+ {
// LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
+ {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
{0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
{4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
{6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
{9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
{2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
},
- {
+ {
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
- }
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
+ }
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q1/ansi_encoder/config.h b/keyboards/keychron/q1/ansi_atmega32u4/config.h
similarity index 71%
rename from keyboards/keychron/q1/ansi_encoder/config.h
rename to keyboards/keychron/q1/ansi_atmega32u4/config.h
index 28bbea908788..ac1b3f7f0e11 100644
--- a/keyboards/keychron/q1/ansi_encoder/config.h
+++ b/keyboards/keychron/q1/ansi_atmega32u4/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,19 @@
#pragma once
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 0, 1 } }
+#define SCAN_COUNT_MAX 100
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1010000
+#define DRIVER_ADDR_2 0b1011111
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 59
#define DRIVER_2_LED_TOTAL 23
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/info.json b/keyboards/keychron/q1/ansi_atmega32u4/info.json
new file mode 100644
index 000000000000..4b32ad563ce9
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4/info.json
@@ -0,0 +1,126 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0100",
+ "device_version": "1.1.0"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "lto": true
+ },
+ "rgb_matrix": {
+ "driver": "IS31FL3733"
+ },
+ "matrix_pins": {
+ "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
+ "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,2], "x":1.25, "y":0},
+ {"matrix":[0,3], "x":2.25, "y":0},
+ {"matrix":[0,4], "x":3.25, "y":0},
+ {"matrix":[0,5], "x":4.25, "y":0},
+ {"matrix":[0,6], "x":5.5, "y":0},
+ {"matrix":[0,7], "x":6.5, "y":0},
+ {"matrix":[0,8], "x":7.5, "y":0},
+ {"matrix":[0,9], "x":8.5, "y":0},
+ {"matrix":[0,10], "x":9.75, "y":0},
+ {"matrix":[0,11], "x":10.75, "y":0},
+ {"matrix":[0,12], "x":11.75, "y":0},
+ {"matrix":[0,13], "x":12.75, "y":0},
+ {"matrix":[4,14], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,14], "x":15.25, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[3,12], "x":14.25, "y":4.5},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[4,12], "x":14.25, "y":5.5},
+ {"matrix":[5,14], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/default/keymap.c b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/default/keymap.c
new file mode 100644
index 000000000000..339ba6d7ffc7
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/default/keymap.c
@@ -0,0 +1,63 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/keymap.c b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/keymap.c
new file mode 100644
index 000000000000..b169397079b3
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/keymap.c
@@ -0,0 +1,81 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/keyboards/keychron/c1_pro/ansi/white/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/rules.mk
similarity index 53%
rename from keyboards/keychron/c1_pro/ansi/white/keymaps/keychron/rules.mk
rename to keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/c1_pro/ansi/white/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/keymap.c b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/keymap.c
new file mode 100644
index 000000000000..54efc408e20e
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/keymap.c
@@ -0,0 +1,63 @@
+/* Copyright 2021 @ 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{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/keychron/q1/ansi/keymaps/via/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/ansi/keymaps/via/rules.mk
rename to keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4/rules.mk
new file mode 100644
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q1/ansi_atmega32u4_encoder/ansi_atmega32u4_encoder.c
similarity index 77%
rename from keyboards/keychron/q1/ansi_encoder/ansi_encoder.c
rename to keyboards/keychron/q1/ansi_atmega32u4_encoder/ansi_atmega32u4_encoder.c
index bc559b354166..dcc3eccb9afc 100644
--- a/keyboards/keychron/q1/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q1/ansi_atmega32u4_encoder/ansi_atmega32u4_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -15,8 +15,20 @@
*/
#include "quantum.h"
+#include
+#include
+
+const matrix_row_t matrix_mask[] = {
+ 0b111111111111101,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+};
#ifdef RGB_MATRIX_ENABLE
+
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
@@ -116,33 +128,50 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
#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, 11, 12, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
- { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
- { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 81 }
- },
- {
+ { 0, __, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
+ { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
+ { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 81 }
+ },
+ {
// LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
+ {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
{0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
{4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
{6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
{9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
{2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
},
- {
+ {
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
- }
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
+ }
};
-#endif // RGB_MATRIX_ENABLE
+#endif
+
+#ifdef ENCODER_ENABLE
+
+void keyboard_post_init_kb(void) {
+ PCMSK0 |= (1 << 7);
+ PCICR |= (1 << PCIE0);
+ sei();
+
+ // allow user keymaps to do custom post_init
+ keyboard_post_init_user();
+}
+
+ISR(PCINT0_vect) {
+ encoder_inerrupt_read(0);
+}
+
+#endif
diff --git a/keyboards/keychron/q1v2/ansi_encoder/config.h b/keyboards/keychron/q1/ansi_atmega32u4_encoder/config.h
similarity index 72%
rename from keyboards/keychron/q1v2/ansi_encoder/config.h
rename to keyboards/keychron/q1/ansi_atmega32u4_encoder/config.h
index 0dce301c3cef..1fa21464e1a9 100644
--- a/keyboards/keychron/q1v2/ansi_encoder/config.h
+++ b/keyboards/keychron/q1/ansi_atmega32u4_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,9 +16,18 @@
#pragma once
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 0, 1 } }
+#define SCAN_COUNT_MAX 100
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1010000
+#define DRIVER_ADDR_2 0b1011111
+
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 37
+#define DRIVER_1_LED_TOTAL 59
+#define DRIVER_2_LED_TOTAL 23
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Encoder Configuration */
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/info.json b/keyboards/keychron/q1/ansi_atmega32u4_encoder/info.json
new file mode 100644
index 000000000000..905c1aa03be7
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4_encoder/info.json
@@ -0,0 +1,131 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0101",
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": false,
+ "nkro": true,
+ "rgb_matrix": true,
+ "lto": true
+ },
+ "rgb_matrix": {
+ "driver": "IS31FL3733"
+ },
+ "matrix_pins": {
+ "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
+ "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
+ },
+ "diode_direction": "ROW2COL",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "E6", "pin_b": "B7"}
+ ]
+ },
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,2], "x":1.25, "y":0},
+ {"matrix":[0,3], "x":2.25, "y":0},
+ {"matrix":[0,4], "x":3.25, "y":0},
+ {"matrix":[0,5], "x":4.25, "y":0},
+ {"matrix":[0,6], "x":5.5, "y":0},
+ {"matrix":[0,7], "x":6.5, "y":0},
+ {"matrix":[0,8], "x":7.5, "y":0},
+ {"matrix":[0,9], "x":8.5, "y":0},
+ {"matrix":[0,10], "x":9.75, "y":0},
+ {"matrix":[0,11], "x":10.75, "y":0},
+ {"matrix":[0,12], "x":11.75, "y":0},
+ {"matrix":[0,13], "x":12.75, "y":0},
+ {"matrix":[4,14], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,14], "x":15.25, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[3,12], "x":14.25, "y":4.5},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[4,12], "x":14.25, "y":5.5},
+ {"matrix":[5,14], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/keymap.c
new file mode 100644
index 000000000000..28e51863a19f
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/keymap.c
@@ -0,0 +1,72 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/rules.mk
similarity index 100%
rename from keyboards/keychron/q2/jis_encoder/keymaps/default/rules.mk
rename to keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/rules.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/keymap.c
new file mode 100644
index 000000000000..b976a4ebeb1a
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/keymap.c
@@ -0,0 +1,90 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/keyboards/keychron/q1/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/rules.mk
similarity index 62%
rename from keyboards/keychron/q1/ansi_encoder/keymaps/keychron/rules.mk
rename to keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/q1/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/keymap.c
new file mode 100644
index 000000000000..28e51863a19f
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/keymap.c
@@ -0,0 +1,72 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/ansi_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4_encoder/rules.mk
new file mode 100644
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_atmega32u4_encoder/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1/ansi_encoder/info.json b/keyboards/keychron/q1/ansi_encoder/info.json
deleted file mode 100644
index ef361257f054..000000000000
--- a/keyboards/keychron/q1/ansi_encoder/info.json
+++ /dev/null
@@ -1,120 +0,0 @@
-{
- "keyboard_name": "Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0101",
- "device_version": "1.0.0",
- "force_nkro": true
- },
- "rgb_matrix": {
- "driver": "is31fl3733"
- },
- "matrix_pins": {
- "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
- "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "E6", "pin_b": "B7"}
- ]
- },
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_ansi_82": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 2], "x": 1.25, "y": 0},
- {"matrix": [0, 3], "x": 2.25, "y": 0},
- {"matrix": [0, 4], "x": 3.25, "y": 0},
- {"matrix": [0, 5], "x": 4.25, "y": 0},
- {"matrix": [0, 6], "x": 5.5, "y": 0},
- {"matrix": [0, 7], "x": 6.5, "y": 0},
- {"matrix": [0, 8], "x": 7.5, "y": 0},
- {"matrix": [0, 9], "x": 8.5, "y": 0},
- {"matrix": [0, 10], "x": 9.75, "y": 0},
- {"matrix": [0, 11], "x": 10.75, "y": 0},
- {"matrix": [0, 12], "x": 11.75, "y": 0},
- {"matrix": [0, 13], "x": 12.75, "y": 0},
- {"matrix": [4, 14], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "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": [1, 4], "x": 4, "y": 1},
- {"matrix": [1, 5], "x": 5, "y": 1},
- {"matrix": [1, 6], "x": 6, "y": 1},
- {"matrix": [1, 7], "x": 7, "y": 1},
- {"matrix": [1, 8], "x": 8, "y": 1},
- {"matrix": [1, 9], "x": 9, "y": 1},
- {"matrix": [1, 10], "x": 10, "y": 1},
- {"matrix": [1, 11], "x": 11, "y": 1},
- {"matrix": [1, 12], "x": 12, "y": 1},
- {"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1},
-
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2},
- {"matrix": [2, 2], "x": 2.5, "y": 2},
- {"matrix": [2, 3], "x": 3.5, "y": 2},
- {"matrix": [2, 4], "x": 4.5, "y": 2},
- {"matrix": [2, 5], "x": 5.5, "y": 2},
- {"matrix": [2, 6], "x": 6.5, "y": 2},
- {"matrix": [2, 7], "x": 7.5, "y": 2},
- {"matrix": [2, 8], "x": 8.5, "y": 2},
- {"matrix": [2, 9], "x": 9.5, "y": 2},
- {"matrix": [2, 10], "x": 10.5, "y": 2},
- {"matrix": [2, 11], "x": 11.5, "y": 2},
- {"matrix": [2, 12], "x": 12.5, "y": 2},
- {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2},
-
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3},
- {"matrix": [3, 2], "x": 2.75, "y": 3},
- {"matrix": [3, 3], "x": 3.75, "y": 3},
- {"matrix": [3, 4], "x": 4.75, "y": 3},
- {"matrix": [3, 5], "x": 5.75, "y": 3},
- {"matrix": [3, 6], "x": 6.75, "y": 3},
- {"matrix": [3, 7], "x": 7.75, "y": 3},
- {"matrix": [3, 8], "x": 8.75, "y": 3},
- {"matrix": [3, 9], "x": 9.75, "y": 3},
- {"matrix": [3, 10], "x": 10.75, "y": 3},
- {"matrix": [3, 11], "x": 11.75, "y": 3},
- {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
- {"matrix": [3, 14], "x": 15.25, "y": 3},
-
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
- {"matrix": [4, 2], "x": 2.25, "y": 4},
- {"matrix": [4, 3], "x": 3.25, "y": 4},
- {"matrix": [4, 4], "x": 4.25, "y": 4},
- {"matrix": [4, 5], "x": 5.25, "y": 4},
- {"matrix": [4, 6], "x": 6.25, "y": 4},
- {"matrix": [4, 7], "x": 7.25, "y": 4},
- {"matrix": [4, 8], "x": 8.25, "y": 4},
- {"matrix": [4, 9], "x": 9.25, "y": 4},
- {"matrix": [4, 10], "x": 10.25, "y": 4},
- {"matrix": [4, 11], "x": 11.25, "y": 4},
- {"matrix": [4, 13], "x": 12.25, "y": 4, "w": 1.75},
- {"matrix": [3, 12], "x": 14.25, "y": 4.25},
-
- {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5},
- {"matrix": [5, 11], "x": 11, "y": 5},
- {"matrix": [5, 12], "x": 12, "y": 5},
- {"matrix": [5, 13], "x": 13.25, "y": 5.25},
- {"matrix": [4, 12], "x": 14.25, "y": 5.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1/ansi_encoder/keymaps/default/keymap.c
deleted file mode 100644
index a4febc93c75a..000000000000
--- a/keyboards/keychron/q1/ansi_encoder/keymaps/default/keymap.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright 2021 @ 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
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_ROPT, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_ansi_82(
- _______, KC_BRID, KC_BRIU, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
-};
-#endif
diff --git a/keyboards/keychron/q1/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/ansi_encoder/keymaps/default/rules.mk
deleted file mode 100644
index a40474b4d5c7..000000000000
--- a/keyboards/keychron/q1/ansi_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1/ansi_encoder/keymaps/keychron/keymap.c
deleted file mode 100644
index 88d0b49efd2a..000000000000
--- a/keyboards/keychron/q1/ansi_encoder/keymaps/keychron/keymap.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Copyright 2021 @ 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"
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_ansi_82(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
-};
-#endif
-
-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/q1/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1/ansi_encoder/keymaps/via/keymap.c
deleted file mode 100644
index 9372a1d8144c..000000000000
--- a/keyboards/keychron/q1/ansi_encoder/keymaps/via/keymap.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright 2021 @ 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
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_ansi_82(
- _______, KC_BRID, KC_BRIU, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
-};
-#endif
diff --git a/keyboards/keychron/q1/ansi_encoder/readme.md b/keyboards/keychron/q1/ansi_encoder/readme.md
deleted file mode 100644
index b89c9ad7ad66..000000000000
--- a/keyboards/keychron/q1/ansi_encoder/readme.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# The ANSI variant of the Keychron Q1
-- Enable EC11 rotary encoder
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume
-- Press top right key pushbutton to mute
diff --git a/keyboards/keychron/q1/ansi_encoder/rules.mk b/keyboards/keychron/q1/ansi_encoder/rules.mk
deleted file mode 100644
index d60167579e24..000000000000
--- a/keyboards/keychron/q1/ansi_encoder/rules.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # 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 N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
-LTO_ENABLE = yes
diff --git a/keyboards/keychron/q1v2/ansi/ansi.c b/keyboards/keychron/q1/ansi_stm32l432/ansi_stm32l432.c
similarity index 61%
rename from keyboards/keychron/q1v2/ansi/ansi.c
rename to keyboards/keychron/q1/ansi_stm32l432/ansi_stm32l432.c
index ea6c6278d1cf..4de45c931141 100644
--- a/keyboards/keychron/q1v2/ansi/ansi.c
+++ b/keyboards/keychron/q1/ansi_stm32l432/ansi_stm32l432.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,15 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -114,4 +123,36 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
+#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, 11, 12, 13, __, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, __, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, __, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, __, 57, __, 58 },
+ { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, __, 70, 71, __ },
+ { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 80, 81 }
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
+ {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
+ {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
+ {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
+ {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
+ {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
+ }
+};
+
#endif
diff --git a/keyboards/keychron/c1_pro/ansi/rgb/config.h b/keyboards/keychron/q1/ansi_stm32l432/config.h
similarity index 58%
rename from keyboards/keychron/c1_pro/ansi/rgb/config.h
rename to keyboards/keychron/q1/ansi_stm32l432/config.h
index a103d190d0e3..7e74bb9c00b3 100644
--- a/keyboards/keychron/c1_pro/ansi/rgb/config.h
+++ b/keyboards/keychron/q1/ansi_stm32l432/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,33 +16,36 @@
#pragma once
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
#define DRIVER_ADDR_2 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
+
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 49
-#define DRIVER_2_LED_TOTAL 39
+#define DRIVER_1_LED_TOTAL 45
+#define DRIVER_2_LED_TOTAL 37
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set led driver current */
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
- { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
-
-/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-/* Enable caps_lock, win os and mac os indicator */
-#define CAPS_MAC_WIN_LED_INDEX 63
+/* 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
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/ansi_stm32l432/info.json b/keyboards/keychron/q1/ansi_stm32l432/info.json
new file mode 100644
index 000000000000..35bdb5da018b
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432/info.json
@@ -0,0 +1,125 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0106",
+ "device_version": "2.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1v2/ansi/keymaps/via/keymap.c b/keyboards/keychron/q1/ansi_stm32l432/keymaps/default/keymap.c
similarity index 98%
rename from keyboards/keychron/q1v2/ansi/keymaps/via/keymap.c
rename to keyboards/keychron/q1/ansi_stm32l432/keymaps/default/keymap.c
index ad35cfb78e3f..42292f385123 100644
--- a/keyboards/keychron/q1v2/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/ansi_stm32l432/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q1v2/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/keymap.c
similarity index 96%
rename from keyboards/keychron/q1v2/ansi/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/keymap.c
index 3a6676196f8a..429ea2e24bc0 100644
--- a/keyboards/keychron/q1v2/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -64,11 +65,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..65df6fb72655
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1v2/ansi/keymaps/default/keymap.c b/keyboards/keychron/q1/ansi_stm32l432/keymaps/via/keymap.c
similarity index 98%
rename from keyboards/keychron/q1v2/ansi/keymaps/default/keymap.c
rename to keyboards/keychron/q1/ansi_stm32l432/keymaps/via/keymap.c
index 383a43cdb2a5..42292f385123 100644
--- a/keyboards/keychron/q1v2/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/ansi_stm32l432/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -22,7 +22,7 @@ enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN,
+ WIN_FN
};
#define KC_TASK LGUI(KC_TAB)
diff --git a/keyboards/keychron/q1/iso/keymaps/via/rules.mk b/keyboards/keychron/q1/ansi_stm32l432/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/iso/keymaps/via/rules.mk
rename to keyboards/keychron/q1/ansi_stm32l432/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/ansi_stm32l432/rules.mk b/keyboards/keychron/q1/ansi_stm32l432/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/ansi_stm32l432_encoder.c b/keyboards/keychron/q1/ansi_stm32l432_encoder/ansi_stm32l432_encoder.c
new file mode 100644
index 000000000000..2da073ba5b1c
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/ansi_stm32l432_encoder.c
@@ -0,0 +1,158 @@
+/* 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 .
+ */
+
+#include "quantum.h"
+
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
+#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, 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, 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, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_16, A_16, B_16},
+
+ {0, I_1, G_1, H_1},
+ {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, 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, I_10, G_10, H_10},
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_14, G_14, H_14},
+ {0, I_16, G_16, H_16},
+
+ {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, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_16, D_16, E_16},
+
+ {1, I_1, G_1, H_1},
+ {1, I_2, G_2, H_2},
+ {1, I_3, G_3, H_3},
+ {1, I_4, G_4, H_4},
+ {1, I_5, G_5, H_5},
+ {1, I_6, G_6, H_6},
+ {1, I_7, G_7, H_7},
+ {1, I_8, G_8, H_8},
+ {1, I_9, G_9, H_9},
+ {1, I_10, G_10, H_10},
+ {1, I_11, G_11, H_11},
+ {1, I_12, G_12, H_12},
+ {1, I_14, G_14, H_14},
+ {1, I_16, G_16, H_16},
+
+ {1, F_1, D_1, E_1},
+ {1, F_3, D_3, E_3},
+ {1, F_4, D_4, E_4},
+ {1, F_5, D_5, E_5},
+ {1, F_6, D_6, E_6},
+ {1, F_7, D_7, E_7},
+ {1, F_8, D_8, E_8},
+ {1, F_9, D_9, E_9},
+ {1, F_10, D_10, E_10},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+
+ {1, C_1, A_1, B_1},
+ {1, C_2, A_2, B_2},
+ {1, C_3, A_3, B_3},
+ {1, C_7, A_7, B_7},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_13, A_13, B_13},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+ {1, C_16, A_16, B_16},
+};
+
+#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, 11, 12, 13, __, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, __, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, __, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, __, 57, __, 58 },
+ { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, __, 70, 71, __ },
+ { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 80, 81 },
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
+ {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
+ {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
+ {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
+ {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
+ {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
+ }
+};
+
+#endif
diff --git a/keyboards/keychron/q1v2/config.h b/keyboards/keychron/q1/ansi_stm32l432_encoder/config.h
similarity index 70%
rename from keyboards/keychron/q1v2/config.h
rename to keyboards/keychron/q1/ansi_stm32l432_encoder/config.h
index e2d331c1ac19..13b8ab1cec45 100644
--- a/keyboards/keychron/q1v2/config.h
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron(https://www.keychron.com)
+/* 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
@@ -16,6 +16,10 @@
#pragma once
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
+
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -28,32 +32,23 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID \
- { \
- { 5, 4 } \
- }
-
-/* Disable DIP switch in matrix data */
-#define MATRIX_MASKED
-
-/* Disable RGB lighting when PC is in suspend */
-#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)
-
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-// 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
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 45
+#define DRIVER_2_LED_TOTAL 37
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Encoder Configuration */
+#define ENCODER_DEFAULT_POS 0x3
-#define HOLD_ON_OTHER_KEY_PRESS // Old default behavior of mod-taps
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/info.json b/keyboards/keychron/q1/ansi_stm32l432_encoder/info.json
new file mode 100644
index 000000000000..24e988646694
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/info.json
@@ -0,0 +1,130 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0107",
+ "device_version": "2.0.6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "A10", "pin_b": "A8"}
+ ]
+ },
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/keymap.c
similarity index 97%
rename from keyboards/keychron/q1v2/ansi_encoder/keymaps/default/keymap.c
rename to keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/keymap.c
index d4424125249e..b21f1aef75e2 100644
--- a/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/rules.mk
new file mode 100644
index 000000000000..ee325681483f
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/keymap.c
similarity index 95%
rename from keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/keymap.c
index 9de2b88de986..93c6eea89184 100644
--- a/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -61,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -73,11 +74,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..340c028b389c
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/keymap.c
similarity index 93%
rename from keyboards/keychron/q1v2/ansi_encoder/keymaps/via/keymap.c
rename to keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/keymap.c
index e299e1c96bee..041aa26ee23a 100644
--- a/keyboards/keychron/q1v2/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -65,10 +65,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
-};
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/rules.mk
new file mode 100644
index 000000000000..ee325681483f
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk b/keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q1/config.h b/keyboards/keychron/q1/config.h
index c78453dc5fbc..b421be6902d6 100644
--- a/keyboards/keychron/q1/config.h
+++ b/keyboards/keychron/q1/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron(https://www.keychron.com)
+/* 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
@@ -16,14 +16,6 @@
#pragma once
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1011111
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {0,1} }
-
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -62,9 +54,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -77,4 +73,12 @@
#define ENABLE_RGB_MATRIX_SPLASH
// #define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
diff --git a/keyboards/keychron/q1v2/halconf.h b/keyboards/keychron/q1/halconf.h
similarity index 92%
rename from keyboards/keychron/q1v2/halconf.h
rename to keyboards/keychron/q1/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q1v2/halconf.h
+++ b/keyboards/keychron/q1/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q1/iso/config.h b/keyboards/keychron/q1/iso/config.h
deleted file mode 100644
index cb7b05560ae3..000000000000
--- a/keyboards/keychron/q1/iso/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 2021 @ 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 59
-#define DRIVER_2_LED_TOTAL 24
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso/info.json b/keyboards/keychron/q1/iso/info.json
deleted file mode 100644
index 424ed021e102..000000000000
--- a/keyboards/keychron/q1/iso/info.json
+++ /dev/null
@@ -1,116 +0,0 @@
-{
- "keyboard_name": "Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0102",
- "device_version": "1.0.0",
- "force_nkro": true
- },
- "rgb_matrix": {
- "driver": "is31fl3733"
- },
- "matrix_pins": {
- "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
- "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
- },
- "diode_direction": "ROW2COL",
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_iso_83": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 2], "x": 1.25, "y": 0},
- {"matrix": [0, 3], "x": 2.25, "y": 0},
- {"matrix": [0, 4], "x": 3.25, "y": 0},
- {"matrix": [0, 5], "x": 4.25, "y": 0},
- {"matrix": [0, 6], "x": 5.5, "y": 0},
- {"matrix": [0, 7], "x": 6.5, "y": 0},
- {"matrix": [0, 8], "x": 7.5, "y": 0},
- {"matrix": [0, 9], "x": 8.5, "y": 0},
- {"matrix": [0, 10], "x": 9.75, "y": 0},
- {"matrix": [0, 11], "x": 10.75, "y": 0},
- {"matrix": [0, 12], "x": 11.75, "y": 0},
- {"matrix": [0, 13], "x": 12.75, "y": 0},
- {"matrix": [4, 14], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
-
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
-
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
-
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 14], "x": 15.25, "y": 3.25},
-
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [3, 12], "x": 14.25, "y": 4.5},
-
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [4, 12], "x": 14.25, "y": 5.5},
- {"matrix": [5, 14], "x": 15.25, "y": 5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/iso/keymaps/default/keymap.c b/keyboards/keychron/q1/iso/keymaps/default/keymap.c
deleted file mode 100644
index 080e2839c83f..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/default/keymap.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright 2021 @ 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
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_iso_83(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
- };
diff --git a/keyboards/keychron/q1/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q1/iso/keymaps/keychron/keymap.c
deleted file mode 100644
index d641f62c3f17..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/keychron/keymap.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Copyright 2021 @ 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"
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_iso_83(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-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/q1/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso/keymaps/keychron/rules.mk
deleted file mode 100644
index 495e8907b48c..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
diff --git a/keyboards/keychron/q1/iso/keymaps/kubahorak/README.md b/keyboards/keychron/q1/iso/keymaps/kubahorak/README.md
deleted file mode 100644
index 3cfae17543bf..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/kubahorak/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# kubahorak's Keychron Q1 keymap
-
-This ISO layout got heavily inspired by gtg465x's ANSI keymap (rev_0100).
-
-Features:
-- The rightest key column is: Ins, Home, PgUp, PgDn, which differs from the default.
-- RGB lighting turns off when the computer sleeps
-- Caps Lock and alpha keys turn red to indicate when Caps Lock is on
-- When the Fn layer is active, RGB lighting turns off for keys that are not assigned
-
-## Changelog
-
-### 2021-10-17 - 1.0.0
-
-- Initial release
-
diff --git a/keyboards/keychron/q1/iso/keymaps/kubahorak/config.h b/keyboards/keychron/q1/iso/keymaps/kubahorak/config.h
deleted file mode 100644
index 55dbb74d4a07..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/kubahorak/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2021 Jakub Horak (@kubahorak)
- *
- * 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 .
- */
-
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-/* from rev_0100/keymaps/gtg465x */
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
-# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
-# define FN_LAYER_TRANSPARENT_KEYS_OFF
-#endif
diff --git a/keyboards/keychron/q1/iso/keymaps/kubahorak/keymap.c b/keyboards/keychron/q1/iso/keymaps/kubahorak/keymap.c
deleted file mode 100644
index 479988dfa9f4..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/kubahorak/keymap.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright 2021 Jakub Horak (@kubahorak)
- *
- * 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 "keymap_user.h"
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix_user.h"
-#endif
-
-// clang-format off
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
- 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_PGUP,
- 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_NUHS, KC_ENT, KC_PGDN,
- KC_LSFT, KC_NUBS, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [1] = LAYOUT_iso_83(
- KC_TRNS, 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_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
- [2] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
- 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_PGUP,
- 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_NUHS, KC_ENT, KC_PGDN,
- KC_LSFT, KC_NUBS, 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [3] = LAYOUT_iso_83(
- KC_TRNS, KC_BRID, KC_BRIU, LGUI(KC_TAB), LGUI(KC_E), RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
-};
-
-// clang-format on
-
-void matrix_init_user(void) {
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init_user();
-#endif
-}
diff --git a/keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.c b/keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.c
deleted file mode 100644
index 638aa77eb0ab..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Copyright 2021 @ Grayson Carr
- *
- * 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 "rgb_matrix_user.h"
-#include "keymap_user.h"
-
-keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
-
-void rgb_matrix_init_user(void) {
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- for (uint8_t col = 0; col < MATRIX_COLS; col++) {
- uint8_t led_index = g_led_config.matrix_co[row][col];
- if (led_index != NO_LED) {
- led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
- }
- }
- }
-}
-
-bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
- uint8_t current_layer = get_highest_layer(layer_state);
- switch (current_layer) {
- case MAC_BASE:
- case WIN_BASE:
-#ifdef CAPS_LOCK_INDICATOR_COLOR
- if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
- }
-#endif
- break;
- case MAC_FN:
- case WIN_FN:
-#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
-#endif
- break;
- }
- return false;
-}
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
- for (uint8_t i = led_min; i < led_max; i++) {
- uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
- if ((*is_keycode)(keycode)) {
- rgb_matrix_set_color(i, red, green, blue);
- }
- }
-}
-
-bool is_caps_lock_indicator(uint16_t keycode) {
- switch (keycode) {
-#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
- case KC_A ... KC_Z:
-#endif
- case KC_CAPS:
- return true;
- default:
- return false;
- }
-}
-
-bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
diff --git a/keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.h b/keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.h
deleted file mode 100644
index dead4541676d..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2021 @ Grayson Carr
- *
- * 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 .
- */
-
-#pragma once
-
-void rgb_matrix_init_user(void);
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
-
-bool is_caps_lock_indicator(uint16_t keycode);
-bool is_transparent(uint16_t keycode);
diff --git a/keyboards/keychron/q1/iso/keymaps/kubahorak/rules.mk b/keyboards/keychron/q1/iso/keymaps/kubahorak/rules.mk
deleted file mode 100644
index af720e37ee7b..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/kubahorak/rules.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no
-
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
- SRC += rgb_matrix_user.c
-endif
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/config.h b/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/config.h
deleted file mode 100644
index bc9fe405c35c..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 .
- */
-
-#pragma once
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
-# define FN_LAYER_COLOR RGB_ORANGE
-#endif
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap.c b/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap.c
deleted file mode 100644
index f86a84e468dd..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 "keymap_user.h"
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix_user.h"
-#endif
-
-// clang-format off
-
-typedef union {
- uint32_t raw;
- struct {
- bool caps_lock_light_tab :1;
- bool caps_lock_light_alphas :1;
- bool fn_layer_transparent_keys_off :1;
- bool fn_layer_color_enable :1;
- };
-} user_config_t;
-
-user_config_t user_config;
-
-enum custom_keycodes {
- KC_LIGHT_TAB_TOGGLE = QK_KB_2, // TECH DEBT: Starts at QK_KB_2 to maintain ordering with VIA definitions. See #19884. Revert to QK_KB_0 when VIA catches up with QMK.
- KC_LIGHT_ALPHAS_TOGGLE,
- KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE,
- KC_FN_LAYER_COLOR_TOGGLE
-};
-
-#define KC_LTTOG KC_LIGHT_TAB_TOGGLE
-#define KC_LATOG KC_LIGHT_ALPHAS_TOGGLE
-#define KC_TKTOG KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE
-#define KC_FCTOG KC_FN_LAYER_COLOR_TOGGLE
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[MAC_FN] = LAYOUT_iso_83(
- KC_TRNS, 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_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
-[WIN_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[WIN_FN] = LAYOUT_iso_83(
- KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-
-};
-
-// clang-format on
-
-void matrix_init_user(void) {
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init_user();
-#endif
-}
-
-void keyboard_post_init_user(void) {
- user_config.raw = eeconfig_read_user();
-}
-
-void eeconfig_init_user(void) {
- user_config.raw = 0;
- user_config.caps_lock_light_tab = false;
- user_config.caps_lock_light_alphas = false;
- user_config.fn_layer_transparent_keys_off = true;
- user_config.fn_layer_color_enable = false;
- eeconfig_update_user(user_config.raw);
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_LIGHT_TAB_TOGGLE:
- if (record->event.pressed) {
- user_config.caps_lock_light_tab ^= 1; // bitwise xor to toggle status bit
- eeconfig_update_user(user_config.raw);
- }
- return false; // Skip all further processing of this key
- case KC_LIGHT_ALPHAS_TOGGLE:
- if (record->event.pressed) {
- user_config.caps_lock_light_alphas ^= 1;
- eeconfig_update_user(user_config.raw);
- }
- return false; // Skip all further processing of this key
- case KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE:
- if (record->event.pressed) {
- user_config.fn_layer_transparent_keys_off ^= 1;
- eeconfig_update_user(user_config.raw);
- }
- return false; // Skip all further processing of this key
- case KC_FN_LAYER_COLOR_TOGGLE:
- if (record->event.pressed) {
- user_config.fn_layer_color_enable ^= 1;
- eeconfig_update_user(user_config.raw);
- }
- return false; // Skip all further processing of this key
- default:
- return true; // Process all other keycodes normally
- }
-}
-
-bool get_caps_lock_light_tab(void) {
- return user_config.caps_lock_light_tab;
-}
-
-bool get_caps_lock_light_alphas(void) {
- return user_config.caps_lock_light_alphas;
-}
-
-bool get_fn_layer_transparent_keys_off(void) {
- return user_config.fn_layer_transparent_keys_off;
-}
-
-bool get_fn_layer_color_enable(void) {
- return user_config.fn_layer_color_enable;
-}
diff --git a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap_user.h b/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap_user.h
deleted file mode 100644
index 87b1baf47f23..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap_user.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 .
- */
-
-#pragma once
-
-// clang-format off
-
-enum layers {
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-// clang-format on
-
-bool get_caps_lock_light_tab(void);
-bool get_caps_lock_light_alphas(void);
-bool get_fn_layer_transparent_keys_off(void);
-bool get_fn_layer_color_enable(void);
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/readme.md b/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/readme.md
deleted file mode 100644
index 25d835b1c021..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/readme.md
+++ /dev/null
@@ -1,54 +0,0 @@
-## mkillewald's Keychron Q1 keymap (ISO rev_0102) v1.0.4
-
-This keymap builds on the keymap by Grayson Carr (gtg465x) but adds a couple options.
-
-## Features:
-- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences
-- RGB lighting turns off when the computer sleeps
-- Caps Lock RGB indicator
- - the Caps Lock key will light when Caps Lock is enabled with the following options:
- - #define CAPS_LOCK_INDICATOR_COLOR [color] in config.h to set the backlight color used for the indicator when Caps Lock is enabled (default: red)
- - Fn+Z will toggle lighting the TAB key when Caps Lock is enabled. This is useful with non backlit keycaps/legends. (default: off)
- - Fn+X will toggle lighting all the alpha keys when Caps Lock is enabled. (default: off)
-
-- Dynamic Fn layer RGB indicator
- - When the Fn key is held down, any keys defined on the Fn layer in this firmware or in VIA will be highlighted with the following options:
- - #define FN_LAYER_COLOR [color] in config.h to set a static color for defined keys (default: orange)
- - Fn+C will toggle turning off RGB for keys with no definition (default: RGB off)
- - Fn+V will toggle lighting the defined Fn layer keys with the static color set with FN_LAYER_COLOR (default: static color off)
-
-- All custom keycodes can be moved to different keys in VIA by using the ANY key with the following keycodes:
- - USER(0) (default: F3) macOS Mission Control
- - USER(1) (default: F4) macOS Launchpad
- - USER(2) (default: Fn+Z) Caps Lock light Tab toggle
- - USER(3) (default: Fn+X) Caps Lock light alphas toggle
- - USER(4) (default: Fn+C) Fn layer non-defined keys RGB toggle
- - USER(5) (default: Fn+V) Fn layer defined keys static color toggle
-
-RGB must be toggled on for all indicators to function. If you do not want an RGB mode active but still want the indicators, toggle RGB on and turn the brightness all the way off. The indicators will remain at full brightness.
-
-Please make sure to save any customizations you have made in VIA to a .json file before flashing the firmware. Sometimes it has been necessary to re-apply those changes in VIA after flashing the firmware. If that is the case, you will most likely need to manually add the USER(0) through USER(5) custom keycodes after loading your customizations from the saved .json file. Then re-save a new .json file which will have your previous customizations and the custom keycodes for future use as needed.
-
-#### USE AT YOUR OWN RISK
-
-## Changelog:
-
-v1.0.4 October 9, 2021
-- Caps Lock and Fn layer toggles are now stored in eeprom so settings will remain when Q1 is unplugged
-
-v1.0.3 October 8, 2021
-- now using keycode toggles instead of preprocessor directives to set the various Caps Lock and Fn Layer RGB lighting options. This allows for setting the options from user space without having to recompile.
-
-v1.0.2 October 7, 2021
-- adapted Grayson Carr's (gtg465x) Caps Lock alphas and dynamic Fn layer RGB routines
-- added CAPS_LOCK_INDICATOR_LIGHT_TAB config option to enable/disable lighting Tab with Caps Lock indicator
-- added FN_LAYER_COLOR config option to set FN layer static color
-
-v1.0.1 October 7, 2021
-- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so thay can be labeled properly in VIA (adopted change from gtg465x)
-
-v1.0.0 September 30, 2021
-- Initial release built upon keymap by Grayson Carr (gtg465x)
-- defined Mission Control (F3) and Launchpad (F4) keycodes for macOs
-- RGB backlight turns off when computer sleeps
-- added Caps Lock indicator lighting both the Caps Lock and Tab LEDs for better effect on non-backlit keycaps
diff --git a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c b/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c
deleted file mode 100644
index c6fa5f1f155a..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 "rgb_matrix_user.h"
-#include "keymap_user.h"
-
-keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
-
-void rgb_matrix_init_user(void) {
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- for (uint8_t col = 0; col < MATRIX_COLS; col++) {
- uint8_t led_index = g_led_config.matrix_co[row][col];
- if (led_index != NO_LED) {
- led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
- }
- }
- }
-}
-
-bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
- uint8_t current_layer = get_highest_layer(layer_state);
- switch (current_layer) {
- case MAC_BASE:
- case WIN_BASE:
-#ifdef CAPS_LOCK_INDICATOR_COLOR
- if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
- }
-#endif
- break;
- case MAC_FN:
- case WIN_FN:
-#ifdef FN_LAYER_COLOR
- if (get_fn_layer_color_enable()) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, FN_LAYER_COLOR);
- }
-#endif
- if (get_fn_layer_transparent_keys_off()) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
- }
- break;
- }
- return false;
-}
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
- for (uint8_t i = led_min; i < led_max; i++) {
- uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
- if ((*is_keycode)(keycode)) {
- rgb_matrix_set_color(i, red, green, blue);
- }
- }
-}
-
-bool is_caps_lock_indicator(uint16_t keycode) {
- bool indicator = keycode == KC_CAPS;
-
- if (get_caps_lock_light_tab()) {
- indicator = keycode == KC_TAB || keycode == KC_CAPS;
- }
-
- if (get_caps_lock_light_alphas()) {
- return (KC_A <= keycode && keycode <= KC_Z) || indicator;
- } else {
- return indicator;
- }
-}
-
-bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
-bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; }
diff --git a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h b/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h
deleted file mode 100644
index 1fb79c0b2a14..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2021 @ Mike Killewald
- *
- * 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 .
- */
-
-#pragma once
-
-void rgb_matrix_init_user(void);
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
-
-bool is_caps_lock_indicator(uint16_t keycode);
-bool is_transparent(uint16_t keycode);
-bool is_not_transparent(uint16_t keycode);
-
diff --git a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rules.mk b/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rules.mk
deleted file mode 100644
index af720e37ee7b..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rules.mk
+++ /dev/null
@@ -1,6 +0,0 @@
-VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no
-
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
- SRC += rgb_matrix_user.c
-endif
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso/keymaps/via/keymap.c b/keyboards/keychron/q1/iso/keymaps/via/keymap.c
deleted file mode 100644
index 4d9f158e1ef7..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/via/keymap.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright 2021 @ 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
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_iso_83(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
diff --git a/keyboards/keychron/q1/iso/keymaps/victorsavu3/config.h b/keyboards/keychron/q1/iso/keymaps/victorsavu3/config.h
deleted file mode 100644
index 02f08db4a7ff..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/victorsavu3/config.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright 2021 @ Victor-Gabriel Savu
- *
- * 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 .
- */
-
-#pragma once
-
-// disable all default effects
-#undef ENABLE_RGB_MATRIX_BREATHING
-#undef ENABLE_RGB_MATRIX_CYCLE_ALL
-#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#undef ENABLE_RGB_MATRIX_DUAL_BEACON
-#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
-#undef ENABLE_RGB_MATRIX_RAINDROPS
-#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#undef ENABLE_RGB_MATRIX_SPLASH
-#undef ENABLE_RGB_MATRIX_MULTISPLASH
-#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
-#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-// Allow fancy RGB
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-
-// Simple RGB
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-
-// Reactive RGB
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-
-#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
-
-#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
-
-// Unicode for Linux
-#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
-#define UNICODE_KEY_LNX LCTL(LSFT(KC_U))
-
-// Leader config
-#define LEADER_PER_KEY_TIMING
-#define LEADER_TIMEOUT 500
diff --git a/keyboards/keychron/q1/iso/keymaps/victorsavu3/keymap.c b/keyboards/keychron/q1/iso/keymaps/victorsavu3/keymap.c
deleted file mode 100644
index 5256c97dca7b..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/victorsavu3/keymap.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/* Copyright 2021 @ Victor-Gabriel Savu
- *
- * 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
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-enum unicode_names {
- GRIN,
- SAD,
-};
-
-const uint32_t unicode_map[] PROGMEM = {
- [GRIN] = 0x1F600, // 😀
- [SAD] = 0x1F61E, // 😞
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[MAC_FN] = LAYOUT_iso_83(
- KC_TRNS, 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_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
-[WIN_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, UM(SAD),
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, UM(GRIN),
- 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_PGUP,
- QK_LEAD, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
- KC_LSFT, KC_NUBS, 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
-[WIN_FN] = LAYOUT_iso_83(
- KC_TRNS, KC_BRID, KC_BRIU, KC_CALC, KC_FLXP, RGB_VAD, RGB_VAI, KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END)
-
-};
-
-static bool wiggle_mouse;
-static uint16_t wiggle_timer;
-static uint16_t next_wiggle;
-
-void leader_end_user(void) {
- if (leader_sequence_one_key(QK_LEAD)) {
- tap_code(KC_CAPS);
- }
-
- if (leader_sequence_four_keys(KC_I, KC_D, KC_L, KC_E)) {
- wiggle_mouse = !wiggle_mouse;
- wiggle_timer = timer_read();
- }
-
- if (leader_sequence_two_keys(KC_O, KC_K)) {
- send_unicode_string("👍");
- }
-
- if (leader_sequence_three_keys(KC_S, KC_A, KC_D)) {
- send_unicode_string("😞");
- }
-
- if (leader_sequence_five_keys(KC_C, KC_H, KC_E, KC_C, KC_K)) {
- send_unicode_string("✅");
- }
-
- if (leader_sequence_five_keys(KC_C, KC_R, KC_O, KC_S, KC_S)) {
- send_unicode_string("❎");
- }
-
- if (leader_sequence_five_keys(KC_T, KC_H, KC_A, KC_N, KC_K)) {
- send_unicode_string("🙏");
- }
-
- if (leader_sequence_five_keys(KC_S, KC_M, KC_I, KC_L, KC_E)) {
- send_unicode_string("😊");
- }
-
- if (leader_sequence_five_keys(KC_P, KC_A, KC_R, KC_T, KC_Y)) {
- send_unicode_string("🎉");
- }
-
- if (leader_sequence_four_keys(KC_E, KC_Y, KC_E, KC_S)) {
- send_unicode_string("(ಠ_ಠ)");
- }
-
- if (leader_sequence_five_keys(KC_M, KC_A, KC_G, KC_I, KC_C)) {
- send_unicode_string("(ಠ_ಠ) 🪄 ⠁⭒*.✫.*⭒⠁");
- }
-
- if (leader_sequence_five_keys(KC_T, KC_A, KC_B, KC_L, KC_E)) {
- send_unicode_string("(ノಠ痊ಠ)ノ彡┻━┻");
- }
-
- if (leader_sequence_five_keys(KC_S, KC_H, KC_R, KC_U, KC_G)) {
- send_unicode_string("¯\\_(ツ)_/¯");
- }
-}
-
-void matrix_scan_user(void) {
- if (wiggle_mouse && timer_elapsed(wiggle_timer) > next_wiggle) {
- wiggle_timer = timer_read();
-
- uint8_t rval = TCNT0 + TCNT1 + TCNT3 + TCNT4;
- next_wiggle = rval % 1000;
-
- if (rval & 1) tap_code(KC_MS_UP);
- if (rval & 2) tap_code(KC_MS_DOWN);
- if (rval & 4) tap_code(KC_MS_LEFT);
- if (rval & 8) tap_code(KC_MS_RIGHT);
- }
-}
diff --git a/keyboards/keychron/q1/iso/keymaps/victorsavu3/readme.md b/keyboards/keychron/q1/iso/keymaps/victorsavu3/readme.md
deleted file mode 100644
index c96130816e91..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/victorsavu3/readme.md
+++ /dev/null
@@ -1,4 +0,0 @@
-# victorsavu3's Keychron Q1 keymap (ISO)
-
-Very similar to the default layout. Enables reactive and framebuffer RGB, but disables most effects enabled by keychron.
-Uses Caps Lock as a leader key for emojis and to enable a random mouse wiggler to prevent the system from going to sleep.
diff --git a/keyboards/keychron/q1/iso/keymaps/victorsavu3/rules.mk b/keyboards/keychron/q1/iso/keymaps/victorsavu3/rules.mk
deleted file mode 100644
index 853c414ec7e3..000000000000
--- a/keyboards/keychron/q1/iso/keymaps/victorsavu3/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-MOUSEKEY_ENABLE = yes
-UNICODEMAP_ENABLE = yes
-LEADER_ENABLE = yes
diff --git a/keyboards/keychron/q1/iso/readme.md b/keyboards/keychron/q1/iso/readme.md
deleted file mode 100644
index 777ce0477349..000000000000
--- a/keyboards/keychron/q1/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the Keychron Q1
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso/rules.mk b/keyboards/keychron/q1/iso/rules.mk
deleted file mode 100644
index 0379fdb94c47..000000000000
--- a/keyboards/keychron/q1/iso/rules.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # 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 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 = yes
-RGB_MATRIX_ENABLE = yes
-LTO_ENABLE = yes
diff --git a/keyboards/keychron/q1/iso_encoder/config.h b/keyboards/keychron/q1/iso_atmega32u4/config.h
similarity index 89%
rename from keyboards/keychron/q1/iso_encoder/config.h
rename to keyboards/keychron/q1/iso_atmega32u4/config.h
index c1e84e44d351..805e63cc2f68 100644
--- a/keyboards/keychron/q1/iso_encoder/config.h
+++ b/keyboards/keychron/q1/iso_atmega32u4/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,7 +17,8 @@
#pragma once
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {0,1} }
+#define DIP_SWITCH_MATRIX_GRID { { 0, 1 } }
+#define SCAN_COUNT_MAX 100
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
diff --git a/keyboards/keychron/q1/iso_atmega32u4/info.json b/keyboards/keychron/q1/iso_atmega32u4/info.json
new file mode 100644
index 000000000000..7c87b4997fea
--- /dev/null
+++ b/keyboards/keychron/q1/iso_atmega32u4/info.json
@@ -0,0 +1,127 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0102",
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "lto": true
+ },
+ "rgb_matrix": {
+ "driver": "IS31FL3733"
+ },
+ "matrix_pins": {
+ "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
+ "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 2], "x":1.25, "y":0},
+ {"matrix":[0, 3], "x":2.25, "y":0},
+ {"matrix":[0, 4], "x":3.25, "y":0},
+ {"matrix":[0, 5], "x":4.25, "y":0},
+ {"matrix":[0, 6], "x":5.5, "y":0},
+ {"matrix":[0, 7], "x":6.5, "y":0},
+ {"matrix":[0, 8], "x":7.5, "y":0},
+ {"matrix":[0, 9], "x":8.5, "y":0},
+ {"matrix":[0,10], "x":9.75, "y":0},
+ {"matrix":[0,11], "x":10.75, "y":0},
+ {"matrix":[0,12], "x":11.75, "y":0},
+ {"matrix":[0,13], "x":12.75, "y":0},
+ {"matrix":[4,14], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,14], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[3,12], "x":14.25, "y":4.5},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[4,12], "x":14.25, "y":5.5},
+ {"matrix":[5,14], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1/iso_encoder/iso_encoder.c b/keyboards/keychron/q1/iso_atmega32u4/iso_atmega32u4.c
similarity index 92%
rename from keyboards/keychron/q1/iso_encoder/iso_encoder.c
rename to keyboards/keychron/q1/iso_atmega32u4/iso_atmega32u4.c
index c6b091fff173..63d15f921806 100644
--- a/keyboards/keychron/q1/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q1/iso_atmega32u4/iso_atmega32u4.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,15 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b111111111111101,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+};
+
#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
@@ -139,12 +148,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q1/iso_atmega32u4/keymaps/default/keymap.c b/keyboards/keychron/q1/iso_atmega32u4/keymaps/default/keymap.c
new file mode 100644
index 000000000000..1db27f15969a
--- /dev/null
+++ b/keyboards/keychron/q1/iso_atmega32u4/keymaps/default/keymap.c
@@ -0,0 +1,63 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_iso_83(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/keychron/q1/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/keymap.c
similarity index 88%
rename from keyboards/keychron/q1/iso_encoder/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/keymap.c
index b007e56fbae0..51792a4da48f 100644
--- a/keyboards/keychron/q1/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,7 +29,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
@@ -36,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,15 +45,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
+ KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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,
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -60,19 +61,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
-};
-#endif
+// clang-fotmat on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
-}
\ No newline at end of file
+}
diff --git a/keyboards/keychron/c2_pro/ansi/white/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/rules.mk
similarity index 53%
rename from keyboards/keychron/c2_pro/ansi/white/keymaps/keychron/rules.mk
rename to keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/c2_pro/ansi/white/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/iso_atmega32u4/keymaps/via/keymap.c b/keyboards/keychron/q1/iso_atmega32u4/keymaps/via/keymap.c
new file mode 100644
index 000000000000..1db27f15969a
--- /dev/null
+++ b/keyboards/keychron/q1/iso_atmega32u4/keymaps/via/keymap.c
@@ -0,0 +1,63 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_iso_83(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/keychron/q1v2/ansi/keymaps/via/rules.mk b/keyboards/keychron/q1/iso_atmega32u4/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1v2/ansi/keymaps/via/rules.mk
rename to keyboards/keychron/q1/iso_atmega32u4/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/iso_atmega32u4/rules.mk b/keyboards/keychron/q1/iso_atmega32u4/rules.mk
new file mode 100644
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1/iso_atmega32u4/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1v2/iso_encoder/config.h b/keyboards/keychron/q1/iso_atmega32u4_encoder/config.h
similarity index 72%
rename from keyboards/keychron/q1v2/iso_encoder/config.h
rename to keyboards/keychron/q1/iso_atmega32u4_encoder/config.h
index ab9be499d98a..32d644366469 100644
--- a/keyboards/keychron/q1v2/iso_encoder/config.h
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,9 +16,18 @@
#pragma once
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 0, 1 } }
+#define SCAN_COUNT_MAX 100
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1010000
+#define DRIVER_ADDR_2 0b1011111
+
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 38
+#define DRIVER_1_LED_TOTAL 59
+#define DRIVER_2_LED_TOTAL 24
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Encoder Configuration */
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/info.json b/keyboards/keychron/q1/iso_atmega32u4_encoder/info.json
new file mode 100644
index 000000000000..6d4a103c9666
--- /dev/null
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/info.json
@@ -0,0 +1,132 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0103",
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": false,
+ "nkro": true,
+ "rgb_matrix": true,
+ "lto": true
+ },
+ "rgb_matrix": {
+ "driver": "IS31FL3733"
+ },
+ "matrix_pins": {
+ "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
+ "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
+ },
+ "diode_direction": "ROW2COL",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "E6", "pin_b": "B7"}
+ ]
+ },
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 2], "x":1.25, "y":0},
+ {"matrix":[0, 3], "x":2.25, "y":0},
+ {"matrix":[0, 4], "x":3.25, "y":0},
+ {"matrix":[0, 5], "x":4.25, "y":0},
+ {"matrix":[0, 6], "x":5.5, "y":0},
+ {"matrix":[0, 7], "x":6.5, "y":0},
+ {"matrix":[0, 8], "x":7.5, "y":0},
+ {"matrix":[0, 9], "x":8.5, "y":0},
+ {"matrix":[0,10], "x":9.75, "y":0},
+ {"matrix":[0,11], "x":10.75, "y":0},
+ {"matrix":[0,12], "x":11.75, "y":0},
+ {"matrix":[0,13], "x":12.75, "y":0},
+ {"matrix":[4,14], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,14], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[3,12], "x":14.25, "y":4.5},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[4,12], "x":14.25, "y":5.5},
+ {"matrix":[5,14], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1/iso/iso.c b/keyboards/keychron/q1/iso_atmega32u4_encoder/iso_atmega32u4_encoder.c
similarity index 75%
rename from keyboards/keychron/q1/iso/iso.c
rename to keyboards/keychron/q1/iso_atmega32u4_encoder/iso_atmega32u4_encoder.c
index 619d89dffc93..c0095fd1f254 100644
--- a/keyboards/keychron/q1/iso/iso.c
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/iso_atmega32u4_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,17 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b111111111111101,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+ 0b111111111111111,
+};
+
#ifdef RGB_MATRIX_ENABLE
+
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
@@ -83,8 +93,8 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_10, J_10, K_10},
{0, L_11, J_11, K_11},
{0, L_12, J_12, K_12},
- {0, L_14, J_14, K_14},
- {0, I_14, G_14, H_14},
+ {0, L_14, J_14, K_14},
+ {0, I_14, G_14, H_14},
{0, L_16, J_16, K_16},
{1, C_1, A_1, B_1},
@@ -117,33 +127,50 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
#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, 11, 12, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 72, 56, 58 },
- { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 81, 71, 13 },
- { 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 82 }
- },
- {
+ {
+ // Key Matrix to LED Index
+ { 0, __, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, 43 },
+ { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 72, 56, 58 },
+ { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 81, 71, 13 },
+ { 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 82 }
+ },
+ {
// LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
+ {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
{0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
{4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {224,26},
{6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {187,38}, {203,32}, {224,38},
{2,49}, {18,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
{2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
+ },
+ {
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
- }
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
+ }
};
-#endif // RGB_MATRIX_ENABLE
+#endif
+
+#ifdef ENCODER_ENABLE
+
+void keyboard_post_init_kb(void) {
+ PCMSK0 |= (1 << 7);
+ PCICR |= (1 << PCIE0);
+ sei();
+
+ // allow user keymaps to do custom post_init
+ keyboard_post_init_user();
+}
+
+ISR(PCINT0_vect) {
+ encoder_inerrupt_read(0);
+}
+
+#endif
diff --git a/keyboards/keychron/q1/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/keymap.c
similarity index 85%
rename from keyboards/keychron/q1/iso_encoder/keymaps/default/keymap.c
rename to keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/keymap.c
index 237d9a3f1e5d..ab0bc57e0b7a 100644
--- a/keyboards/keychron/q1/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
+// clang-format off
enum layers{
MAC_BASE,
@@ -24,9 +25,12 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
@@ -34,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD , KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -47,10 +51,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -59,10 +63,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
};
-#endif
\ No newline at end of file
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/rules.mk
new file mode 100644
index 000000000000..ee325681483f
--- /dev/null
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/keymap.c
similarity index 82%
rename from keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/keymap.c
index 3b1e8b68ece1..50c052f75685 100644
--- a/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,19 +16,20 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
@@ -36,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
+ KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
@@ -52,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -75,11 +76,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q1/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/rules.mk
similarity index 62%
rename from keyboards/keychron/q1/iso_encoder/keymaps/keychron/rules.mk
rename to keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/rules.mk
index 2d17902f9817..88c27a468a8b 100644
--- a/keyboards/keychron/q1/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
\ No newline at end of file
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/keymap.c
similarity index 84%
rename from keyboards/keychron/q1/iso_encoder/keymaps/via/keymap.c
rename to keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/keymap.c
index 47f04d8a29d4..ab0bc57e0b7a 100644
--- a/keyboards/keychron/q1/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -25,9 +25,12 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
@@ -35,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD , KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -48,10 +51,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -60,10 +63,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
};
-#endif
\ No newline at end of file
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1v2/ansi_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/rules.mk b/keyboards/keychron/q1/iso_atmega32u4_encoder/rules.mk
new file mode 100644
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1/iso_atmega32u4_encoder/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1/iso_encoder/info.json b/keyboards/keychron/q1/iso_encoder/info.json
deleted file mode 100644
index 250cd1ffb436..000000000000
--- a/keyboards/keychron/q1/iso_encoder/info.json
+++ /dev/null
@@ -1,121 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0103",
- "device_version": "1.0.2",
- "force_nkro": true
- },
- "rgb_matrix": {
- "driver": "is31fl3733"
- },
- "matrix_pins": {
- "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
- "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "E6", "pin_b": "B7"}
- ]
- },
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_iso_83": {
- "layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 2], "x": 1.25, "y": 0},
- {"matrix": [0, 3], "x": 2.25, "y": 0},
- {"matrix": [0, 4], "x": 3.25, "y": 0},
- {"matrix": [0, 5], "x": 4.25, "y": 0},
- {"matrix": [0, 6], "x": 5.5, "y": 0},
- {"matrix": [0, 7], "x": 6.5, "y": 0},
- {"matrix": [0, 8], "x": 7.5, "y": 0},
- {"matrix": [0, 9], "x": 8.5, "y": 0},
- {"matrix": [0, 10], "x": 9.75, "y": 0},
- {"matrix": [0, 11], "x": 10.75, "y": 0},
- {"matrix": [0, 12], "x": 11.75, "y": 0},
- {"matrix": [0, 13], "x": 12.75, "y": 0},
- {"matrix": [4, 14], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
-
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
-
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
-
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 14], "x": 15.25, "y": 3.25},
-
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [3, 12], "x": 14.25, "y": 4.5},
-
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [4, 12], "x": 14.25, "y": 5.5},
- {"matrix": [5, 14], "x": 15.25, "y": 5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/iso_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/iso_encoder/keymaps/default/rules.mk
deleted file mode 100644
index a40474b4d5c7..000000000000
--- a/keyboards/keychron/q1/iso_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1/iso_encoder/keymaps/via/rules.mk
deleted file mode 100644
index 4253f570f0bb..000000000000
--- a/keyboards/keychron/q1/iso_encoder/keymaps/via/rules.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso_encoder/readme.md b/keyboards/keychron/q1/iso_encoder/readme.md
deleted file mode 100644
index 66db24a1975f..000000000000
--- a/keyboards/keychron/q1/iso_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ISO variant of the Keychron Q1
-
-- Enables EC11 rotary encoder.
-- Turn clockwise to increase volume and turn counter-clockwise to decrease volume.
-- Press top right button to mute.
diff --git a/keyboards/keychron/q1/iso_encoder/rules.mk b/keyboards/keychron/q1/iso_encoder/rules.mk
deleted file mode 100644
index d994ac1fad70..000000000000
--- a/keyboards/keychron/q1/iso_encoder/rules.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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 N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
-RAW_ENABLE = yes
-LTO_ENABLE = yes
-
diff --git a/keyboards/keychron/q1/iso_stm32l432/config.h b/keyboards/keychron/q1/iso_stm32l432/config.h
new file mode 100644
index 000000000000..b2840fd96754
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432/config.h
@@ -0,0 +1,51 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1110111
+#define DRIVER_ADDR_2 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
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 45
+#define DRIVER_2_LED_TOTAL 38
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/q1/iso_stm32l432/info.json b/keyboards/keychron/q1/iso_stm32l432/info.json
new file mode 100644
index 000000000000..20c589210a7f
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432/info.json
@@ -0,0 +1,126 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0108",
+ "device_version": "2.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1v2/iso/iso.c b/keyboards/keychron/q1/iso_stm32l432/iso_stm32l432.c
similarity index 61%
rename from keyboards/keychron/q1v2/iso/iso.c
rename to keyboards/keychron/q1/iso_stm32l432/iso_stm32l432.c
index eae39c8d61d0..6a28e3fa0a5b 100644
--- a/keyboards/keychron/q1v2/iso/iso.c
+++ b/keyboards/keychron/q1/iso_stm32l432/iso_stm32l432.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,15 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -115,4 +124,36 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
+#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, 11, 12, 13, __, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, __, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, __, 43 },
+ { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, __, 56, __, 58 },
+ { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, __, 71, 72, __ },
+ { 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 81, 82 }
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
+ {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
+ {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {224,26},
+ {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {187,38}, {203,32}, {224,38},
+ {2,49}, {18,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
+ {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
+ }
+};
+
#endif
diff --git a/keyboards/keychron/q1v2/iso/keymaps/via/keymap.c b/keyboards/keychron/q1/iso_stm32l432/keymaps/default/keymap.c
similarity index 98%
rename from keyboards/keychron/q1v2/iso/keymaps/via/keymap.c
rename to keyboards/keychron/q1/iso_stm32l432/keymaps/default/keymap.c
index f97a595ea62f..f37a37658ea5 100644
--- a/keyboards/keychron/q1v2/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/iso_stm32l432/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q1v2/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/keymap.c
similarity index 96%
rename from keyboards/keychron/q1v2/iso/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/keymap.c
index 30e1ef18bb48..45c2c74acac6 100644
--- a/keyboards/keychron/q1v2/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -64,11 +65,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..65df6fb72655
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1v2/iso/keymaps/default/keymap.c b/keyboards/keychron/q1/iso_stm32l432/keymaps/via/keymap.c
similarity index 98%
rename from keyboards/keychron/q1v2/iso/keymaps/default/keymap.c
rename to keyboards/keychron/q1/iso_stm32l432/keymaps/via/keymap.c
index f97a595ea62f..f37a37658ea5 100644
--- a/keyboards/keychron/q1v2/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/iso_stm32l432/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q1v2/iso/keymaps/via/rules.mk b/keyboards/keychron/q1/iso_stm32l432/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1v2/iso/keymaps/via/rules.mk
rename to keyboards/keychron/q1/iso_stm32l432/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/iso_stm32l432/rules.mk b/keyboards/keychron/q1/iso_stm32l432/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/config.h b/keyboards/keychron/q1/iso_stm32l432_encoder/config.h
new file mode 100644
index 000000000000..9207c9c09598
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/config.h
@@ -0,0 +1,54 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1110111
+#define DRIVER_ADDR_2 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
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 45
+#define DRIVER_2_LED_TOTAL 38
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
+
+/* Encoder Configuration */
+#define ENCODER_DEFAULT_POS 0x3
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/info.json b/keyboards/keychron/q1/iso_stm32l432_encoder/info.json
new file mode 100644
index 000000000000..032de13df9a7
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/info.json
@@ -0,0 +1,131 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0109",
+ "device_version": "2.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "A10", "pin_b": "A8"}
+ ]
+ },
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1v2/iso_encoder/iso_encoder.c b/keyboards/keychron/q1/iso_stm32l432_encoder/iso_stm32l432_encoder.c
similarity index 61%
rename from keyboards/keychron/q1v2/iso_encoder/iso_encoder.c
rename to keyboards/keychron/q1/iso_stm32l432_encoder/iso_stm32l432_encoder.c
index eae39c8d61d0..6a28e3fa0a5b 100644
--- a/keyboards/keychron/q1v2/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/iso_stm32l432_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,15 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -115,4 +124,36 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
+#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, 11, 12, 13, __, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, __, 29 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, __, 43 },
+ { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, __, 56, __, 58 },
+ { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, __, 71, 72, __ },
+ { 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 81, 82 }
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
+ {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
+ {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {224,26},
+ {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {187,38}, {203,32}, {224,38},
+ {2,49}, {18,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
+ {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
+ }
+};
+
#endif
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/keymap.c
new file mode 100644
index 000000000000..f18150d42dbe
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/keymap.c
@@ -0,0 +1,72 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/rules.mk
new file mode 100644
index 000000000000..ee325681483f
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/keymap.c
new file mode 100644
index 000000000000..e35c81d5a512
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/keymap.c
@@ -0,0 +1,92 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+// clang-format on
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..340c028b389c
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/keymap.c
new file mode 100644
index 000000000000..f18150d42dbe
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/keymap.c
@@ -0,0 +1,72 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1v2/iso_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk b/keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q1/jis_stm32l432/config.h b/keyboards/keychron/q1/jis_stm32l432/config.h
new file mode 100644
index 000000000000..36c3bd7f2847
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432/config.h
@@ -0,0 +1,50 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1110111
+#define DRIVER_ADDR_2 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 30U
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 46
+#define DRIVER_2_LED_TOTAL 40
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE { 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D }
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/jis_stm32l432/info.json b/keyboards/keychron/q1/jis_stm32l432/info.json
new file mode 100644
index 000000000000..1cdec1c13335
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432/info.json
@@ -0,0 +1,129 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x010A",
+ "device_version": "2.0.4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_jis_86": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.251},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[1,14], "x":14, "y":1.25},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[4,14], "x":14.25, "y":4.25},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25},
+ {"matrix":[5,12], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.25},
+ {"matrix":[5,14], "x":14.25, "y":5.25},
+ {"matrix":[5,15], "x":15.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1v2/jis/jis.c b/keyboards/keychron/q1/jis_stm32l432/jis_stm32l432.c
similarity index 61%
rename from keyboards/keychron/q1v2/jis/jis.c
rename to keyboards/keychron/q1/jis_stm32l432/jis_stm32l432.c
index 6bfcbad3e4d0..150946b71510 100644
--- a/keyboards/keychron/q1v2/jis/jis.c
+++ b/keyboards/keychron/q1/jis_stm32l432/jis_stm32l432.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,15 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -118,4 +127,36 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
+#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, 11, 12, 13, __, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
+ { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 58, __, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, __, 57, __, 59 },
+ { 60, __, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __ },
+ { 74, 75, 76, 77, __, __, 78, __, __, 79, 80, 81, 82, 83, 84, 85 },
+ },
+ {
+ // LED Index to Physical Position
+ {0, 0}, {18, 0}, {33, 0}, {48, 0}, {62, 0}, {81, 0}, {95, 0}, {110, 0}, {125, 0}, {143, 0}, {158, 0}, {173, 0}, {187, 0}, {205, 0}, {224, 0},
+ {0, 15}, {15, 15}, {29, 15}, {44, 15}, {59, 15}, {73, 15}, {88, 15}, {103, 15}, {117, 15}, {132, 15}, {147, 15}, {161, 15}, {176, 15}, {191, 15}, {205, 15}, {224, 15},
+ {4, 28}, {22, 28}, {37, 28}, {51, 28}, {66, 28}, {81, 28}, {95, 28}, {110, 28}, {125, 28}, {139, 28}, {154, 28}, {169, 28}, {183, 28}, {224, 28},
+ {6, 40}, {26, 40}, {40, 40}, {55, 40}, {70, 40}, {84, 40}, {99, 40}, {114, 40}, {128, 40}, {143, 40}, {158, 40}, {172, 40}, {187, 40}, {207, 36}, {224, 40},
+ {9, 52}, {33, 52}, {48, 52}, {62, 52}, {77, 52}, {92, 52}, {106, 52}, {121, 52}, {136, 52}, {150, 52}, {165, 52}, {180, 52}, {194, 52}, {209, 52},
+ {2, 64}, {18, 64}, {35, 64}, {51, 64}, { 92, 64}, {134, 64}, {150, 64}, {165, 64}, {180, 64}, {194, 64}, {209, 64}, {224, 64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ }
+};
+
#endif
diff --git a/keyboards/keychron/q1v2/jis/keymaps/via/keymap.c b/keyboards/keychron/q1/jis_stm32l432/keymaps/default/keymap.c
similarity index 96%
rename from keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
rename to keyboards/keychron/q1/jis_stm32l432/keymaps/default/keymap.c
index 14af11a77cb5..779e9dac661d 100644
--- a/keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/jis_stm32l432/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,7 +29,7 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [MAC_BASE] = LAYOUT_jis_86(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_jis_86(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_jis_86(
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_jis_86(
_______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/keymap.c
similarity index 93%
rename from keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/keymap.c
index b783b9307809..027951946821 100644
--- a/keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -27,7 +28,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [MAC_BASE] = LAYOUT_jis_86(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -35,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_jis_86(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_jis_86(
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -51,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_jis_86(
_______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -64,11 +65,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/rules.mk b/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..65df6fb72655
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1v2/jis/keymaps/default/keymap.c b/keyboards/keychron/q1/jis_stm32l432/keymaps/via/keymap.c
similarity index 96%
rename from keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
rename to keyboards/keychron/q1/jis_stm32l432/keymaps/via/keymap.c
index 14af11a77cb5..779e9dac661d 100644
--- a/keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/jis_stm32l432/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,7 +29,7 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [MAC_BASE] = LAYOUT_jis_86(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_jis_86(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_jis_86(
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_jis_86(
_______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q1v2/jis/keymaps/via/rules.mk b/keyboards/keychron/q1/jis_stm32l432/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1v2/jis/keymaps/via/rules.mk
rename to keyboards/keychron/q1/jis_stm32l432/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/jis_stm32l432/rules.mk b/keyboards/keychron/q1/jis_stm32l432/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/config.h b/keyboards/keychron/q1/jis_stm32l432_encoder/config.h
new file mode 100644
index 000000000000..8b142a8f64a2
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/config.h
@@ -0,0 +1,54 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 2
+#define DRIVER_ADDR_1 0b1110111
+#define DRIVER_ADDR_2 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
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 46
+#define DRIVER_2_LED_TOTAL 40
+#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D }
+
+/* Encoder Configuration */
+#define ENCODER_DEFAULT_POS 0x3
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/info.json b/keyboards/keychron/q1/jis_stm32l432_encoder/info.json
new file mode 100644
index 000000000000..b5a1c3ece5ee
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/info.json
@@ -0,0 +1,134 @@
+{
+ "keyboard_name": "Keychron Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x010B",
+ "device_version": "2.0.4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "A10", "pin_b": "A8"}
+ ]
+ },
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_jis_86": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.251},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[1,14], "x":14, "y":1.25},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[4,14], "x":14.25, "y":4.25},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25},
+ {"matrix":[5,12], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.25},
+ {"matrix":[5,14], "x":14.25, "y":5.25},
+ {"matrix":[5,15], "x":15.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q1v2/jis_encoder/jis_encoder.c b/keyboards/keychron/q1/jis_stm32l432_encoder/jis_stm32l432_encoder.c
similarity index 61%
rename from keyboards/keychron/q1v2/jis_encoder/jis_encoder.c
rename to keyboards/keychron/q1/jis_stm32l432_encoder/jis_stm32l432_encoder.c
index 6bfcbad3e4d0..150946b71510 100644
--- a/keyboards/keychron/q1v2/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/jis_stm32l432_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,15 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -118,4 +127,36 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
+#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, 11, 12, 13, __, 14 },
+ { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
+ { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 58, __, 44 },
+ { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, __, 57, __, 59 },
+ { 60, __, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __ },
+ { 74, 75, 76, 77, __, __, 78, __, __, 79, 80, 81, 82, 83, 84, 85 },
+ },
+ {
+ // LED Index to Physical Position
+ {0, 0}, {18, 0}, {33, 0}, {48, 0}, {62, 0}, {81, 0}, {95, 0}, {110, 0}, {125, 0}, {143, 0}, {158, 0}, {173, 0}, {187, 0}, {205, 0}, {224, 0},
+ {0, 15}, {15, 15}, {29, 15}, {44, 15}, {59, 15}, {73, 15}, {88, 15}, {103, 15}, {117, 15}, {132, 15}, {147, 15}, {161, 15}, {176, 15}, {191, 15}, {205, 15}, {224, 15},
+ {4, 28}, {22, 28}, {37, 28}, {51, 28}, {66, 28}, {81, 28}, {95, 28}, {110, 28}, {125, 28}, {139, 28}, {154, 28}, {169, 28}, {183, 28}, {224, 28},
+ {6, 40}, {26, 40}, {40, 40}, {55, 40}, {70, 40}, {84, 40}, {99, 40}, {114, 40}, {128, 40}, {143, 40}, {158, 40}, {172, 40}, {187, 40}, {207, 36}, {224, 40},
+ {9, 52}, {33, 52}, {48, 52}, {62, 52}, {77, 52}, {92, 52}, {106, 52}, {121, 52}, {136, 52}, {150, 52}, {165, 52}, {180, 52}, {194, 52}, {209, 52},
+ {2, 64}, {18, 64}, {35, 64}, {51, 64}, { 92, 64}, {134, 64}, {150, 64}, {165, 64}, {180, 64}, {194, 64}, {209, 64}, {224, 64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ }
+};
+
#endif
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/keymap.c
similarity index 95%
rename from keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c
rename to keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/keymap.c
index def0cba27f4e..0086534adc1b 100644
--- a/keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,7 +29,7 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [MAC_BASE] = LAYOUT_jis_86(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_jis_86(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_jis_86(
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_jis_86(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/rules.mk
new file mode 100644
index 000000000000..ee325681483f
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/keymap.c
similarity index 92%
rename from keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/keymap.c
index 5aa1ab9471f6..3fd9bcf8f093 100644
--- a/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -27,7 +28,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [MAC_BASE] = LAYOUT_jis_86(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -35,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_jis_86(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_jis_86(
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -51,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_jis_86(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -60,8 +61,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+// clang-format on
+
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -73,11 +76,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..340c028b389c
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/keymap.c
similarity index 95%
rename from keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c
rename to keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/keymap.c
index def0cba27f4e..0086534adc1b 100644
--- a/keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,7 +29,7 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [MAC_BASE] = LAYOUT_jis_86(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT(
+ [MAC_FN] = LAYOUT_jis_86(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT(
+ [WIN_BASE] = LAYOUT_jis_86(
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT(
+ [WIN_FN] = LAYOUT_jis_86(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1v2/jis_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk b/keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q1v2/mcuconf.h b/keyboards/keychron/q1/mcuconf.h
similarity index 100%
rename from keyboards/keychron/q1v2/mcuconf.h
rename to keyboards/keychron/q1/mcuconf.h
diff --git a/keyboards/keychron/q1/q1.c b/keyboards/keychron/q1/q1.c
index 3df62c4339bf..8b6d6f2bf231 100644
--- a/keyboards/keychron/q1/q1.c
+++ b/keyboards/keychron/q1/q1.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,23 +16,14 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b0111111111111101,
- 0b0111111111111111,
- 0b0111111111111111,
- 0b0111111111111111,
- 0b0111111111111111,
- 0b0111111111111111,
-};
-
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
- if (!dip_switch_update_user(index, active)) { return false;}
+ if (!dip_switch_update_user(index, active)) {
+ return false;
+ }
if (index == 0) {
default_layer_set(1UL << (active ? 2 : 0));
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
+#endif
diff --git a/keyboards/keychron/q1/readme.md b/keyboards/keychron/q1/readme.md
index 94b7a21f5b03..0e0b1404eb9d 100644
--- a/keyboards/keychron/q1/readme.md
+++ b/keyboards/keychron/q1/readme.md
@@ -1,20 +1,38 @@
# Keychron Q1
-![Keychron Q1](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/pf-823ebdc7--1073.jpg)
+![Keychron Q1](https://i.imgur.com/BbJNGLY.jpg)
A customizable 75% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q1
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q1)
Make example for this keyboard (after setting up your build environment):
- make keychron/q1/ansi:default
+ make keychron/q1/ansi_atmega32u4:default
+ make keychron/q1/ansi_atmega32u4_encoder:default
+ make keychron/q1/ansi_stm32l432:default
+ make keychron/q1/ansi_stm32l432_encoder:default
+ make keychron/q1/iso_atmega32u4:default
+ make keychron/q1/iso_atmega32u4_encoder:default
+ make keychron/q1/iso_stm32l432:default
+ make keychron/q1/iso_stm32l432_encoder:default
+ make keychron/q1/jis_stm32l432:default
+ make keychron/q1/jis_stm32l432_encoder:default
Flashing example for this keyboard:
- make keychron/q1/ansi:default:flash
+ make keychron/q1/ansi_atmega32u4:default:flash
+ make keychron/q1/ansi_atmega32u4_encoder:default:flash
+ make keychron/q1/ansi_stm32l432:default:flash
+ make keychron/q1/ansi_stm32l432_encoder:default:flash
+ make keychron/q1/iso_atmega32u4:default:flash
+ make keychron/q1/iso_atmega32u4_encoder:default:flash
+ make keychron/q1/iso_stm32l432:default:flash
+ make keychron/q1/iso_stm32l432_encoder:default:flash
+ make keychron/q1/jis_stm32l432:default:flash
+ make keychron/q1/jis_stm32l432_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
index c5abcb4f6ee0..10871ea92c0e 100644
--- a/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
@@ -21,12 +21,12 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, C_2, A_2, B_2}, // ESC
{0, C_3, A_3, B_3}, // F1
{0, C_4, A_4, B_4}, // F2
@@ -146,12 +146,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q10/ansi_encoder/info.json b/keyboards/keychron/q10/ansi_encoder/info.json
index 8a8a624154ac..d2b837767a7c 100644
--- a/keyboards/keychron/q10/ansi_encoder/info.json
+++ b/keyboards/keychron/q10/ansi_encoder/info.json
@@ -5,12 +5,28 @@
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
- "pid": "0x01A1",
+ "pid": "0x03A1",
"device_version": "1.0.0"
},
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -24,100 +40,100 @@
"layouts": {
"LAYOUT_ansi_89": {
"layout": [
- {"matrix": [0, 0], "x": 0.25, "y": 0},
- {"matrix": [0, 1], "x": 1.75, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6, "y": 0},
- {"matrix": [0, 6], "x": 7.25, "y": 0},
- {"matrix": [0, 7], "x": 8.25, "y": 0},
- {"matrix": [0, 8], "x": 11, "y": 0},
- {"matrix": [0, 9], "x": 12, "y": 0},
- {"matrix": [0, 10], "x": 13.25, "y": 0},
- {"matrix": [0, 11], "x": 14.25, "y": 0},
- {"matrix": [0, 12], "x": 15.25, "y": 0},
- {"matrix": [0, 13], "x": 16.25, "y": 0},
- {"matrix": [0, 14], "x": 17.5, "y": 0},
- {"matrix": [0, 15], "x": 18.75, "y": 0},
+ {"matrix":[0, 0], "x":0.25, "y":0},
+ {"matrix":[0, 1], "x":1.75, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6, "y":0},
+ {"matrix":[0, 6], "x":7.25, "y":0},
+ {"matrix":[0, 7], "x":8.25, "y":0},
+ {"matrix":[0, 8], "x":11, "y":0},
+ {"matrix":[0, 9], "x":12, "y":0},
+ {"matrix":[0,10], "x":13.25, "y":0},
+ {"matrix":[0,11], "x":14.25, "y":0},
+ {"matrix":[0,12], "x":15.25, "y":0},
+ {"matrix":[0,13], "x":16.25, "y":0},
+ {"matrix":[0,14], "x":17.5, "y":0},
+ {"matrix":[0,15], "x":18.75, "y":0},
- {"matrix": [1, 0], "x": 0.75, "y": 1.25},
- {"matrix": [1, 1], "x": 2.25, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 7.25, "y": 1.25},
- {"matrix": [1, 7], "x": 8.25, "y": 1.25},
- {"matrix": [1, 8], "x": 10.5, "y": 1.25},
- {"matrix": [1, 9], "x": 11.5, "y": 1.25},
- {"matrix": [1, 10], "x": 12.5, "y": 1.25},
- {"matrix": [1, 11], "x": 13.5, "y": 1.25},
- {"matrix": [1, 12], "x": 14.5, "y": 1.25},
- {"matrix": [1, 13], "x": 15.5, "y": 1.25},
- {"matrix": [1, 14], "x": 16.5, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 19, "y": 1.25},
+ {"matrix":[1, 0], "x":0.75, "y":1.25},
+ {"matrix":[1, 1], "x":2.25, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":7.25, "y":1.25},
+ {"matrix":[1, 7], "x":8.25, "y":1.25},
+ {"matrix":[1, 8], "x":10.5, "y":1.25},
+ {"matrix":[1, 9], "x":11.5, "y":1.25},
+ {"matrix":[1,10], "x":12.5, "y":1.25},
+ {"matrix":[1,11], "x":13.5, "y":1.25},
+ {"matrix":[1,12], "x":14.5, "y":1.25},
+ {"matrix":[1,13], "x":15.5, "y":1.25},
+ {"matrix":[1,14], "x":16.5, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":19, "y":1.25},
- {"matrix": [2, 0], "x": 0.5, "y": 2.25},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
- {"matrix": [2, 2], "x": 3.25, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 6], "x": 7.5, "y": 2.25},
- {"matrix": [2, 7], "x": 10, "y": 2.25},
- {"matrix": [2, 8], "x": 11, "y": 2.25},
- {"matrix": [2, 9], "x": 12, "y": 2.25},
- {"matrix": [2, 10], "x": 13, "y": 2.25},
- {"matrix": [2, 11], "x": 14, "y": 2.25},
- {"matrix": [2, 12], "x": 15.25, "y": 2.25},
- {"matrix": [2, 13], "x": 16.25, "y": 2.25},
- {"matrix": [2, 14], "x": 17.25, "y": 2.25, "w": 1.5},
- {"matrix": [2, 15], "x": 19.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0.5, "y":2.25},
+ {"matrix":[2, 1], "x":1.75, "y":2.25, "w":1.5},
+ {"matrix":[2, 2], "x":3.25, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 6], "x":7.5, "y":2.25},
+ {"matrix":[2, 7], "x":10, "y":2.25},
+ {"matrix":[2, 8], "x":11, "y":2.25},
+ {"matrix":[2, 9], "x":12, "y":2.25},
+ {"matrix":[2,10], "x":13, "y":2.25},
+ {"matrix":[2,11], "x":14, "y":2.25},
+ {"matrix":[2,12], "x":15.25, "y":2.25},
+ {"matrix":[2,13], "x":16.25, "y":2.25},
+ {"matrix":[2,14], "x":17.25, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":19.25, "y":2.25},
- {"matrix": [3, 0], "x": 0.25, "y": 3.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
- {"matrix": [3, 2], "x": 3.25, "y": 3.25},
- {"matrix": [3, 3], "x": 4.5, "y": 3.25},
- {"matrix": [3, 4], "x": 5.5, "y": 3.25},
- {"matrix": [3, 5], "x": 6.5, "y": 3.25},
- {"matrix": [3, 6], "x": 7.5, "y": 3.25},
- {"matrix": [3, 8], "x": 10.25, "y": 3.25},
- {"matrix": [3, 9], "x": 11.25, "y": 3.25},
- {"matrix": [3, 10], "x": 12.25, "y": 3.25},
- {"matrix": [3, 11], "x": 13.25, "y": 3.25},
- {"matrix": [3, 12], "x": 14.75, "y": 3.25},
- {"matrix": [3, 13], "x": 15.75, "y": 3.25},
- {"matrix": [3, 14], "x": 16.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 15], "x": 19.5, "y": 3.25},
+ {"matrix":[3, 0], "x":0.25, "y":3.25},
+ {"matrix":[3, 1], "x":1.5, "y":3.25, "w":1.75},
+ {"matrix":[3, 2], "x":3.25, "y":3.25},
+ {"matrix":[3, 3], "x":4.5, "y":3.25},
+ {"matrix":[3, 4], "x":5.5, "y":3.25},
+ {"matrix":[3, 5], "x":6.5, "y":3.25},
+ {"matrix":[3, 6], "x":7.5, "y":3.25},
+ {"matrix":[3, 8], "x":10.25, "y":3.25},
+ {"matrix":[3, 9], "x":11.25, "y":3.25},
+ {"matrix":[3,10], "x":12.25, "y":3.25},
+ {"matrix":[3,11], "x":13.25, "y":3.25},
+ {"matrix":[3,12], "x":14.75, "y":3.25},
+ {"matrix":[3,13], "x":15.75, "y":3.25},
+ {"matrix":[3,14], "x":16.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":19.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25},
- {"matrix": [4, 1], "x": 1.5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 4], "x": 4.75, "y": 4.25},
- {"matrix": [4, 5], "x": 5.75, "y": 4.25},
- {"matrix": [4, 6], "x": 6.75, "y": 4.25},
- {"matrix": [4, 7], "x": 7.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.5, "y": 4.25},
- {"matrix": [4, 9], "x": 10.5, "y": 4.25},
- {"matrix": [4, 10], "x": 11.5, "y": 4.25},
- {"matrix": [4, 11], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 13.5, "y": 4.25},
- {"matrix": [4, 13], "x": 15.25, "y": 4.25},
- {"matrix": [4, 14], "x": 16.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 15], "x": 18.25, "y": 4.5},
+ {"matrix":[4, 0], "x":0, "y":4.25},
+ {"matrix":[4, 1], "x":1.5, "y":4.25, "w":2.25},
+ {"matrix":[4, 3], "x":3.5, "y":4.25},
+ {"matrix":[4, 4], "x":4.75, "y":4.25},
+ {"matrix":[4, 5], "x":5.75, "y":4.25},
+ {"matrix":[4, 6], "x":6.75, "y":4.25},
+ {"matrix":[4, 7], "x":7.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.5, "y":4.25},
+ {"matrix":[4, 9], "x":10.5, "y":4.25},
+ {"matrix":[4,10], "x":11.5, "y":4.25},
+ {"matrix":[4,11], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":13.5, "y":4.25},
+ {"matrix":[4,13], "x":15.25, "y":4.25},
+ {"matrix":[4,14], "x":16.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":18.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 4.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 4], "x": 6, "y": 5.25, "w": 2.25},
- {"matrix": [5, 7], "x": 8.25, "y": 5.25},
- {"matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 2.75},
- {"matrix": [5, 9], "x": 12.25, "y": 5.25},
- {"matrix": [5, 13], "x": 17.25, "y": 5.5},
- {"matrix": [5, 14], "x": 18.25, "y": 5.5},
- {"matrix": [5, 15], "x": 19.25, "y": 5.5}
+ {"matrix":[5, 0], "x":0, "y":5.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":4.75, "y":5.25, "w":1.25},
+ {"matrix":[5, 4], "x":6, "y":5.25, "w":2.25},
+ {"matrix":[5, 7], "x":8.25, "y":5.25},
+ {"matrix":[5, 8], "x":9.5, "y":5.25, "w":2.75},
+ {"matrix":[5, 9], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":17.25, "y":5.5},
+ {"matrix":[5,14], "x":18.25, "y":5.5},
+ {"matrix":[5,15], "x":19.25, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/q10/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q10/ansi_encoder/keymaps/default/keymap.c
index 915ad3aa2a77..67ead4fb653a 100644
--- a/keyboards/keychron/q10/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q10/ansi_encoder/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
_______, 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,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/keymap.c
index 78ef658d2d4e..5720b7a7f8b1 100644
--- a/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -61,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -73,11 +74,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q10/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q10/ansi_encoder/keymaps/via/keymap.c
index c0927dcb1352..e89cf00f6707 100644
--- a/keyboards/keychron/q10/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q10/ansi_encoder/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q10/ansi_encoder/readme.md b/keyboards/keychron/q10/ansi_encoder/readme.md
deleted file mode 100644
index 6f7f579659a8..000000000000
--- a/keyboards/keychron/q10/ansi_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ANSI variant of the Keychron Q10
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top left key pushbutton to mute.
diff --git a/keyboards/keychron/q10/ansi_encoder/rules.mk b/keyboards/keychron/q10/ansi_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/q10/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q10/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q10/config.h b/keyboards/keychron/q10/config.h
index 0ef4edf245b8..1895c52910dd 100644
--- a/keyboards/keychron/q10/config.h
+++ b/keyboards/keychron/q10/config.h
@@ -16,19 +16,6 @@
#pragma once
-/* key matrix size */
-#define MATRIX_ROWS 6
-#define MATRIX_COLS 16
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -43,11 +30,13 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5,5} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 5 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -91,9 +80,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -108,5 +101,10 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
diff --git a/keyboards/keychron/q10/halconf.h b/keyboards/keychron/q10/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q10/halconf.h
+++ b/keyboards/keychron/q10/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q10/iso_encoder/info.json b/keyboards/keychron/q10/iso_encoder/info.json
index d7e1bf288539..58de1af032b6 100644
--- a/keyboards/keychron/q10/iso_encoder/info.json
+++ b/keyboards/keychron/q10/iso_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x01A3",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -24,101 +40,101 @@
"layouts": {
"LAYOUT_iso_90": {
"layout": [
- {"matrix": [0, 0], "x": 0.25, "y": 0},
- {"matrix": [0, 1], "x": 1.75, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6, "y": 0},
- {"matrix": [0, 6], "x": 7.25, "y": 0},
- {"matrix": [0, 7], "x": 8.25, "y": 0},
- {"matrix": [0, 8], "x": 11, "y": 0},
- {"matrix": [0, 9], "x": 12, "y": 0},
- {"matrix": [0, 10], "x": 13.25, "y": 0},
- {"matrix": [0, 11], "x": 14.25, "y": 0},
- {"matrix": [0, 12], "x": 15.25, "y": 0},
- {"matrix": [0, 13], "x": 16.25, "y": 0},
- {"matrix": [0, 14], "x": 17.5, "y": 0},
- {"matrix": [0, 15], "x": 18.75, "y": 0},
+ {"matrix":[0, 0], "x":0.25, "y":0},
+ {"matrix":[0, 1], "x":1.75, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6, "y":0},
+ {"matrix":[0, 6], "x":7.25, "y":0},
+ {"matrix":[0, 7], "x":8.25, "y":0},
+ {"matrix":[0, 8], "x":11, "y":0},
+ {"matrix":[0, 9], "x":12, "y":0},
+ {"matrix":[0,10], "x":13.25, "y":0},
+ {"matrix":[0,11], "x":14.25, "y":0},
+ {"matrix":[0,12], "x":15.25, "y":0},
+ {"matrix":[0,13], "x":16.25, "y":0},
+ {"matrix":[0,14], "x":17.5, "y":0},
+ {"matrix":[0,15], "x":18.75, "y":0},
- {"matrix": [1, 0], "x": 0.75, "y": 1.25},
- {"matrix": [1, 1], "x": 2.25, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 7.25, "y": 1.25},
- {"matrix": [1, 7], "x": 8.25, "y": 1.25},
- {"matrix": [1, 8], "x": 10.5, "y": 1.25},
- {"matrix": [1, 9], "x": 11.5, "y": 1.25},
- {"matrix": [1, 10], "x": 12.5, "y": 1.25},
- {"matrix": [1, 11], "x": 13.5, "y": 1.25},
- {"matrix": [1, 12], "x": 14.5, "y": 1.25},
- {"matrix": [1, 13], "x": 15.5, "y": 1.25},
- {"matrix": [1, 14], "x": 16.5, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 19, "y": 1.25},
+ {"matrix":[1, 0], "x":0.75, "y":1.25},
+ {"matrix":[1, 1], "x":2.25, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":7.25, "y":1.25},
+ {"matrix":[1, 7], "x":8.25, "y":1.25},
+ {"matrix":[1, 8], "x":10.5, "y":1.25},
+ {"matrix":[1, 9], "x":11.5, "y":1.25},
+ {"matrix":[1,10], "x":12.5, "y":1.25},
+ {"matrix":[1,11], "x":13.5, "y":1.25},
+ {"matrix":[1,12], "x":14.5, "y":1.25},
+ {"matrix":[1,13], "x":15.5, "y":1.25},
+ {"matrix":[1,14], "x":16.5, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":19, "y":1.25},
- {"matrix": [2, 0], "x": 0.5, "y": 2.25},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
- {"matrix": [2, 2], "x": 3.25, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 6], "x": 7.5, "y": 2.25},
- {"matrix": [2, 7], "x": 10, "y": 2.25},
- {"matrix": [2, 8], "x": 11, "y": 2.25},
- {"matrix": [2, 9], "x": 12, "y": 2.25},
- {"matrix": [2, 10], "x": 13, "y": 2.25},
- {"matrix": [2, 11], "x": 14, "y": 2.25},
- {"matrix": [2, 12], "x": 15.25, "y": 2.25},
- {"matrix": [2, 13], "x": 16.25, "y": 2.25},
- {"matrix": [2, 15], "x": 19.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0.5, "y":2.25},
+ {"matrix":[2, 1], "x":1.75, "y":2.25, "w":1.5},
+ {"matrix":[2, 2], "x":3.25, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 6], "x":7.5, "y":2.25},
+ {"matrix":[2, 7], "x":10, "y":2.25},
+ {"matrix":[2, 8], "x":11, "y":2.25},
+ {"matrix":[2, 9], "x":12, "y":2.25},
+ {"matrix":[2,10], "x":13, "y":2.25},
+ {"matrix":[2,11], "x":14, "y":2.25},
+ {"matrix":[2,12], "x":15.25, "y":2.25},
+ {"matrix":[2,13], "x":16.25, "y":2.25},
+ {"matrix":[2,15], "x":19.25, "y":2.25},
- {"matrix": [3, 0], "x": 0.25, "y": 3.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
- {"matrix": [3, 2], "x": 3.25, "y": 3.25},
- {"matrix": [3, 3], "x": 4.5, "y": 3.25},
- {"matrix": [3, 4], "x": 5.5, "y": 3.25},
- {"matrix": [3, 5], "x": 6.5, "y": 3.25},
- {"matrix": [3, 6], "x": 7.5, "y": 3.25},
- {"matrix": [3, 8], "x": 10.25, "y": 3.25},
- {"matrix": [3, 9], "x": 11.25, "y": 3.25},
- {"matrix": [3, 10], "x": 12.25, "y": 3.25},
- {"matrix": [3, 11], "x": 13.25, "y": 3.25},
- {"matrix": [3, 12], "x": 14.75, "y": 3.25},
- {"matrix": [3, 13], "x": 15.75, "y": 3.25},
- {"matrix": [3, 14], "x": 16.75, "y": 3.25},
- {"matrix": [2, 14], "x": 17.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 19.5, "y": 3.25},
+ {"matrix":[3, 0], "x":0.25, "y":3.25},
+ {"matrix":[3, 1], "x":1.5, "y":3.25, "w":1.75},
+ {"matrix":[3, 2], "x":3.25, "y":3.25},
+ {"matrix":[3, 3], "x":4.5, "y":3.25},
+ {"matrix":[3, 4], "x":5.5, "y":3.25},
+ {"matrix":[3, 5], "x":6.5, "y":3.25},
+ {"matrix":[3, 6], "x":7.5, "y":3.25},
+ {"matrix":[3, 8], "x":10.25, "y":3.25},
+ {"matrix":[3, 9], "x":11.25, "y":3.25},
+ {"matrix":[3,10], "x":12.25, "y":3.25},
+ {"matrix":[3,11], "x":13.25, "y":3.25},
+ {"matrix":[3,12], "x":14.75, "y":3.25},
+ {"matrix":[3,13], "x":15.75, "y":3.25},
+ {"matrix":[3,14], "x":16.75, "y":3.25},
+ {"matrix":[2,14], "x":17.75, "y":3.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":19.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25},
- {"matrix": [4, 1], "x": 1.5, "y": 4.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 4], "x": 4.75, "y": 4.25},
- {"matrix": [4, 5], "x": 5.75, "y": 4.25},
- {"matrix": [4, 6], "x": 6.75, "y": 4.25},
- {"matrix": [4, 7], "x": 7.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.5, "y": 4.25},
- {"matrix": [4, 9], "x": 10.5, "y": 4.25},
- {"matrix": [4, 10], "x": 11.5, "y": 4.25},
- {"matrix": [4, 11], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 13.5, "y": 4.25},
- {"matrix": [4, 13], "x": 15.25, "y": 4.25},
- {"matrix": [4, 14], "x": 16.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 15], "x": 18.25, "y": 4.5},
+ {"matrix":[4, 0], "x":0, "y":4.25},
+ {"matrix":[4, 1], "x":1.5, "y":4.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25},
+ {"matrix":[4, 3], "x":3.5, "y":4.25},
+ {"matrix":[4, 4], "x":4.75, "y":4.25},
+ {"matrix":[4, 5], "x":5.75, "y":4.25},
+ {"matrix":[4, 6], "x":6.75, "y":4.25},
+ {"matrix":[4, 7], "x":7.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.5, "y":4.25},
+ {"matrix":[4, 9], "x":10.5, "y":4.25},
+ {"matrix":[4,10], "x":11.5, "y":4.25},
+ {"matrix":[4,11], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":13.5, "y":4.25},
+ {"matrix":[4,13], "x":15.25, "y":4.25},
+ {"matrix":[4,14], "x":16.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":18.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 4.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 4], "x": 6, "y": 5.25, "w": 2.25},
- {"matrix": [5, 7], "x": 8.25, "y": 5.25},
- {"matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 2.75},
- {"matrix": [5, 9], "x": 12.25, "y": 5.25},
- {"matrix": [5, 13], "x": 17.25, "y": 5.5},
- {"matrix": [5, 14], "x": 18.25, "y": 5.5},
- {"matrix": [5, 15], "x": 19.25, "y": 5.5}
+ {"matrix":[5, 0], "x":0, "y":5.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":4.75, "y":5.25, "w":1.25},
+ {"matrix":[5, 4], "x":6, "y":5.25, "w":2.25},
+ {"matrix":[5, 7], "x":8.25, "y":5.25},
+ {"matrix":[5, 8], "x":9.5, "y":5.25, "w":2.75},
+ {"matrix":[5, 9], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":17.25, "y":5.5},
+ {"matrix":[5,14], "x":18.25, "y":5.5},
+ {"matrix":[5,15], "x":19.25, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/q10/iso_encoder/iso_encoder.c b/keyboards/keychron/q10/iso_encoder/iso_encoder.c
index 1e8f80ddd875..a54d35a14221 100644
--- a/keyboards/keychron/q10/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q10/iso_encoder/iso_encoder.c
@@ -147,12 +147,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q10/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q10/iso_encoder/keymaps/default/keymap.c
index 77a26f1e991b..43bc2c099d61 100644
--- a/keyboards/keychron/q10/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q10/iso_encoder/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
_______, 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_NUHS, KC_ENT, KC_HOME,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q10/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q10/iso_encoder/keymaps/keychron/keymap.c
index 6e024df8b7b5..a37afe78dd66 100644
--- a/keyboards/keychron/q10/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q10/iso_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -61,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -73,11 +74,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q10/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q10/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q10/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q10/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q10/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q10/iso_encoder/keymaps/via/keymap.c
index 338bd34b314a..b72de370067d 100644
--- a/keyboards/keychron/q10/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q10/iso_encoder/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q10/iso_encoder/readme.md b/keyboards/keychron/q10/iso_encoder/readme.md
deleted file mode 100644
index e66322443a08..000000000000
--- a/keyboards/keychron/q10/iso_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ISO variant of the Keychron Q10
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top left key pushbutton to mute.
diff --git a/keyboards/keychron/q10/iso_encoder/rules.mk b/keyboards/keychron/q10/iso_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/q10/iso_encoder/rules.mk
+++ b/keyboards/keychron/q10/iso_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q10/matrix.c b/keyboards/keychron/q10/matrix.c
deleted file mode 100644
index 5c035b0e42ec..000000000000
--- a/keyboards/keychron/q10/matrix.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* Copyright 2021 @ 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 "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN A7
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN B1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN B0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-static void shiftOutMultiple(uint16_t dataOut) {
- for (uint8_t i = 0; i < 8; i++) {
- if (dataOut & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- }
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static void shiftOut_single(uint8_t dataOut) {
- if (dataOut & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == (MATRIX_COLS - 8)) {
- shiftOut_single(0x00);
- } else {
- shiftOut_single(0x01);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (col == (MATRIX_COLS - 1)) {
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
- }
- }
-}
-
-static void unselect_cols(void) {
- // unselect column pins
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (x == (MATRIX_COLS - 1)) {
- // unselect Shift Register
- shiftOutMultiple(0xFF);
- }
- }
- }
-}
-
-static void matrix_init_pins(void) {
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- if (current_col < (MATRIX_COLS - 8)) {
- matrix_output_select_delay();
- } else {
- matrix_output_select_delay();
- matrix_output_select_delay();
- matrix_output_select_delay();
- matrix_output_select_delay();
- }
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/q10/q10.c b/keyboards/keychron/q10/q10.c
index 455a2a25f28b..66c66afd863f 100644
--- a/keyboards/keychron/q10/q10.c
+++ b/keyboards/keychron/q10/q10.c
@@ -26,7 +26,6 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -36,52 +35,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-# ifdef RGB_MATRIX_ENABLE
- 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;
-# endif
- }
- 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;
- }
-
- 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 // CAPS_LOCK_LED_INDEX
+#endif
diff --git a/keyboards/keychron/q10/readme.md b/keyboards/keychron/q10/readme.md
index ad3c5ebf4117..8089bb447a27 100644
--- a/keyboards/keychron/q10/readme.md
+++ b/keyboards/keychron/q10/readme.md
@@ -1,18 +1,22 @@
# Keychron Q10
+![Keychron Q10](https://i.imgur.com/QhqPOQQ.jpg)
+
A customizable 75% ergonomic keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q10
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q10 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q10-alice-layout-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/q10/ansi_encoder:default
+ make keychron/q10/iso_encoder:default
Flashing example for this keyboard:
make keychron/q10/ansi_encoder:default:flash
+ make keychron/q10/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
index 0585ae9c96d2..c6ad346b2013 100755
--- a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,14 +16,16 @@
#include "quantum.h"
+// clang-format off
#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, A_2, C_2, B_2}, // ESC
{0, A_3, C_3, B_3}, // F1
{0, A_4, C_4, B_4}, // F2
@@ -125,4 +127,55 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, G_1, I_1, H_1}, // Down
{0, G_7, I_7, H_7}, // Right
};
+
+#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, 11, 12, 13, 14, __ },
+ { 15, 16, 17, 18, 19, __, 20, 21, __ },
+ { 22, 23, 24, 25, 26, 27, 28, __, __ },
+ { 29, __, 30, 31, 32, 33, 34, 35, __ },
+ { 36, 37, 38, 39, 40, __, 41, __, __ },
+ { 42, 43, 44, 45, 46, 47, 48, 49, __ },
+ { 50, 51, 52, 53, 54, 55, 56, __, 57 },
+ { 58, 59, 60, 61, 62, 63, 64, 65, 66 },
+ { 67, 68, 69, 70, 71, 72, __, 73, 74 },
+ { 75, 76, 77, 78, 79, 80, __, 81, __ },
+ { __, 82, 83, 84, 85, __, 86, 87, 88 },
+ },
+ {
+ // LED Index to Physical Position
+ {17,0}, {31,0}, {45,0}, {59,0}, {72,0}, {86,0}, {100,0},
+ {0,15}, {17,15}, {31,15}, {45,15}, {59,15}, {72,15}, {86,15}, {100,15},
+ {0,27}, {21,27}, {38,27}, {52,27}, {66,27}, {79,27}, {93,27},
+ {0,40}, {22,40}, {41,40}, {55,40}, {69,40}, {83,40}, {97,40},
+ {0,52}, {26,52}, {48,52}, {61,52}, {76,52}, {90,52}, {102,52},
+ {0,64}, {19,64}, {36,64}, {53,64}, {70,64}, {94,64},
+ {110,0}, {124,0}, {138,0}, {152,0}, {165,0}, {179,0}, {193,0}, {207,0},
+ {110,15}, {124,15}, {138,15}, {152,15}, {165,15}, {179,15}, {200,15}, {224,15},
+ {104,27}, {117,27}, {131,27}, {145,27}, {158,27}, {172,27}, {186,27}, {203,27}, {224,27},
+ {107,40}, {121,40}, {134,40}, {148,40}, {162,40}, {176,40}, {198,40}, {224,40},
+ {114,52}, {127,52}, {141,52}, {155,52}, {169,52}, {188,52}, {210,52},
+ {126,64}, {152,64}, {166,64}, {180,64}, {196,64}, {210,64}, {224,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4,
+ 1, 1, 4, 4, 4, 4, 4,
+ 1, 8, 4, 4, 4, 4, 4,
+ 1, 1, 4, 4, 4, 4, 4,
+ 1, 1, 1, 1, 1, 4,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 1, 1,
+ 4, 1, 1, 1, 1, 1, 1,
+ }
+};
+
#endif
diff --git a/keyboards/keychron/q11/ansi_encoder/config.h b/keyboards/keychron/q11/ansi_encoder/config.h
index 60bdc493de53..4b7f798b8370 100755
--- a/keyboards/keychron/q11/ansi_encoder/config.h
+++ b/keyboards/keychron/q11/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron(https://www.keychron.com)
+/* 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
@@ -16,8 +16,5 @@
#pragma once
-/* RGB Matrix Configuration */
-#define RGB_MATRIX_LED_COUNT 89
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 23
diff --git a/keyboards/keychron/q11/ansi_encoder/info.json b/keyboards/keychron/q11/ansi_encoder/info.json
index 01a81619baa1..50d1260a09cb 100755
--- a/keyboards/keychron/q11/ansi_encoder/info.json
+++ b/keyboards/keychron/q11/ansi_encoder/info.json
@@ -1,105 +1,166 @@
{
+ "keyboard_name": "Keychron Q11",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "bootloader": "stm32-dfu",
+ "bootmagic": {
+ "matrix": [0, 1]
+ },
+ "features": {
+ "audio": false,
+ "backlight": false,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "rgblight": false
+ },
+ "diode_direction": "ROW2COL",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "B0", "pin_b": "B1"}
+ ]
+ },
+ "matrix_pins": {
+ "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "C15", null],
+ "rows": ["A13", "A14", "A15", "B3", "B4", "B5"]
+ },
+ "processor": "STM32L432",
+ "rgb_matrix": {
+ "driver": "CKLED2001",
+ "split_count": [42, 47]
+ },
+ "split": {
+ "enabled": true,
+ "encoder": {
+ "right": {
+ "rotary": [
+ {"pin_a": "C14", "pin_b": "C15"}
+ ]
+ }
+ },
+ "matrix_pins": {
+ "right": {
+ "cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ }
+ },
+ "transport": {
+ "protocol": "serial_usart",
+ "sync_matrix_state": false
+ }
+ },
"usb": {
+ "vid": "0x3434",
"pid": "0x01E0",
"device_version": "1.0.0"
},
- "rgb_matrix": {
- "split_count": [42, 47],
- "layout": [
- {"matrix":[0, 1], "flags":1, "x":17, "y":0},
- {"matrix":[0, 2], "flags":1, "x":31, "y":0},
- {"matrix":[0, 3], "flags":1, "x":45, "y":0},
- {"matrix":[0, 4], "flags":1, "x":59, "y":0},
- {"matrix":[0, 5], "flags":1, "x":72, "y":0},
- {"matrix":[0, 6], "flags":1, "x":86, "y":0},
- {"matrix":[0, 7], "flags":1, "x":100, "y":0},
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":1, "x":17, "y":15},
- {"matrix":[1, 2], "flags":4, "x":31, "y":15},
- {"matrix":[1, 3], "flags":4, "x":45, "y":15},
- {"matrix":[1, 4], "flags":4, "x":59, "y":15},
- {"matrix":[1, 5], "flags":4, "x":72, "y":15},
- {"matrix":[1, 6], "flags":4, "x":86, "y":15},
- {"matrix":[1, 7], "flags":4, "x":100, "y":15},
+ "layouts": {
+ "LAYOUT_ansi_91": {
+ "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":[0,5], "x":5.25, "y":0},
+ {"matrix":[0,6], "x":6.25, "y":0},
+ {"matrix":[0,7], "x":7.25, "y":0},
+ {"matrix":[6,0], "x":8.25, "y":0},
+ {"matrix":[6,1], "x":9.25, "y":0},
+ {"matrix":[6,2], "x":10.25, "y":0},
+ {"matrix":[6,3], "x":11.25, "y":0},
+ {"matrix":[6,4], "x":12.25, "y":0},
+ {"matrix":[6,5], "x":13.25, "y":0},
+ {"matrix":[6,6], "x":14.25, "y":0},
+ {"matrix":[6,7], "x":15.25, "y":0},
+ {"matrix":[6,8], "x":16.5, "y":0},
- {"matrix":[2, 0], "flags":1, "x":0, "y":27},
- {"matrix":[2, 1], "flags":1, "x":21, "y":27},
- {"matrix":[2, 2], "flags":4, "x":38, "y":27},
- {"matrix":[2, 3], "flags":4, "x":52, "y":27},
- {"matrix":[2, 4], "flags":4, "x":66, "y":27},
- {"matrix":[2, 6], "flags":4, "x":79, "y":27},
- {"matrix":[2, 7], "flags":4, "x":93, "y":27},
- {"matrix":[3, 0], "flags":1, "x":0, "y":40},
- {"matrix":[3, 1], "flags":8, "x":22, "y":40},
- {"matrix":[3, 2], "flags":4, "x":41, "y":40},
- {"matrix":[3, 3], "flags":4, "x":55, "y":40},
- {"matrix":[3, 4], "flags":4, "x":69, "y":40},
- {"matrix":[3, 5], "flags":4, "x":83, "y":40},
- {"matrix":[3, 6], "flags":4, "x":97, "y":40},
+ {"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":[1,5], "x":5.25, "y":1.25},
+ {"matrix":[1,6], "x":6.25, "y":1.25},
+ {"matrix":[1,7], "x":7.25, "y":1.25},
+ {"matrix":[7,0], "x":8.25, "y":1.25},
+ {"matrix":[7,1], "x":9.25, "y":1.25},
+ {"matrix":[7,2], "x":10.25, "y":1.25},
+ {"matrix":[7,3], "x":11.25, "y":1.25},
+ {"matrix":[7,4], "x":12.25, "y":1.25},
+ {"matrix":[7,5], "x":13.25, "y":1.25},
+ {"matrix":[7,6], "x":14.25, "y":1.25, "w":2},
+ {"matrix":[7,8], "x":16.5, "y":1.25},
- {"matrix":[4, 0], "flags":1, "x":0, "y":52},
- {"matrix":[4, 2], "flags":1, "x":34, "y":52},
- {"matrix":[4, 3], "flags":4, "x":48, "y":52},
- {"matrix":[4, 4], "flags":4, "x":61, "y":52},
- {"matrix":[4, 5], "flags":4, "x":76, "y":52},
- {"matrix":[4, 6], "flags":4, "x":90, "y":52},
- {"matrix":[4, 7], "flags":4, "x":102, "y":52},
- {"matrix":[5, 0], "flags":1, "x":0, "y":64},
- {"matrix":[5, 1], "flags":1, "x":19, "y":64},
- {"matrix":[5, 2], "flags":1, "x":36, "y":64},
- {"matrix":[5, 3], "flags":1, "x":53, "y":64},
- {"matrix":[5, 4], "flags":1, "x":70, "y":64},
- {"matrix":[5, 6], "flags":4, "x":94, "y":64},
+ {"matrix":[2,0], "x":0, "y":2.25},
+ {"matrix":[2,1], "x":1.25, "y":2.25, "w":1.5},
+ {"matrix":[2,2], "x":2.75, "y":2.25},
+ {"matrix":[2,3], "x":3.75, "y":2.25},
+ {"matrix":[2,4], "x":4.75, "y":2.25},
+ {"matrix":[2,6], "x":5.75, "y":2.25},
+ {"matrix":[2,7], "x":6.75, "y":2.25},
+ {"matrix":[8,0], "x":7.75, "y":2.25},
+ {"matrix":[8,1], "x":8.75, "y":2.25},
+ {"matrix":[8,2], "x":9.75, "y":2.25},
+ {"matrix":[8,3], "x":10.75, "y":2.25},
+ {"matrix":[8,4], "x":11.75, "y":2.25},
+ {"matrix":[8,5], "x":12.75, "y":2.25},
+ {"matrix":[8,6], "x":13.75, "y":2.25},
+ {"matrix":[8,7], "x":14.75, "y":2.25, "w":1.5},
+ {"matrix":[8,8], "x":16.5, "y":2.25},
- {"matrix":[6, 0], "flags":1, "x":110, "y":0},
- {"matrix":[6, 1], "flags":1, "x":124, "y":0},
- {"matrix":[6, 2], "flags":1, "x":138, "y":0},
- {"matrix":[6, 3], "flags":1, "x":152, "y":0},
- {"matrix":[6, 4], "flags":1, "x":165, "y":0},
- {"matrix":[6, 5], "flags":1, "x":179, "y":0},
- {"matrix":[6, 6], "flags":1, "x":193, "y":0},
- {"matrix":[6, 7], "flags":1, "x":207, "y":0},
- {"matrix":[7, 0], "flags":4, "x":110, "y":15},
- {"matrix":[7, 1], "flags":4, "x":124, "y":15},
- {"matrix":[7, 2], "flags":4, "x":138, "y":15},
- {"matrix":[7, 3], "flags":4, "x":152, "y":15},
- {"matrix":[7, 4], "flags":4, "x":165, "y":15},
- {"matrix":[7, 5], "flags":4, "x":179, "y":15},
- {"matrix":[7, 6], "flags":1, "x":200, "y":15},
- {"matrix":[7, 8], "flags":1, "x":224, "y":15},
+ {"matrix":[3,0], "x":0, "y":3.25},
+ {"matrix":[3,1], "x":1.25, "y":3.25, "w":1.75},
+ {"matrix":[3,2], "x":3, "y":3.25},
+ {"matrix":[3,3], "x":4, "y":3.25},
+ {"matrix":[3,4], "x":5, "y":3.25},
+ {"matrix":[3,5], "x":6, "y":3.25},
+ {"matrix":[3,6], "x":7, "y":3.25},
+ {"matrix":[9,0], "x":8, "y":3.25},
+ {"matrix":[9,1], "x":9, "y":3.25},
+ {"matrix":[9,2], "x":10, "y":3.25},
+ {"matrix":[9,3], "x":11, "y":3.25},
+ {"matrix":[9,4], "x":12, "y":3.25},
+ {"matrix":[9,5], "x":13, "y":3.25},
+ {"matrix":[9,7], "x":14, "y":3.25, "w":2.25},
+ {"matrix":[9,8], "x":16.5, "y":3.25},
- {"matrix":[8, 0], "flags":4, "x":104, "y":27},
- {"matrix":[8, 1], "flags":4, "x":117, "y":27},
- {"matrix":[8, 2], "flags":4, "x":131, "y":27},
- {"matrix":[8, 3], "flags":4, "x":145, "y":27},
- {"matrix":[8, 4], "flags":4, "x":158, "y":27},
- {"matrix":[8, 5], "flags":4, "x":172, "y":27},
- {"matrix":[8, 6], "flags":4, "x":186, "y":27},
- {"matrix":[8, 7], "flags":4, "x":203, "y":27},
- {"matrix":[8, 8], "flags":1, "x":224, "y":27},
- {"matrix":[9, 0], "flags":4, "x":107, "y":40},
- {"matrix":[9, 1], "flags":4, "x":121, "y":40},
- {"matrix":[9, 2], "flags":4, "x":134, "y":40},
- {"matrix":[9, 3], "flags":4, "x":148, "y":40},
- {"matrix":[9, 4], "flags":4, "x":162, "y":40},
- {"matrix":[9, 5], "flags":4, "x":176, "y":40},
- {"matrix":[9, 7], "flags":1, "x":198, "y":40},
- {"matrix":[9, 8], "flags":1, "x":224, "y":40},
+ {"matrix":[4,0], "x":0, "y":4.25},
+ {"matrix":[4,2], "x":1.25, "y":4.25, "w":2.25},
+ {"matrix":[4,3], "x":3.5, "y":4.25},
+ {"matrix":[4,4], "x":4.5, "y":4.25},
+ {"matrix":[4,5], "x":5.5, "y":4.25},
+ {"matrix":[4,6], "x":6.5, "y":4.25},
+ {"matrix":[4,7], "x":7.5, "y":4.25},
+ {"matrix":[10,0], "x":8.5, "y":4.25},
+ {"matrix":[10,1], "x":9.5, "y":4.25},
+ {"matrix":[10,2], "x":10.5, "y":4.25},
+ {"matrix":[10,3], "x":11.5, "y":4.25},
+ {"matrix":[10,4], "x":12.5, "y":4.25},
+ {"matrix":[10,5], "x":13.5, "y":4.25, "w":1.75},
+ {"matrix":[10,7], "x":15.5, "y":4.25},
- {"matrix":[10, 0], "flags":4, "x":114, "y":52},
- {"matrix":[10, 1], "flags":4, "x":127, "y":52},
- {"matrix":[10, 2], "flags":4, "x":141, "y":52},
- {"matrix":[10, 3], "flags":4, "x":155, "y":52},
- {"matrix":[10, 4], "flags":4, "x":169, "y":52},
- {"matrix":[10, 5], "flags":1, "x":188, "y":52},
- {"matrix":[10, 7], "flags":1, "x":210, "y":52},
- {"matrix":[11, 1], "flags":4, "x":126, "y":64},
- {"matrix":[11, 2], "flags":1, "x":152, "y":64},
- {"matrix":[11, 3], "flags":1, "x":166, "y":64},
- {"matrix":[11, 4], "flags":1, "x":180, "y":64},
- {"matrix":[11, 6], "flags":1, "x":196, "y":64},
- {"matrix":[11, 7], "flags":1, "x":210, "y":64},
- {"matrix":[11, 8], "flags":1, "x":224, "y":64}
- ]
+ {"matrix":[5,0], "x":0, "y":5.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,3], "x":3.75, "y":5.25, "w":1.25},
+ {"matrix":[5,4], "x":5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":6.25, "y":5.25, "w":2.25},
+ {"matrix":[11,1], "x":8.5, "y":5.25, "w":2.75},
+ {"matrix":[11,2], "x":11.25, "y":5.25},
+ {"matrix":[11,3], "x":12.25, "y":5.25},
+ {"matrix":[11,4], "x":13.25, "y":5.25},
+ {"matrix":[11,6], "x":14.5, "y":5.25},
+ {"matrix":[11,7], "x":15.5, "y":5.25},
+ {"matrix":[11,8], "x":16.5, "y":5.25}
+ ]
+ }
}
}
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c
index 7334ad852039..3643b8a11970 100755
--- a/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -15,18 +15,20 @@
*/
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN,
+ WIN_FN
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_91_ansi(
+ [MAC_BASE] = LAYOUT_ansi_91(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
@@ -34,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_91_ansi(
+ [MAC_FN] = LAYOUT_ansi_91(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -42,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_91_ansi(
+ [WIN_BASE] = LAYOUT_ansi_91(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
@@ -50,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_91_ansi(
+ [WIN_FN] = LAYOUT_ansi_91(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -60,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c
index d5f87b7a3989..54dc2341373a 100755
--- a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,16 +16,19 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN,
+ WIN_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_91_ansi(
+ [MAC_BASE] = LAYOUT_ansi_91(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -33,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, 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,
MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_91_ansi(
+ [MAC_FN] = LAYOUT_ansi_91(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -41,15 +44,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_91_ansi(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
- MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- MC_2, 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_PGDN,
- MC_3, 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,
- MC_4, 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,
- MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_ansi_91(
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
+ MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ MC_2, 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_PGDN,
+ MC_3, 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,
+ MC_4, 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,
+ MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_91_ansi(
+ [WIN_FN] = LAYOUT_ansi_91(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -59,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -71,6 +74,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -78,5 +82,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..e420400d17a9 100755
--- a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c factory.c
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c
index 29fe3d488d14..30c1a79f40b9 100755
--- a/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -27,7 +29,7 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_91_ansi(
+ [MAC_BASE] = LAYOUT_ansi_91(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -35,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, 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,
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_91_ansi(
+ [MAC_FN] = LAYOUT_ansi_91(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_91_ansi(
+ [WIN_BASE] = LAYOUT_ansi_91(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -51,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, 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,
MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_91_ansi(
+ [WIN_FN] = LAYOUT_ansi_91(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q11/ansi_encoder/rules.mk b/keyboards/keychron/q11/ansi_encoder/rules.mk
old mode 100644
new mode 100755
index 60d5c6bea2f9..bc11b0af05c0
--- a/keyboards/keychron/q11/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q11/ansi_encoder/rules.mk
@@ -1,6 +1,7 @@
# Build Options
-# change yes to no to disable
-#
EEPROM_DRIVER = wear_leveling
WEAR_LEVELING_DRIVER = embedded_flash
SERIAL_DRIVER = usart
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/keychron/q11/config.h b/keyboards/keychron/q11/config.h
index d2c7ad4a9681..59423182420c 100755
--- a/keyboards/keychron/q11/config.h
+++ b/keyboards/keychron/q11/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron(https://www.keychron.com)
+/* 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
@@ -17,18 +17,24 @@
#pragma once
// Connects each switch in the dip switch to the GPIO pin of the MCU
-#define DIP_SWITCH_PINS \
- { A8 }
+#define DIP_SWITCH_PINS { A8 }
/* handedness */
#define SPLIT_HAND_MATRIX_GRID A2, A15
#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
-
#define MATRIX_MASKED // actual mask is defined by `matrix_mask` in `q11.c`
+// #define SPLIT_WATCHDOG_ENABLE
+// #define EE_HANDS
+// #define MASTER_LEFT
+// #define SPLIT_USB_TIMEOUT 2000
+// #define NO_USB_STARTUP_CHECK
-/* RGB Matrix Driver Configuration */
+/* RGB Matrix Configuration */
#define DRIVER_COUNT 1
#define DRIVER_ADDR_1 0b1110100
+#define DRIVER_1_LED_TOTAL 90
+#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+#define SPLIT_TRANSPORT_MIRROR
/* Increase I2C speed to 1000 KHz */
#define I2C1_TIMINGR_PRESC 0U
@@ -37,6 +43,7 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF } // 300mA
@@ -46,6 +53,8 @@
/* Split Keyboard specific options. */
#define SERIAL_USART_TX_PIN A9 // USART TX pin
+// #define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+// #define SERIAL_USART_RX_PIN A10 // USART RX pin
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
@@ -56,5 +65,56 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+// #define ENABLE_RGB_MATRIX_BAND_SAT
+// #define ENABLE_RGB_MATRIX_BAND_VAL
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// #define ENABLE_RGB_MATRIX_HUE_BREATHING
+// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+// #define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
+// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
#define RGB_MATRIX_KEYPRESSES
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q11/factory.c b/keyboards/keychron/q11/factory.c
new file mode 100644
index 000000000000..0ea8b257e4cb
--- /dev/null
+++ b/keyboards/keychron/q11/factory.c
@@ -0,0 +1,130 @@
+/* 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 "keychron_ft_common.h"
+#include "split_util.h"
+
+static bool skip_next_step = false;
+
+bool process_record_keychron_ft(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+#if defined(FN_KEY1) || defined(FN_KEY2)
+# ifdef FN_KEY1
+ case FN_KEY1: /* fall through */
+# endif
+# ifdef FN_KEY2
+ case FN_KEY2:
+# endif
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_0;
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_0;
+ timer_3s_buffer = 0;
+ }
+ return true;
+#endif
+ case KC_ESC:
+ if (is_transport_connected() || !is_keyboard_left()) {
+ return true;
+ } else {
+ skip_next_step = true;
+ }
+ case KC_EQL:
+ if ((is_transport_connected() || is_keyboard_left()) && !skip_next_step) {
+ return true;
+ } else {
+ skip_next_step = true;
+ }
+ case KC_J:
+ if (!is_transport_connected() && !skip_next_step) {
+ return true;
+ }
+ skip_next_step = false;
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_1;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_1;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case KC_6:
+ if (is_transport_connected() || !is_keyboard_left()) {
+ return true;
+ } else {
+ skip_next_step = true;
+ }
+ case KC_M:
+ if ((is_transport_connected() || is_keyboard_left()) && !skip_next_step) {
+ return true;
+ } else {
+ skip_next_step = true;
+ }
+ case KC_Z:
+ if (!is_transport_connected() && !skip_next_step) {
+ return true;
+ }
+ skip_next_step = false;
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_2;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_2;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case KC_LSFT:
+ case KC_RIGHT:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_3;
+ if (led_test_mode) {
+ if (++led_test_mode >= LED_TEST_MODE_MAX) {
+ led_test_mode = LED_TEST_MODE_WHITE;
+ }
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_3;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case KC_5:
+ case KC_HOME:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_4;
+ if (led_test_mode) {
+ led_test_mode = LED_TEST_MODE_OFF;
+ rgb_matrix_mode_noeeprom(led_state);
+ rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+ led_state = rgb_matrix_get_mode();
+ hsv = rgb_matrix_get_hsv();
+ timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_STEP_4;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/keychron/q11/halconf.h b/keyboards/keychron/q11/halconf.h
index 028285a1f3e1..d9a8508a4725 100755
--- a/keyboards/keychron/q11/halconf.h
+++ b/keyboards/keychron/q11/halconf.h
@@ -19,5 +19,8 @@
#define HAL_USE_I2C TRUE
#define HAL_USE_SERIAL TRUE
#define HAL_USE_ADC TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q11/info.json b/keyboards/keychron/q11/info.json
deleted file mode 100755
index cd2864979d17..000000000000
--- a/keyboards/keychron/q11/info.json
+++ /dev/null
@@ -1,290 +0,0 @@
-{
- "keyboard_name": "Keychron Q11",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "usb": {
- "vid": "0x3434"
- },
- "bootmagic": {
- "matrix": [0, 1]
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "extrakey": true,
- "mousekey": true,
- "encoder": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "matrix_pins": {
- "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "C15", null],
- "rows": ["A13", "A14", "A15", "B3", "B4", "B5"]
- },
- "diode_direction": "ROW2COL",
- "split": {
- "enabled": true,
- "encoder": {
- "right": {
- "rotary": [
- {"pin_a": "C14", "pin_b": "C15"}
- ]
- }
- },
- "matrix_pins": {
- "right": {
- "cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- }
- },
- "transport": {
- "protocol": "serial_usart",
- "sync_matrix_state": true
- },
- "bootmagic": {
- "matrix": [6, 7]
- }
- },
- "encoder": {
- "rotary": [
- {
- "pin_a": "B0",
- "pin_b": "B1"
- }
- ]
- },
- "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
- }
- },
- "layouts": {
- "LAYOUT_91_ansi": {
- "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": [0, 5], "x": 5.25, "y": 0},
- {"matrix": [0, 6], "x": 6.25, "y": 0},
- {"matrix": [0, 7], "x": 7.25, "y": 0},
- {"matrix": [6, 0], "x": 8.25, "y": 0},
- {"matrix": [6, 1], "x": 9.25, "y": 0},
- {"matrix": [6, 2], "x": 10.25, "y": 0},
- {"matrix": [6, 3], "x": 11.25, "y": 0},
- {"matrix": [6, 4], "x": 12.25, "y": 0},
- {"matrix": [6, 5], "x": 13.25, "y": 0},
- {"matrix": [6, 6], "x": 14.25, "y": 0},
- {"matrix": [6, 7], "x": 15.25, "y": 0},
- {"matrix": [6, 8], "x": 16.5, "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": [1, 5], "x": 5.25, "y": 1.25},
- {"matrix": [1, 6], "x": 6.25, "y": 1.25},
- {"matrix": [1, 7], "x": 7.25, "y": 1.25},
- {"matrix": [7, 0], "x": 8.25, "y": 1.25},
- {"matrix": [7, 1], "x": 9.25, "y": 1.25},
- {"matrix": [7, 2], "x": 10.25, "y": 1.25},
- {"matrix": [7, 3], "x": 11.25, "y": 1.25},
- {"matrix": [7, 4], "x": 12.25, "y": 1.25},
- {"matrix": [7, 5], "x": 13.25, "y": 1.25},
- {"matrix": [7, 6], "x": 14.25, "y": 1.25, "w": 2},
- {"matrix": [7, 8], "x": 16.5, "y": 1.25},
-
- {"matrix": [2, 0], "x": 0, "y": 2.25},
- {"matrix": [2, 1], "x": 1.25, "y": 2.25, "w": 1.5},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 6], "x": 5.75, "y": 2.25},
- {"matrix": [2, 7], "x": 6.75, "y": 2.25},
- {"matrix": [8, 0], "x": 7.75, "y": 2.25},
- {"matrix": [8, 1], "x": 8.75, "y": 2.25},
- {"matrix": [8, 2], "x": 9.75, "y": 2.25},
- {"matrix": [8, 3], "x": 10.75, "y": 2.25},
- {"matrix": [8, 4], "x": 11.75, "y": 2.25},
- {"matrix": [8, 5], "x": 12.75, "y": 2.25},
- {"matrix": [8, 6], "x": 13.75, "y": 2.25},
- {"matrix": [8, 7], "x": 14.75, "y": 2.25, "w": 1.5},
- {"matrix": [8, 8], "x": 16.5, "y": 2.25},
-
- {"matrix": [3, 0], "x": 0, "y": 3.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 2], "x": 3, "y": 3.25},
- {"matrix": [3, 3], "x": 4, "y": 3.25},
- {"matrix": [3, 4], "x": 5, "y": 3.25},
- {"matrix": [3, 5], "x": 6, "y": 3.25},
- {"matrix": [3, 6], "x": 7, "y": 3.25},
- {"matrix": [9, 0], "x": 8, "y": 3.25},
- {"matrix": [9, 1], "x": 9, "y": 3.25},
- {"matrix": [9, 2], "x": 10, "y": 3.25},
- {"matrix": [9, 3], "x": 11, "y": 3.25},
- {"matrix": [9, 4], "x": 12, "y": 3.25},
- {"matrix": [9, 5], "x": 13, "y": 3.25},
- {"matrix": [9, 7], "x": 14, "y": 3.25, "w": 2.25},
- {"matrix": [9, 8], "x": 16.5, "y": 3.25},
-
- {"matrix": [4, 0], "x": 0, "y": 4.25},
- {"matrix": [4, 2], "x": 1.25, "y": 4.25, "w": 2.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 4], "x": 4.5, "y": 4.25},
- {"matrix": [4, 5], "x": 5.5, "y": 4.25},
- {"matrix": [4, 6], "x": 6.5, "y": 4.25},
- {"matrix": [4, 7], "x": 7.5, "y": 4.25},
- {"matrix": [10, 0], "x": 8.5, "y": 4.25},
- {"matrix": [10, 1], "x": 9.5, "y": 4.25},
- {"matrix": [10, 2], "x": 10.5, "y": 4.25},
- {"matrix": [10, 3], "x": 11.5, "y": 4.25},
- {"matrix": [10, 4], "x": 12.5, "y": 4.25},
- {"matrix": [10, 5], "x": 13.5, "y": 4.25, "w": 1.75},
- {"matrix": [10, 7], "x": 15.5, "y": 4.25},
-
- {"matrix": [5, 0], "x": 0, "y": 5.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 4], "x": 5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 6.25, "y": 5.25, "w": 2.25},
- {"matrix": [11, 1], "x": 8.5, "y": 5.25, "w": 2.75},
- {"matrix": [11, 2], "x": 11.25, "y": 5.25},
- {"matrix": [11, 3], "x": 12.25, "y": 5.25},
- {"matrix": [11, 4], "x": 13.25, "y": 5.25},
- {"matrix": [11, 6], "x": 14.5, "y": 5.25},
- {"matrix": [11, 7], "x": 15.5, "y": 5.25},
- {"matrix": [11, 8], "x": 16.5, "y": 5.25}
- ]
- },
- "LAYOUT_92_iso": {
- "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":[0,5], "x":5.25, "y":0 },
- {"matrix":[0,6], "x":6.25, "y":0 },
- {"matrix":[0,7], "x":7.25, "y":0 },
- {"matrix":[6,0], "x":9, "y":0 },
- {"matrix":[6,1], "x":10, "y":0 },
- {"matrix":[6,2], "x":11, "y":0 },
- {"matrix":[6,3], "x":12, "y":0 },
- {"matrix":[6,4], "x":13, "y":0 },
- {"matrix":[6,5], "x":14, "y":0 },
- {"matrix":[6,6], "x":15, "y":0 },
- {"matrix":[6,7], "x":16, "y":0 },
- {"matrix":[6,8], "x":17.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":[1,5], "x":5.25, "y":1.25 },
- {"matrix":[1,6], "x":6.25, "y":1.25 },
- {"matrix":[1,7], "x":7.25, "y":1.25 },
- {"matrix":[7,0], "x":9, "y":1.25 },
- {"matrix":[7,1], "x":10, "y":1.25 },
- {"matrix":[7,2], "x":11, "y":1.25 },
- {"matrix":[7,3], "x":12, "y":1.25 },
- {"matrix":[7,4], "x":13, "y":1.25 },
- {"matrix":[7,5], "x":14, "y":1.25 },
- {"matrix":[7,6], "x":15, "y":1.25, "w":2 },
- {"matrix":[7,8], "x":17.25, "y":1.25 },
-
- {"matrix":[2,0], "x":0, "y":2.25 },
- {"matrix":[2,1], "x":1.25, "y":2.25, "w":1.5 },
- {"matrix":[2,2], "x":2.75, "y":2.25 },
- {"matrix":[2,3], "x":3.75, "y":2.25 },
- {"matrix":[2,4], "x":4.75, "y":2.25 },
- {"matrix":[2,6], "x":5.75, "y":2.25 },
- {"matrix":[2,7], "x":6.75, "y":2.25 },
- {"matrix":[8,0], "x":8.5, "y":2.25 },
- {"matrix":[8,1], "x":9.5, "y":2.25 },
- {"matrix":[8,2], "x":10.5, "y":2.25 },
- {"matrix":[8,3], "x":11.5, "y":2.25 },
- {"matrix":[8,4], "x":12.5, "y":2.25 },
- {"matrix":[8,5], "x":13.5, "y":2.25 },
- {"matrix":[8,6], "x":14.5, "y":2.25 },
- {"matrix":[8,8], "x":17.25, "y":2.25 },
-
- {"matrix":[3,0], "x":0, "y":3.25 },
- {"matrix":[3,1], "x":1.25, "y":3.25, "w":1.75 },
- {"matrix":[3,2], "x":3, "y":3.25 },
- {"matrix":[3,3], "x":4, "y":3.25 },
- {"matrix":[3,4], "x":5, "y":3.25 },
- {"matrix":[3,5], "x":6, "y":3.25 },
- {"matrix":[3,6], "x":7, "y":3.25 },
- {"matrix":[9,0], "x":8.75, "y":3.25 },
- {"matrix":[9,1], "x":9.75, "y":3.25 },
- {"matrix":[9,2], "x":10.75, "y":3.25 },
- {"matrix":[9,3], "x":11.75, "y":3.25 },
- {"matrix":[9,4], "x":12.75, "y":3.25 },
- {"matrix":[9,5], "x":13.75, "y":3.25 },
- {"matrix":[9,7], "x":14.75, "y":3.25 },
- {"matrix":[8,7], "x":15.75, "y":2.25, "w":1.25, "h":2 },
- {"matrix":[9,8], "x":17.25, "y":3.25 },
-
- {"matrix":[4,0], "x":0, "y":4.25 },
- {"matrix":[4,1], "x":1.25, "y":4.25, "w":1.25 },
- {"matrix":[4,2], "x":2.5, "y":4.25 },
- {"matrix":[4,3], "x":3.5, "y":4.25 },
- {"matrix":[4,4], "x":4.5, "y":4.25 },
- {"matrix":[4,5], "x":5.5, "y":4.25 },
- {"matrix":[4,6], "x":6.5, "y":4.25 },
- {"matrix":[4,7], "x":7.5, "y":4.25 },
- {"matrix":[10,0], "x":9.25, "y":4.25 },
- {"matrix":[10,1], "x":10.25, "y":4.25 },
- {"matrix":[10,2], "x":11.25, "y":4.25 },
- {"matrix":[10,3], "x":12.25, "y":4.25 },
- {"matrix":[10,4], "x":13.25, "y":4.25 },
- {"matrix":[10,5], "x":14.25, "y":4.25, "w":1.75 },
- {"matrix":[10,7], "x":16.25, "y":4.25 },
-
- {"matrix":[5,0], "x":0, "y":5.25 },
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25 },
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25 },
- {"matrix":[5,3], "x":3.75, "y":5.25, "w":1.25 },
- {"matrix":[5,4], "x":5, "y":5.25, "w":1.25 },
- {"matrix":[5,6], "x":6.25, "y":5.25, "w":2.25 },
- {"matrix":[11,1], "x":9.25, "y":5.25, "w":2.75 },
- {"matrix":[11,2], "x":12, "y":5.25 },
- {"matrix":[11,3], "x":13, "y":5.25 },
- {"matrix":[11,4], "x":14, "y":5.25 },
- {"matrix":[11,6], "x":15.25, "y":5.25 },
- {"matrix":[11,7], "x":16.25, "y":5.25 },
- {"matrix":[11,8], "x":17.25, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q11/iso_encoder/config.h b/keyboards/keychron/q11/iso_encoder/config.h
index 57baea4c694b..08632f0ce726 100755
--- a/keyboards/keychron/q11/iso_encoder/config.h
+++ b/keyboards/keychron/q11/iso_encoder/config.h
@@ -16,8 +16,5 @@
#pragma once
-/* RGB Matrix Configuration */
-#define RGB_MATRIX_LED_COUNT 90
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 23
diff --git a/keyboards/keychron/q11/iso_encoder/info.json b/keyboards/keychron/q11/iso_encoder/info.json
index 0529ccb29169..e6954978eee1 100755
--- a/keyboards/keychron/q11/iso_encoder/info.json
+++ b/keyboards/keychron/q11/iso_encoder/info.json
@@ -1,106 +1,167 @@
{
+ "keyboard_name": "Keychron Q11",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "bootloader": "stm32-dfu",
+ "bootmagic": {
+ "matrix": [0, 1]
+ },
+ "features": {
+ "audio": false,
+ "backlight": false,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "rgblight": false
+ },
+ "diode_direction": "ROW2COL",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "B0", "pin_b": "B1"}
+ ]
+ },
+ "matrix_pins": {
+ "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "C15", null],
+ "rows": ["A13", "A14", "A15", "B3", "B4", "B5"]
+ },
+ "processor": "STM32L432",
+ "rgb_matrix": {
+ "driver": "CKLED2001",
+ "split_count": [43, 47]
+ },
+ "split": {
+ "enabled": true,
+ "encoder": {
+ "right": {
+ "rotary": [
+ {"pin_a": "C14", "pin_b": "C15"}
+ ]
+ }
+ },
+ "matrix_pins": {
+ "right": {
+ "cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ }
+ },
+ "transport": {
+ "protocol": "serial_usart",
+ "sync_matrix_state": false
+ }
+ },
"usb": {
+ "vid": "0x3434",
"pid": "0x01E1",
"device_version": "1.0.0"
},
- "rgb_matrix": {
- "split_count": [43, 47],
- "layout": [
- {"matrix":[0, 1], "flags":1, "x":17, "y":0},
- {"matrix":[0, 2], "flags":1, "x":31, "y":0},
- {"matrix":[0, 3], "flags":1, "x":45, "y":0},
- {"matrix":[0, 4], "flags":1, "x":59, "y":0},
- {"matrix":[0, 5], "flags":1, "x":72, "y":0},
- {"matrix":[0, 6], "flags":1, "x":86, "y":0},
- {"matrix":[0, 7], "flags":1, "x":100, "y":0},
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":1, "x":17, "y":15},
- {"matrix":[1, 2], "flags":4, "x":31, "y":15},
- {"matrix":[1, 3], "flags":4, "x":45, "y":15},
- {"matrix":[1, 4], "flags":4, "x":59, "y":15},
- {"matrix":[1, 5], "flags":4, "x":72, "y":15},
- {"matrix":[1, 6], "flags":4, "x":86, "y":15},
- {"matrix":[1, 7], "flags":4, "x":100, "y":15},
+ "layouts": {
+ "LAYOUT_iso_92": {
+ "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":[0,5], "x":5.25, "y":0 },
+ {"matrix":[0,6], "x":6.25, "y":0 },
+ {"matrix":[0,7], "x":7.25, "y":0 },
+ {"matrix":[6,0], "x":9, "y":0 },
+ {"matrix":[6,1], "x":10, "y":0 },
+ {"matrix":[6,2], "x":11, "y":0 },
+ {"matrix":[6,3], "x":12, "y":0 },
+ {"matrix":[6,4], "x":13, "y":0 },
+ {"matrix":[6,5], "x":14, "y":0 },
+ {"matrix":[6,6], "x":15, "y":0 },
+ {"matrix":[6,7], "x":16, "y":0 },
+ {"matrix":[6,8], "x":17.25, "y":0 },
- {"matrix":[2, 0], "flags":1, "x":0, "y":27},
- {"matrix":[2, 1], "flags":1, "x":21, "y":27},
- {"matrix":[2, 2], "flags":4, "x":38, "y":27},
- {"matrix":[2, 3], "flags":4, "x":52, "y":27},
- {"matrix":[2, 4], "flags":4, "x":66, "y":27},
- {"matrix":[2, 6], "flags":4, "x":79, "y":27},
- {"matrix":[2, 7], "flags":4, "x":93, "y":27},
- {"matrix":[3, 0], "flags":1, "x":0, "y":40},
- {"matrix":[3, 1], "flags":8, "x":22, "y":40},
- {"matrix":[3, 2], "flags":4, "x":41, "y":40},
- {"matrix":[3, 3], "flags":4, "x":55, "y":40},
- {"matrix":[3, 4], "flags":4, "x":69, "y":40},
- {"matrix":[3, 5], "flags":4, "x":83, "y":40},
- {"matrix":[3, 6], "flags":4, "x":97, "y":40},
+ {"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":[1,5], "x":5.25, "y":1.25 },
+ {"matrix":[1,6], "x":6.25, "y":1.25 },
+ {"matrix":[1,7], "x":7.25, "y":1.25 },
+ {"matrix":[7,0], "x":9, "y":1.25 },
+ {"matrix":[7,1], "x":10, "y":1.25 },
+ {"matrix":[7,2], "x":11, "y":1.25 },
+ {"matrix":[7,3], "x":12, "y":1.25 },
+ {"matrix":[7,4], "x":13, "y":1.25 },
+ {"matrix":[7,5], "x":14, "y":1.25 },
+ {"matrix":[7,6], "x":15, "y":1.25, "w":2 },
+ {"matrix":[7,8], "x":17.25, "y":1.25 },
- {"matrix":[4, 0], "flags":1, "x":0, "y":52},
- {"matrix":[4, 1], "flags":1, "x":19, "y":52},
- {"matrix":[4, 2], "flags":1, "x":34, "y":52},
- {"matrix":[4, 3], "flags":4, "x":48, "y":52},
- {"matrix":[4, 4], "flags":4, "x":62, "y":52},
- {"matrix":[4, 5], "flags":4, "x":76, "y":52},
- {"matrix":[4, 6], "flags":4, "x":90, "y":52},
- {"matrix":[4, 7], "flags":4, "x":103, "y":52},
- {"matrix":[5, 0], "flags":1, "x":0, "y":64},
- {"matrix":[5, 1], "flags":1, "x":19, "y":64},
- {"matrix":[5, 2], "flags":1, "x":36, "y":64},
- {"matrix":[5, 3], "flags":1, "x":53, "y":64},
- {"matrix":[5, 4], "flags":1, "x":71, "y":64},
- {"matrix":[5, 6], "flags":4, "x":95, "y":64},
+ {"matrix":[2,0], "x":0, "y":2.25 },
+ {"matrix":[2,1], "x":1.25, "y":2.25, "w":1.5 },
+ {"matrix":[2,2], "x":2.75, "y":2.25 },
+ {"matrix":[2,3], "x":3.75, "y":2.25 },
+ {"matrix":[2,4], "x":4.75, "y":2.25 },
+ {"matrix":[2,6], "x":5.75, "y":2.25 },
+ {"matrix":[2,7], "x":6.75, "y":2.25 },
+ {"matrix":[8,0], "x":8.5, "y":2.25 },
+ {"matrix":[8,1], "x":9.5, "y":2.25 },
+ {"matrix":[8,2], "x":10.5, "y":2.25 },
+ {"matrix":[8,3], "x":11.5, "y":2.25 },
+ {"matrix":[8,4], "x":12.5, "y":2.25 },
+ {"matrix":[8,5], "x":13.5, "y":2.25 },
+ {"matrix":[8,6], "x":14.5, "y":2.25 },
+ {"matrix":[8,8], "x":17.25, "y":2.25 },
- {"matrix":[6, 0], "flags":1, "x":110, "y":0},
- {"matrix":[6, 1], "flags":1, "x":124, "y":0},
- {"matrix":[6, 2], "flags":1, "x":138, "y":0},
- {"matrix":[6, 3], "flags":1, "x":152, "y":0},
- {"matrix":[6, 4], "flags":1, "x":165, "y":0},
- {"matrix":[6, 5], "flags":1, "x":179, "y":0},
- {"matrix":[6, 6], "flags":1, "x":193, "y":0},
- {"matrix":[6, 7], "flags":1, "x":207, "y":0},
- {"matrix":[7, 0], "flags":4, "x":110, "y":15},
- {"matrix":[7, 1], "flags":4, "x":124, "y":15},
- {"matrix":[7, 2], "flags":4, "x":138, "y":15},
- {"matrix":[7, 3], "flags":4, "x":152, "y":15},
- {"matrix":[7, 4], "flags":4, "x":165, "y":15},
- {"matrix":[7, 5], "flags":4, "x":179, "y":15},
- {"matrix":[7, 6], "flags":1, "x":200, "y":15},
- {"matrix":[7, 8], "flags":1, "x":224, "y":15},
+ {"matrix":[3,0], "x":0, "y":3.25 },
+ {"matrix":[3,1], "x":1.25, "y":3.25, "w":1.75 },
+ {"matrix":[3,2], "x":3, "y":3.25 },
+ {"matrix":[3,3], "x":4, "y":3.25 },
+ {"matrix":[3,4], "x":5, "y":3.25 },
+ {"matrix":[3,5], "x":6, "y":3.25 },
+ {"matrix":[3,6], "x":7, "y":3.25 },
+ {"matrix":[9,0], "x":8.75, "y":3.25 },
+ {"matrix":[9,1], "x":9.75, "y":3.25 },
+ {"matrix":[9,2], "x":10.75, "y":3.25 },
+ {"matrix":[9,3], "x":11.75, "y":3.25 },
+ {"matrix":[9,4], "x":12.75, "y":3.25 },
+ {"matrix":[9,5], "x":13.75, "y":3.25 },
+ {"matrix":[9,7], "x":14.75, "y":3.25 },
+ {"matrix":[8,7], "x":15.75, "y":2.25, "w":1.25, "h":2 },
+ {"matrix":[9,8], "x":17.25, "y":3.25 },
- {"matrix":[8, 0], "flags":4, "x":103, "y":27},
- {"matrix":[8, 1], "flags":4, "x":117, "y":27},
- {"matrix":[8, 2], "flags":4, "x":131, "y":27},
- {"matrix":[8, 3], "flags":4, "x":145, "y":27},
- {"matrix":[8, 4], "flags":4, "x":158, "y":27},
- {"matrix":[8, 5], "flags":4, "x":172, "y":27},
- {"matrix":[8, 6], "flags":4, "x":186, "y":27},
- {"matrix":[8, 8], "flags":1, "x":224, "y":27},
- {"matrix":[9, 0], "flags":4, "x":107, "y":40},
- {"matrix":[9, 1], "flags":4, "x":121, "y":40},
- {"matrix":[9, 2], "flags":4, "x":134, "y":40},
- {"matrix":[9, 3], "flags":4, "x":148, "y":40},
- {"matrix":[9, 4], "flags":4, "x":162, "y":40},
- {"matrix":[9, 5], "flags":4, "x":176, "y":40},
- {"matrix":[9, 7], "flags":1, "x":190, "y":40},
- {"matrix":[8, 7], "flags":1, "x":208, "y":36},
- {"matrix":[9, 8], "flags":1, "x":224, "y":40},
+ {"matrix":[4,0], "x":0, "y":4.25 },
+ {"matrix":[4,1], "x":1.25, "y":4.25, "w":1.25 },
+ {"matrix":[4,2], "x":2.5, "y":4.25 },
+ {"matrix":[4,3], "x":3.5, "y":4.25 },
+ {"matrix":[4,4], "x":4.5, "y":4.25 },
+ {"matrix":[4,5], "x":5.5, "y":4.25 },
+ {"matrix":[4,6], "x":6.5, "y":4.25 },
+ {"matrix":[4,7], "x":7.5, "y":4.25 },
+ {"matrix":[10,0], "x":9.25, "y":4.25 },
+ {"matrix":[10,1], "x":10.25, "y":4.25 },
+ {"matrix":[10,2], "x":11.25, "y":4.25 },
+ {"matrix":[10,3], "x":12.25, "y":4.25 },
+ {"matrix":[10,4], "x":13.25, "y":4.25 },
+ {"matrix":[10,5], "x":14.25, "y":4.25, "w":1.75 },
+ {"matrix":[10,7], "x":16.25, "y":4.25 },
- {"matrix":[10, 0], "flags":4, "x":114, "y":52},
- {"matrix":[10, 1], "flags":4, "x":127, "y":52},
- {"matrix":[10, 2], "flags":4, "x":141, "y":52},
- {"matrix":[10, 3], "flags":4, "x":155, "y":52},
- {"matrix":[10, 4], "flags":4, "x":169, "y":52},
- {"matrix":[10, 5], "flags":1, "x":188, "y":52},
- {"matrix":[10, 7], "flags":1, "x":210, "y":52},
- {"matrix":[11, 1], "flags":4, "x":126, "y":64},
- {"matrix":[11, 2], "flags":1, "x":152, "y":64},
- {"matrix":[11, 3], "flags":1, "x":166, "y":64},
- {"matrix":[11, 4], "flags":1, "x":180, "y":64},
- {"matrix":[11, 6], "flags":1, "x":196, "y":64},
- {"matrix":[11, 7], "flags":1, "x":210, "y":64},
- {"matrix":[11, 8], "flags":1, "x":224, "y":64}
- ]
+ {"matrix":[5,0], "x":0, "y":5.25 },
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25 },
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25 },
+ {"matrix":[5,3], "x":3.75, "y":5.25, "w":1.25 },
+ {"matrix":[5,4], "x":5, "y":5.25, "w":1.25 },
+ {"matrix":[5,6], "x":6.25, "y":5.25, "w":2.25 },
+ {"matrix":[11,1], "x":9.25, "y":5.25, "w":2.75 },
+ {"matrix":[11,2], "x":12, "y":5.25 },
+ {"matrix":[11,3], "x":13, "y":5.25 },
+ {"matrix":[11,4], "x":14, "y":5.25 },
+ {"matrix":[11,6], "x":15.25, "y":5.25 },
+ {"matrix":[11,7], "x":16.25, "y":5.25 },
+ {"matrix":[11,8], "x":17.25, "y":5.25}
+ ]
+ }
}
}
diff --git a/keyboards/keychron/q11/iso_encoder/iso_encoder.c b/keyboards/keychron/q11/iso_encoder/iso_encoder.c
index 08858d9b7922..8cff7d555582 100755
--- a/keyboards/keychron/q11/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q11/iso_encoder/iso_encoder.c
@@ -16,7 +16,9 @@
#include "quantum.h"
+// clang-format off
#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -126,4 +128,56 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, G_1, I_1, H_1}, // Down
{0, G_7, I_7, H_7}, // Right
};
+
+#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, 11, 12, 13, 14, __ },
+ { 15, 16, 17, 18, 19, __, 20, 21, __ },
+ { 22, 23, 24, 25, 26, 27, 28, __, __ },
+ { 29, 30, 31, 32, 33, 34, 35, 36, __ },
+ { 37, 38, 39, 40, 41, __, 42, __, __ },
+
+ { 43, 44, 45, 46, 47, 48, 49, 50, __ },
+ { 51, 52, 53, 54, 55, 56, 57, __, 58 },
+ { 59, 60, 61, 62, 63, 64, 65, 74, 66 },
+ { 67, 68, 69, 70, 71, 72, __, 73, 75 },
+ { 76, 77, 78, 79, 80, 81, __, 82, __ },
+ { __, 83, 84, 85, 86, __, 87, 88, 89 },
+ },
+ {
+ // LED Index to Physical Position
+ {17,0}, {31,0}, {45,0}, {59,0}, {72,0}, {86,0}, {100,0},
+ {0,15}, {17,15}, {31,15}, {45,15}, {59,15}, {72,15}, {86,15}, {100,15},
+ {0,27}, {21,27}, {38,27}, {52,27}, {66,27}, {79,27}, {93,27},
+ {0,40}, {22,40}, {41,40}, {55,40}, {69,40}, {83,40}, {97,40},
+ {0,52}, {19,52}, {34,52}, {48,52}, {62,52}, {76,52}, {90,52}, {103,52},
+ {0,64}, {19,64}, {36,64}, {53,64}, {71,64}, {95,64},
+ {110,0}, {124,0}, {138,0}, {152,0}, {165,0}, {179,0}, {193,0}, {207,0},
+ {110,15}, {124,15}, {138,15}, {152,15}, {165,15}, {179,15}, {200,15}, {224,15},
+ {103,27}, {117,27}, {131,27}, {145,27}, {158,27}, {172,27}, {186,27}, {224,27},
+ {107,40}, {121,40}, {134,40}, {148,40}, {162,40}, {176,40}, {190,40}, {208,36}, {224,40},
+ {114,52}, {127,52}, {141,52}, {155,52}, {169,52}, {188,52}, {210,52},
+ {126,64}, {152,64}, {166,64}, {180,64}, {196,64}, {210,64}, {224,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1,
+ 4, 1, 4, 4, 4, 4, 4, 4,
+ 4, 1, 4, 4, 4, 4, 4,
+ 4, 8, 4, 4, 4, 4, 4,
+ 4, 1, 4, 4, 4, 4, 4, 4,
+ 4, 1, 1, 1, 4, 4,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 1, 1,
+ 4, 1, 4, 1, 1, 1, 1,
+ }
+};
+
#endif
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q11/iso_encoder/keymaps/default/keymap.c
index 2c494c08d524..bf526a1e87bc 100755
--- a/keyboards/keychron/q11/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/default/keymap.c
@@ -15,18 +15,20 @@
*/
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN,
+ WIN_FN
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_92_iso(
+ [MAC_BASE] = LAYOUT_iso_92(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
@@ -34,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_LSFT, KC_NUBS, 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_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_92_iso(
+ [MAC_FN] = LAYOUT_iso_92(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -42,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_92_iso(
+ [WIN_BASE] = LAYOUT_iso_92(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
@@ -50,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_LSFT, KC_NUBS, 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_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_92_iso(
+ [WIN_FN] = LAYOUT_iso_92(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -60,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q11/iso_encoder/keymaps/keychron/keymap.c
index 8269bf1a8800..e6c1c04fa28f 100755
--- a/keyboards/keychron/q11/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,16 +16,19 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN,
+ WIN_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_92_iso(
+ [MAC_BASE] = LAYOUT_iso_92(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -33,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_92_iso(
+ [MAC_FN] = LAYOUT_iso_92(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -41,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_92_iso(
+ [WIN_BASE] = LAYOUT_iso_92(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -49,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_92_iso(
+ [WIN_FN] = LAYOUT_iso_92(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -59,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_DIRECTIONS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -71,6 +74,7 @@ const uint16_t PROGMEM encoder_map[][NUM_DIRECTIONS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -78,5 +82,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q11/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..e420400d17a9 100755
--- a/keyboards/keychron/q11/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c factory.c
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q11/iso_encoder/keymaps/via/keymap.c
index 8e969a8f815c..e1f579f0fa6f 100755
--- a/keyboards/keychron/q11/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,18 +16,20 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN,
+ WIN_FN
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_92_iso(
+ [MAC_BASE] = LAYOUT_iso_92(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -35,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_92_iso(
+ [MAC_FN] = LAYOUT_iso_92(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_92_iso(
+ [WIN_BASE] = LAYOUT_iso_92(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -51,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_92_iso(
+ [WIN_FN] = LAYOUT_iso_92(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q11/iso_encoder/rules.mk b/keyboards/keychron/q11/iso_encoder/rules.mk
index ac78b227d602..bc11b0af05c0 100755
--- a/keyboards/keychron/q11/iso_encoder/rules.mk
+++ b/keyboards/keychron/q11/iso_encoder/rules.mk
@@ -1,4 +1,7 @@
+# Build Options
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
+SERIAL_DRIVER = usart
+
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
-
-SERIAL_DRIVER = usart
diff --git a/keyboards/keychron/q11/q11.c b/keyboards/keychron/q11/q11.c
index bf7bab4b5397..abb5e64cc635 100755
--- a/keyboards/keychron/q11/q11.c
+++ b/keyboards/keychron/q11/q11.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -20,6 +20,7 @@
// from keeping the keyboard awake
// - just mirroring `KC_NO` in the `LAYOUT`
// macro to keep it simple
+// clang-format off
const matrix_row_t matrix_mask[] = {
0b011111111,
0b011111111,
@@ -47,60 +48,6 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
#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 defined(CAPS_LOCK_LED_INDEX)
- 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);
- }
- }
-# endif // CAPS_LOCK_LED_INDEX
-# if defined(NUM_LOCK_LED_INDEX)
- if (host_keyboard_led_state().num_lock) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
- } else {
- if (!rgb_matrix_get_flags()) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
- }
- }
-# endif // NUM_LOCK_LED_INDEX
- return true;
-}
-#endif
-
#define ADC_BUFFER_DEPTH 1
#define ADC_NUM_CHANNELS 1
#define ADC_SAMPLING_RATE ADC_SMPR_SMP_12P5
@@ -139,15 +86,24 @@ static int16_t analogReadPin_my(pin_t pin) {
return *sampleBuffer;
}
+#if defined(ENCODER_ENABLE) && defined(PAL_USE_CALLBACKS)
+static void encoder_pad_cb(void *param) {
+ encoder_inerrupt_read((uint32_t)param & 0XFF);
+}
+#endif
+
void keyboard_post_init_kb(void) {
- // 1. The pin A5/B5 of the USB C interface in the left hand is connected to the pin A0 of MCU,
- // A0 will be set to output and write high when keyboard initial.
- // 2. The same pin in the right hand is connected to the pin B0 and B1 of MCU respectively,
- // and the ADC function of B0 and B1 will be enabled when keyboard initial.
- // 3. because the serial usart RXD and TXD is multiplexed on USB's D+ and D- in the right hand.
- // So detect the voltage on the pin A5/B5 of the USB C interface by ADC,
- // and disable USB connectivity when the ADC value exceeds 1000,
- // to avoid affecting the serial usart communication between the left hand and the right hand.
+#if defined(ENCODER_ENABLE) && defined(PAL_USE_CALLBACKS)
+
+ pin_t encoders_pad_a[NUM_ENCODERS] = ENCODERS_PAD_A;
+ pin_t encoders_pad_b[NUM_ENCODERS] = ENCODERS_PAD_B;
+ for (uint32_t i = 0; i < NUM_ENCODERS; i++) {
+ palEnableLineEvent(encoders_pad_a[i], PAL_EVENT_MODE_BOTH_EDGES);
+ palEnableLineEvent(encoders_pad_b[i], PAL_EVENT_MODE_BOTH_EDGES);
+ palSetLineCallback(encoders_pad_a[i], encoder_pad_cb, (void *)i);
+ palSetLineCallback(encoders_pad_b[i], encoder_pad_cb, (void *)i);
+ }
+#endif
if (is_keyboard_left()) {
setPinOutput(A0);
writePinHigh(A0);
@@ -158,5 +114,6 @@ void keyboard_post_init_kb(void) {
}
}
+ // allow user keymaps to do custom post_init
keyboard_post_init_user();
}
diff --git a/keyboards/keychron/q11/readme.md b/keyboards/keychron/q11/readme.md
index e6ed2afb7508..6d6744fa8d7b 100644
--- a/keyboards/keychron/q11/readme.md
+++ b/keyboards/keychron/q11/readme.md
@@ -1,6 +1,6 @@
# Keychron Q11
-![Keychron Q11](https://i.imgur.com/FPTNqKj.jpg)
+![Keychron Q11](https://i.imgur.com/fRZPpJN.jpg)
A customizable 75% split keyboard.
@@ -18,6 +18,6 @@ Flashing example for this keyboard:
make keychron/q11/ansi_encoder:default:flash
make keychron/q11/iso_encoder:default:flash
-**Reset Key**: The master and slave side should be flashed individually, to enter flashing mode, hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard for the master side and hold down the key located at *K67*, which programmed as *Del* while plugging in the keyboard for the slave side.
+**Reset Key**: Hold down the key located at *K01*, which programmed as *Esc* 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).
diff --git a/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
index 2cfaeae8fc97..c701c74527db 100644
--- a/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
@@ -15,125 +15,125 @@
*/
#include "quantum.h"
+#include "keychron_common.h"
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- // {0, I_1, G_1, H_1}
- {0, I_2, G_2, H_2}, // F13
- {0, I_3, G_3, H_3}, // F14
- {0, I_4, G_4, H_4}, // F15
- {0, I_5, G_5, H_5}, // Esc
- {0, I_6, G_6, H_6}, // F1
- {0, I_7, G_7, H_7}, // F2
- {0, I_8, G_8, H_8}, // F3
- {0, I_9, G_9, H_9}, // F4
- {0, I_10, G_10, H_10}, // F5
- {0, I_11, G_11, H_11}, // F6
- {0, I_12, G_12, H_12}, // F7
- {0, I_13, G_13, H_13}, // F8
- {0, I_14, G_14, H_14}, // F9
- {0, I_15, G_15, H_15}, // F10
- {0, I_16, G_16, H_16}, // F11
- {0, L_16, J_16, K_16}, // F12
- {0, L_15, J_15, K_15}, // DEL
- {0, L_14, J_14, K_14}, // Light
+ * | | G location
+ * | | | B location
+ * | | | | */
+ // {0, I_1, G_1, H_1}
+ {0, I_2, G_2, H_2}, // F13
+ {0, I_3, G_3, H_3}, // F14
+ {0, I_4, G_4, H_4}, // F15
+ {0, I_5, G_5, H_5}, // Esc
+ {0, I_6, G_6, H_6}, // F1
+ {0, I_7, G_7, H_7}, // F2
+ {0, I_8, G_8, H_8}, // F3
+ {0, I_9, G_9, H_9}, // F4
+ {0, I_10, G_10, H_10}, // F5
+ {0, I_11, G_11, H_11}, // F6
+ {0, I_12, G_12, H_12}, // F7
+ {0, I_13, G_13, H_13}, // F8
+ {0, I_14, G_14, H_14}, // F9
+ {0, I_15, G_15, H_15}, // F10
+ {0, I_16, G_16, H_16}, // F11
+ {0, L_16, J_16, K_16}, // F12
+ {0, L_15, J_15, K_15}, // DEL
+ {0, L_14, J_14, K_14}, // Light
+ {0, C_1, A_1, B_1}, // num_lock
+ {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, C_6, A_6, B_6}, // 1!
+ {0, C_7, A_7, B_7}, // 2@
+ {0, C_8, A_8, B_8}, // 3#
+ {0, C_9, A_9, B_9}, // 4$
+ {0, C_10, A_10, B_10}, // 5%
+ {0, C_11, A_11, B_11}, // 6^
+ {0, C_12, A_12, B_12}, // 7&
+ {0, C_13, A_13, B_13}, // 8*
+ {0, C_14, A_14, B_14}, // 9(
+ {0, C_15, A_15, B_15}, // 0)
+ {0, C_16, A_16, B_16}, // -_
+ {0, L_13, J_13, K_13}, // =+
+ {0, L_12, J_12, K_12}, // BackSpace
+ {0, L_11, J_11, K_11}, // PgUp
- {0, C_1, A_1, B_1}, // num_lock
- {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, C_6, A_6, B_6}, // 1!
- {0, C_7, A_7, B_7}, // 2@
- {0, C_8, A_8, B_8}, // 3#
- {0, C_9, A_9, B_9}, // 4$
- {0, C_10, A_10, B_10}, // 5%
- {0, C_11, A_11, B_11}, // 6^
- {0, C_12, A_12, B_12}, // 7&
- {0, C_13, A_13, B_13}, // 8*
- {0, C_14, A_14, B_14}, // 9(
- {0, C_15, A_15, B_15}, // 0)
- {0, C_16, A_16, B_16}, // -_
- {0, L_13, J_13, K_13}, // =+
- {0, L_12, J_12, K_12}, // BackSpace
- {0, L_11, J_11, K_11}, // PgUp
+ {0, F_1, D_1, E_1}, // 7
+ {0, F_2, D_2, E_2}, // 8
+ {0, F_3, D_3, E_3}, // 9
+ {0, F_4, D_4, E_4}, // +
+ {0, F_5, D_5, E_5}, // TAB
+ {0, F_6, D_6, E_6}, // Q
+ {0, F_7, D_7, E_7}, // W
+ {0, F_8, D_8, E_8}, // E
+ {0, F_9, D_9, E_9}, // R
+ {0, F_10, D_10, E_10}, // T
+ {0, F_11, D_11, E_11}, // Y
+ {0, F_12, D_12, E_12}, // U
+ {0, F_13, D_13, E_13}, // I
+ {0, F_14, D_14, E_14}, // O
+ {0, F_15, D_15, E_15}, // P
+ {0, F_16, D_16, E_16}, // [
+ {0, L_10, J_10, K_10}, // ]
+ {0, L_9, J_9, K_9}, // \|
+ {0, L_8, J_8, K_8}, // PgDn
- {0, F_1, D_1, E_1}, // 7
- {0, F_2, D_2, E_2}, // 8
- {0, F_3, D_3, E_3}, // 9
- {0, F_4, D_4, E_4}, // +
- {0, F_5, D_5, E_5}, // TAB
- {0, F_6, D_6, E_6}, // Q
- {0, F_7, D_7, E_7}, // W
- {0, F_8, D_8, E_8}, // E
- {0, F_9, D_9, E_9}, // R
- {0, F_10, D_10, E_10}, // T
- {0, F_11, D_11, E_11}, // Y
- {0, F_12, D_12, E_12}, // U
- {0, F_13, D_13, E_13}, // I
- {0, F_14, D_14, E_14}, // O
- {0, F_15, D_15, E_15}, // P
- {0, F_16, D_16, E_16}, // [
- {0, L_10, J_10, K_10}, // ]
- {0, L_9, J_9, K_9}, // \|
- {0, L_8, J_8, K_8}, // PgDn
-
- {1, C_16, A_16, B_16}, // 4
- {1, C_15, A_15, B_15}, // 5
- {1, C_14, A_14, B_14}, // 6
+ {1, C_16, A_16, B_16}, // 4
+ {1, C_15, A_15, B_15}, // 5
+ {1, C_14, A_14, B_14}, // 6
// {0, F_4, D_4, E_4}, // +
- {1, C_12, A_12, B_12}, // CapsLock
- {1, C_11, A_11, B_11}, // A
- {1, C_10, A_10, B_10}, // S
- {1, C_9, A_9, B_9}, // D
- {1, C_8, A_8, B_8}, // F
- {1, C_7, A_7, B_7}, // G
- {1, C_6, A_6, B_6}, // H
- {1, C_5, A_5, B_5}, // J
- {1, C_4, A_4, B_4}, // k
- {1, C_3, A_3, B_3}, // l
- {1, C_2, A_2, B_2}, // ;
- {1, C_1, A_1, B_1}, // '
- {1, L_1, J_1, K_1}, // Enter
- {1, L_2, J_2, K_2}, // Home
+ {1, C_12, A_12, B_12}, // CapsLock
+ {1, C_11, A_11, B_11}, // A
+ {1, C_10, A_10, B_10}, // S
+ {1, C_9, A_9, B_9}, // D
+ {1, C_8, A_8, B_8}, // F
+ {1, C_7, A_7, B_7}, // G
+ {1, C_6, A_6, B_6}, // H
+ {1, C_5, A_5, B_5}, // J
+ {1, C_4, A_4, B_4}, // k
+ {1, C_3, A_3, B_3}, // l
+ {1, C_2, A_2, B_2}, // ;
+ {1, C_1, A_1, B_1}, // '
+ {1, L_1, J_1, K_1}, // Enter
+ {1, L_2, J_2, K_2}, // Home
- {1, I_16, G_16, H_16}, // 1
- {1, I_15, G_15, H_15}, // 2
- {1, I_14, G_14, H_14}, // 3
- {1, I_13, G_13, H_13}, // Enter
- {1, I_12, G_12, H_12}, //Shift_L
- {1, I_10, G_10, H_10}, // Z
- {1, I_9, G_9, H_9}, // X
- {1, I_8, G_8, H_8}, // C
- {1, I_7, G_7, H_7}, // V
- {1, I_6, G_6, H_6}, // B
- {1, I_5, G_5, H_5}, // N
- {1, I_4, G_4, H_4}, // M
- {1, I_3, G_3, H_3}, // ,
- {1, I_2, G_2, H_2}, // .
- {1, I_1, G_1, H_1}, // ?
- {1, L_3, J_3, K_3}, // Shift_R
- {1, L_4, J_4, K_4}, // Up
+ {1, I_16, G_16, H_16}, // 1
+ {1, I_15, G_15, H_15}, // 2
+ {1, I_14, G_14, H_14}, // 3
+ {1, I_13, G_13, H_13}, // Enter
+ {1, I_12, G_12, H_12}, // Shift_L
+ {1, I_10, G_10, H_10}, // Z
+ {1, I_9, G_9, H_9}, // X
+ {1, I_8, G_8, H_8}, // C
+ {1, I_7, G_7, H_7}, // V
+ {1, I_6, G_6, H_6}, // B
+ {1, I_5, G_5, H_5}, // N
+ {1, I_4, G_4, H_4}, // M
+ {1, I_3, G_3, H_3}, // ,
+ {1, I_2, G_2, H_2}, // .
+ {1, I_1, G_1, H_1}, // ?
+ {1, L_3, J_3, K_3}, // Shift_R
+ {1, L_4, J_4, K_4}, // Up
- {1, F_16, D_16, E_16}, // 0
- {1, F_14, D_14, E_14}, // .
- {1, F_12, D_12, E_12}, // Ctrl_L
- {1, F_11, D_11, E_11}, // Win_L
- {1, F_10, D_10, E_10}, // Alt_L
- {1, F_6, D_6, E_6}, // Space
- {1, F_3, D_3, E_3}, // Alt_R
- {1, F_2, D_2, E_2}, // Fn
- {1, F_1, D_1, E_1}, // Ctrl_R
- {1, L_5, J_5, K_5}, // Left
- {1, L_6, J_6, K_6}, // Down
- {1, L_7, J_7, K_7}, // Right
+ {1, F_16, D_16, E_16}, // 0
+ {1, F_14, D_14, E_14}, // .
+ {1, F_12, D_12, E_12}, // Ctrl_L
+ {1, F_11, D_11, E_11}, // Win_L
+ {1, F_10, D_10, E_10}, // Alt_L
+ {1, F_6, D_6, E_6}, // Space
+ {1, F_3, D_3, E_3}, // Alt_R
+ {1, F_2, D_2, E_2}, // Fn
+ {1, F_1, D_1, E_1}, // Ctrl_R
+ {1, L_5, J_5, K_5}, // Left
+ {1, L_6, J_6, K_6}, // Down
+ {1, L_7, J_7, K_7}, // Right
};
#define __ NO_LED
diff --git a/keyboards/keychron/q12/ansi_encoder/config.h b/keyboards/keychron/q12/ansi_encoder/config.h
index 56a1f7505fb3..c28a9b8b3e84 100644
--- a/keyboards/keychron/q12/ansi_encoder/config.h
+++ b/keyboards/keychron/q12/ansi_encoder/config.h
@@ -21,6 +21,7 @@
#define DRIVER_2_LED_TOTAL 46
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
diff --git a/keyboards/keychron/q12/ansi_encoder/info.json b/keyboards/keychron/q12/ansi_encoder/info.json
index 97c1334ffdfc..a4894c0151e6 100644
--- a/keyboards/keychron/q12/ansi_encoder/info.json
+++ b/keyboards/keychron/q12/ansi_encoder/info.json
@@ -8,9 +8,25 @@
"pid": "0x01D1",
"device_version": "1.0.0"
},
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "C14"}
@@ -21,114 +37,114 @@
"layouts": {
"LAYOUT_ansi_103": {
"layout": [
- {"matrix": [0, 15], "x": 0, "y": 0},
- {"matrix": [0, 16], "x": 1, "y": 0},
- {"matrix": [0, 17], "x": 2, "y": 0},
- {"matrix": [5, 16], "x": 3, "y": 0},
- {"matrix": [0, 0], "x": 4.25, "y": 0},
- {"matrix": [0, 1], "x": 5.5, "y": 0},
- {"matrix": [0, 2], "x": 6.5, "y": 0},
- {"matrix": [0, 3], "x": 7.5, "y": 0},
- {"matrix": [0, 4], "x": 8.5, "y": 0},
- {"matrix": [0, 5], "x": 9.75, "y": 0},
- {"matrix": [0, 6], "x": 10.75, "y": 0},
- {"matrix": [0, 7], "x": 11.75, "y": 0},
- {"matrix": [0, 8], "x": 12.75, "y": 0},
- {"matrix": [0, 9], "x": 14, "y": 0},
- {"matrix": [0, 10], "x": 15, "y": 0},
- {"matrix": [0, 11], "x": 16, "y": 0},
- {"matrix": [0, 12], "x": 17, "y": 0},
- {"matrix": [0, 13], "x": 18.25, "y": 0},
- {"matrix": [0, 14], "x": 19.5, "y": 0},
+ {"matrix":[0,15], "x":0, "y":0},
+ {"matrix":[0,16], "x":1, "y":0},
+ {"matrix":[0,17], "x":2, "y":0},
+ {"matrix":[5,16], "x":3, "y":0},
+ {"matrix":[0,0], "x":4.25, "y":0},
+ {"matrix":[0,1], "x":5.5, "y":0},
+ {"matrix":[0,2], "x":6.5, "y":0},
+ {"matrix":[0,3], "x":7.5, "y":0},
+ {"matrix":[0,4], "x":8.5, "y":0},
+ {"matrix":[0,5], "x":9.75, "y":0},
+ {"matrix":[0,6], "x":10.75, "y":0},
+ {"matrix":[0,7], "x":11.75, "y":0},
+ {"matrix":[0,8], "x":12.75, "y":0},
+ {"matrix":[0,9], "x":14, "y":0},
+ {"matrix":[0,10], "x":15, "y":0},
+ {"matrix":[0,11], "x":16, "y":0},
+ {"matrix":[0,12], "x":17, "y":0},
+ {"matrix":[0,13], "x":18.25, "y":0},
+ {"matrix":[0,14], "x":19.5, "y":0},
- {"matrix": [1, 15], "x": 0, "y": 1.25},
- {"matrix": [1, 16], "x": 1, "y": 1.25},
- {"matrix": [1, 17], "x": 2, "y": 1.25},
- {"matrix": [5, 5], "x": 3, "y": 1.25},
- {"matrix": [1, 0], "x": 4.25, "y": 1.25},
- {"matrix": [1, 1], "x": 5.25, "y": 1.25},
- {"matrix": [1, 2], "x": 6.25, "y": 1.25},
- {"matrix": [1, 3], "x": 7.25, "y": 1.25},
- {"matrix": [1, 4], "x": 8.25, "y": 1.25},
- {"matrix": [1, 5], "x": 9.25, "y": 1.25},
- {"matrix": [1, 6], "x": 10.25, "y": 1.25},
- {"matrix": [1, 7], "x": 11.25, "y": 1.25},
- {"matrix": [1, 8], "x": 12.25, "y": 1.25},
- {"matrix": [1, 9], "x": 13.25, "y": 1.25},
- {"matrix": [1, 10], "x": 14.25, "y": 1.25},
- {"matrix": [1, 11], "x": 15.25, "y": 1.25},
- {"matrix": [1, 12], "x": 16.25, "y": 1.25},
- {"matrix": [1, 13], "x": 17.25, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 19.5, "y": 1.25},
+ {"matrix":[1,15], "x":0, "y":1.25},
+ {"matrix":[1,16], "x":1, "y":1.25},
+ {"matrix":[1,17], "x":2, "y":1.25},
+ {"matrix":[5,5], "x":3, "y":1.25},
+ {"matrix":[1,0], "x":4.25, "y":1.25},
+ {"matrix":[1,1], "x":5.25, "y":1.25},
+ {"matrix":[1,2], "x":6.25, "y":1.25},
+ {"matrix":[1,3], "x":7.25, "y":1.25},
+ {"matrix":[1,4], "x":8.25, "y":1.25},
+ {"matrix":[1,5], "x":9.25, "y":1.25},
+ {"matrix":[1,6], "x":10.25, "y":1.25},
+ {"matrix":[1,7], "x":11.25, "y":1.25},
+ {"matrix":[1,8], "x":12.25, "y":1.25},
+ {"matrix":[1,9], "x":13.25, "y":1.25},
+ {"matrix":[1,10], "x":14.25, "y":1.25},
+ {"matrix":[1,11], "x":15.25, "y":1.25},
+ {"matrix":[1,12], "x":16.25, "y":1.25},
+ {"matrix":[1,13], "x":17.25, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":19.5, "y":1.25},
- {"matrix": [2, 15], "x": 0, "y": 2.25},
- {"matrix": [2, 16], "x": 1, "y": 2.25},
- {"matrix": [2, 17], "x": 2, "y": 2.25},
- {"matrix": [5, 7], "x": 3, "y": 2.25, "h": 2},
- {"matrix": [2, 0], "x": 4.25, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 5.75, "y": 2.25},
- {"matrix": [2, 2], "x": 6.75, "y": 2.25},
- {"matrix": [2, 3], "x": 7.75, "y": 2.25},
- {"matrix": [2, 4], "x": 8.75, "y": 2.25},
- {"matrix": [2, 5], "x": 9.75, "y": 2.25},
- {"matrix": [2, 6], "x": 10.75, "y": 2.25},
- {"matrix": [2, 7], "x": 11.75, "y": 2.25},
- {"matrix": [2, 8], "x": 12.75, "y": 2.25},
- {"matrix": [2, 9], "x": 13.75, "y": 2.25},
- {"matrix": [2, 10], "x": 14.75, "y": 2.25},
- {"matrix": [2, 11], "x": 15.75, "y": 2.25},
- {"matrix": [2, 12], "x": 16.75, "y": 2.25},
- {"matrix": [2, 13], "x": 17.75, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 19.5, "y": 2.25},
+ {"matrix":[2,15], "x":0, "y":2.25},
+ {"matrix":[2,16], "x":1, "y":2.25},
+ {"matrix":[2,17], "x":2, "y":2.25},
+ {"matrix":[5,7], "x":3, "y":2.25, "h":2},
+ {"matrix":[2,0], "x":4.25, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":5.75, "y":2.25},
+ {"matrix":[2,2], "x":6.75, "y":2.25},
+ {"matrix":[2,3], "x":7.75, "y":2.25},
+ {"matrix":[2,4], "x":8.75, "y":2.25},
+ {"matrix":[2,5], "x":9.75, "y":2.25},
+ {"matrix":[2,6], "x":10.75, "y":2.25},
+ {"matrix":[2,7], "x":11.75, "y":2.25},
+ {"matrix":[2,8], "x":12.75, "y":2.25},
+ {"matrix":[2,9], "x":13.75, "y":2.25},
+ {"matrix":[2,10], "x":14.75, "y":2.25},
+ {"matrix":[2,11], "x":15.75, "y":2.25},
+ {"matrix":[2,12], "x":16.75, "y":2.25},
+ {"matrix":[2,13], "x":17.75, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":19.5, "y":2.25},
- {"matrix": [3, 15], "x": 0, "y": 3.25},
- {"matrix": [3, 16], "x": 1, "y": 3.25},
- {"matrix": [3, 17], "x": 2, "y": 3.25},
- {"matrix": [3, 0], "x": 4.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 6, "y": 3.25},
- {"matrix": [3, 2], "x": 7, "y": 3.25},
- {"matrix": [3, 3], "x": 8, "y": 3.25},
- {"matrix": [3, 4], "x": 9, "y": 3.25},
- {"matrix": [3, 5], "x": 10, "y": 3.25},
- {"matrix": [3, 6], "x": 11, "y": 3.25},
- {"matrix": [3, 7], "x": 12, "y": 3.25},
- {"matrix": [3, 8], "x": 13, "y": 3.25},
- {"matrix": [3, 9], "x": 14, "y": 3.25},
- {"matrix": [3, 10], "x": 15, "y": 3.25},
- {"matrix": [3, 11], "x": 16, "y": 3.25},
- {"matrix": [3, 13], "x": 17, "y": 3.25, "w": 2.25},
- {"matrix": [3, 14], "x": 19.5, "y": 3.25},
+ {"matrix":[3,15], "x":0, "y":3.25},
+ {"matrix":[3,16], "x":1, "y":3.25},
+ {"matrix":[3,17], "x":2, "y":3.25},
+ {"matrix":[3,0], "x":4.25, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":6, "y":3.25},
+ {"matrix":[3,2], "x":7, "y":3.25},
+ {"matrix":[3,3], "x":8, "y":3.25},
+ {"matrix":[3,4], "x":9, "y":3.25},
+ {"matrix":[3,5], "x":10, "y":3.25},
+ {"matrix":[3,6], "x":11, "y":3.25},
+ {"matrix":[3,7], "x":12, "y":3.25},
+ {"matrix":[3,8], "x":13, "y":3.25},
+ {"matrix":[3,9], "x":14, "y":3.25},
+ {"matrix":[3,10], "x":15, "y":3.25},
+ {"matrix":[3,11], "x":16, "y":3.25},
+ {"matrix":[3,13], "x":17, "y":3.25, "w":2.25},
+ {"matrix":[3,14], "x":19.5, "y":3.25},
- {"matrix": [4, 15], "x": 0, "y": 4.25},
- {"matrix": [4, 16], "x": 1, "y": 4.25},
- {"matrix": [4, 17], "x": 2, "y": 4.25},
- {"matrix": [3, 12], "x": 3, "y": 4.25, "h": 2},
- {"matrix": [4, 0], "x": 4.25, "y": 4.25, "w": 2.25},
- {"matrix": [4, 2], "x": 6.5, "y": 4.25},
- {"matrix": [4, 3], "x": 7.5, "y": 4.25},
- {"matrix": [4, 4], "x": 8.5, "y": 4.25},
- {"matrix": [4, 5], "x": 9.5, "y": 4.25},
- {"matrix": [4, 6], "x": 10.5, "y": 4.25},
- {"matrix": [4, 7], "x": 11.5, "y": 4.25},
- {"matrix": [4, 8], "x": 12.5, "y": 4.25},
- {"matrix": [4, 9], "x": 13.5, "y": 4.25},
- {"matrix": [4, 10], "x": 14.5, "y": 4.25},
- {"matrix": [4, 11], "x": 15.5, "y": 4.25},
- {"matrix": [4, 13], "x": 16.5, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 18.5, "y": 4.5},
+ {"matrix":[4,15], "x":0, "y":4.25},
+ {"matrix":[4,16], "x":1, "y":4.25},
+ {"matrix":[4,17], "x":2, "y":4.25},
+ {"matrix":[3,12], "x":3, "y":4.25, "h":2},
+ {"matrix":[4,0], "x":4.25, "y":4.25, "w":2.25},
+ {"matrix":[4,2], "x":6.5, "y":4.25},
+ {"matrix":[4,3], "x":7.5, "y":4.25},
+ {"matrix":[4,4], "x":8.5, "y":4.25},
+ {"matrix":[4,5], "x":9.5, "y":4.25},
+ {"matrix":[4,6], "x":10.5, "y":4.25},
+ {"matrix":[4,7], "x":11.5, "y":4.25},
+ {"matrix":[4,8], "x":12.5, "y":4.25},
+ {"matrix":[4,9], "x":13.5, "y":4.25},
+ {"matrix":[4,10], "x":14.5, "y":4.25},
+ {"matrix":[4,11], "x":15.5, "y":4.25},
+ {"matrix":[4,13], "x":16.5, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":18.5, "y":4.5},
- {"matrix": [5, 15], "x": 0, "y": 5.25, "w": 2},
- {"matrix": [5, 17], "x": 2, "y": 5.25},
- {"matrix": [5, 0], "x": 4.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 5.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 6.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 8, "y": 5.25, "w": 6.25},
- {"matrix": [5, 9], "x": 14.25, "y": 5.25},
- {"matrix": [5, 10], "x": 15.25, "y": 5.25},
- {"matrix": [5, 11], "x": 16.25, "y": 5.25},
- {"matrix": [5, 12], "x": 17.5, "y": 5.5},
- {"matrix": [5, 13], "x": 18.5, "y": 5.5},
- {"matrix": [5, 14], "x": 19.5, "y": 5.5}
+ {"matrix":[5,15], "x":0, "y":5.25, "w":2},
+ {"matrix":[5,17], "x":2, "y":5.25},
+ {"matrix":[5,0], "x":4.25, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":5.5, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":6.75, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":8, "y":5.25, "w":6.25},
+ {"matrix":[5,9], "x":14.25, "y":5.25},
+ {"matrix":[5,10], "x":15.25, "y":5.25},
+ {"matrix":[5,11], "x":16.25, "y":5.25},
+ {"matrix":[5,12], "x":17.5, "y":5.5},
+ {"matrix":[5,13], "x":18.5, "y":5.5},
+ {"matrix":[5,14], "x":19.5, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/q12/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q12/ansi_encoder/keymaps/default/keymap.c
index a2234c1d4fe7..5410f6ad82e0 100644
--- a/keyboards/keychron/q12/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q12/ansi_encoder/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_103(
- KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
+ KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGDN,
KC_P4, KC_P5, KC_P6, 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,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/keymap.c
index b6349894f522..10e3827b4b45 100644
--- a/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -60,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -70,11 +71,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q12/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q12/ansi_encoder/keymaps/via/keymap.c
index a2234c1d4fe7..5410f6ad82e0 100644
--- a/keyboards/keychron/q12/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q12/ansi_encoder/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_103(
- KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
+ KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGDN,
KC_P4, KC_P5, KC_P6, 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,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q12/ansi_encoder/rules.mk b/keyboards/keychron/q12/ansi_encoder/rules.mk
index 80a3f300bd22..aa286a161677 100644
--- a/keyboards/keychron/q12/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q12/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q12/config.h b/keyboards/keychron/q12/config.h
index 95281b4854c9..a2e0e6f15ef1 100644
--- a/keyboards/keychron/q12/config.h
+++ b/keyboards/keychron/q12/config.h
@@ -16,15 +16,6 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -37,14 +28,12 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID \
- { \
- { 5, 4 } \
- }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
@@ -89,9 +78,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -106,5 +99,13 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_DS C15
+#define HC595_SHCP A1
+#define HC595_STCP A0
+
+#define SHIFT_COL_START 10
+#define SHIFT_COL_END 17
diff --git a/keyboards/keychron/q12/halconf.h b/keyboards/keychron/q12/halconf.h
index e490b49e005a..463d177eabc7 100644
--- a/keyboards/keychron/q12/halconf.h
+++ b/keyboards/keychron/q12/halconf.h
@@ -17,6 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
-#define PAL_USE_CALLBACKS TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q12/iso_encoder/config.h b/keyboards/keychron/q12/iso_encoder/config.h
index eb0957d7afe7..416026847c0d 100644
--- a/keyboards/keychron/q12/iso_encoder/config.h
+++ b/keyboards/keychron/q12/iso_encoder/config.h
@@ -21,6 +21,7 @@
#define DRIVER_2_LED_TOTAL 47
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
diff --git a/keyboards/keychron/q12/iso_encoder/info.json b/keyboards/keychron/q12/iso_encoder/info.json
index cd848c86b60a..0a36350944f2 100644
--- a/keyboards/keychron/q12/iso_encoder/info.json
+++ b/keyboards/keychron/q12/iso_encoder/info.json
@@ -8,9 +8,25 @@
"pid": "0x01D3",
"device_version": "1.0.0"
},
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "C14"}
@@ -21,115 +37,115 @@
"layouts": {
"LAYOUT_iso_104": {
"layout": [
- {"matrix": [0, 15], "x": 0, "y": 0},
- {"matrix": [0, 16], "x": 1, "y": 0},
- {"matrix": [0, 17], "x": 2, "y": 0},
- {"matrix": [5, 16], "x": 3, "y": 0},
- {"matrix": [0, 0], "x": 4.25, "y": 0},
- {"matrix": [0, 1], "x": 5.5, "y": 0},
- {"matrix": [0, 2], "x": 6.5, "y": 0},
- {"matrix": [0, 3], "x": 7.5, "y": 0},
- {"matrix": [0, 4], "x": 8.5, "y": 0},
- {"matrix": [0, 5], "x": 9.75, "y": 0},
- {"matrix": [0, 6], "x": 10.75, "y": 0},
- {"matrix": [0, 7], "x": 11.75, "y": 0},
- {"matrix": [0, 8], "x": 12.75, "y": 0},
- {"matrix": [0, 9], "x": 14, "y": 0},
- {"matrix": [0, 10], "x": 15, "y": 0},
- {"matrix": [0, 11], "x": 16, "y": 0},
- {"matrix": [0, 12], "x": 17, "y": 0},
- {"matrix": [0, 13], "x": 18.25, "y": 0},
- {"matrix": [0, 14], "x": 19.5, "y": 0},
+ {"matrix":[0,15], "x":0, "y":0},
+ {"matrix":[0,16], "x":1, "y":0},
+ {"matrix":[0,17], "x":2, "y":0},
+ {"matrix":[5,16], "x":3, "y":0},
+ {"matrix":[0,0], "x":4.25, "y":0},
+ {"matrix":[0,1], "x":5.5, "y":0},
+ {"matrix":[0,2], "x":6.5, "y":0},
+ {"matrix":[0,3], "x":7.5, "y":0},
+ {"matrix":[0,4], "x":8.5, "y":0},
+ {"matrix":[0,5], "x":9.75, "y":0},
+ {"matrix":[0,6], "x":10.75, "y":0},
+ {"matrix":[0,7], "x":11.75, "y":0},
+ {"matrix":[0,8], "x":12.75, "y":0},
+ {"matrix":[0,9], "x":14, "y":0},
+ {"matrix":[0,10], "x":15, "y":0},
+ {"matrix":[0,11], "x":16, "y":0},
+ {"matrix":[0,12], "x":17, "y":0},
+ {"matrix":[0,13], "x":18.25, "y":0},
+ {"matrix":[0,14], "x":19.5, "y":0},
- {"matrix": [1, 15], "x": 0, "y": 1.25},
- {"matrix": [1, 16], "x": 1, "y": 1.25},
- {"matrix": [1, 17], "x": 2, "y": 1.25},
- {"matrix": [5, 5], "x": 3, "y": 1.25},
- {"matrix": [1, 0], "x": 4.25, "y": 1.25},
- {"matrix": [1, 1], "x": 5.25, "y": 1.25},
- {"matrix": [1, 2], "x": 6.25, "y": 1.25},
- {"matrix": [1, 3], "x": 7.25, "y": 1.25},
- {"matrix": [1, 4], "x": 8.25, "y": 1.25},
- {"matrix": [1, 5], "x": 9.25, "y": 1.25},
- {"matrix": [1, 6], "x": 10.25, "y": 1.25},
- {"matrix": [1, 7], "x": 11.25, "y": 1.25},
- {"matrix": [1, 8], "x": 12.25, "y": 1.25},
- {"matrix": [1, 9], "x": 13.25, "y": 1.25},
- {"matrix": [1, 10], "x": 14.25, "y": 1.25},
- {"matrix": [1, 11], "x": 15.25, "y": 1.25},
- {"matrix": [1, 12], "x": 16.25, "y": 1.25},
- {"matrix": [1, 13], "x": 17.25, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 19.5, "y": 1.25},
+ {"matrix":[1,15], "x":0, "y":1.25},
+ {"matrix":[1,16], "x":1, "y":1.25},
+ {"matrix":[1,17], "x":2, "y":1.25},
+ {"matrix":[5,5], "x":3, "y":1.25},
+ {"matrix":[1,0], "x":4.25, "y":1.25},
+ {"matrix":[1,1], "x":5.25, "y":1.25},
+ {"matrix":[1,2], "x":6.25, "y":1.25},
+ {"matrix":[1,3], "x":7.25, "y":1.25},
+ {"matrix":[1,4], "x":8.25, "y":1.25},
+ {"matrix":[1,5], "x":9.25, "y":1.25},
+ {"matrix":[1,6], "x":10.25, "y":1.25},
+ {"matrix":[1,7], "x":11.25, "y":1.25},
+ {"matrix":[1,8], "x":12.25, "y":1.25},
+ {"matrix":[1,9], "x":13.25, "y":1.25},
+ {"matrix":[1,10], "x":14.25, "y":1.25},
+ {"matrix":[1,11], "x":15.25, "y":1.25},
+ {"matrix":[1,12], "x":16.25, "y":1.25},
+ {"matrix":[1,13], "x":17.25, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":19.5, "y":1.25},
- {"matrix": [2, 15], "x": 0, "y": 2.25},
- {"matrix": [2, 16], "x": 1, "y": 2.25},
- {"matrix": [2, 17], "x": 2, "y": 2.25},
- {"matrix": [5, 7], "x": 3, "y": 2.25, "h": 2},
- {"matrix": [2, 0], "x": 4.25, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 5.75, "y": 2.25},
- {"matrix": [2, 2], "x": 6.75, "y": 2.25},
- {"matrix": [2, 3], "x": 7.75, "y": 2.25},
- {"matrix": [2, 4], "x": 8.75, "y": 2.25},
- {"matrix": [2, 5], "x": 9.75, "y": 2.25},
- {"matrix": [2, 6], "x": 10.75, "y": 2.25},
- {"matrix": [2, 7], "x": 11.75, "y": 2.25},
- {"matrix": [2, 8], "x": 12.75, "y": 2.25},
- {"matrix": [2, 9], "x": 13.75, "y": 2.25},
- {"matrix": [2, 10], "x": 14.75, "y": 2.25},
- {"matrix": [2, 11], "x": 15.75, "y": 2.25},
- {"matrix": [2, 12], "x": 16.75, "y": 2.25},
- {"matrix": [2, 14], "x": 19.5, "y": 2.25},
+ {"matrix":[2,15], "x":0, "y":2.25},
+ {"matrix":[2,16], "x":1, "y":2.25},
+ {"matrix":[2,17], "x":2, "y":2.25},
+ {"matrix":[5,7], "x":3, "y":2.25, "h":2},
+ {"matrix":[2,0], "x":4.25, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":5.75, "y":2.25},
+ {"matrix":[2,2], "x":6.75, "y":2.25},
+ {"matrix":[2,3], "x":7.75, "y":2.25},
+ {"matrix":[2,4], "x":8.75, "y":2.25},
+ {"matrix":[2,5], "x":9.75, "y":2.25},
+ {"matrix":[2,6], "x":10.75, "y":2.25},
+ {"matrix":[2,7], "x":11.75, "y":2.25},
+ {"matrix":[2,8], "x":12.75, "y":2.25},
+ {"matrix":[2,9], "x":13.75, "y":2.25},
+ {"matrix":[2,10], "x":14.75, "y":2.25},
+ {"matrix":[2,11], "x":15.75, "y":2.25},
+ {"matrix":[2,12], "x":16.75, "y":2.25},
+ {"matrix":[2,14], "x":19.5, "y":2.25},
- {"matrix": [3, 15], "x": 0, "y": 3.25},
- {"matrix": [3, 16], "x": 1, "y": 3.25},
- {"matrix": [3, 17], "x": 2, "y": 3.25},
- {"matrix": [3, 0], "x": 4.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 6, "y": 3.25},
- {"matrix": [3, 2], "x": 7, "y": 3.25},
- {"matrix": [3, 3], "x": 8, "y": 3.25},
- {"matrix": [3, 4], "x": 9, "y": 3.25},
- {"matrix": [3, 5], "x": 10, "y": 3.25},
- {"matrix": [3, 6], "x": 11, "y": 3.25},
- {"matrix": [3, 7], "x": 12, "y": 3.25},
- {"matrix": [3, 8], "x": 13, "y": 3.25},
- {"matrix": [3, 9], "x": 14, "y": 3.25},
- {"matrix": [3, 10], "x": 15, "y": 3.25},
- {"matrix": [3, 11], "x": 16, "y": 3.25},
- {"matrix": [3, 13], "x": 17, "y": 3.25},
- {"matrix": [2, 13], "x": 18, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 14], "x": 19.5, "y": 3.25},
+ {"matrix":[3,15], "x":0, "y":3.25},
+ {"matrix":[3,16], "x":1, "y":3.25},
+ {"matrix":[3,17], "x":2, "y":3.25},
+ {"matrix":[3,0], "x":4.25, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":6, "y":3.25},
+ {"matrix":[3,2], "x":7, "y":3.25},
+ {"matrix":[3,3], "x":8, "y":3.25},
+ {"matrix":[3,4], "x":9, "y":3.25},
+ {"matrix":[3,5], "x":10, "y":3.25},
+ {"matrix":[3,6], "x":11, "y":3.25},
+ {"matrix":[3,7], "x":12, "y":3.25},
+ {"matrix":[3,8], "x":13, "y":3.25},
+ {"matrix":[3,9], "x":14, "y":3.25},
+ {"matrix":[3,10], "x":15, "y":3.25},
+ {"matrix":[3,11], "x":16, "y":3.25},
+ {"matrix":[3,13], "x":17, "y":3.25},
+ {"matrix":[2,13], "x":18, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,14], "x":19.5, "y":3.25},
- {"matrix": [4, 15], "x": 0, "y": 4.25},
- {"matrix": [4, 16], "x": 1, "y": 4.25},
- {"matrix": [4, 17], "x": 2, "y": 4.25},
- {"matrix": [3, 12], "x": 3, "y": 4.25, "h": 2},
- {"matrix": [4, 0], "x": 4.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 5.5, "y": 4.25},
- {"matrix": [4, 2], "x": 6.5, "y": 4.25},
- {"matrix": [4, 3], "x": 7.5, "y": 4.25},
- {"matrix": [4, 4], "x": 8.5, "y": 4.25},
- {"matrix": [4, 5], "x": 9.5, "y": 4.25},
- {"matrix": [4, 6], "x": 10.5, "y": 4.25},
- {"matrix": [4, 7], "x": 11.5, "y": 4.25},
- {"matrix": [4, 8], "x": 12.5, "y": 4.25},
- {"matrix": [4, 9], "x": 13.5, "y": 4.25},
- {"matrix": [4, 10], "x": 14.5, "y": 4.25},
- {"matrix": [4, 11], "x": 15.5, "y": 4.25},
- {"matrix": [4, 13], "x": 16.5, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 18.5, "y": 4.5},
+ {"matrix":[4,15], "x":0, "y":4.25},
+ {"matrix":[4,16], "x":1, "y":4.25},
+ {"matrix":[4,17], "x":2, "y":4.25},
+ {"matrix":[3,12], "x":3, "y":4.25, "h":2},
+ {"matrix":[4,0], "x":4.25, "y":4.25, "w":1.25},
+ {"matrix":[4,1], "x":5.5, "y":4.25},
+ {"matrix":[4,2], "x":6.5, "y":4.25},
+ {"matrix":[4,3], "x":7.5, "y":4.25},
+ {"matrix":[4,4], "x":8.5, "y":4.25},
+ {"matrix":[4,5], "x":9.5, "y":4.25},
+ {"matrix":[4,6], "x":10.5, "y":4.25},
+ {"matrix":[4,7], "x":11.5, "y":4.25},
+ {"matrix":[4,8], "x":12.5, "y":4.25},
+ {"matrix":[4,9], "x":13.5, "y":4.25},
+ {"matrix":[4,10], "x":14.5, "y":4.25},
+ {"matrix":[4,11], "x":15.5, "y":4.25},
+ {"matrix":[4,13], "x":16.5, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":18.5, "y":4.5},
- {"matrix": [5, 15], "x": 0, "y": 5.25, "w": 2},
- {"matrix": [5, 17], "x": 2, "y": 5.25},
- {"matrix": [5, 0], "x": 4.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 5.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 6.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 8, "y": 5.25, "w": 6.25},
- {"matrix": [5, 9], "x": 14.25, "y": 5.25},
- {"matrix": [5, 10], "x": 15.25, "y": 5.25},
- {"matrix": [5, 11], "x": 16.25, "y": 5.25},
- {"matrix": [5, 12], "x": 17.5, "y": 5.5},
- {"matrix": [5, 13], "x": 18.5, "y": 5.5},
- {"matrix": [5, 14], "x": 19.5, "y": 5.5}
+ {"matrix":[5,15], "x":0, "y":5.25, "w":2},
+ {"matrix":[5,17], "x":2, "y":5.25},
+ {"matrix":[5,0], "x":4.25, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":5.5, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":6.75, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":8, "y":5.25, "w":6.25},
+ {"matrix":[5,9], "x":14.25, "y":5.25},
+ {"matrix":[5,10], "x":15.25, "y":5.25},
+ {"matrix":[5,11], "x":16.25, "y":5.25},
+ {"matrix":[5,12], "x":17.5, "y":5.5},
+ {"matrix":[5,13], "x":18.5, "y":5.5},
+ {"matrix":[5,14], "x":19.5, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/q12/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q12/iso_encoder/keymaps/default/keymap.c
index 7cad0672f2fe..988eb446cd02 100644
--- a/keyboards/keychron/q12/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q12/iso_encoder/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_104(
- KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
+ KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGDN,
KC_P4, KC_P5, KC_P6, 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_NUHS, KC_ENT, KC_HOME,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q12/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q12/iso_encoder/keymaps/keychron/keymap.c
index 9c79f73d7971..57e9a0e1fb40 100644
--- a/keyboards/keychron/q12/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q12/iso_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -60,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -70,11 +71,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q12/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q12/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q12/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q12/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q12/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q12/iso_encoder/keymaps/via/keymap.c
index 7cad0672f2fe..988eb446cd02 100644
--- a/keyboards/keychron/q12/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q12/iso_encoder/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_104(
- KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
+ KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGDN,
KC_P4, KC_P5, KC_P6, 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_NUHS, KC_ENT, KC_HOME,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q12/iso_encoder/rules.mk b/keyboards/keychron/q12/iso_encoder/rules.mk
index 986772495755..aa286a161677 100644
--- a/keyboards/keychron/q12/iso_encoder/rules.mk
+++ b/keyboards/keychron/q12/iso_encoder/rules.mk
@@ -1,23 +1,14 @@
# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH ?= keyboards/keychron/common
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q12/matrix.c b/keyboards/keychron/q12/matrix.c
deleted file mode 100644
index 8229517fd9ce..000000000000
--- a/keyboards/keychron/q12/matrix.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* 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 .
- */
-
-#include "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN C15
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN A1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN A0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-static void shiftOut(uint8_t dataOut) {
- for (uint8_t i = 0; i < 8; i++) {
- if (dataOut & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- }
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static void shiftout_single(uint8_t data) {
- if (data & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
-
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == 10) {
- shiftout_single(0x00);
- } else {
- shiftout_single(0x01);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (col == (MATRIX_COLS - 1))
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
- }
-}
-
-static void unselect_cols(void) {
- // unselect column pins
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- }
- if (x == 10)
- // unselect shift Register
- shiftOut(0xFF);
- }
-}
-
-static void matrix_init_pins(void) {
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- if (current_col < 10) {
- matrix_output_select_delay();
- } else {
- for (int8_t cycle = 4; cycle > 0; cycle--) {
- matrix_output_select_delay(); // 0.25us
- matrix_output_select_delay();
- matrix_output_select_delay();
- matrix_output_select_delay();
- }
- }
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/q12/q12.c b/keyboards/keychron/q12/q12.c
index 3d8eab56590b..c13cd641e9aa 100644
--- a/keyboards/keychron/q12/q12.c
+++ b/keyboards/keychron/q12/q12.c
@@ -37,57 +37,3 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
return true;
}
#endif
-
-#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_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 defined(CAPS_LOCK_LED_INDEX)
- 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);
- }
- }
-# endif // CAPS_LOCK_LED_INDEX
-# if defined(NUM_LOCK_LED_INDEX)
- if (host_keyboard_led_state().num_lock) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
- } else {
- if (!rgb_matrix_get_flags()) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
- }
- }
-# endif // NUM_LOCK_LED_INDEX
- return true;
-}
-#endif
diff --git a/keyboards/keychron/q12/readme.md b/keyboards/keychron/q12/readme.md
index be9ec6f3e81a..34ac6e89a444 100644
--- a/keyboards/keychron/q12/readme.md
+++ b/keyboards/keychron/q12/readme.md
@@ -1,18 +1,22 @@
# Keychron Q12
+![Keychron Q12](https://i.imgur.com/MiuqHFj.jpg)
+
A customizable 96% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q12
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q12 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q12-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
- make keychron/q12/q12_ansi_stm32l432:default
+ make keychron/q12/ansi_encoder:default
+ make keychron/q12/iso_encoder:default
Flashing example for this keyboard:
- make keychron/q12/q12_ansi_stm32l432:default:flash
+ make keychron/q12/ansi_encoder:default:flash
+ make keychron/q12/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q1v2/ansi/config.h b/keyboards/keychron/q1v2/ansi/config.h
deleted file mode 100644
index 05ace3177834..000000000000
--- a/keyboards/keychron/q1v2/ansi/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 37
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1v2/ansi/info.json b/keyboards/keychron/q1v2/ansi/info.json
deleted file mode 100644
index a72d202d816d..000000000000
--- a/keyboards/keychron/q1v2/ansi/info.json
+++ /dev/null
@@ -1,190 +0,0 @@
-{
- "usb": {
- "pid": "0x0106",
- "device_version": "2.0.0"
- },
- "layouts": {
- "LAYOUT_ansi_82": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
- ]
- }
- },
- "rgb_matrix": {
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":18, "y":0},
- {"matrix":[0, 2], "flags":1, "x":33, "y":0},
- {"matrix":[0, 3], "flags":1, "x":48, "y":0},
- {"matrix":[0, 4], "flags":1, "x":62, "y":0},
- {"matrix":[0, 5], "flags":1, "x":81, "y":0},
- {"matrix":[0, 6], "flags":1, "x":95, "y":0},
- {"matrix":[0, 7], "flags":1, "x":110, "y":0},
- {"matrix":[0, 8], "flags":1, "x":125, "y":0},
- {"matrix":[0, 9], "flags":1, "x":143, "y":0},
- {"matrix":[0, 10], "flags":1, "x":158, "y":0},
- {"matrix":[0, 11], "flags":1, "x":173, "y":0},
- {"matrix":[0, 12], "flags":1, "x":187, "y":0},
- {"matrix":[0, 13], "flags":1, "x":206, "y":0},
- {"matrix":[0, 15], "flags":1, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":15, "y":15},
- {"matrix":[1, 2], "flags":4, "x":29, "y":15},
- {"matrix":[1, 3], "flags":4, "x":44, "y":15},
- {"matrix":[1, 4], "flags":4, "x":59, "y":15},
- {"matrix":[1, 5], "flags":4, "x":73, "y":15},
- {"matrix":[1, 6], "flags":4, "x":88, "y":15},
- {"matrix":[1, 7], "flags":4, "x":103, "y":15},
- {"matrix":[1, 8], "flags":4, "x":118, "y":15},
- {"matrix":[1, 9], "flags":4, "x":132, "y":15},
- {"matrix":[1, 10], "flags":4, "x":147, "y":15},
- {"matrix":[1, 11], "flags":4, "x":162, "y":15},
- {"matrix":[1, 12], "flags":4, "x":176, "y":15},
- {"matrix":[1, 13], "flags":1, "x":198, "y":15},
- {"matrix":[1, 15], "flags":1, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":4, "y":26},
- {"matrix":[2, 1], "flags":4, "x":22, "y":26},
- {"matrix":[2, 2], "flags":4, "x":37, "y":26},
- {"matrix":[2, 3], "flags":4, "x":51, "y":26},
- {"matrix":[2, 4], "flags":4, "x":66, "y":26},
- {"matrix":[2, 5], "flags":4, "x":81, "y":26},
- {"matrix":[2, 6], "flags":4, "x":95, "y":26},
- {"matrix":[2, 7], "flags":4, "x":110, "y":26},
- {"matrix":[2, 8], "flags":4, "x":125, "y":26},
- {"matrix":[2, 9], "flags":4, "x":140, "y":26},
- {"matrix":[2, 10], "flags":4, "x":154, "y":26},
- {"matrix":[2, 11], "flags":4, "x":169, "y":26},
- {"matrix":[2, 12], "flags":4, "x":184, "y":26},
- {"matrix":[2, 13], "flags":4, "x":202, "y":26},
- {"matrix":[2, 15], "flags":1, "x":224, "y":26},
-
- {"matrix":[3, 0], "flags":9, "x":6, "y":38},
- {"matrix":[3, 1], "flags":4, "x":26, "y":38},
- {"matrix":[3, 2], "flags":4, "x":40, "y":38},
- {"matrix":[3, 3], "flags":4, "x":55, "y":38},
- {"matrix":[3, 4], "flags":4, "x":70, "y":38},
- {"matrix":[3, 5], "flags":4, "x":84, "y":38},
- {"matrix":[3, 6], "flags":4, "x":99, "y":38},
- {"matrix":[3, 7], "flags":4, "x":114, "y":38},
- {"matrix":[3, 8], "flags":4, "x":129, "y":38},
- {"matrix":[3, 9], "flags":4, "x":143, "y":38},
- {"matrix":[3, 10], "flags":4, "x":158, "y":38},
- {"matrix":[3, 11], "flags":4, "x":173, "y":38},
- {"matrix":[3, 13], "flags":1, "x":196, "y":38},
- {"matrix":[3, 15], "flags":1, "x":224, "y":38},
-
- {"matrix":[4, 0], "flags":1, "x":9, "y":49},
- {"matrix":[4, 2], "flags":4, "x":33, "y":49},
- {"matrix":[4, 3], "flags":4, "x":48, "y":49},
- {"matrix":[4, 4], "flags":4, "x":62, "y":49},
- {"matrix":[4, 5], "flags":4, "x":77, "y":49},
- {"matrix":[4, 6], "flags":4, "x":92, "y":49},
- {"matrix":[4, 7], "flags":4, "x":106, "y":49},
- {"matrix":[4, 8], "flags":4, "x":121, "y":49},
- {"matrix":[4, 9], "flags":4, "x":136, "y":49},
- {"matrix":[4, 10], "flags":4, "x":151, "y":49},
- {"matrix":[4, 11], "flags":4, "x":165, "y":49},
- {"matrix":[4, 13], "flags":1, "x":185, "y":49},
- {"matrix":[4, 14], "flags":1, "x":209, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":2, "y":61},
- {"matrix":[5, 1], "flags":1, "x":20, "y":61},
- {"matrix":[5, 2], "flags":1, "x":39, "y":61},
- {"matrix":[5, 6], "flags":4, "x":94, "y":61},
- {"matrix":[5, 10], "flags":1, "x":147, "y":61},
- {"matrix":[5, 11], "flags":1, "x":162, "y":61},
- {"matrix":[5, 12], "flags":1, "x":176, "y":61},
- {"matrix":[5, 13], "flags":1, "x":195, "y":64},
- {"matrix":[5, 14], "flags":1, "x":209, "y":64},
- {"matrix":[5, 15], "flags":1, "x":224, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/q1v2/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/ansi/keymaps/keychron/rules.mk
deleted file mode 100644
index 495e8907b48c..000000000000
--- a/keyboards/keychron/q1v2/ansi/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
diff --git a/keyboards/keychron/q1v2/ansi/rules.mk b/keyboards/keychron/q1v2/ansi/rules.mk
deleted file mode 100644
index 36ee49ccb093..000000000000
--- a/keyboards/keychron/q1v2/ansi/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += matrix.c
diff --git a/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
deleted file mode 100644
index ea6c6278d1cf..000000000000
--- a/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* 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 "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, 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, 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, C_11, A_11, B_11},
- {0, C_12, A_12, B_12},
- {0, C_13, A_13, B_13},
- {0, C_14, A_14, B_14},
- {0, C_16, A_16, B_16},
-
- {0, I_1, G_1, H_1},
- {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, 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, I_10, G_10, H_10},
- {0, I_11, G_11, H_11},
- {0, I_12, G_12, H_12},
- {0, I_13, G_13, H_13},
- {0, I_14, G_14, H_14},
- {0, I_16, G_16, H_16},
-
- {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, F_6, D_6, E_6},
- {0, F_7, D_7, E_7},
- {0, F_8, D_8, E_8},
- {0, F_9, D_9, E_9},
- {0, F_10, D_10, E_10},
- {0, F_11, D_11, E_11},
- {0, F_12, D_12, E_12},
- {0, F_13, D_13, E_13},
- {0, F_14, D_14, E_14},
- {0, F_16, D_16, E_16},
-
- {1, I_1, G_1, H_1},
- {1, I_2, G_2, H_2},
- {1, I_3, G_3, H_3},
- {1, I_4, G_4, H_4},
- {1, I_5, G_5, H_5},
- {1, I_6, G_6, H_6},
- {1, I_7, G_7, H_7},
- {1, I_8, G_8, H_8},
- {1, I_9, G_9, H_9},
- {1, I_10, G_10, H_10},
- {1, I_11, G_11, H_11},
- {1, I_12, G_12, H_12},
- {1, I_14, G_14, H_14},
- {1, I_16, G_16, H_16},
-
- {1, F_1, D_1, E_1},
- {1, F_3, D_3, E_3},
- {1, F_4, D_4, E_4},
- {1, F_5, D_5, E_5},
- {1, F_6, D_6, E_6},
- {1, F_7, D_7, E_7},
- {1, F_8, D_8, E_8},
- {1, F_9, D_9, E_9},
- {1, F_10, D_10, E_10},
- {1, F_11, D_11, E_11},
- {1, F_12, D_12, E_12},
- {1, F_14, D_14, E_14},
- {1, F_15, D_15, E_15},
-
- {1, C_1, A_1, B_1},
- {1, C_2, A_2, B_2},
- {1, C_3, A_3, B_3},
- {1, C_7, A_7, B_7},
- {1, C_11, A_11, B_11},
- {1, C_12, A_12, B_12},
- {1, C_13, A_13, B_13},
- {1, C_14, A_14, B_14},
- {1, C_15, A_15, B_15},
- {1, C_16, A_16, B_16},
-};
-
-#endif
diff --git a/keyboards/keychron/q1v2/ansi_encoder/info.json b/keyboards/keychron/q1v2/ansi_encoder/info.json
deleted file mode 100644
index 616c44489131..000000000000
--- a/keyboards/keychron/q1v2/ansi_encoder/info.json
+++ /dev/null
@@ -1,199 +0,0 @@
-{
- "usb": {
- "pid": "0x0107",
- "device_version": "2.0.0"
- },
- "features": {
- "encoder": true
- },
- "encoder": {
- "enabled": true,
- "rotary": [
- {"pin_a": "A10", "pin_b": "A8", "resolution": 4}
- ]
- },
- "layouts": {
- "LAYOUT_ansi_82": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
- ]
- }
- },
- "rgb_matrix": {
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":18, "y":0},
- {"matrix":[0, 2], "flags":1, "x":33, "y":0},
- {"matrix":[0, 3], "flags":1, "x":48, "y":0},
- {"matrix":[0, 4], "flags":1, "x":62, "y":0},
- {"matrix":[0, 5], "flags":1, "x":81, "y":0},
- {"matrix":[0, 6], "flags":1, "x":95, "y":0},
- {"matrix":[0, 7], "flags":1, "x":110, "y":0},
- {"matrix":[0, 8], "flags":1, "x":125, "y":0},
- {"matrix":[0, 9], "flags":1, "x":143, "y":0},
- {"matrix":[0, 10], "flags":1, "x":158, "y":0},
- {"matrix":[0, 11], "flags":1, "x":173, "y":0},
- {"matrix":[0, 12], "flags":1, "x":187, "y":0},
- {"matrix":[0, 13], "flags":1, "x":206, "y":0},
- {"matrix":[0, 15], "flags":1, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":15, "y":15},
- {"matrix":[1, 2], "flags":4, "x":29, "y":15},
- {"matrix":[1, 3], "flags":4, "x":44, "y":15},
- {"matrix":[1, 4], "flags":4, "x":59, "y":15},
- {"matrix":[1, 5], "flags":4, "x":73, "y":15},
- {"matrix":[1, 6], "flags":4, "x":88, "y":15},
- {"matrix":[1, 7], "flags":4, "x":103, "y":15},
- {"matrix":[1, 8], "flags":4, "x":118, "y":15},
- {"matrix":[1, 9], "flags":4, "x":132, "y":15},
- {"matrix":[1, 10], "flags":4, "x":147, "y":15},
- {"matrix":[1, 11], "flags":4, "x":162, "y":15},
- {"matrix":[1, 12], "flags":4, "x":176, "y":15},
- {"matrix":[1, 13], "flags":1, "x":198, "y":15},
- {"matrix":[1, 15], "flags":1, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":4, "y":26},
- {"matrix":[2, 1], "flags":4, "x":22, "y":26},
- {"matrix":[2, 2], "flags":4, "x":37, "y":26},
- {"matrix":[2, 3], "flags":4, "x":51, "y":26},
- {"matrix":[2, 4], "flags":4, "x":66, "y":26},
- {"matrix":[2, 5], "flags":4, "x":81, "y":26},
- {"matrix":[2, 6], "flags":4, "x":95, "y":26},
- {"matrix":[2, 7], "flags":4, "x":110, "y":26},
- {"matrix":[2, 8], "flags":4, "x":125, "y":26},
- {"matrix":[2, 9], "flags":4, "x":140, "y":26},
- {"matrix":[2, 10], "flags":4, "x":154, "y":26},
- {"matrix":[2, 11], "flags":4, "x":169, "y":26},
- {"matrix":[2, 12], "flags":4, "x":184, "y":26},
- {"matrix":[2, 13], "flags":4, "x":202, "y":26},
- {"matrix":[2, 15], "flags":1, "x":224, "y":26},
-
- {"matrix":[3, 0], "flags":9, "x":6, "y":38},
- {"matrix":[3, 1], "flags":4, "x":26, "y":38},
- {"matrix":[3, 2], "flags":4, "x":40, "y":38},
- {"matrix":[3, 3], "flags":4, "x":55, "y":38},
- {"matrix":[3, 4], "flags":4, "x":70, "y":38},
- {"matrix":[3, 5], "flags":4, "x":84, "y":38},
- {"matrix":[3, 6], "flags":4, "x":99, "y":38},
- {"matrix":[3, 7], "flags":4, "x":114, "y":38},
- {"matrix":[3, 8], "flags":4, "x":129, "y":38},
- {"matrix":[3, 9], "flags":4, "x":143, "y":38},
- {"matrix":[3, 10], "flags":4, "x":158, "y":38},
- {"matrix":[3, 11], "flags":4, "x":173, "y":38},
- {"matrix":[3, 13], "flags":1, "x":196, "y":38},
- {"matrix":[3, 15], "flags":1, "x":224, "y":38},
-
- {"matrix":[4, 0], "flags":1, "x":9, "y":49},
- {"matrix":[4, 2], "flags":4, "x":33, "y":49},
- {"matrix":[4, 3], "flags":4, "x":48, "y":49},
- {"matrix":[4, 4], "flags":4, "x":62, "y":49},
- {"matrix":[4, 5], "flags":4, "x":77, "y":49},
- {"matrix":[4, 6], "flags":4, "x":92, "y":49},
- {"matrix":[4, 7], "flags":4, "x":106, "y":49},
- {"matrix":[4, 8], "flags":4, "x":121, "y":49},
- {"matrix":[4, 9], "flags":4, "x":136, "y":49},
- {"matrix":[4, 10], "flags":4, "x":151, "y":49},
- {"matrix":[4, 11], "flags":4, "x":165, "y":49},
- {"matrix":[4, 13], "flags":1, "x":185, "y":49},
- {"matrix":[4, 14], "flags":1, "x":209, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":2, "y":61},
- {"matrix":[5, 1], "flags":1, "x":20, "y":61},
- {"matrix":[5, 2], "flags":1, "x":39, "y":61},
- {"matrix":[5, 6], "flags":4, "x":94, "y":61},
- {"matrix":[5, 10], "flags":1, "x":147, "y":61},
- {"matrix":[5, 11], "flags":1, "x":162, "y":61},
- {"matrix":[5, 12], "flags":1, "x":176, "y":61},
- {"matrix":[5, 13], "flags":1, "x":195, "y":64},
- {"matrix":[5, 14], "flags":1, "x":209, "y":64},
- {"matrix":[5, 15], "flags":1, "x":224, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/rules.mk
deleted file mode 100644
index a40474b4d5c7..000000000000
--- a/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 9cf1a9b56cba..000000000000
--- a/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
diff --git a/keyboards/keychron/q1v2/ansi_encoder/rules.mk b/keyboards/keychron/q1v2/ansi_encoder/rules.mk
deleted file mode 100644
index 36ee49ccb093..000000000000
--- a/keyboards/keychron/q1v2/ansi_encoder/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += matrix.c
diff --git a/keyboards/keychron/q1v2/info.json b/keyboards/keychron/q1v2/info.json
deleted file mode 100644
index c4a75f0283ab..000000000000
--- a/keyboards/keychron/q1v2/info.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "manufacturer": "Keychron",
- "keyboard_name": "Keychron Q1",
- "url": "https://github.com/Keychron",
- "maintainer": "keychron-contrib",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "usb": {
- "vid": "0x3434"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true,
- "dip_switch": true
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
- "custom": true,
- "custom_lite": true
- },
- "matrix_size": {
- "cols": 16,
- "rows": 6
- },
- "diode_direction": "ROW2COL",
- "rgb_matrix": {
- "driver": "ckled2001",
- "animations": {
- "band_spiral_val": true,
- "breathing": 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
- }
- }
-}
diff --git a/keyboards/keychron/q1v2/iso/config.h b/keyboards/keychron/q1v2/iso/config.h
deleted file mode 100644
index d9e596e2c571..000000000000
--- a/keyboards/keychron/q1v2/iso/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 38
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/q1v2/iso/info.json b/keyboards/keychron/q1v2/iso/info.json
deleted file mode 100644
index ed16a3a8208f..000000000000
--- a/keyboards/keychron/q1v2/iso/info.json
+++ /dev/null
@@ -1,192 +0,0 @@
-{
- "usb": {
- "pid": "0x0108",
- "device_version": "2.0.0"
- },
- "layouts": {
- "LAYOUT_iso_83": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
- ]
- }
- },
- "rgb_matrix": {
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":18, "y":0},
- {"matrix":[0, 2], "flags":1, "x":33, "y":0},
- {"matrix":[0, 3], "flags":1, "x":48, "y":0},
- {"matrix":[0, 4], "flags":1, "x":62, "y":0},
- {"matrix":[0, 5], "flags":1, "x":81, "y":0},
- {"matrix":[0, 6], "flags":1, "x":95, "y":0},
- {"matrix":[0, 7], "flags":1, "x":110, "y":0},
- {"matrix":[0, 8], "flags":1, "x":125, "y":0},
- {"matrix":[0, 9], "flags":1, "x":143, "y":0},
- {"matrix":[0, 10], "flags":1, "x":158, "y":0},
- {"matrix":[0, 11], "flags":1, "x":173, "y":0},
- {"matrix":[0, 12], "flags":1, "x":187, "y":0},
- {"matrix":[0, 13], "flags":1, "x":206, "y":0},
- {"matrix":[0, 15], "flags":1, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":15, "y":15},
- {"matrix":[1, 2], "flags":4, "x":29, "y":15},
- {"matrix":[1, 3], "flags":4, "x":44, "y":15},
- {"matrix":[1, 4], "flags":4, "x":59, "y":15},
- {"matrix":[1, 5], "flags":4, "x":73, "y":15},
- {"matrix":[1, 6], "flags":4, "x":88, "y":15},
- {"matrix":[1, 7], "flags":4, "x":103, "y":15},
- {"matrix":[1, 8], "flags":4, "x":118, "y":15},
- {"matrix":[1, 9], "flags":4, "x":132, "y":15},
- {"matrix":[1, 10], "flags":4, "x":147, "y":15},
- {"matrix":[1, 11], "flags":4, "x":162, "y":15},
- {"matrix":[1, 12], "flags":4, "x":176, "y":15},
- {"matrix":[1, 13], "flags":1, "x":198, "y":15},
- {"matrix":[1, 15], "flags":1, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":4, "y":26},
- {"matrix":[2, 1], "flags":4, "x":22, "y":26},
- {"matrix":[2, 2], "flags":4, "x":37, "y":26},
- {"matrix":[2, 3], "flags":4, "x":51, "y":26},
- {"matrix":[2, 4], "flags":4, "x":66, "y":26},
- {"matrix":[2, 5], "flags":4, "x":81, "y":26},
- {"matrix":[2, 6], "flags":4, "x":95, "y":26},
- {"matrix":[2, 7], "flags":4, "x":110, "y":26},
- {"matrix":[2, 8], "flags":4, "x":125, "y":26},
- {"matrix":[2, 9], "flags":4, "x":140, "y":26},
- {"matrix":[2, 10], "flags":4, "x":154, "y":26},
- {"matrix":[2, 11], "flags":4, "x":169, "y":26},
- {"matrix":[2, 12], "flags":4, "x":184, "y":26},
- {"matrix":[2, 15], "flags":1, "x":224, "y":26},
-
- {"matrix":[3, 0], "flags":9, "x":6, "y":38},
- {"matrix":[3, 1], "flags":4, "x":26, "y":38},
- {"matrix":[3, 2], "flags":4, "x":40, "y":38},
- {"matrix":[3, 3], "flags":4, "x":55, "y":38},
- {"matrix":[3, 4], "flags":4, "x":70, "y":38},
- {"matrix":[3, 5], "flags":4, "x":84, "y":38},
- {"matrix":[3, 6], "flags":4, "x":99, "y":38},
- {"matrix":[3, 7], "flags":4, "x":114, "y":38},
- {"matrix":[3, 8], "flags":4, "x":129, "y":38},
- {"matrix":[3, 9], "flags":4, "x":143, "y":38},
- {"matrix":[3, 10], "flags":4, "x":158, "y":38},
- {"matrix":[3, 11], "flags":4, "x":173, "y":38},
- {"matrix":[3, 13], "flags":1, "x":187, "y":38},
- {"matrix":[2, 13], "flags":4, "x":203, "y":32},
- {"matrix":[3, 15], "flags":1, "x":224, "y":38},
-
- {"matrix":[4, 0], "flags":1, "x":2, "y":49},
- {"matrix":[4, 1], "flags":4, "x":18, "y":49},
- {"matrix":[4, 2], "flags":4, "x":33, "y":49},
- {"matrix":[4, 3], "flags":4, "x":48, "y":49},
- {"matrix":[4, 4], "flags":4, "x":62, "y":49},
- {"matrix":[4, 5], "flags":4, "x":77, "y":49},
- {"matrix":[4, 6], "flags":4, "x":92, "y":49},
- {"matrix":[4, 7], "flags":4, "x":106, "y":49},
- {"matrix":[4, 8], "flags":4, "x":121, "y":49},
- {"matrix":[4, 9], "flags":4, "x":136, "y":49},
- {"matrix":[4, 10], "flags":4, "x":151, "y":49},
- {"matrix":[4, 11], "flags":4, "x":165, "y":49},
- {"matrix":[4, 13], "flags":1, "x":185, "y":49},
- {"matrix":[4, 14], "flags":1, "x":209, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":2, "y":61},
- {"matrix":[5, 1], "flags":1, "x":20, "y":61},
- {"matrix":[5, 2], "flags":1, "x":39, "y":61},
- {"matrix":[5, 6], "flags":4, "x":94, "y":61},
- {"matrix":[5, 10], "flags":1, "x":147, "y":61},
- {"matrix":[5, 11], "flags":1, "x":162, "y":61},
- {"matrix":[5, 12], "flags":1, "x":176, "y":61},
- {"matrix":[5, 13], "flags":1, "x":195, "y":64},
- {"matrix":[5, 14], "flags":1, "x":209, "y":64},
- {"matrix":[5, 15], "flags":1, "x":224, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/q1v2/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/iso/keymaps/keychron/rules.mk
deleted file mode 100644
index 495e8907b48c..000000000000
--- a/keyboards/keychron/q1v2/iso/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
diff --git a/keyboards/keychron/q1v2/iso/rules.mk b/keyboards/keychron/q1v2/iso/rules.mk
deleted file mode 100644
index 36ee49ccb093..000000000000
--- a/keyboards/keychron/q1v2/iso/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += matrix.c
diff --git a/keyboards/keychron/q1v2/iso_encoder/info.json b/keyboards/keychron/q1v2/iso_encoder/info.json
deleted file mode 100644
index 38e34176b89d..000000000000
--- a/keyboards/keychron/q1v2/iso_encoder/info.json
+++ /dev/null
@@ -1,201 +0,0 @@
-{
- "usb": {
- "pid": "0x0109",
- "device_version": "2.0.0"
- },
- "features": {
- "encoder": true
- },
- "encoder": {
- "enabled": true,
- "rotary": [
- {"pin_a": "A10", "pin_b": "A8", "resolution": 4}
- ]
- },
- "layouts": {
- "LAYOUT_iso_83": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
- ]
- }
- },
- "rgb_matrix": {
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":18, "y":0},
- {"matrix":[0, 2], "flags":1, "x":33, "y":0},
- {"matrix":[0, 3], "flags":1, "x":48, "y":0},
- {"matrix":[0, 4], "flags":1, "x":62, "y":0},
- {"matrix":[0, 5], "flags":1, "x":81, "y":0},
- {"matrix":[0, 6], "flags":1, "x":95, "y":0},
- {"matrix":[0, 7], "flags":1, "x":110, "y":0},
- {"matrix":[0, 8], "flags":1, "x":125, "y":0},
- {"matrix":[0, 9], "flags":1, "x":143, "y":0},
- {"matrix":[0, 10], "flags":1, "x":158, "y":0},
- {"matrix":[0, 11], "flags":1, "x":173, "y":0},
- {"matrix":[0, 12], "flags":1, "x":187, "y":0},
- {"matrix":[0, 13], "flags":1, "x":206, "y":0},
- {"matrix":[0, 15], "flags":1, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":15, "y":15},
- {"matrix":[1, 2], "flags":4, "x":29, "y":15},
- {"matrix":[1, 3], "flags":4, "x":44, "y":15},
- {"matrix":[1, 4], "flags":4, "x":59, "y":15},
- {"matrix":[1, 5], "flags":4, "x":73, "y":15},
- {"matrix":[1, 6], "flags":4, "x":88, "y":15},
- {"matrix":[1, 7], "flags":4, "x":103, "y":15},
- {"matrix":[1, 8], "flags":4, "x":118, "y":15},
- {"matrix":[1, 9], "flags":4, "x":132, "y":15},
- {"matrix":[1, 10], "flags":4, "x":147, "y":15},
- {"matrix":[1, 11], "flags":4, "x":162, "y":15},
- {"matrix":[1, 12], "flags":4, "x":176, "y":15},
- {"matrix":[1, 13], "flags":1, "x":198, "y":15},
- {"matrix":[1, 15], "flags":1, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":4, "y":26},
- {"matrix":[2, 1], "flags":4, "x":22, "y":26},
- {"matrix":[2, 2], "flags":4, "x":37, "y":26},
- {"matrix":[2, 3], "flags":4, "x":51, "y":26},
- {"matrix":[2, 4], "flags":4, "x":66, "y":26},
- {"matrix":[2, 5], "flags":4, "x":81, "y":26},
- {"matrix":[2, 6], "flags":4, "x":95, "y":26},
- {"matrix":[2, 7], "flags":4, "x":110, "y":26},
- {"matrix":[2, 8], "flags":4, "x":125, "y":26},
- {"matrix":[2, 9], "flags":4, "x":140, "y":26},
- {"matrix":[2, 10], "flags":4, "x":154, "y":26},
- {"matrix":[2, 11], "flags":4, "x":169, "y":26},
- {"matrix":[2, 12], "flags":4, "x":184, "y":26},
- {"matrix":[2, 15], "flags":1, "x":224, "y":26},
-
- {"matrix":[3, 0], "flags":9, "x":6, "y":38},
- {"matrix":[3, 1], "flags":4, "x":26, "y":38},
- {"matrix":[3, 2], "flags":4, "x":40, "y":38},
- {"matrix":[3, 3], "flags":4, "x":55, "y":38},
- {"matrix":[3, 4], "flags":4, "x":70, "y":38},
- {"matrix":[3, 5], "flags":4, "x":84, "y":38},
- {"matrix":[3, 6], "flags":4, "x":99, "y":38},
- {"matrix":[3, 7], "flags":4, "x":114, "y":38},
- {"matrix":[3, 8], "flags":4, "x":129, "y":38},
- {"matrix":[3, 9], "flags":4, "x":143, "y":38},
- {"matrix":[3, 10], "flags":4, "x":158, "y":38},
- {"matrix":[3, 11], "flags":4, "x":173, "y":38},
- {"matrix":[3, 13], "flags":1, "x":187, "y":38},
- {"matrix":[2, 13], "flags":4, "x":203, "y":32},
- {"matrix":[3, 15], "flags":1, "x":224, "y":38},
-
- {"matrix":[4, 0], "flags":1, "x":2, "y":49},
- {"matrix":[4, 1], "flags":4, "x":18, "y":49},
- {"matrix":[4, 2], "flags":4, "x":33, "y":49},
- {"matrix":[4, 3], "flags":4, "x":48, "y":49},
- {"matrix":[4, 4], "flags":4, "x":62, "y":49},
- {"matrix":[4, 5], "flags":4, "x":77, "y":49},
- {"matrix":[4, 6], "flags":4, "x":92, "y":49},
- {"matrix":[4, 7], "flags":4, "x":106, "y":49},
- {"matrix":[4, 8], "flags":4, "x":121, "y":49},
- {"matrix":[4, 9], "flags":4, "x":136, "y":49},
- {"matrix":[4, 10], "flags":4, "x":151, "y":49},
- {"matrix":[4, 11], "flags":4, "x":165, "y":49},
- {"matrix":[4, 13], "flags":1, "x":185, "y":49},
- {"matrix":[4, 14], "flags":1, "x":209, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":2, "y":61},
- {"matrix":[5, 1], "flags":1, "x":20, "y":61},
- {"matrix":[5, 2], "flags":1, "x":39, "y":61},
- {"matrix":[5, 6], "flags":4, "x":94, "y":61},
- {"matrix":[5, 10], "flags":1, "x":147, "y":61},
- {"matrix":[5, 11], "flags":1, "x":162, "y":61},
- {"matrix":[5, 12], "flags":1, "x":176, "y":61},
- {"matrix":[5, 13], "flags":1, "x":195, "y":64},
- {"matrix":[5, 14], "flags":1, "x":209, "y":64},
- {"matrix":[5, 15], "flags":1, "x":224, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1v2/iso_encoder/keymaps/default/keymap.c
deleted file mode 100644
index 74aa487f95ed..000000000000
--- a/keyboards/keychron/q1v2/iso_encoder/keymaps/default/keymap.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* 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{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
-};
-#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1v2/iso_encoder/keymaps/default/rules.mk
deleted file mode 100644
index a40474b4d5c7..000000000000
--- a/keyboards/keychron/q1v2/iso_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 9cf1a9b56cba..000000000000
--- a/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1v2/iso_encoder/keymaps/via/keymap.c
deleted file mode 100644
index 74aa487f95ed..000000000000
--- a/keyboards/keychron/q1v2/iso_encoder/keymaps/via/keymap.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* 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{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
-};
-#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1v2/iso_encoder/rules.mk b/keyboards/keychron/q1v2/iso_encoder/rules.mk
deleted file mode 100644
index 36ee49ccb093..000000000000
--- a/keyboards/keychron/q1v2/iso_encoder/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += matrix.c
diff --git a/keyboards/keychron/q1v2/jis/config.h b/keyboards/keychron/q1v2/jis/config.h
deleted file mode 100644
index 2e3db213b0c5..000000000000
--- a/keyboards/keychron/q1v2/jis/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 46
-#define DRIVER_2_LED_TOTAL 40
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1v2/jis/info.json b/keyboards/keychron/q1v2/jis/info.json
deleted file mode 100644
index e704624a6619..000000000000
--- a/keyboards/keychron/q1v2/jis/info.json
+++ /dev/null
@@ -1,198 +0,0 @@
-{
- "usb": {
- "pid": "0x010A",
- "device_version": "2.0.0"
- },
- "layouts": {
- "LAYOUT": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.251},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[1,14], "x":14, "y":1.25},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25},
- {"matrix":[5,11], "x":11.25, "y":5.25},
- {"matrix":[5,12], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.25},
- {"matrix":[5,14], "x":14.25, "y":5.25},
- {"matrix":[5,15], "x":15.25, "y":5.25}
- ]
- }
- },
- "rgb_matrix": {
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":18, "y":0},
- {"matrix":[0, 2], "flags":1, "x":33, "y":0},
- {"matrix":[0, 3], "flags":1, "x":48, "y":0},
- {"matrix":[0, 4], "flags":1, "x":62, "y":0},
- {"matrix":[0, 5], "flags":1, "x":81, "y":0},
- {"matrix":[0, 6], "flags":1, "x":95, "y":0},
- {"matrix":[0, 7], "flags":1, "x":110, "y":0},
- {"matrix":[0, 8], "flags":1, "x":125, "y":0},
- {"matrix":[0, 9], "flags":1, "x":143, "y":0},
- {"matrix":[0, 10], "flags":1, "x":158, "y":0},
- {"matrix":[0, 11], "flags":1, "x":173, "y":0},
- {"matrix":[0, 12], "flags":1, "x":187, "y":0},
- {"matrix":[0, 13], "flags":1, "x":205, "y":0},
- {"matrix":[0, 15], "flags":1, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":15, "y":15},
- {"matrix":[1, 2], "flags":4, "x":29, "y":15},
- {"matrix":[1, 3], "flags":4, "x":44, "y":15},
- {"matrix":[1, 4], "flags":4, "x":59, "y":15},
- {"matrix":[1, 5], "flags":4, "x":73, "y":15},
- {"matrix":[1, 6], "flags":4, "x":88, "y":15},
- {"matrix":[1, 7], "flags":4, "x":103, "y":15},
- {"matrix":[1, 8], "flags":4, "x":117, "y":15},
- {"matrix":[1, 9], "flags":4, "x":132, "y":15},
- {"matrix":[1, 10], "flags":4, "x":147, "y":15},
- {"matrix":[1, 11], "flags":4, "x":161, "y":15},
- {"matrix":[1, 12], "flags":4, "x":176, "y":15},
- {"matrix":[1, 13], "flags":4, "x":191, "y":15},
- {"matrix":[1, 14], "flags":1, "x":205, "y":15},
- {"matrix":[1, 15], "flags":1, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":4, "y":28},
- {"matrix":[2, 1], "flags":4, "x":22, "y":28},
- {"matrix":[2, 2], "flags":4, "x":37, "y":28},
- {"matrix":[2, 3], "flags":4, "x":51, "y":28},
- {"matrix":[2, 4], "flags":4, "x":66, "y":28},
- {"matrix":[2, 5], "flags":4, "x":81, "y":28},
- {"matrix":[2, 6], "flags":4, "x":95, "y":28},
- {"matrix":[2, 7], "flags":4, "x":110, "y":28},
- {"matrix":[2, 8], "flags":4, "x":125, "y":28},
- {"matrix":[2, 9], "flags":4, "x":139, "y":28},
- {"matrix":[2, 10], "flags":4, "x":154, "y":28},
- {"matrix":[2, 11], "flags":4, "x":169, "y":28},
- {"matrix":[2, 12], "flags":4, "x":183, "y":28},
- {"matrix":[2, 15], "flags":1, "x":224, "y":28},
-
- {"matrix":[3, 0], "flags":9, "x":6, "y":40},
- {"matrix":[3, 1], "flags":4, "x":26, "y":40},
- {"matrix":[3, 2], "flags":4, "x":40, "y":40},
- {"matrix":[3, 3], "flags":4, "x":55, "y":40},
- {"matrix":[3, 4], "flags":4, "x":70, "y":40},
- {"matrix":[3, 5], "flags":4, "x":84, "y":40},
- {"matrix":[3, 6], "flags":4, "x":99, "y":40},
- {"matrix":[3, 7], "flags":4, "x":114, "y":40},
- {"matrix":[3, 8], "flags":4, "x":128, "y":40},
- {"matrix":[3, 9], "flags":4, "x":143, "y":40},
- {"matrix":[3, 10], "flags":4, "x":158, "y":40},
- {"matrix":[3, 11], "flags":4, "x":172, "y":40},
- {"matrix":[3, 13], "flags":4, "x":187, "y":40},
- {"matrix":[2, 13], "flags":1, "x":207, "y":36},
- {"matrix":[3, 15], "flags":1, "x":224, "y":40},
-
- {"matrix":[4, 0], "flags":1, "x":9, "y":52},
- {"matrix":[4, 2], "flags":4, "x":33, "y":52},
- {"matrix":[4, 3], "flags":4, "x":48, "y":52},
- {"matrix":[4, 4], "flags":4, "x":62, "y":52},
- {"matrix":[4, 5], "flags":4, "x":77, "y":52},
- {"matrix":[4, 6], "flags":4, "x":92, "y":52},
- {"matrix":[4, 7], "flags":4, "x":106, "y":52},
- {"matrix":[4, 8], "flags":4, "x":121, "y":52},
- {"matrix":[4, 9], "flags":4, "x":136, "y":52},
- {"matrix":[4, 10], "flags":4, "x":150, "y":52},
- {"matrix":[4, 11], "flags":4, "x":165, "y":52},
- {"matrix":[4, 12], "flags":4, "x":180, "y":52},
- {"matrix":[4, 13], "flags":1, "x":194, "y":52},
- {"matrix":[4, 14], "flags":1, "x":209, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":2, "y":64},
- {"matrix":[5, 1], "flags":1, "x":18, "y":64},
- {"matrix":[5, 2], "flags":1, "x":35, "y":64},
- {"matrix":[5, 3], "flags":1, "x":51, "y":64},
- {"matrix":[5, 6], "flags":4, "x":92, "y":64},
- {"matrix":[5, 9], "flags":1, "x":134, "y":64},
- {"matrix":[5, 10], "flags":1, "x":150, "y":64},
- {"matrix":[5, 11], "flags":1, "x":165, "y":64},
- {"matrix":[5, 12], "flags":1, "x":180, "y":64},
- {"matrix":[5, 13], "flags":1, "x":194, "y":64},
- {"matrix":[5, 14], "flags":1, "x":209, "y":64},
- {"matrix":[5, 15], "flags":1, "x":224, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/q1v2/jis/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/jis/keymaps/keychron/rules.mk
deleted file mode 100644
index 495e8907b48c..000000000000
--- a/keyboards/keychron/q1v2/jis/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
diff --git a/keyboards/keychron/q1v2/jis/rules.mk b/keyboards/keychron/q1v2/jis/rules.mk
deleted file mode 100644
index 36ee49ccb093..000000000000
--- a/keyboards/keychron/q1v2/jis/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += matrix.c
diff --git a/keyboards/keychron/q1v2/jis_encoder/info.json b/keyboards/keychron/q1v2/jis_encoder/info.json
deleted file mode 100644
index 544958f24fd6..000000000000
--- a/keyboards/keychron/q1v2/jis_encoder/info.json
+++ /dev/null
@@ -1,207 +0,0 @@
-{
- "usb": {
- "pid": "0x010B",
- "device_version": "2.0.0"
- },
- "features": {
- "encoder": true
- },
- "encoder": {
- "enabled": true,
- "rotary": [
- {"pin_a": "A10", "pin_b": "A8", "resolution": 4}
- ]
- },
- "layouts": {
- "LAYOUT": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.251},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[1,14], "x":14, "y":1.25},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25},
- {"matrix":[5,11], "x":11.25, "y":5.25},
- {"matrix":[5,12], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.25},
- {"matrix":[5,14], "x":14.25, "y":5.25},
- {"matrix":[5,15], "x":15.25, "y":5.25}
- ]
- }
- },
- "rgb_matrix": {
- "layout": [
- {"matrix":[0, 0], "flags":1, "x":0, "y":0},
- {"matrix":[0, 1], "flags":1, "x":18, "y":0},
- {"matrix":[0, 2], "flags":1, "x":33, "y":0},
- {"matrix":[0, 3], "flags":1, "x":48, "y":0},
- {"matrix":[0, 4], "flags":1, "x":62, "y":0},
- {"matrix":[0, 5], "flags":1, "x":81, "y":0},
- {"matrix":[0, 6], "flags":1, "x":95, "y":0},
- {"matrix":[0, 7], "flags":1, "x":110, "y":0},
- {"matrix":[0, 8], "flags":1, "x":125, "y":0},
- {"matrix":[0, 9], "flags":1, "x":143, "y":0},
- {"matrix":[0, 10], "flags":1, "x":158, "y":0},
- {"matrix":[0, 11], "flags":1, "x":173, "y":0},
- {"matrix":[0, 12], "flags":1, "x":187, "y":0},
- {"matrix":[0, 13], "flags":1, "x":205, "y":0},
- {"matrix":[0, 15], "flags":1, "x":224, "y":0},
-
- {"matrix":[1, 0], "flags":1, "x":0, "y":15},
- {"matrix":[1, 1], "flags":4, "x":15, "y":15},
- {"matrix":[1, 2], "flags":4, "x":29, "y":15},
- {"matrix":[1, 3], "flags":4, "x":44, "y":15},
- {"matrix":[1, 4], "flags":4, "x":59, "y":15},
- {"matrix":[1, 5], "flags":4, "x":73, "y":15},
- {"matrix":[1, 6], "flags":4, "x":88, "y":15},
- {"matrix":[1, 7], "flags":4, "x":103, "y":15},
- {"matrix":[1, 8], "flags":4, "x":117, "y":15},
- {"matrix":[1, 9], "flags":4, "x":132, "y":15},
- {"matrix":[1, 10], "flags":4, "x":147, "y":15},
- {"matrix":[1, 11], "flags":4, "x":161, "y":15},
- {"matrix":[1, 12], "flags":4, "x":176, "y":15},
- {"matrix":[1, 13], "flags":4, "x":191, "y":15},
- {"matrix":[1, 14], "flags":1, "x":205, "y":15},
- {"matrix":[1, 15], "flags":1, "x":224, "y":15},
-
- {"matrix":[2, 0], "flags":1, "x":4, "y":28},
- {"matrix":[2, 1], "flags":4, "x":22, "y":28},
- {"matrix":[2, 2], "flags":4, "x":37, "y":28},
- {"matrix":[2, 3], "flags":4, "x":51, "y":28},
- {"matrix":[2, 4], "flags":4, "x":66, "y":28},
- {"matrix":[2, 5], "flags":4, "x":81, "y":28},
- {"matrix":[2, 6], "flags":4, "x":95, "y":28},
- {"matrix":[2, 7], "flags":4, "x":110, "y":28},
- {"matrix":[2, 8], "flags":4, "x":125, "y":28},
- {"matrix":[2, 9], "flags":4, "x":139, "y":28},
- {"matrix":[2, 10], "flags":4, "x":154, "y":28},
- {"matrix":[2, 11], "flags":4, "x":169, "y":28},
- {"matrix":[2, 12], "flags":4, "x":183, "y":28},
- {"matrix":[2, 15], "flags":1, "x":224, "y":28},
-
- {"matrix":[3, 0], "flags":9, "x":6, "y":40},
- {"matrix":[3, 1], "flags":4, "x":26, "y":40},
- {"matrix":[3, 2], "flags":4, "x":40, "y":40},
- {"matrix":[3, 3], "flags":4, "x":55, "y":40},
- {"matrix":[3, 4], "flags":4, "x":70, "y":40},
- {"matrix":[3, 5], "flags":4, "x":84, "y":40},
- {"matrix":[3, 6], "flags":4, "x":99, "y":40},
- {"matrix":[3, 7], "flags":4, "x":114, "y":40},
- {"matrix":[3, 8], "flags":4, "x":128, "y":40},
- {"matrix":[3, 9], "flags":4, "x":143, "y":40},
- {"matrix":[3, 10], "flags":4, "x":158, "y":40},
- {"matrix":[3, 11], "flags":4, "x":172, "y":40},
- {"matrix":[3, 13], "flags":4, "x":187, "y":40},
- {"matrix":[2, 13], "flags":1, "x":207, "y":36},
- {"matrix":[3, 15], "flags":1, "x":224, "y":40},
-
- {"matrix":[4, 0], "flags":1, "x":9, "y":52},
- {"matrix":[4, 2], "flags":4, "x":33, "y":52},
- {"matrix":[4, 3], "flags":4, "x":48, "y":52},
- {"matrix":[4, 4], "flags":4, "x":62, "y":52},
- {"matrix":[4, 5], "flags":4, "x":77, "y":52},
- {"matrix":[4, 6], "flags":4, "x":92, "y":52},
- {"matrix":[4, 7], "flags":4, "x":106, "y":52},
- {"matrix":[4, 8], "flags":4, "x":121, "y":52},
- {"matrix":[4, 9], "flags":4, "x":136, "y":52},
- {"matrix":[4, 10], "flags":4, "x":150, "y":52},
- {"matrix":[4, 11], "flags":4, "x":165, "y":52},
- {"matrix":[4, 12], "flags":4, "x":180, "y":52},
- {"matrix":[4, 13], "flags":1, "x":194, "y":52},
- {"matrix":[4, 14], "flags":1, "x":209, "y":52},
-
- {"matrix":[5, 0], "flags":1, "x":2, "y":64},
- {"matrix":[5, 1], "flags":1, "x":18, "y":64},
- {"matrix":[5, 2], "flags":1, "x":35, "y":64},
- {"matrix":[5, 3], "flags":1, "x":51, "y":64},
- {"matrix":[5, 6], "flags":4, "x":92, "y":64},
- {"matrix":[5, 9], "flags":1, "x":134, "y":64},
- {"matrix":[5, 10], "flags":1, "x":150, "y":64},
- {"matrix":[5, 11], "flags":1, "x":165, "y":64},
- {"matrix":[5, 12], "flags":1, "x":180, "y":64},
- {"matrix":[5, 13], "flags":1, "x":194, "y":64},
- {"matrix":[5, 14], "flags":1, "x":209, "y":64},
- {"matrix":[5, 15], "flags":1, "x":224, "y":64}
- ]
- }
-}
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1v2/jis_encoder/keymaps/default/rules.mk
deleted file mode 100644
index a40474b4d5c7..000000000000
--- a/keyboards/keychron/q1v2/jis_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 9cf1a9b56cba..000000000000
--- a/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
diff --git a/keyboards/keychron/q1v2/jis_encoder/rules.mk b/keyboards/keychron/q1v2/jis_encoder/rules.mk
deleted file mode 100644
index 36ee49ccb093..000000000000
--- a/keyboards/keychron/q1v2/jis_encoder/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-SRC += matrix.c
diff --git a/keyboards/keychron/q1v2/matrix.c b/keyboards/keychron/q1v2/matrix.c
deleted file mode 100644
index d008a7938414..000000000000
--- a/keyboards/keychron/q1v2/matrix.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/* 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 "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN A7
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN B1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN B0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-static void shiftOut(uint8_t dataOut) {
- for (uint8_t i = 0; i < 8; i++) {
- if (dataOut & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- }
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static void shiftout_single(uint8_t data) {
- if (data & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
-
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
-
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == 8) {
- shiftout_single(0x00);
- } else {
- shiftout_single(0x01);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (col == (MATRIX_COLS - 1)) shiftout_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- // unselect column pins
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- }
- if (x == (MATRIX_COLS - 1))
- // unselect Shift Register
- shiftOut(0xFF);
- }
-}
-
-static void matrix_init_pins(void) {
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- if (current_col < 8) {
- matrix_output_select_delay();
- } else {
- for (int8_t cycle = 4; cycle > 0; cycle--) {
- matrix_output_select_delay(); // 0.25us
- matrix_output_select_delay();
- matrix_output_select_delay();
- matrix_output_select_delay();
- }
- }
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/q1v2/q1v2.c b/keyboards/keychron/q1v2/q1v2.c
deleted file mode 100644
index 4f83a760d385..000000000000
--- a/keyboards/keychron/q1v2/q1v2.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* 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 "quantum.h"
-
-const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
-};
-
-#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 ? 2 : 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) {
-# ifdef RGB_MATRIX_ENABLE
- 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;
-# endif
- }
- 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
diff --git a/keyboards/keychron/q1v2/readme.md b/keyboards/keychron/q1v2/readme.md
deleted file mode 100644
index 8efb51e60ff5..000000000000
--- a/keyboards/keychron/q1v2/readme.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# Keychron Q1 Version 2
-
-![Keychron Q1V2](https://i.imgur.com/BbJNGLYh.jpg)
-
-A customizable 75% keyboard.
-
-* Keyboard Maintainer: [Keychron](https://github.com/keychron)
-* Hardware Supported: Keychron Q1 Version 2
-* Hardware Availability: [Keychron Q1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q1)
-
-Make example for this keyboard (after setting up your build environment):
-
- make keychron/q1v2/ansi:default
- make keychron/q1v2/ansi_encoder:default
- make keychron/q1v2/iso:default
- make keychron/q1v2/iso_encoder:default
- make keychron/q1v2/jis:default
- make keychron/q1v2/jis_encoder:default
-
-Flashing example for this keyboard:
-
- make keychron/q1v2/ansi:default:flash
- make keychron/q1v2/ansi_encoder:default:flash
- make keychron/q1v2/iso:default:flash
- make keychron/q1v2/iso_encoder:default:flash
- make keychron/q1v2/jis:default:flash
- make keychron/q1v2/jis_encoder:default:flash
-
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* 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).
diff --git a/keyboards/keychron/q2/ansi/ansi.c b/keyboards/keychron/q2/ansi/ansi.c
index 28f91269c444..347f00f760c6 100644
--- a/keyboards/keychron/q2/ansi/ansi.c
+++ b/keyboards/keychron/q2/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,8 +17,9 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -110,7 +111,7 @@ led_config_t g_led_config = {
},
{
// LED Index to Physical Position
- {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0},
+ {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0}, // {244,-4}
{4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {202,15}, {224,15},
{6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {196,30}, {224,30},
{9,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
@@ -119,11 +120,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/ansi/config.h b/keyboards/keychron/q2/ansi/config.h
index 6c39432b74f4..88d86a5a7f95 100644
--- a/keyboards/keychron/q2/ansi/config.h
+++ b/keyboards/keychron/q2/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -20,3 +20,6 @@
#define DRIVER_1_LED_TOTAL 34
#define DRIVER_2_LED_TOTAL 33
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/q2/ansi/info.json b/keyboards/keychron/q2/ansi/info.json
index 8ed601fe8f4a..161dc70952b5 100644
--- a/keyboards/keychron/q2/ansi/info.json
+++ b/keyboards/keychron/q2/ansi/info.json
@@ -1,15 +1,26 @@
{
- "keyboard_name": "Q2",
+ "keyboard_name": "Keychron Q2",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0110",
- "device_version": "1.0.0"
+ "device_version": "1.0.6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,77 +32,77 @@
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 13], "x": 13.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25, "w": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.25, "y": 3.25},
- {"matrix": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.25, "y":3.25},
+ {"matrix":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4.25},
- {"matrix": [4, 11], "x": 11, "y": 4.25},
- {"matrix": [4, 12], "x": 12, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.5},
- {"matrix": [2, 12], "x": 14.25, "y": 4.5},
- {"matrix": [4, 14], "x": 15.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4.25},
+ {"matrix":[4,11], "x":11, "y":4.25},
+ {"matrix":[4,12], "x":12, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.5},
+ {"matrix":[2,12], "x":14.25, "y":4.5},
+ {"matrix":[4,14], "x":15.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q2/ansi/keymaps/default/keymap.c b/keyboards/keychron/q2/ansi/keymaps/default/keymap.c
index ea386157bcb2..fa10916396d3 100644
--- a/keyboards/keychron/q2/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,14 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -29,37 +31,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q2/ansi/keymaps/ladduro/keymap_user.h b/keyboards/keychron/q2/ansi/keymaps/keychron/config.h
similarity index 82%
rename from keyboards/keychron/q2/ansi/keymaps/ladduro/keymap_user.h
rename to keyboards/keychron/q2/ansi/keymaps/keychron/config.h
index ded78ae1b8eb..54bbaf673fed 100644
--- a/keyboards/keychron/q2/ansi/keymaps/ladduro/keymap_user.h
+++ b/keyboards/keychron/q2/ansi/keymaps/keychron/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Ionut Micu
+/* 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
@@ -14,14 +14,4 @@
* along with this program. If not, see .
*/
-#pragma once
-
-// clang-format off
-
-enum layers{
- MAC_BASE,
- WIN_BASE,
- _FN1,
- _FN2,
- _FN3,
-};
\ No newline at end of file
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q2/ansi/keymaps/keychron/keymap.c
index 5581f9340610..ea2d8880fa31 100644
--- a/keyboards/keychron/q2/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,56 +16,70 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q2/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q2/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q2/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q2/ansi/keymaps/ladduro/config.h b/keyboards/keychron/q2/ansi/keymaps/ladduro/config.h
deleted file mode 100644
index a8ad37d0036e..000000000000
--- a/keyboards/keychron/q2/ansi/keymaps/ladduro/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2022 @ Ionut Micu
- *
- * 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Configuration */
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
-# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
-# define FN_LAYER_TRANSPARENT_KEYS_OFF
-#endif
\ No newline at end of file
diff --git a/keyboards/keychron/q2/ansi/keymaps/ladduro/keymap.c b/keyboards/keychron/q2/ansi/keymaps/ladduro/keymap.c
deleted file mode 100644
index 55ee7a9732ce..000000000000
--- a/keyboards/keychron/q2/ansi/keymaps/ladduro/keymap.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Copyright 2022 @ Ionut Micu
- *
- * 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 "keymap_user.h"
-#ifdef RGB_MATRIX_ENABLE
-# include "rgb_matrix_user.h"
-#endif
-
-#define KC_WAVE S(KC_GRV)
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
-
- [_FN1] = LAYOUT_ansi_67(
- 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, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
- [_FN2] = LAYOUT_ansi_67(
- 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, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
- [_FN3] = LAYOUT_ansi_67(
- KC_WAVE, 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_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
-};
-
-void matrix_init_user(void) {
-#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_init_user();
-#endif
-}
diff --git a/keyboards/keychron/q2/ansi/keymaps/ladduro/readme.md b/keyboards/keychron/q2/ansi/keymaps/ladduro/readme.md
deleted file mode 100644
index 42ca81a1a1ef..000000000000
--- a/keyboards/keychron/q2/ansi/keymaps/ladduro/readme.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# Ladduro keymap for Keychron Q2 (ANSI rev_0110) v1.01
-
-This keymap ports Q1 logic (by gtg465x) for RGB caps lock indicator and layer RBG assigned key.
-
-## Features:
-- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences
-- RGB lighting turns off when the computer sleeps
-- Caps Lock and alpha keys turn red to indicate when Caps Lock is on
-- When the Fn layer is active, RGB lighting turns off for keys that are not assigned
-
-Make example for this keyboard (after setting up your build environment):
-
- make keychron/q2/rev_0110:ladduro
-
-Flashing example for this keyboard:
-
- make keychron/q2/rev_0110:ladduro:flash
-
-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).
-
-## Changelog
-
-### 14/03/2021 - 1.
-
-- Initial release
-
-### 02/04/2021 - 1.01
-
-- Remove via enable from rules.mk as it breaks the layout for some reason
diff --git a/keyboards/keychron/q2/ansi/keymaps/ladduro/rgb_matrix_user.c b/keyboards/keychron/q2/ansi/keymaps/ladduro/rgb_matrix_user.c
deleted file mode 100644
index 604f54a7050a..000000000000
--- a/keyboards/keychron/q2/ansi/keymaps/ladduro/rgb_matrix_user.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright 2022 @ Ionut Micu
- *
- * 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 "rgb_matrix_user.h"
-#include "keymap_user.h"
-
-keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
-
-void rgb_matrix_init_user(void) {
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- for (uint8_t col = 0; col < MATRIX_COLS; col++) {
- uint8_t led_index = g_led_config.matrix_co[row][col];
- if (led_index != NO_LED) {
- led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
- }
- }
- }
-}
-
-bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
- uint8_t current_layer = get_highest_layer(layer_state);
- switch (current_layer) {
- case MAC_BASE:
- case WIN_BASE:
-#ifdef CAPS_LOCK_INDICATOR_COLOR
- if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
- }
-#endif
- break;
- case _FN1:
- case _FN2:
- case _FN3:
-#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
- rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
-#endif
- break;
- }
- return false;
-}
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
- for (uint8_t i = led_min; i < led_max; i++) {
- uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
- if ((*is_keycode)(keycode)) {
- rgb_matrix_set_color(i, red, green, blue);
- }
- }
-}
-
-bool is_caps_lock_indicator(uint16_t keycode) {
-#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
- return (KC_A <= keycode && keycode <= KC_Z) || keycode == KC_CAPS;
-#else
- return keycode == KC_CAPS;
-#endif
-}
-
-bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
diff --git a/keyboards/keychron/q2/ansi/keymaps/ladduro/rgb_matrix_user.h b/keyboards/keychron/q2/ansi/keymaps/ladduro/rgb_matrix_user.h
deleted file mode 100644
index 4d33f483aeee..000000000000
--- a/keyboards/keychron/q2/ansi/keymaps/ladduro/rgb_matrix_user.h
+++ /dev/null
@@ -1,25 +0,0 @@
-
-/* Copyright 2022 @ Ionut Micu
- *
- * 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 .
- */
-
-#pragma once
-
-void rgb_matrix_init_user(void);
-
-void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
-
-bool is_caps_lock_indicator(uint16_t keycode);
-bool is_transparent(uint16_t keycode);
\ No newline at end of file
diff --git a/keyboards/keychron/q2/ansi/keymaps/ladduro/rules.mk b/keyboards/keychron/q2/ansi/keymaps/ladduro/rules.mk
deleted file mode 100644
index c0ee640cd242..000000000000
--- a/keyboards/keychron/q2/ansi/keymaps/ladduro/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-MOUSEKEY_ENABLE = no
-
-ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
- SRC += rgb_matrix_user.c
-endif
diff --git a/keyboards/keychron/q1/iso/keymaps/kubahorak/keymap_user.h b/keyboards/keychron/q2/ansi/keymaps/via/config.h
similarity index 80%
rename from keyboards/keychron/q1/iso/keymaps/kubahorak/keymap_user.h
rename to keyboards/keychron/q2/ansi/keymaps/via/config.h
index 728114d556ff..54bbaf673fed 100644
--- a/keyboards/keychron/q1/iso/keymaps/kubahorak/keymap_user.h
+++ b/keyboards/keychron/q2/ansi/keymaps/via/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Grayson Carr
+/* 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
@@ -14,15 +14,4 @@
* along with this program. If not, see .
*/
-#pragma once
-
-// clang-format off
-
-enum layers {
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-// clang-format on
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/ansi/keymaps/via/keymap.c b/keyboards/keychron/q2/ansi/keymaps/via/keymap.c
index ea386157bcb2..fa10916396d3 100644
--- a/keyboards/keychron/q2/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,14 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -29,37 +31,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q2/ansi/readme.md b/keyboards/keychron/q2/ansi/readme.md
deleted file mode 100644
index d3134cedb504..000000000000
--- a/keyboards/keychron/q2/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q2
diff --git a/keyboards/keychron/q2/ansi/rules.mk b/keyboards/keychron/q2/ansi/rules.mk
index ede7d6fab23a..4bc1e23a57a0 100644
--- a/keyboards/keychron/q2/ansi/rules.mk
+++ b/keyboards/keychron/q2/ansi/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-ENCODER_ENABLE = no # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
index 28f91269c444..347f00f760c6 100644
--- a/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,8 +17,9 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -110,7 +111,7 @@ led_config_t g_led_config = {
},
{
// LED Index to Physical Position
- {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0},
+ {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0}, // {244,-4}
{4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {202,15}, {224,15},
{6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {196,30}, {224,30},
{9,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
@@ -119,11 +120,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/ansi_encoder/config.h b/keyboards/keychron/q2/ansi_encoder/config.h
index b7e4b1e7f871..ea8cb564ada5 100644
--- a/keyboards/keychron/q2/ansi_encoder/config.h
+++ b/keyboards/keychron/q2/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -23,3 +23,6 @@
/* Encoder used pins */
#define ENCODER_DEFAULT_POS 0x3
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/q2/ansi_encoder/info.json b/keyboards/keychron/q2/ansi_encoder/info.json
index c9587d20ea0a..66f83d1ef946 100644
--- a/keyboards/keychron/q2/ansi_encoder/info.json
+++ b/keyboards/keychron/q2/ansi_encoder/info.json
@@ -1,15 +1,26 @@
{
- "keyboard_name": "Q2",
+ "keyboard_name": "Keychron Q2",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0111",
- "device_version": "1.0.0"
+ "device_version": "1.0.6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -26,77 +37,77 @@
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 13], "x": 13.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25, "w": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.25, "y": 3.25},
- {"matrix": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.25, "y":3.25},
+ {"matrix":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4.25},
- {"matrix": [4, 11], "x": 11, "y": 4.25},
- {"matrix": [4, 12], "x": 12, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.5},
- {"matrix": [2, 12], "x": 14.25, "y": 4.5},
- {"matrix": [4, 14], "x": 15.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4.25},
+ {"matrix":[4,11], "x":11, "y":4.25},
+ {"matrix":[4,12], "x":12, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.5},
+ {"matrix":[2,12], "x":14.25, "y":4.5},
+ {"matrix":[4,14], "x":15.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q2/ansi_encoder/keymaps/default/keymap.c
index 5c20bda03108..4c2df8554722 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,14 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -29,47 +31,47 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#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) },
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN3] = { ENCODER_CCW_CW(_______, _______) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [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
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q2/ansi_encoder/keymaps/default/rules.mk
index a40474b4d5c7..ee325681483f 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/default/rules.mk
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/default/rules.mk
@@ -1 +1 @@
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap_user.h b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/config.h
similarity index 80%
rename from keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap_user.h
rename to keyboards/keychron/q2/ansi_encoder/keymaps/keychron/config.h
index 728114d556ff..54bbaf673fed 100644
--- a/keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap_user.h
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Grayson Carr
+/* 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
@@ -14,15 +14,4 @@
* along with this program. If not, see .
*/
-#pragma once
-
-// clang-format off
-
-enum layers {
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-// clang-format on
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/keymap.c
index db560b8ea37f..484b2dd6c1a8 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,66 +16,80 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
+// clang-format on
+
#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) },
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN3] = { ENCODER_CCW_CW(_______, _______) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [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
+#endif // ENCODER_MAP_ENABLE
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q2/chconf.h b/keyboards/keychron/q2/ansi_encoder/keymaps/via/config.h
similarity index 78%
rename from keyboards/keychron/q2/chconf.h
rename to keyboards/keychron/q2/ansi_encoder/keymaps/via/config.h
index cbbae31079fb..54bbaf673fed 100644
--- a/keyboards/keychron/q2/chconf.h
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/via/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 QMK
+/* 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
@@ -14,12 +14,4 @@
* along with this program. If not, see .
*/
-#pragma once
-
-#define CH_CFG_ST_FREQUENCY 10000
-
-#define CH_CFG_OPTIMIZE_SPEED FALSE
-
-#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
-
-#include_next
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q2/ansi_encoder/keymaps/via/keymap.c
index f4ae8c1cc064..4c2df8554722 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,14 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -29,47 +31,47 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#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) },
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN3] = { ENCODER_CCW_CW(_______, _______) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [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
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q2/ansi_encoder/keymaps/via/rules.mk
index 4253f570f0bb..f1adcab005e8 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/via/rules.mk
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q2/ansi_encoder/readme.md b/keyboards/keychron/q2/ansi_encoder/readme.md
deleted file mode 100644
index 2bb5d3bca8a7..000000000000
--- a/keyboards/keychron/q2/ansi_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ANSI variant of the Keychron Q2 and support encoder
-
-- Enable EC11 rotary encoder
-- Turn colckwise to increase volume and turn anti-colckwise to decrease volume
-- Press top right key pushbutton to mute
diff --git a/keyboards/keychron/q2/ansi_encoder/rules.mk b/keyboards/keychron/q2/ansi_encoder/rules.mk
index b294cf950e01..4bc1e23a57a0 100644
--- a/keyboards/keychron/q2/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q2/ansi_encoder/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q2/config.h b/keyboards/keychron/q2/config.h
index 63e31cd01de6..8e368df7a95b 100644
--- a/keyboards/keychron/q2/config.h
+++ b/keyboards/keychron/q2/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,27 +16,36 @@
#pragma once
-#define MATRIX_UNSELECT_DRIVE_HIGH
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4, 4} }
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
#define DRIVER_ADDR_2 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
+
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
-/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
-/* Use 5 dynamic keymap layers */
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+/* Turn off effects when suspended */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
@@ -74,9 +83,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -91,5 +104,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q2/halconf.h b/keyboards/keychron/q2/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q2/halconf.h
+++ b/keyboards/keychron/q2/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q2/iso/config.h b/keyboards/keychron/q2/iso/config.h
index 35a86d5839f5..1ea629f68067 100644
--- a/keyboards/keychron/q2/iso/config.h
+++ b/keyboards/keychron/q2/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -20,3 +20,6 @@
#define DRIVER_1_LED_TOTAL 34
#define DRIVER_2_LED_TOTAL 34
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 29
diff --git a/keyboards/keychron/q2/iso/info.json b/keyboards/keychron/q2/iso/info.json
index e3cad79b14be..c3530a049c9c 100644
--- a/keyboards/keychron/q2/iso/info.json
+++ b/keyboards/keychron/q2/iso/info.json
@@ -1,15 +1,26 @@
{
- "keyboard_name": "Q2",
+ "keyboard_name": "Keychron Q2",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0112",
- "device_version": "1.0.0"
+ "device_version": "1.0.7"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,78 +32,78 @@
"layouts": {
"LAYOUT_iso_68": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25},
- {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25},
+ {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.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": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.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":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4.25},
- {"matrix": [4, 11], "x": 11, "y": 4.25},
- {"matrix": [4, 12], "x": 12, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.5},
- {"matrix": [2, 12], "x": 14.25, "y": 4.5},
- {"matrix": [4, 14], "x": 15.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4.25},
+ {"matrix":[4,11], "x":11, "y":4.25},
+ {"matrix":[4,12], "x":12, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.5},
+ {"matrix":[2,12], "x":14.25, "y":4.5},
+ {"matrix":[4,14], "x":15.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q2/iso/iso.c b/keyboards/keychron/q2/iso/iso.c
index 1f2c76468e8f..5e4f80462e53 100644
--- a/keyboards/keychron/q2/iso/iso.c
+++ b/keyboards/keychron/q2/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,8 +17,9 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -111,7 +112,7 @@ led_config_t g_led_config = {
},
{
// LED Index to Physical Position
- {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0},
+ {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0}, // {224,-4}
{4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {224,15},
{6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {187,30}, {204,23}, {224,30},
{2,45}, {18,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
@@ -121,10 +122,10 @@ led_config_t g_led_config = {
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/iso/keymaps/default/keymap.c b/keyboards/keychron/q2/iso/keymaps/default/keymap.c
index 3f2952f0b22b..3401266132fc 100644
--- a/keyboards/keychron/q2/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,14 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -29,37 +31,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q2/iso/keymaps/keychron/config.h b/keyboards/keychron/q2/iso/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q2/iso/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q2/iso/keymaps/keychron/keymap.c
index 989f74929d12..5a61f3f06bb5 100644
--- a/keyboards/keychron/q2/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,56 +16,70 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q2/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q2/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q2/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q2/iso/keymaps/via/config.h b/keyboards/keychron/q2/iso/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q2/iso/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/iso/keymaps/via/keymap.c b/keyboards/keychron/q2/iso/keymaps/via/keymap.c
index 3f2952f0b22b..3401266132fc 100644
--- a/keyboards/keychron/q2/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,14 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -29,37 +31,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q2/iso/readme.md b/keyboards/keychron/q2/iso/readme.md
deleted file mode 100644
index 29404e03cac5..000000000000
--- a/keyboards/keychron/q2/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the Keychron Q2
diff --git a/keyboards/keychron/q2/iso/rules.mk b/keyboards/keychron/q2/iso/rules.mk
index b3de9622913e..4bc1e23a57a0 100644
--- a/keyboards/keychron/q2/iso/rules.mk
+++ b/keyboards/keychron/q2/iso/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# change yes to no to disable.
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # 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 N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-ENCODER_ENABLE = no # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q2/iso_encoder/config.h b/keyboards/keychron/q2/iso_encoder/config.h
index 376b92b6fa11..5190145f257a 100644
--- a/keyboards/keychron/q2/iso_encoder/config.h
+++ b/keyboards/keychron/q2/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -23,3 +23,6 @@
/* Encoder used pins */
#define ENCODER_DEFAULT_POS 0x3
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 29
diff --git a/keyboards/keychron/q2/iso_encoder/info.json b/keyboards/keychron/q2/iso_encoder/info.json
index 5030e6be4262..9b4b8dc5edaf 100644
--- a/keyboards/keychron/q2/iso_encoder/info.json
+++ b/keyboards/keychron/q2/iso_encoder/info.json
@@ -1,15 +1,26 @@
{
- "keyboard_name": "Q2",
+ "keyboard_name": "Keychron Q2",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0113",
- "device_version": "1.0.0"
+ "device_version": "1.0.7"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -26,78 +37,78 @@
"layouts": {
"LAYOUT_iso_68": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25},
- {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25},
+ {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.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": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.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":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4.25},
- {"matrix": [4, 11], "x": 11, "y": 4.25},
- {"matrix": [4, 12], "x": 12, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.5},
- {"matrix": [2, 12], "x": 14.25, "y": 4.5},
- {"matrix": [4, 14], "x": 15.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4.25},
+ {"matrix":[4,11], "x":11, "y":4.25},
+ {"matrix":[4,12], "x":12, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.5},
+ {"matrix":[2,12], "x":14.25, "y":4.5},
+ {"matrix":[4,14], "x":15.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q2/iso_encoder/iso_encoder.c b/keyboards/keychron/q2/iso_encoder/iso_encoder.c
index 1f2c76468e8f..5e4f80462e53 100644
--- a/keyboards/keychron/q2/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q2/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,8 +17,9 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -111,7 +112,7 @@ led_config_t g_led_config = {
},
{
// LED Index to Physical Position
- {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0},
+ {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0}, // {224,-4}
{4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {224,15},
{6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {187,30}, {204,23}, {224,30},
{2,45}, {18,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
@@ -121,10 +122,10 @@ led_config_t g_led_config = {
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q2/iso_encoder/keymaps/default/keymap.c
index 5cbe605de40b..cc408fea0e1a 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,14 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -29,47 +31,47 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#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) },
- [_FN1] = { ENCODER_CCW_CW(_______, _______) },
- [_FN2] = { ENCODER_CCW_CW(_______, _______) },
- [_FN3] = { ENCODER_CCW_CW(_______, _______) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [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
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/default/rules.mk b/keyboards/keychron/q2/iso_encoder/keymaps/default/rules.mk
index a40474b4d5c7..ee325681483f 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/default/rules.mk
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/default/rules.mk
@@ -1 +1 @@
-ENCODER_MAP_ENABLE = yes
\ No newline at end of file
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/dhertz/keymap.c b/keyboards/keychron/q2/iso_encoder/keymaps/dhertz/keymap.c
deleted file mode 100644
index 0d4f7e6a2212..000000000000
--- a/keyboards/keychron/q2/iso_encoder/keymaps/dhertz/keymap.c
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2022 Dan Hertz (@dhertz)
-// SPDX-License-Identifier: GPL-3.0
-
-#include QMK_KEYBOARD_H
-#include "dhertz.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Layer 0: Default Layer
- * ,---------------------------------------------------------------.
- * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backsp|( )|
- * |---------------------------------------------------------------|
- * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Enter|Del|
- * |------------------------------------------------------` |---|
- * |SrCtl | A| S| D| F| G| H| J| K| L| ;| '| \| |Hom|
- * |---------------------------------------------------------------|
- * |Shif| #| Z| X| C| V| B| N| M| ,| .| /|Shift |Up | |
- * |---------------------------------------------------------------|
- * |NcCtl| Alt| CTab| LyrSpc |CGv|Alt|CSL|Lef|Dow|Rig|
- * `---------------------------------------------------------------'
- */
- [0] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- SRCH_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, HSH_TLD, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- NC_CTL, KC_LALT, CMD_TAB_CMD, LYR_SPC, CMD_GRV_CMD, KC_RALT, CMD_SFT_ALT_A, KC_LEFT, KC_DOWN, KC_RIGHT
- ),
- /* Layer 1: Special
- * ,---------------------------------------------------------------.
- * | §| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| |( )|
- * |---------------------------------------------------------------|
- * | | | | | | | | | | | | | | | |
- * |------------------------------------------------------` |---|
- * | | | | | | | | | |CSL| | | `| | |
- * |---------------------------------------------------------------|
- * | | `| | |CAC| | | | | | | | |PgU| |
- * |---------------------------------------------------------------|
- * | | | | | | | |Hom|PgD|End|
- * `---------------------------------------------------------------'
- */
- [1] = LAYOUT_iso_68(
- KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F10, KC_F11, KC_TRNS, CMD_SFT_A,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CMD_SFT_L, KC_TRNS, KC_TRNS, KC_NUBS, KC_TRNS, KC_END,
- KC_TRNS, KC_NUBS, KC_TRNS, KC_TRNS, CMD_ALT_C, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
- ),
-};
-
-void keyboard_post_init_user(void) {
- rgb_matrix_mode(RGB_MATRIX_NONE);
- rgb_matrix_set_color_all(RGB_BLACK);
-}
-
-uint32_t cancel_cmd(uint32_t trigger_time, void *cb_arg) {
- if (get_highest_layer(layer_state|default_layer_state) > 0) {
- return 20;
- }
- unregister_code(KC_LCMD);
- return 0;
-}
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
- if (get_highest_layer(layer_state|default_layer_state) == 0) {
- if (clockwise) {
- tap_code_delay(KC_VOLU, 10);
- } else {
- tap_code_delay(KC_VOLD, 10);
- }
- } else {
- if ((get_mods() & MOD_BIT(KC_LCMD)) != MOD_BIT(KC_LCMD)) {
- register_code(KC_LCMD);
- defer_exec(20, cancel_cmd, NULL);
- }
- if (clockwise) {
- tap_code(KC_TAB);
- } else {
- tap_code16(S(KC_TAB));
- }
- }
- return false;
-}
-
-bool rgb_matrix_indicators_user(void) {
- switch(get_highest_layer(layer_state|default_layer_state)) {
- case 1:
- rgb_matrix_set_color_all(RGB_BLACK);
- rgb_matrix_set_color_all(25, 25, 112);
- break;
- default:
- rgb_matrix_set_color_all(RGB_BLACK);
- break;
- }
- return false;
-}
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/dhertz/rules.mk b/keyboards/keychron/q2/iso_encoder/keymaps/dhertz/rules.mk
deleted file mode 100644
index 199bad85f3c8..000000000000
--- a/keyboards/keychron/q2/iso_encoder/keymaps/dhertz/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-DEFERRED_EXEC_ENABLE = yes
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/keymap.c
index eb485917b3f6..40e0b2c130f5 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,66 +16,74 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
+// clang-format on
+
#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) },
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN3] = { ENCODER_CCW_CW(_______, _______) },
-};
-#endif
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {[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 // ENCODER_MAP_ENABLE
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/via/config.h b/keyboards/keychron/q2/iso_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q2/iso_encoder/keymaps/via/keymap.c
index 244eb8b4826f..cc408fea0e1a 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,14 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -29,47 +31,47 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ [_FN2] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#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) },
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [_FN3] = { ENCODER_CCW_CW(_______, _______) },
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [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
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q2/iso_encoder/readme.md b/keyboards/keychron/q2/iso_encoder/readme.md
deleted file mode 100644
index 1d808cbb738a..000000000000
--- a/keyboards/keychron/q2/iso_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ISO variant of the Keychron Q2 and support encoder
-
-- Enable EC11 rotary encoder
-- Turn colckwise to increase volume and turn anti-colckwise to decrease volume
-- Press top right key pushbutton to mute
diff --git a/keyboards/keychron/q2/iso_encoder/rules.mk b/keyboards/keychron/q2/iso_encoder/rules.mk
index aba76c09442f..4bc1e23a57a0 100644
--- a/keyboards/keychron/q2/iso_encoder/rules.mk
+++ b/keyboards/keychron/q2/iso_encoder/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# change yes to no to disable.
#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # 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 N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-AUDIO_ENABLE = no # Audio output
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q2/jis/config.h b/keyboards/keychron/q2/jis/config.h
index 2d83933f9a6a..e6d9bff37597 100644
--- a/keyboards/keychron/q2/jis/config.h
+++ b/keyboards/keychron/q2/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,5 @@
#define DRIVER_2_LED_TOTAL 36
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE { 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D }
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/q2/jis/info.json b/keyboards/keychron/q2/jis/info.json
index d0af24b29daa..ac8ed1176942 100644
--- a/keyboards/keychron/q2/jis/info.json
+++ b/keyboards/keychron/q2/jis/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0114",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,81 +32,81 @@
"layouts": {
"LAYOUT_jis_71": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25},
- {"matrix": [3, 1], "x": 14, "y": 0.25},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25},
+ {"matrix":[3, 1], "x":14, "y":0.25},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25},
- {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25},
+ {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.25, "y": 3.25},
- {"matrix": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 12], "x": 12.25, "y": 3.25},
- {"matrix": [3, 13], "x": 13.25, "y": 3.25},
- {"matrix": [3, 14], "x": 14.25, "y": 3.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.25, "y":3.25},
+ {"matrix":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,12], "x":12.25, "y":3.25},
+ {"matrix":[3,13], "x":13.25, "y":3.25},
+ {"matrix":[3,14], "x":14.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25},
- {"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 6], "x": 4.5, "y": 4.25, "w": 4.5},
- {"matrix": [4, 9], "x": 9, "y": 4.25, "w": 1.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25},
- {"matrix": [2, 12], "x": 14.25, "y": 4.25},
- {"matrix": [4, 14], "x": 15.25, "y": 4.25}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25},
+ {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":3.5, "y":4.25},
+ {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5},
+ {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[2,12], "x":14.25, "y":4.25},
+ {"matrix":[4,14], "x":15.25, "y":4.25}
]
}
}
diff --git a/keyboards/keychron/q2/jis/jis.c b/keyboards/keychron/q2/jis/jis.c
index 31ed1edc58a3..6193f80b019f 100644
--- a/keyboards/keychron/q2/jis/jis.c
+++ b/keyboards/keychron/q2/jis/jis.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -127,8 +127,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/jis/keymaps/default/keymap.c b/keyboards/keychron/q2/jis/keymaps/default/keymap.c
index e11a31cda511..cf85a0ebe58e 100644
--- a/keyboards/keychron/q2/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ [MAC_FN1] = LAYOUT_jis_71(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/config.h b/keyboards/keychron/q2/jis/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q2/jis/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
index 930f4614665a..cd4c0b419204 100644
--- a/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
+ [MAC_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk b/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q2/jis/keymaps/via/config.h b/keyboards/keychron/q2/jis/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q2/jis/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/jis/keymaps/via/keymap.c b/keyboards/keychron/q2/jis/keymaps/via/keymap.c
index e11a31cda511..cf85a0ebe58e 100644
--- a/keyboards/keychron/q2/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ [MAC_FN1] = LAYOUT_jis_71(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q2/jis/rules.mk b/keyboards/keychron/q2/jis/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/q2/jis/rules.mk
+++ b/keyboards/keychron/q2/jis/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q2/jis_encoder/config.h b/keyboards/keychron/q2/jis_encoder/config.h
index 5e7ab551437f..fc961ea2dbb2 100644
--- a/keyboards/keychron/q2/jis_encoder/config.h
+++ b/keyboards/keychron/q2/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,8 +21,6 @@
#define DRIVER_2_LED_TOTAL 36
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE { 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D }
-
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/q2/jis_encoder/info.json b/keyboards/keychron/q2/jis_encoder/info.json
index e409fb63a67e..4d7168ac5efe 100644
--- a/keyboards/keychron/q2/jis_encoder/info.json
+++ b/keyboards/keychron/q2/jis_encoder/info.json
@@ -6,10 +6,22 @@
"usb": {
"vid": "0x3434",
"pid": "0x0115",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "encoder_map": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -26,81 +38,81 @@
"layouts": {
"LAYOUT_jis_71": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25},
- {"matrix": [3, 1], "x": 14, "y": 0.25},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25},
+ {"matrix":[3, 1], "x":14, "y":0.25},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25},
- {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25},
+ {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.25, "y": 3.25},
- {"matrix": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 12], "x": 12.25, "y": 3.25},
- {"matrix": [3, 13], "x": 13.25, "y": 3.25},
- {"matrix": [3, 14], "x": 14.25, "y": 3.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.25, "y":3.25},
+ {"matrix":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,12], "x":12.25, "y":3.25},
+ {"matrix":[3,13], "x":13.25, "y":3.25},
+ {"matrix":[3,14], "x":14.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25},
- {"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 6], "x": 4.5, "y": 4.25, "w": 4.5},
- {"matrix": [4, 9], "x": 9, "y": 4.25, "w": 1.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25},
- {"matrix": [2, 12], "x": 14.25, "y": 4.25},
- {"matrix": [4, 14], "x": 15.25, "y": 4.25}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25},
+ {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":3.5, "y":4.25},
+ {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5},
+ {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[2,12], "x":14.25, "y":4.25},
+ {"matrix":[4,14], "x":15.25, "y":4.25}
]
}
}
diff --git a/keyboards/keychron/q2/jis_encoder/jis_encoder.c b/keyboards/keychron/q2/jis_encoder/jis_encoder.c
index de20255e0b56..13a57b9be807 100644
--- a/keyboards/keychron/q2/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/q2/jis_encoder/jis_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -127,8 +127,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
index 33b36986162f..8d11a8a0ea98 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_jis_71(
+ 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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/config.h b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
index a1c155e6e600..f0ac231651b9 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
+ [MAC_FN1] = LAYOUT_jis_71(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -64,21 +65,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-// clang-format on
-
#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)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [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 // ENCODER_MAP_ENABLE
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..dac903490f12 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/config.h b/keyboards/keychron/q2/jis_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
index 33b36986162f..c6d2c5262b3e 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
+ [MAC_FN1] = LAYOUT_jis_71(
KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk b/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk
index f1adcab005e8..1e5b99807cb7 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk
@@ -1,2 +1 @@
VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q2/jis_encoder/rules.mk b/keyboards/keychron/q2/jis_encoder/rules.mk
index 5091fe94148b..4bc1e23a57a0 100644
--- a/keyboards/keychron/q2/jis_encoder/rules.mk
+++ b/keyboards/keychron/q2/jis_encoder/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q2/q2.c b/keyboards/keychron/q2/q2.c
index 7ff85556def5..2d33298a45db 100644
--- a/keyboards/keychron/q2/q2.c
+++ b/keyboards/keychron/q2/q2.c
@@ -17,15 +17,14 @@
#include "quantum.h"
const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
+ 0b111111111111111,
+ 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) {
@@ -33,47 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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 // CAPS_LOCK_LED_INDEX
+#endif
diff --git a/keyboards/keychron/q2/readme.md b/keyboards/keychron/q2/readme.md
index 60144a1079e6..86af71ee42ed 100644
--- a/keyboards/keychron/q2/readme.md
+++ b/keyboards/keychron/q2/readme.md
@@ -1,18 +1,30 @@
# Keychron Q2
+![Keychron Q2](https://i.imgur.com/9bJ6Moh.jpg)
+
A customizable 65% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q2
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q2 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q2-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/q2/ansi:default
+ make keychron/q2/ansi_encoder:default
+ make keychron/q2/iso:default
+ make keychron/q2/iso_encoder:default
+ make keychron/q2/jis:default
+ make keychron/q2/jis_encoder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/q2/ansi:default:flash
+ make keychron/q2/ansi_encoder:default:flash
+ make keychron/q2/iso:default:flash
+ make keychron/q2/iso_encoder:default:flash
+ make keychron/q2/jis:default:flash
+ make keychron/q2/jis_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q3/ansi/ansi.c b/keyboards/keychron/q3/ansi/ansi.c
index 432a914058c8..f44471e364ab 100644
--- a/keyboards/keychron/q3/ansi/ansi.c
+++ b/keyboards/keychron/q3/ansi/ansi.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -143,12 +143,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q3/ansi/config.h b/keyboards/keychron/q3/ansi/config.h
index f7c1c16931e2..9e3a2704cf65 100644
--- a/keyboards/keychron/q3/ansi/config.h
+++ b/keyboards/keychron/q3/ansi/config.h
@@ -16,21 +16,10 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
-
-/* We uses a pin with a stronger pull resistor than the internal MCU pins */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 39
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
-
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
-
diff --git a/keyboards/keychron/q3/ansi/info.json b/keyboards/keychron/q3/ansi/info.json
index 124ac1bdcc9c..7e96e5e175b8 100644
--- a/keyboards/keychron/q3/ansi/info.json
+++ b/keyboards/keychron/q3/ansi/info.json
@@ -6,108 +6,124 @@
"usb": {
"vid": "0x3434",
"pid": "0x0120",
- "device_version": "1.0.0"
+ "device_version": "1.0.7"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q3/ansi/keymaps/default/keymap.c b/keyboards/keychron/q3/ansi/keymaps/default/keymap.c
index 3837a59fad70..6b7cd23ddc4a 100644
--- a/keyboards/keychron/q3/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/ansi/keymaps/default/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,9 +25,12 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
@@ -41,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, 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_PSCR, _______, RGB_MOD,
+ KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
@@ -49,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_ansi(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q3/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q3/ansi/keymaps/keychron/keymap.c
index 32a9d010ea7b..1e7dfbb9264e 100644
--- a/keyboards/keychron/q3/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/ansi/keymaps/keychron/keymap.c
@@ -16,6 +16,9 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
@@ -58,12 +61,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+// clang-format off
+
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if(!process_record_keychron(keycode, record)) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
return false;
}
diff --git a/keyboards/keychron/q3/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q3/ansi/keymaps/keychron/rules.mk
index b29114f76ae1..dac903490f12 100644
--- a/keyboards/keychron/q3/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
-
VIA_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q3/ansi/keymaps/via/keymap.c b/keyboards/keychron/q3/ansi/keymaps/via/keymap.c
index 3837a59fad70..6b7cd23ddc4a 100644
--- a/keyboards/keychron/q3/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/ansi/keymaps/via/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,9 +25,12 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
@@ -41,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, 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_PSCR, _______, RGB_MOD,
+ KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
@@ -49,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_ansi(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q3/ansi/readme.md b/keyboards/keychron/q3/ansi/readme.md
deleted file mode 100644
index 1e7ea53e233e..000000000000
--- a/keyboards/keychron/q3/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q3
diff --git a/keyboards/keychron/q3/ansi/rules.mk b/keyboards/keychron/q3/ansi/rules.mk
index 58bbb89a7226..4bc1e23a57a0 100644
--- a/keyboards/keychron/q3/ansi/rules.mk
+++ b/keyboards/keychron/q3/ansi/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_ENABLE = yes
-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
diff --git a/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
index f873f77d12ec..d58e84671213 100644
--- a/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -38,6 +38,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
+ // {0, I_14, G_14, H_14}, // Encoder
{0, I_15, G_15, H_15},
{0, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -143,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q3/ansi_encoder/config.h b/keyboards/keychron/q3/ansi_encoder/config.h
index 201288841a6b..fa72bf557869 100644
--- a/keyboards/keychron/q3/ansi_encoder/config.h
+++ b/keyboards/keychron/q3/ansi_encoder/config.h
@@ -16,10 +16,6 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 39
@@ -28,8 +24,8 @@
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
-#define CKLED2001_CURRENT_TUNE \
- { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
+/* Encoder Configuration */
+#define ENCODER_DEFAULT_POS 0x3
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
diff --git a/keyboards/keychron/q3/ansi_encoder/info.json b/keyboards/keychron/q3/ansi_encoder/info.json
index 2dd2f18bf9f5..b685276dee5f 100644
--- a/keyboards/keychron/q3/ansi_encoder/info.json
+++ b/keyboards/keychron/q3/ansi_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0121",
- "device_version": "1.0.0"
+ "device_version": "1.0.7"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": false
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -21,99 +37,99 @@
"layouts": {
"LAYOUT_tkl_f13_ansi": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.75, "y":0},
+ {"matrix":[0,15], "x":16.75, "y":0},
+ {"matrix":[3,14], "x":17.75, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.75, "y":1.25},
+ {"matrix":[1,15], "x":16.75, "y":1.25},
+ {"matrix":[3,15], "x":17.75, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.75, "y":2.25},
+ {"matrix":[2,15], "x":16.75, "y":2.25},
+ {"matrix":[3,12], "x":17.75, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.75, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.75, "y":5.25},
+ {"matrix":[5,15], "x":16.75, "y":5.25},
+ {"matrix":[4,14], "x":17.75, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q3/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q3/ansi_encoder/keymaps/default/keymap.c
index 832234c99741..29e2e7fdc496 100644
--- a/keyboards/keychron/q3/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/ansi_encoder/keymaps/default/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,9 +25,12 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
@@ -49,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_ansi(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
@@ -58,10 +63,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/keymap.c
index 7a6944ff422c..b3b4e3f14e63 100644
--- a/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,9 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
@@ -26,49 +29,52 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ 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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_tkl_f13_ansi(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_ansi(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
#endif // ENCODER_MAP_ENABLE
+// clang-format on
+
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -76,5 +82,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q3/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q3/ansi_encoder/keymaps/via/keymap.c
index 80230dae4bf0..29e2e7fdc496 100644
--- a/keyboards/keychron/q3/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/ansi_encoder/keymaps/via/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,9 +25,12 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
@@ -49,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_ansi(
- _______, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
@@ -58,10 +63,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/ansi_encoder/readme.md b/keyboards/keychron/q3/ansi_encoder/readme.md
deleted file mode 100644
index 97f0f5db7114..000000000000
--- a/keyboards/keychron/q3/ansi_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ANSI variant of the Keychron Q3
-
-- Enable rotary encoder support.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q3/ansi_encoder/rules.mk b/keyboards/keychron/q3/ansi_encoder/rules.mk
index 77b90f246666..aa286a161677 100644
--- a/keyboards/keychron/q3/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q3/ansi_encoder/rules.mk
@@ -1,23 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
-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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q3/config.h b/keyboards/keychron/q3/config.h
index 79f07d039054..ab452c1a1282 100644
--- a/keyboards/keychron/q3/config.h
+++ b/keyboards/keychron/q3/config.h
@@ -16,12 +16,8 @@
#pragma once
-/* key matrix size */
-#define MATRIX_ROWS 6
-#define MATRIX_COLS 16
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
@@ -37,9 +33,13 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0x98, 0x98, 0x44, 0x98, 0x98, 0x44, 0x98, 0x98, 0x44, 0x98, 0x98, 0x44 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -83,9 +83,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -100,5 +104,10 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
diff --git a/keyboards/keychron/q3/halconf.h b/keyboards/keychron/q3/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q3/halconf.h
+++ b/keyboards/keychron/q3/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q3/iso/config.h b/keyboards/keychron/q3/iso/config.h
index c6992eb52bfb..2f7f39ad9517 100644
--- a/keyboards/keychron/q3/iso/config.h
+++ b/keyboards/keychron/q3/iso/config.h
@@ -16,20 +16,10 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
-
-/* We uses a pin with a stronger pull resistor than the internal MCU pins */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 40
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 49
diff --git a/keyboards/keychron/q3/iso/info.json b/keyboards/keychron/q3/iso/info.json
index c9618c5b47fe..7d12eb84fa90 100644
--- a/keyboards/keychron/q3/iso/info.json
+++ b/keyboards/keychron/q3/iso/info.json
@@ -6,109 +6,125 @@
"usb": {
"vid": "0x3434",
"pid": "0x0122",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_tkl_iso": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q3/iso/iso.c b/keyboards/keychron/q3/iso/iso.c
index d747d5511545..4563d51f1166 100644
--- a/keyboards/keychron/q3/iso/iso.c
+++ b/keyboards/keychron/q3/iso/iso.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q3/iso/keymaps/default/keymap.c b/keyboards/keychron/q3/iso/keymaps/default/keymap.c
index e8a98f32db5d..baebff79cb4d 100644
--- a/keyboards/keychron/q3/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/iso/keymaps/default/keymap.c
@@ -16,43 +16,17 @@
#include QMK_KEYBOARD_H
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
+enum layers { MAC_BASE, MAC_FN, WIN_BASE, WIN_FN };
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [MAC_BASE] = LAYOUT_tkl_iso(KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, , RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, 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_NUHS, KC_ENT, KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_iso(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN] = LAYOUT_tkl_iso(_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_tkl_iso(
- KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_tkl_iso(KC_ESC, 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_PSCR, KC_NO, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, 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_NUHS, KC_ENT, KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_iso(
- _______, KC_BRID, KC_BRIU, _______, _______, 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_FN] = LAYOUT_tkl_iso(_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q3/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q3/iso/keymaps/keychron/keymap.c
index cff222e885a8..b765b8ad5ce1 100644
--- a/keyboards/keychron/q3/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/iso/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
enum layers{
MAC_BASE,
@@ -60,6 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -67,5 +69,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q3/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q3/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q3/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q3/iso/keymaps/via/keymap.c b/keyboards/keychron/q3/iso/keymaps/via/keymap.c
index e8a98f32db5d..baebff79cb4d 100644
--- a/keyboards/keychron/q3/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/iso/keymaps/via/keymap.c
@@ -16,43 +16,17 @@
#include QMK_KEYBOARD_H
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
+enum layers { MAC_BASE, MAC_FN, WIN_BASE, WIN_FN };
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [MAC_BASE] = LAYOUT_tkl_iso(KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, , RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, 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_NUHS, KC_ENT, KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_iso(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN] = LAYOUT_tkl_iso(_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_tkl_iso(
- KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_tkl_iso(KC_ESC, 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_PSCR, KC_NO, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, 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_NUHS, KC_ENT, KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_iso(
- _______, KC_BRID, KC_BRIU, _______, _______, 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_FN] = LAYOUT_tkl_iso(_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q3/iso/readme.md b/keyboards/keychron/q3/iso/readme.md
deleted file mode 100644
index 69db8ff53268..000000000000
--- a/keyboards/keychron/q3/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the Keychron Q3
diff --git a/keyboards/keychron/q3/iso/rules.mk b/keyboards/keychron/q3/iso/rules.mk
index 58bbb89a7226..4bc1e23a57a0 100644
--- a/keyboards/keychron/q3/iso/rules.mk
+++ b/keyboards/keychron/q3/iso/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_ENABLE = yes
-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
diff --git a/keyboards/keychron/q3/iso_encoder/config.h b/keyboards/keychron/q3/iso_encoder/config.h
index 2ee93a4faeac..addebe1f47a3 100644
--- a/keyboards/keychron/q3/iso_encoder/config.h
+++ b/keyboards/keychron/q3/iso_encoder/config.h
@@ -16,10 +16,6 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 40
@@ -28,8 +24,8 @@
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
-#define CKLED2001_CURRENT_TUNE \
- { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
+/* Encoder Configuration */
+#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 49
diff --git a/keyboards/keychron/q3/iso_encoder/info.json b/keyboards/keychron/q3/iso_encoder/info.json
index 85714450876c..584da7952cac 100644
--- a/keyboards/keychron/q3/iso_encoder/info.json
+++ b/keyboards/keychron/q3/iso_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0123",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -21,100 +37,100 @@
"layouts": {
"LAYOUT_tkl_f13_iso": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.75, "y":0},
+ {"matrix":[0,15], "x":16.75, "y":0},
+ {"matrix":[3,14], "x":17.75, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q3/iso_encoder/iso_encoder.c b/keyboards/keychron/q3/iso_encoder/iso_encoder.c
index d2bb169aacc0..4c7ac5adf302 100644
--- a/keyboards/keychron/q3/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q3/iso_encoder/iso_encoder.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q3/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q3/iso_encoder/keymaps/default/keymap.c
index caf29839191c..a07e4610c486 100644
--- a/keyboards/keychron/q3/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/iso_encoder/keymaps/default/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,9 +25,12 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_f13_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
@@ -46,10 +51,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_iso(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -58,10 +63,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q3/iso_encoder/keymaps/keychron/keymap.c
index 336842a28f7d..a5693f9a36b7 100644
--- a/keyboards/keychron/q3/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/iso_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,9 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
@@ -26,49 +29,54 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_f13_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, KC_ROPTN,MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_tkl_f13_iso(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_f13_iso(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_iso(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+// clang-format on
+
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
+
+// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -76,5 +84,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q3/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q3/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q3/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q3/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q3/iso_encoder/keymaps/via/keymap.c
index caf29839191c..a07e4610c486 100644
--- a/keyboards/keychron/q3/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/iso_encoder/keymaps/via/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,9 +25,12 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_f13_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
@@ -46,10 +51,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_iso(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -58,10 +63,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/iso_encoder/readme.md b/keyboards/keychron/q3/iso_encoder/readme.md
deleted file mode 100644
index 9d0017b30baf..000000000000
--- a/keyboards/keychron/q3/iso_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ISO variant of the Keychron Q3
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q3/iso_encoder/rules.mk b/keyboards/keychron/q3/iso_encoder/rules.mk
index 77b90f246666..aa286a161677 100644
--- a/keyboards/keychron/q3/iso_encoder/rules.mk
+++ b/keyboards/keychron/q3/iso_encoder/rules.mk
@@ -1,23 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
-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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q3/jis/config.h b/keyboards/keychron/q3/jis/config.h
index 856dd14df4d5..ae247da3ee89 100644
--- a/keyboards/keychron/q3/jis/config.h
+++ b/keyboards/keychron/q3/jis/config.h
@@ -16,23 +16,10 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
-
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 43
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44 }
-
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
-
diff --git a/keyboards/keychron/q3/jis/info.json b/keyboards/keychron/q3/jis/info.json
index 6f17a7cf9d71..8935fbb2bc03 100644
--- a/keyboards/keychron/q3/jis/info.json
+++ b/keyboards/keychron/q3/jis/info.json
@@ -6,112 +6,128 @@
"usb": {
"vid": "0x3434",
"pid": "0x0124",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_jis_91": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25},
- {"matrix": [0, 13], "x": 14, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[0,13], "x":14, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25},
- {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 3.5, "y": 5.25},
- {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
- {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
- {"matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.75, "y": 5.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.75, "y":5.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q3/jis/jis.c b/keyboards/keychron/q3/jis/jis.c
index f262d3c7d89b..6b21fa36815e 100644
--- a/keyboards/keychron/q3/jis/jis.c
+++ b/keyboards/keychron/q3/jis/jis.c
@@ -19,111 +19,111 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, I_1, G_1, H_1}, // ESC
- {0, I_2, G_2, H_2}, // F1
- {0, I_3, G_3, H_3}, // F2
- {0, I_4, G_4, H_4}, // F3
- {0, I_5, G_5, H_5}, // F4
- {0, I_6, G_6, H_6}, // F5
- {0, I_7, G_7, H_7}, // F6
- {0, I_8, G_8, H_8}, // F7
- {0, I_9, G_9, H_9}, // F8
- {0, I_10, G_10, H_10}, // F9
- {0, I_11, G_11, H_11}, // F10
- {0, I_12, G_12, H_12}, // F11
- {0, I_13, G_13, H_13}, // F12
- {0, I_15, G_15, H_15}, // Print
- {0, I_16, G_16, H_16}, // Cortana
- {1, I_15, G_15, H_15}, // Light
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, I_1, G_1, H_1}, // ESC
+ {0, I_2, G_2, H_2}, // F1
+ {0, I_3, G_3, H_3}, // F2
+ {0, I_4, G_4, H_4}, // F3
+ {0, I_5, G_5, H_5}, // F4
+ {0, I_6, G_6, H_6}, // F5
+ {0, I_7, G_7, H_7}, // F6
+ {0, I_8, G_8, H_8}, // F7
+ {0, I_9, G_9, H_9}, // F8
+ {0, I_10, G_10, H_10}, // F9
+ {0, I_11, G_11, H_11}, // F10
+ {0, I_12, G_12, H_12}, // F11
+ {0, I_13, G_13, H_13}, // F12
+ {0, I_15, G_15, H_15}, // Print
+ {0, I_16, G_16, H_16}, // Cortana
+ {1, I_15, G_15, H_15}, // Light
- {0, C_1, A_1, B_1}, // `~
- {0, C_2, A_2, B_2}, // 1!
- {0, C_3, A_3, B_3}, // 2@
- {0, C_4, A_4, B_4}, // 3#
- {0, C_5, A_5, B_5}, // 4$
- {0, C_6, A_6, B_6}, // 5%
- {0, C_7, A_7, B_7}, // 6^
- {0, C_8, A_8, B_8}, // 7&
- {0, C_9, A_9, B_9}, // 8*
- {0, C_10, A_10, B_10}, // 9()
- {0, C_11, A_11, B_11}, // 0)
- {0, C_12, A_12, B_12}, // -_
- {0, C_13, A_13, B_13}, // =+
- {0, I_13, G_13, H_13}, // |
- {0, I_14, G_14, H_14}, // Backspace
- {0, C_15, A_15, B_15}, // Ins
- {0, C_16, A_16, B_16}, // Home
- {1, I_16, G_16, H_16}, // Page Up
+ {0, C_1, A_1, B_1}, // `~
+ {0, C_2, A_2, B_2}, // 1!
+ {0, C_3, A_3, B_3}, // 2@
+ {0, C_4, A_4, B_4}, // 3#
+ {0, C_5, A_5, B_5}, // 4$
+ {0, C_6, A_6, B_6}, // 5%
+ {0, C_7, A_7, B_7}, // 6^
+ {0, C_8, A_8, B_8}, // 7&
+ {0, C_9, A_9, B_9}, // 8*
+ {0, C_10, A_10, B_10}, // 9()
+ {0, C_11, A_11, B_11}, // 0)
+ {0, C_12, A_12, B_12}, // -_
+ {0, C_13, A_13, B_13}, // =+
+ {0, I_13, G_13, H_13}, // |
+ {0, I_14, G_14, H_14}, // Backspace
+ {0, C_15, A_15, B_15}, // Ins
+ {0, C_16, A_16, B_16}, // Home
+ {1, I_16, G_16, H_16}, // Page Up
- {0, F_1, D_1, E_1}, // tab
- {0, F_2, D_2, E_2}, // Q
- {0, F_3, D_3, E_3}, // W
- {0, F_4, D_4, E_4}, // E
- {0, F_5, D_5, E_5}, // R
- {0, F_6, D_6, E_6}, // T
- {0, F_7, D_7, E_7}, // Y
- {0, F_8, D_8, E_8}, // U
- {0, F_9, D_9, E_9}, // I
- {0, F_10, D_10, E_10}, // O
- {0, F_11, D_11, E_11}, // P
- {0, F_12, D_12, E_12}, // [{
- {0, F_14, D_14, E_14}, // }}
- {0, F_15, D_15, E_15}, // Del
- {0, F_16, D_16, E_16}, // End
- {1, I_13, G_13, H_13}, // Page Down
+ {0, F_1, D_1, E_1}, // tab
+ {0, F_2, D_2, E_2}, // Q
+ {0, F_3, D_3, E_3}, // W
+ {0, F_4, D_4, E_4}, // E
+ {0, F_5, D_5, E_5}, // R
+ {0, F_6, D_6, E_6}, // T
+ {0, F_7, D_7, E_7}, // Y
+ {0, F_8, D_8, E_8}, // U
+ {0, F_9, D_9, E_9}, // I
+ {0, F_10, D_10, E_10}, // O
+ {0, F_11, D_11, E_11}, // P
+ {0, F_12, D_12, E_12}, // [{
+ {0, F_13, D_13, E_13}, // }}
+ {0, F_15, D_15, E_15}, // Del
+ {0, F_16, D_16, E_16}, // End
+ {1, I_13, G_13, H_13}, // Page Down
- {1, I_1, G_1, H_1}, // Cpas
- {1, I_2, G_2, H_2}, // A
- {1, I_3, G_3, H_3}, // S
- {1, I_4, G_4, H_4}, // D
- {1, I_5, G_5, H_5}, // F
- {1, I_6, G_6, H_6}, // G
- {1, I_7, G_7, H_7}, // H
- {1, I_8, G_8, H_8}, // J
- {1, I_9, G_9, H_9}, // K
- {1, I_10, G_10, H_10}, // L
- {1, I_11, G_11, H_11}, // ;
- {1, I_12, G_12, H_12}, // :
- {1, I_14, G_14, H_14}, // #~
- {0, F_13, D_13, E_13}, // Enter
+ {1, I_1, G_1, H_1}, // Cpas
+ {1, I_2, G_2, H_2}, // A
+ {1, I_3, G_3, H_3}, // S
+ {1, I_4, G_4, H_4}, // D
+ {1, I_5, G_5, H_5}, // F
+ {1, I_6, G_6, H_6}, // G
+ {1, I_7, G_7, H_7}, // H
+ {1, I_8, G_8, H_8}, // J
+ {1, I_9, G_9, H_9}, // K
+ {1, I_10, G_10, H_10}, // L
+ {1, I_11, G_11, H_11}, // ;
+ {1, I_12, G_12, H_12}, // :
+ {1, I_14, G_14, H_14}, // #~
+ {0, F_14, D_14, E_14}, // Enter
- {1, C_1, A_1, B_1}, // LShift
- {1, C_3, A_3, B_3}, // Z
- {1, C_4, A_4, B_4}, // X
- {1, C_5, A_5, B_5}, // C
- {1, C_6, A_6, B_6}, // V
- {1, C_7, A_7, B_7}, // B
- {1, C_8, A_8, B_8}, // N
- {1, C_9, A_9, B_9}, // M
- {1, C_10, A_10, B_10}, // ,<
- {1, C_11, A_11, B_11}, // .>
- {1, C_12, A_12, B_12}, // /?
- {1, C_13, A_13, B_13}, // |
- {1, C_14, A_14, B_14}, // RShift
- {1, C_16, A_16, B_16}, // Up
+ {1, C_1, A_1, B_1}, // LShift
+ {1, C_3, A_3, B_3}, // Z
+ {1, C_4, A_4, B_4}, // X
+ {1, C_5, A_5, B_5}, // C
+ {1, C_6, A_6, B_6}, // V
+ {1, C_7, A_7, B_7}, // B
+ {1, C_8, A_8, B_8}, // N
+ {1, C_9, A_9, B_9}, // M
+ {1, C_10, A_10, B_10}, // ,<
+ {1, C_11, A_11, B_11}, // .>
+ {1, C_12, A_12, B_12}, // /?
+ {1, C_13, A_13, B_13}, // |
+ {1, C_14, A_14, B_14}, // RShift
+ {1, C_16, A_16, B_16}, // Up
- {1, F_1, D_1, E_1}, // LCtrl
- {1, F_2, D_2, E_2}, // LWin
- {1, F_3, D_3, E_3}, // LAlt
- {1, F_4, D_4, E_4}, // NUm
- {1, F_7, D_7, E_7}, // Space
- {1, F_10, D_10, E_10}, // Jap
- {1, F_11, D_11, E_11}, // RAlt
- {1, F_12, D_12, E_12}, // RWin
- {1, F_13, D_13, E_13}, // Fn
- {1, F_14, D_14, E_14}, // RCtrl
- {1, F_15, D_15, E_15}, // Left
- {1, F_16, D_16, E_16}, // Down
- {1, C_15, A_15, B_15}, // Right
+ {1, F_1, D_1, E_1}, // LCtrl
+ {1, F_2, D_2, E_2}, // LWin
+ {1, F_3, D_3, E_3}, // LAlt
+ {1, F_4, D_4, E_4}, // NUm
+ {1, F_7, D_7, E_7}, // Space
+ {1, F_10, D_10, E_10}, // Jap
+ {1, F_11, D_11, E_11}, // RAlt
+ {1, F_12, D_12, E_12}, // RWin
+ {1, F_13, D_13, E_13}, // Fn
+ {1, F_14, D_14, E_14}, // RCtrl
+ {1, F_15, D_15, E_15}, // Left
+ {1, F_16, D_16, E_16}, // Down
+ {1, C_15, A_15, B_15}, // Right
};
-#define __ NO_LED
+# define __ NO_LED
led_config_t g_led_config = {
{
@@ -147,12 +147,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // GB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q3/jis/keymaps/default/keymap.c b/keyboards/keychron/q3/jis/keymaps/default/keymap.c
index bd764ecdf353..d073fa737a1b 100644
--- a/keyboards/keychron/q3/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/default/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,13 +25,16 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_91(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_91(
@@ -45,11 +50,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_91(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
index b65d92ae62a7..2afc9e59659b 100644
--- a/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
@@ -16,6 +16,9 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
@@ -30,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_91(
@@ -46,8 +49,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_91(
_______, 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,
@@ -58,8 +61,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+// clang-format on
+
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -67,5 +73,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q3/jis/keymaps/keychron/rules.mk b/keyboards/keychron/q3/jis/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q3/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q3/jis/keymaps/via/keymap.c b/keyboards/keychron/q3/jis/keymaps/via/keymap.c
index bd764ecdf353..d073fa737a1b 100644
--- a/keyboards/keychron/q3/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/via/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,13 +25,16 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_91(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_91(
@@ -45,11 +50,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_91(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q3/jis/readme.md b/keyboards/keychron/q3/jis/readme.md
deleted file mode 100644
index f8faed6a6c5b..000000000000
--- a/keyboards/keychron/q3/jis/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The JIS variant of the Keychron Q3
diff --git a/keyboards/keychron/q3/jis/rules.mk b/keyboards/keychron/q3/jis/rules.mk
index 58bbb89a7226..4bc1e23a57a0 100644
--- a/keyboards/keychron/q3/jis/rules.mk
+++ b/keyboards/keychron/q3/jis/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_ENABLE = yes
-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
diff --git a/keyboards/keychron/q3/jis_encoder/config.h b/keyboards/keychron/q3/jis_encoder/config.h
index 9fca0cfc73ce..59f888a4c3ab 100644
--- a/keyboards/keychron/q3/jis_encoder/config.h
+++ b/keyboards/keychron/q3/jis_encoder/config.h
@@ -16,20 +16,11 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 49
#define DRIVER_2_LED_TOTAL 43
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44 }
-
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/q3/jis_encoder/info.json b/keyboards/keychron/q3/jis_encoder/info.json
index fd1f361f5724..0d339de6e2b7 100644
--- a/keyboards/keychron/q3/jis_encoder/info.json
+++ b/keyboards/keychron/q3/jis_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0125",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -21,103 +37,103 @@
"layouts": {
"LAYOUT_jis_92": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25},
- {"matrix": [5, 5], "x": 14, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[5, 5], "x":14, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25},
- {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 3.5, "y": 5.25},
- {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
- {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
- {"matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.75, "y": 5.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.75, "y":5.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q3/jis_encoder/jis_encoder.c b/keyboards/keychron/q3/jis_encoder/jis_encoder.c
index 0a97c5ca6857..2bb76750390b 100644
--- a/keyboards/keychron/q3/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/q3/jis_encoder/jis_encoder.c
@@ -19,112 +19,112 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, I_1, G_1, H_1}, // ESC
- {0, I_2, G_2, H_2}, // F1
- {0, I_3, G_3, H_3}, // F2
- {0, I_4, G_4, H_4}, // F3
- {0, I_5, G_5, H_5}, // F4
- {0, I_6, G_6, H_6}, // F5
- {0, I_7, G_7, H_7}, // F6
- {0, I_8, G_8, H_8}, // F7
- {0, I_9, G_9, H_9}, // F8
- {0, I_10, G_10, H_10}, // F9
- {0, I_11, G_11, H_11}, // F10
- {0, I_12, G_12, H_12}, // F11
- {0, I_13, G_13, H_13}, // F12
- {0, I_14, G_14, H_14}, // Mute
- {0, I_15, G_15, H_15}, // Print
- {0, I_16, G_16, H_16}, // Cortana
- {1, I_15, G_15, H_15}, // Light
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, I_1, G_1, H_1}, // ESC
+ {0, I_2, G_2, H_2}, // F1
+ {0, I_3, G_3, H_3}, // F2
+ {0, I_4, G_4, H_4}, // F3
+ {0, I_5, G_5, H_5}, // F4
+ {0, I_6, G_6, H_6}, // F5
+ {0, I_7, G_7, H_7}, // F6
+ {0, I_8, G_8, H_8}, // F7
+ {0, I_9, G_9, H_9}, // F8
+ {0, I_10, G_10, H_10}, // F9
+ {0, I_11, G_11, H_11}, // F10
+ {0, I_12, G_12, H_12}, // F11
+ {0, I_13, G_13, H_13}, // F12
+ {0, I_14, G_14, H_14}, // Mute
+ {0, I_15, G_15, H_15}, // Print
+ {0, I_16, G_16, H_16}, // Cortana
+ {1, I_15, G_15, H_15}, // Light
- {0, C_1, A_1, B_1}, // `~
- {0, C_2, A_2, B_2}, // 1!
- {0, C_3, A_3, B_3}, // 2@
- {0, C_4, A_4, B_4}, // 3#
- {0, C_5, A_5, B_5}, // 4$
- {0, C_6, A_6, B_6}, // 5%
- {0, C_7, A_7, B_7}, // 6^
- {0, C_8, A_8, B_8}, // 7&
- {0, C_9, A_9, B_9}, // 8*
- {0, C_10, A_10, B_10}, // 9()
- {0, C_11, A_11, B_11}, // 0)
- {0, C_12, A_12, B_12}, // -_
- {0, C_13, A_13, B_13}, // =+
- {0, C_14, A_14, B_14}, // |
- {1, F_6, D_6, E_6}, // Backspace
- {0, C_15, A_15, B_15}, // Ins
- {0, C_16, A_16, B_16}, // Home
- {1, I_16, G_16, H_16}, // Page Up
+ {0, C_1, A_1, B_1}, // `~
+ {0, C_2, A_2, B_2}, // 1!
+ {0, C_3, A_3, B_3}, // 2@
+ {0, C_4, A_4, B_4}, // 3#
+ {0, C_5, A_5, B_5}, // 4$
+ {0, C_6, A_6, B_6}, // 5%
+ {0, C_7, A_7, B_7}, // 6^
+ {0, C_8, A_8, B_8}, // 7&
+ {0, C_9, A_9, B_9}, // 8*
+ {0, C_10, A_10, B_10}, // 9()
+ {0, C_11, A_11, B_11}, // 0)
+ {0, C_12, A_12, B_12}, // -_
+ {0, C_13, A_13, B_13}, // =+
+ {0, C_14, A_14, B_14}, // |
+ {1, F_6, D_6, E_6}, // Backspace
+ {0, C_15, A_15, B_15}, // Ins
+ {0, C_16, A_16, B_16}, // Home
+ {1, I_16, G_16, H_16}, // Page Up
- {0, F_1, D_1, E_1}, // tab
- {0, F_2, D_2, E_2}, // Q
- {0, F_3, D_3, E_3}, // W
- {0, F_4, D_4, E_4}, // E
- {0, F_5, D_5, E_5}, // R
- {0, F_6, D_6, E_6}, // T
- {0, F_7, D_7, E_7}, // Y
- {0, F_8, D_8, E_8}, // U
- {0, F_9, D_9, E_9}, // I
- {0, F_10, D_10, E_10}, // O
- {0, F_11, D_11, E_11}, // P
- {0, F_12, D_12, E_12}, // [{
- {0, F_13, D_13, E_13}, // }}
- {0, F_15, D_15, E_15}, // Del
- {0, F_16, D_16, E_16}, // End
- {1, I_13, G_13, H_13}, // Page Down
+ {0, F_1, D_1, E_1}, // tab
+ {0, F_2, D_2, E_2}, // Q
+ {0, F_3, D_3, E_3}, // W
+ {0, F_4, D_4, E_4}, // E
+ {0, F_5, D_5, E_5}, // R
+ {0, F_6, D_6, E_6}, // T
+ {0, F_7, D_7, E_7}, // Y
+ {0, F_8, D_8, E_8}, // U
+ {0, F_9, D_9, E_9}, // I
+ {0, F_10, D_10, E_10}, // O
+ {0, F_11, D_11, E_11}, // P
+ {0, F_12, D_12, E_12}, // [{
+ {0, F_13, D_13, E_13}, // }}
+ {0, F_15, D_15, E_15}, // Del
+ {0, F_16, D_16, E_16}, // End
+ {1, I_13, G_13, H_13}, // Page Down
- {1, I_1, G_1, H_1}, // Cpas
- {1, I_2, G_2, H_2}, // A
- {1, I_3, G_3, H_3}, // S
- {1, I_4, G_4, H_4}, // D
- {1, I_5, G_5, H_5}, // F
- {1, I_6, G_6, H_6}, // G
- {1, I_7, G_7, H_7}, // H
- {1, I_8, G_8, H_8}, // J
- {1, I_9, G_9, H_9}, // K
- {1, I_10, G_10, H_10}, // L
- {1, I_11, G_11, H_11}, // ;
- {1, I_12, G_12, H_12}, // :
- {1, I_14, G_14, H_14}, // #~
- {0, F_14, D_14, E_14}, // Enter
+ {1, I_1, G_1, H_1}, // Cpas
+ {1, I_2, G_2, H_2}, // A
+ {1, I_3, G_3, H_3}, // S
+ {1, I_4, G_4, H_4}, // D
+ {1, I_5, G_5, H_5}, // F
+ {1, I_6, G_6, H_6}, // G
+ {1, I_7, G_7, H_7}, // H
+ {1, I_8, G_8, H_8}, // J
+ {1, I_9, G_9, H_9}, // K
+ {1, I_10, G_10, H_10}, // L
+ {1, I_11, G_11, H_11}, // ;
+ {1, I_12, G_12, H_12}, // :
+ {1, I_14, G_14, H_14}, // #~
+ {0, F_14, D_14, E_14}, // Enter
- {1, C_1, A_1, B_1}, // LShift
- {1, C_3, A_3, B_3}, // Z
- {1, C_4, A_4, B_4}, // X
- {1, C_5, A_5, B_5}, // C
- {1, C_6, A_6, B_6}, // V
- {1, C_7, A_7, B_7}, // B
- {1, C_8, A_8, B_8}, // N
- {1, C_9, A_9, B_9}, // M
- {1, C_10, A_10, B_10}, // ,<
- {1, C_11, A_11, B_11}, // .>
- {1, C_12, A_12, B_12}, // /?
- {1, C_13, A_13, B_13}, // |
- {1, C_14, A_14, B_14}, // RShift
- {1, C_16, A_16, B_16}, // Up
+ {1, C_1, A_1, B_1}, // LShift
+ {1, C_3, A_3, B_3}, // Z
+ {1, C_4, A_4, B_4}, // X
+ {1, C_5, A_5, B_5}, // C
+ {1, C_6, A_6, B_6}, // V
+ {1, C_7, A_7, B_7}, // B
+ {1, C_8, A_8, B_8}, // N
+ {1, C_9, A_9, B_9}, // M
+ {1, C_10, A_10, B_10}, // ,<
+ {1, C_11, A_11, B_11}, // .>
+ {1, C_12, A_12, B_12}, // /?
+ {1, C_13, A_13, B_13}, // |
+ {1, C_14, A_14, B_14}, // RShift
+ {1, C_16, A_16, B_16}, // Up
- {1, F_1, D_1, E_1}, // LCtrl
- {1, F_2, D_2, E_2}, // LWin
- {1, F_3, D_3, E_3}, // LAlt
- {1, F_4, D_4, E_4}, // NUm
- {1, F_7, D_7, E_7}, // Space
- {1, F_10, D_10, E_10}, // Jap
- {1, F_11, D_11, E_11}, // RAlt
- {1, F_12, D_12, E_12}, // RWin
- {1, F_13, D_13, E_13}, // Fn
- {1, F_14, D_14, E_14}, // RCtrl
- {1, F_15, D_15, E_15}, // Left
- {1, F_16, D_16, E_16}, // Down
- {1, C_15, A_15, B_15}, // Right
+ {1, F_1, D_1, E_1}, // LCtrl
+ {1, F_2, D_2, E_2}, // LWin
+ {1, F_3, D_3, E_3}, // LAlt
+ {1, F_4, D_4, E_4}, // NUm
+ {1, F_7, D_7, E_7}, // Space
+ {1, F_10, D_10, E_10}, // Jap
+ {1, F_11, D_11, E_11}, // RAlt
+ {1, F_12, D_12, E_12}, // RWin
+ {1, F_13, D_13, E_13}, // Fn
+ {1, F_14, D_14, E_14}, // RCtrl
+ {1, F_15, D_15, E_15}, // Left
+ {1, F_16, D_16, E_16}, // Down
+ {1, C_15, A_15, B_15}, // Right
};
-#define __ NO_LED
+# define __ NO_LED
led_config_t g_led_config = {
{
@@ -148,12 +148,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
index 30e85d79df7b..f92035cc32f6 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,13 +25,16 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_92(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_92(
@@ -45,11 +50,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_92(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -57,13 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
index 3a7e06abd62c..a3b15bc99fd4 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,9 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
@@ -26,51 +29,54 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_92(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_92(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_jis_92(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_92(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
#endif // ENCODER_MAP_ENABLE
+// clang-format on
+
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -78,5 +84,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
index 63618ce05af7..f92035cc32f6 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -23,13 +25,16 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_92(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_92(
@@ -45,11 +50,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_92(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -57,13 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/jis_encoder/readme.md b/keyboards/keychron/q3/jis_encoder/readme.md
deleted file mode 100644
index 8fdb3bb2e001..000000000000
--- a/keyboards/keychron/q3/jis_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The JIS variant of the Keychron Q3
-
-- Enable rotary encoder support.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q3/jis_encoder/rules.mk b/keyboards/keychron/q3/jis_encoder/rules.mk
index 77b90f246666..aa286a161677 100644
--- a/keyboards/keychron/q3/jis_encoder/rules.mk
+++ b/keyboards/keychron/q3/jis_encoder/rules.mk
@@ -1,23 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
-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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q3/matrix.c b/keyboards/keychron/q3/matrix.c
deleted file mode 100644
index 26830780ffe4..000000000000
--- a/keyboards/keychron/q3/matrix.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/* Copyright 2021 @ 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 "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN A7
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN B1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN B0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-static void shiftOut(uint8_t dataOut) {
- for (uint8_t i = 0; i < 8; i++) {
- if (dataOut & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- }
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static void shiftout_single(uint8_t data) {
- if (data & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
-
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
-
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == 8) {
- shiftout_single(0x00);
- } else {
- shiftout_single(0x01);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (col == (MATRIX_COLS - 1))
- shiftout_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- // unselect column pins
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- }
- if (x == (MATRIX_COLS - 1))
- // unselect Shift Register
- shiftOut(0xFF);
- }
-}
-
-static void matrix_init_pins(void) {
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
- matrix_output_select_delay();
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/q3/q3.c b/keyboards/keychron/q3/q3.c
index 2bf8bf08a0b1..8acb24641f76 100644
--- a/keyboards/keychron/q3/q3.c
+++ b/keyboards/keychron/q3/q3.c
@@ -15,7 +15,6 @@
*/
#include "quantum.h"
-#include "rgb_matrix.h"
// clang-format off
@@ -31,7 +30,6 @@ const matrix_row_t matrix_mask[] = {
// clang-format on
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -41,49 +39,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
-#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
+#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/q3/readme.md b/keyboards/keychron/q3/readme.md
index 8e25a1b33224..2cde60dd9fa0 100644
--- a/keyboards/keychron/q3/readme.md
+++ b/keyboards/keychron/q3/readme.md
@@ -1,22 +1,30 @@
# Keychron Q3
+![Keychron Q3](https://i.imgur.com/KjP4nqd.jpg)
+
A customizable 80% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q3
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q3 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q3-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
-```
- make keychron/q3/ansi:default
-```
+ make keychron/q3/ansi:default
+ make keychron/q3/ansi_encoder:default
+ make keychron/q3/iso:default
+ make keychron/q3/iso_encoder:default
+ make keychron/q3/jis:default
+ make keychron/q3/jis_encoder:default
Flashing example for this keyboard:
-```
- make keychron/q3/ansi:default:flash
-```
+ make keychron/q3/ansi:default:flash
+ make keychron/q3/ansi_encoder:default:flash
+ make keychron/q3/iso:default:flash
+ make keychron/q3/iso_encoder:default:flash
+ make keychron/q3/jis:default:flash
+ make keychron/q3/jis_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q4/ansi_v1/ansi_v1.c b/keyboards/keychron/q4/ansi_v1/ansi_v1.c
index 88599103ef84..42f77b219849 100644
--- a/keyboards/keychron/q4/ansi_v1/ansi_v1.c
+++ b/keyboards/keychron/q4/ansi_v1/ansi_v1.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -117,7 +117,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 4, 1,
}
};
diff --git a/keyboards/keychron/q4/ansi_v1/config.h b/keyboards/keychron/q4/ansi_v1/config.h
index e11ab12b93bf..26168f5360f3 100644
--- a/keyboards/keychron/q4/ansi_v1/config.h
+++ b/keyboards/keychron/q4/ansi_v1/config.h
@@ -28,8 +28,7 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-#define CKLED2001_CURRENT_TUNE \
- { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
+/* Set LED driver current */
/* Enable CapsLcok LED*/
#define CAPS_LOCK_LED_INDEX 28
diff --git a/keyboards/keychron/q4/ansi_v1/info.json b/keyboards/keychron/q4/ansi_v1/info.json
index 8ee286c48190..d0a5cedec901 100644
--- a/keyboards/keychron/q4/ansi_v1/info.json
+++ b/keyboards/keychron/q4/ansi_v1/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0140",
- "device_version": "1.0.0"
+ "device_version": "1.0.6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -21,71 +32,71 @@
"layouts": {
"LAYOUT_ansi_61": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
- {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
- {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4, "w":1.25},
+ {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
+ {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
+ {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
]
}
}
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/default/keymap.c b/keyboards/keychron/q4/ansi_v1/keymaps/default/keymap.c
index dd8669c3fba4..1e0084850d75 100644
--- a/keyboards/keychron/q4/ansi_v1/keymaps/default/keymap.c
+++ b/keyboards/keychron/q4/ansi_v1/keymaps/default/keymap.c
@@ -21,46 +21,47 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [WIN_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};
-
-// clang-format on
\ No newline at end of file
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/keychron/keymap.c b/keyboards/keychron/q4/ansi_v1/keymaps/keychron/keymap.c
index d58af0f24410..261c78ddbc9b 100644
--- a/keyboards/keychron/q4/ansi_v1/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q4/ansi_v1/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [WIN_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
@@ -66,10 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
-}
\ No newline at end of file
+}
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/keychron/rules.mk b/keyboards/keychron/q4/ansi_v1/keymaps/keychron/rules.mk
index 1f273de34046..dac903490f12 100644
--- a/keyboards/keychron/q4/ansi_v1/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q4/ansi_v1/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
\ No newline at end of file
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/via/keymap.c b/keyboards/keychron/q4/ansi_v1/keymaps/via/keymap.c
index dd8669c3fba4..1e0084850d75 100644
--- a/keyboards/keychron/q4/ansi_v1/keymaps/via/keymap.c
+++ b/keyboards/keychron/q4/ansi_v1/keymaps/via/keymap.c
@@ -21,46 +21,47 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [WIN_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};
-
-// clang-format on
\ No newline at end of file
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/via/rules.mk b/keyboards/keychron/q4/ansi_v1/keymaps/via/rules.mk
index 036bd6d1c3ec..1e5b99807cb7 100644
--- a/keyboards/keychron/q4/ansi_v1/keymaps/via/rules.mk
+++ b/keyboards/keychron/q4/ansi_v1/keymaps/via/rules.mk
@@ -1 +1 @@
-VIA_ENABLE = yes
\ No newline at end of file
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/q4/ansi_v1/readme.md b/keyboards/keychron/q4/ansi_v1/readme.md
deleted file mode 100644
index bd2f3fd8a81f..000000000000
--- a/keyboards/keychron/q4/ansi_v1/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q4
diff --git a/keyboards/keychron/q4/ansi_v1/rules.mk b/keyboards/keychron/q4/ansi_v1/rules.mk
index cad488b009c9..4bc1e23a57a0 100644
--- a/keyboards/keychron/q4/ansi_v1/rules.mk
+++ b/keyboards/keychron/q4/ansi_v1/rules.mk
@@ -1,18 +1,8 @@
# 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 = yes
-RGB_MATRIX_ENABLE = yes
-LTO_ENABLE = no
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
diff --git a/keyboards/keychron/q4/ansi_v2/ansi_v2.c b/keyboards/keychron/q4/ansi_v2/ansi_v2.c
index d454a796fa03..92ca7eb29620 100644
--- a/keyboards/keychron/q4/ansi_v2/ansi_v2.c
+++ b/keyboards/keychron/q4/ansi_v2/ansi_v2.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -117,7 +117,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 4, 1,
}
};
diff --git a/keyboards/keychron/q4/ansi_v2/config.h b/keyboards/keychron/q4/ansi_v2/config.h
index cc906fed03d9..fe557f40efdc 100644
--- a/keyboards/keychron/q4/ansi_v2/config.h
+++ b/keyboards/keychron/q4/ansi_v2/config.h
@@ -24,8 +24,5 @@
#define DRIVER_1_LED_TOTAL 61
#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-#define CKLED2001_CURRENT_TUNE \
- { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
-
/* Enable CapsLcok LED*/
#define CAPS_LOCK_LED_INDEX 28
diff --git a/keyboards/keychron/q4/ansi_v2/info.json b/keyboards/keychron/q4/ansi_v2/info.json
index 8ee286c48190..d0a5cedec901 100644
--- a/keyboards/keychron/q4/ansi_v2/info.json
+++ b/keyboards/keychron/q4/ansi_v2/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0140",
- "device_version": "1.0.0"
+ "device_version": "1.0.6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -21,71 +32,71 @@
"layouts": {
"LAYOUT_ansi_61": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
- {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
- {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4, "w":1.25},
+ {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
+ {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
+ {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
]
}
}
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/default/keymap.c b/keyboards/keychron/q4/ansi_v2/keymaps/default/keymap.c
index dd8669c3fba4..1e0084850d75 100644
--- a/keyboards/keychron/q4/ansi_v2/keymaps/default/keymap.c
+++ b/keyboards/keychron/q4/ansi_v2/keymaps/default/keymap.c
@@ -21,46 +21,47 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [WIN_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};
-
-// clang-format on
\ No newline at end of file
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/keychron/keymap.c b/keyboards/keychron/q4/ansi_v2/keymaps/keychron/keymap.c
index d58af0f24410..261c78ddbc9b 100644
--- a/keyboards/keychron/q4/ansi_v2/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q4/ansi_v2/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [WIN_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
@@ -66,10 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
-}
\ No newline at end of file
+}
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/keychron/rules.mk b/keyboards/keychron/q4/ansi_v2/keymaps/keychron/rules.mk
index 1f273de34046..dac903490f12 100644
--- a/keyboards/keychron/q4/ansi_v2/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q4/ansi_v2/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
\ No newline at end of file
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/via/keymap.c b/keyboards/keychron/q4/ansi_v2/keymaps/via/keymap.c
index dd8669c3fba4..1e0084850d75 100644
--- a/keyboards/keychron/q4/ansi_v2/keymaps/via/keymap.c
+++ b/keyboards/keychron/q4/ansi_v2/keymaps/via/keymap.c
@@ -21,46 +21,47 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [WIN_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};
-
-// clang-format on
\ No newline at end of file
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/via/rules.mk b/keyboards/keychron/q4/ansi_v2/keymaps/via/rules.mk
index 036bd6d1c3ec..1e5b99807cb7 100644
--- a/keyboards/keychron/q4/ansi_v2/keymaps/via/rules.mk
+++ b/keyboards/keychron/q4/ansi_v2/keymaps/via/rules.mk
@@ -1 +1 @@
-VIA_ENABLE = yes
\ No newline at end of file
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/q4/ansi_v2/readme.md b/keyboards/keychron/q4/ansi_v2/readme.md
deleted file mode 100644
index bd2f3fd8a81f..000000000000
--- a/keyboards/keychron/q4/ansi_v2/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q4
diff --git a/keyboards/keychron/q4/ansi_v2/rules.mk b/keyboards/keychron/q4/ansi_v2/rules.mk
index cad488b009c9..4bc1e23a57a0 100644
--- a/keyboards/keychron/q4/ansi_v2/rules.mk
+++ b/keyboards/keychron/q4/ansi_v2/rules.mk
@@ -1,18 +1,8 @@
# 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 = yes
-RGB_MATRIX_ENABLE = yes
-LTO_ENABLE = no
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
diff --git a/keyboards/keychron/q4/config.h b/keyboards/keychron/q4/config.h
index 940ee44e77b8..f08eef28eee9 100644
--- a/keyboards/keychron/q4/config.h
+++ b/keyboards/keychron/q4/config.h
@@ -17,7 +17,8 @@
#pragma once
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -27,6 +28,16 @@
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+/* 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
+
+#define CKLED2001_CURRENT_TUNE \
+ { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -63,9 +74,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -80,5 +95,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
\ No newline at end of file
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q4/iso/config.h b/keyboards/keychron/q4/iso/config.h
index 9e4a1fc3e504..3bdcf4dcc071 100644
--- a/keyboards/keychron/q4/iso/config.h
+++ b/keyboards/keychron/q4/iso/config.h
@@ -24,8 +24,5 @@
#define DRIVER_1_LED_TOTAL 62
#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-#define CKLED2001_CURRENT_TUNE \
- { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
-
/* Enable CapsLcok LED*/
#define CAPS_LOCK_LED_INDEX 27
diff --git a/keyboards/keychron/q4/iso/info.json b/keyboards/keychron/q4/iso/info.json
index f8945cda6198..cca317058c8a 100644
--- a/keyboards/keychron/q4/iso/info.json
+++ b/keyboards/keychron/q4/iso/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0142",
- "device_version": "1.0.0"
+ "device_version": "1.0.4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -21,72 +32,72 @@
"layouts": {
"LAYOUT_iso_62": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2},
- {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2},
+ {"matrix":[1,13], "x":13.75, "y":1, "w":1.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix":[3, 0], "x":0, "y":3, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3.25},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
- {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
- {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4, "w":1.25},
+ {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
+ {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
+ {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
]
}
}
diff --git a/keyboards/keychron/q4/iso/iso.c b/keyboards/keychron/q4/iso/iso.c
index 24cbcfd74552..34e263cf2944 100644
--- a/keyboards/keychron/q4/iso/iso.c
+++ b/keyboards/keychron/q4/iso/iso.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -118,7 +118,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 4, 1,
}
};
diff --git a/keyboards/keychron/q4/iso/keymaps/default/keymap.c b/keyboards/keychron/q4/iso/keymaps/default/keymap.c
index e7c9edb412cf..1e8156581556 100644
--- a/keyboards/keychron/q4/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q4/iso/keymaps/default/keymap.c
@@ -21,46 +21,47 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_iso_62(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_iso_62(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [WIN_FN1] = LAYOUT_iso_62(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};
-
-// clnag-format on
\ No newline at end of file
diff --git a/keyboards/keychron/q4/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q4/iso/keymaps/keychron/keymap.c
index 1176f5949b72..4cf623c73da6 100644
--- a/keyboards/keychron/q4/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q4/iso/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPTN, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_iso_62(
+ [MAC_FN1] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
+ [WIN_FN1] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,10 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
-}
\ No newline at end of file
+}
diff --git a/keyboards/keychron/q4/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q4/iso/keymaps/keychron/rules.mk
index 1f273de34046..dac903490f12 100644
--- a/keyboards/keychron/q4/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q4/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
\ No newline at end of file
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q4/iso/keymaps/via/keymap.c b/keyboards/keychron/q4/iso/keymaps/via/keymap.c
index e7c9edb412cf..1e8156581556 100644
--- a/keyboards/keychron/q4/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q4/iso/keymaps/via/keymap.c
@@ -21,46 +21,47 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
[WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_iso_62(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_iso_62(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [WIN_FN1] = LAYOUT_iso_62(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______)
};
-
-// clnag-format on
\ No newline at end of file
diff --git a/keyboards/keychron/q4/iso/keymaps/via/rules.mk b/keyboards/keychron/q4/iso/keymaps/via/rules.mk
index 036bd6d1c3ec..1e5b99807cb7 100644
--- a/keyboards/keychron/q4/iso/keymaps/via/rules.mk
+++ b/keyboards/keychron/q4/iso/keymaps/via/rules.mk
@@ -1 +1 @@
-VIA_ENABLE = yes
\ No newline at end of file
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/q4/iso/readme.md b/keyboards/keychron/q4/iso/readme.md
deleted file mode 100644
index 05f5805e31cc..000000000000
--- a/keyboards/keychron/q4/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the Keychron Q4
diff --git a/keyboards/keychron/q4/iso/rules.mk b/keyboards/keychron/q4/iso/rules.mk
index cad488b009c9..4bc1e23a57a0 100644
--- a/keyboards/keychron/q4/iso/rules.mk
+++ b/keyboards/keychron/q4/iso/rules.mk
@@ -1,18 +1,8 @@
# 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 = yes
-RGB_MATRIX_ENABLE = yes
-LTO_ENABLE = no
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
diff --git a/keyboards/keychron/q4/q4.c b/keyboards/keychron/q4/q4.c
index c3cb67bcc2ec..1c40e430ea7c 100644
--- a/keyboards/keychron/q4/q4.c
+++ b/keyboards/keychron/q4/q4.c
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,49 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q4/readme.md b/keyboards/keychron/q4/readme.md
index 2c3d9c85727c..9c002c1c9caa 100644
--- a/keyboards/keychron/q4/readme.md
+++ b/keyboards/keychron/q4/readme.md
@@ -1,18 +1,26 @@
# Keychron Q4
+![Keychron Q4](https://i.imgur.com/daIVjVG.jpg)
+
A customizable 60% keyboard.
+Q4 Version 1 uses only 2 ICs for CKLED2001 and Q4 Version 2 uses only one IC.
+
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q4
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q4 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q4-qmk-via-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
+ make keychron/q4/ansi_v1:default
make keychron/q4/ansi_v2:default
+ make keychron/q4/iso:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
+ make keychron/q4/ansi_v1:default:flash
make keychron/q4/ansi_v2:default:flash
+ make keychron/q4/iso:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q5/ansi/ansi.c b/keyboards/keychron/q5/ansi/ansi.c
index dda563cd798e..d75f72fb2518 100644
--- a/keyboards/keychron/q5/ansi/ansi.c
+++ b/keyboards/keychron/q5/ansi/ansi.c
@@ -18,8 +18,10 @@
#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -81,6 +83,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -98,7 +101,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
- {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -116,6 +118,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -129,7 +132,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
- {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -139,29 +141,29 @@ led_config_t g_led_config = {
// Key Matrix to LED Index
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
{ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
- { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 70, 51, 52, 53 },
- { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 36, 67, 68, 69 },
+ { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 54, 51, 52, 53 },
+ { 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 18, 67, 36, 68, 69, 70 },
{ 71, __, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, __, 82, 83, 84, 85, 86 },
- { 87, 88, 89, __, __, 99, 90, __, __, __, 91, 92, 93, 94, 95, 96, 97, 98 }
+ { 88, 89, 90, __, __, 87, 91, __, __, __, 92, 93, 94, 95, 96, 97, 98, 99 }
},
{
// LED Index to Physical Position
{0,0}, {12,0}, {24,0}, {36,0}, {48,0}, {60,0}, {72,0}, {84,0}, {97,0}, {109,0}, {121,0}, {133,0}, {145,0}, {157,0}, {169,0}, {188,0}, {200,0}, {212,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {84,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38}, {224,32},
- {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26}, {224,32},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38},
+ {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q5/ansi/config.h b/keyboards/keychron/q5/ansi/config.h
index 9ed58dd52275..7e3a2e9911ac 100644
--- a/keyboards/keychron/q5/ansi/config.h
+++ b/keyboards/keychron/q5/ansi/config.h
@@ -22,7 +22,7 @@
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 54
+#define CAPS_LOCK_LED_INDEX 55
/* Enable num-lock LED */
-// #define NUM_LOCK_LED_INDEX 33
+#define NUM_LOCK_LED_INDEX 33
diff --git a/keyboards/keychron/q5/ansi/info.json b/keyboards/keychron/q5/ansi/info.json
index 55d7ae0165c6..ae0b25767764 100644
--- a/keyboards/keychron/q5/ansi/info.json
+++ b/keyboards/keychron/q5/ansi/info.json
@@ -6,121 +6,137 @@
"usb": {
"vid": "0x3434",
"pid": "0x0150",
- "device_version": "1.0.0"
+ "device_version": "1.0.6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_100": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [0, 14], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.5, "y": 0},
- {"matrix": [0, 16], "x": 16.5, "y": 0},
- {"matrix": [0, 17], "x": 17.5, "y": 0},
- {"matrix": [3, 12], "x": 18.5, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[0,14], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.5, "y":0},
+ {"matrix":[0,16], "x":16.5, "y":0},
+ {"matrix":[0,17], "x":17.5, "y":0},
+ {"matrix":[3,12], "x":18.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.5, "y": 1.25},
- {"matrix": [1, 16], "x": 16.5, "y": 1.25},
- {"matrix": [1, 17], "x": 17.5, "y": 1.25},
- {"matrix": [3, 14], "x": 18.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.5, "y":1.25},
+ {"matrix":[1,16], "x":16.5, "y":1.25},
+ {"matrix":[1,17], "x":17.5, "y":1.25},
+ {"matrix":[3,14], "x":18.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 15], "x": 15.5, "y": 2.25},
- {"matrix": [2, 16], "x": 16.5, "y": 2.25},
- {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.5, "y":2.25},
+ {"matrix":[2,16], "x":16.5, "y":2.25},
+ {"matrix":[2,17], "x":17.5, "y":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
- {"matrix": [3, 16], "x": 16.5, "y": 3.25},
- {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.5, "y":3.25},
+ {"matrix":[3,16], "x":16.5, "y":3.25},
+ {"matrix":[3,17], "x":17.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix": [4, 15], "x": 15.5, "y": 4.25},
- {"matrix": [4, 16], "x": 16.5, "y": 4.25},
- {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix":[4,15], "x":15.5, "y":4.25},
+ {"matrix":[4,16], "x":16.5, "y":4.25},
+ {"matrix":[4,17], "x":17.5, "y":4.25},
+ {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5},
- {"matrix": [5, 16], "x": 16.5, "y": 5.25},
- {"matrix": [5, 17], "x": 17.5, "y": 5.25},
- {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5},
+ {"matrix":[5,16], "x":16.5, "y":5.25},
+ {"matrix":[5,17], "x":17.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q5/ansi/keymaps/default/keymap.c b/keyboards/keychron/q5/ansi/keymaps/default/keymap.c
index c747bf4ae150..1de732fe29ca 100644
--- a/keyboards/keychron/q5/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q5/ansi/keymaps/default/keymap.c
@@ -25,33 +25,36 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_100(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q5/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q5/ansi/keymaps/keychron/keymap.c
index 82cc9bda12c5..39d14d2b950b 100644
--- a/keyboards/keychron/q5/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q5/ansi/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,37 +31,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if(!process_record_keychron(keycode, record)) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
return false;
}
diff --git a/keyboards/keychron/q5/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q5/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/q5/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q5/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q5/ansi/keymaps/via/keymap.c b/keyboards/keychron/q5/ansi/keymaps/via/keymap.c
index c747bf4ae150..1de732fe29ca 100644
--- a/keyboards/keychron/q5/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q5/ansi/keymaps/via/keymap.c
@@ -25,33 +25,36 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_100(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q5/ansi/readme.md b/keyboards/keychron/q5/ansi/readme.md
deleted file mode 100644
index 225978d183d1..000000000000
--- a/keyboards/keychron/q5/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q5
diff --git a/keyboards/keychron/q5/ansi/rules.mk b/keyboards/keychron/q5/ansi/rules.mk
index e859eb9c34c6..aa286a161677 100644
--- a/keyboards/keychron/q5/ansi/rules.mk
+++ b/keyboards/keychron/q5/ansi/rules.mk
@@ -1,21 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
index 4d3cc0f036ca..fc21cac6d214 100644
--- a/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -83,6 +83,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -100,7 +101,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
- {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -118,6 +118,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -131,7 +132,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
- {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -141,29 +141,29 @@ led_config_t g_led_config = {
// Key Matrix to LED Index
{ 0, __, 1, 2, 3, 4, __, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
{ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 68, 49, 50, 51 },
- { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 16, 64, 34, 65, 66, 67 },
+ { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 52, 49, 50, 51 },
+ { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 16, 65, 34, 66, 67, 68 },
{ 69, __, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, __, 80, 81, 82, 83, 84 },
- { 85, 86, 87, __, __, 97, 88, __, __, __, 89, 90, 91, 92, 93, 94, 95, 96 }
+ { 86, 87, 88, __, __, 85, 89, __, __, __, 90, 91, 92, 93, 94, 95, 96, 97 }
},
{
// LED Index to Physical Position
{0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {103,0}, {115,0}, {133,0}, {145,0}, {157,0}, {169,0}, {184,0}, {196,0}, {208,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38}, {224,32},
- {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26}, {224,32},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38},
+ {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 4, 4, 1
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q5/ansi_encoder/config.h b/keyboards/keychron/q5/ansi_encoder/config.h
index 3986c11a027e..13cb7cfb969c 100644
--- a/keyboards/keychron/q5/ansi_encoder/config.h
+++ b/keyboards/keychron/q5/ansi_encoder/config.h
@@ -25,7 +25,7 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 52
+#define CAPS_LOCK_LED_INDEX 53
/* Enable num-lock LED */
-// #define NUM_LOCK_LED_INDEX 31
+#define NUM_LOCK_LED_INDEX 31
diff --git a/keyboards/keychron/q5/ansi_encoder/info.json b/keyboards/keychron/q5/ansi_encoder/info.json
index 468261b1e9ad..8df12daf77dd 100644
--- a/keyboards/keychron/q5/ansi_encoder/info.json
+++ b/keyboards/keychron/q5/ansi_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0151",
- "device_version": "1.0.0"
+ "device_version": "1.0.6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -21,109 +37,109 @@
"layouts": {
"LAYOUT_ansi_98": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 2], "x": 2, "y": 0},
- {"matrix": [0, 3], "x": 3, "y": 0},
- {"matrix": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 7], "x": 6.5, "y": 0},
- {"matrix": [0, 8], "x": 7.5, "y": 0},
- {"matrix": [0, 9], "x": 8.5, "y": 0},
- {"matrix": [0, 10], "x": 9.5, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [0, 14], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix": [0, 16], "x": 16.25, "y": 0},
- {"matrix": [0, 17], "x": 17.25, "y": 0},
- {"matrix": [3, 12], "x": 18.5, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 2], "x":2, "y":0},
+ {"matrix":[0, 3], "x":3, "y":0},
+ {"matrix":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 7], "x":6.5, "y":0},
+ {"matrix":[0, 8], "x":7.5, "y":0},
+ {"matrix":[0, 9], "x":8.5, "y":0},
+ {"matrix":[0,10], "x":9.5, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[0,14], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+ {"matrix":[0,16], "x":16.25, "y":0},
+ {"matrix":[0,17], "x":17.25, "y":0},
+ {"matrix":[3,12], "x":18.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.5, "y": 1.25},
- {"matrix": [1, 16], "x": 16.5, "y": 1.25},
- {"matrix": [1, 17], "x": 17.5, "y": 1.25},
- {"matrix": [3, 14], "x": 18.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.5, "y":1.25},
+ {"matrix":[1,16], "x":16.5, "y":1.25},
+ {"matrix":[1,17], "x":17.5, "y":1.25},
+ {"matrix":[3,14], "x":18.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 15], "x": 15.5, "y": 2.25},
- {"matrix": [2, 16], "x": 16.5, "y": 2.25},
- {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.5, "y":2.25},
+ {"matrix":[2,16], "x":16.5, "y":2.25},
+ {"matrix":[2,17], "x":17.5, "y":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
- {"matrix": [3, 16], "x": 16.5, "y": 3.25},
- {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.5, "y":3.25},
+ {"matrix":[3,16], "x":16.5, "y":3.25},
+ {"matrix":[3,17], "x":17.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix": [4, 15], "x": 15.5, "y": 4.25},
- {"matrix": [4, 16], "x": 16.5, "y": 4.25},
- {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix":[4,15], "x":15.5, "y":4.25},
+ {"matrix":[4,16], "x":16.5, "y":4.25},
+ {"matrix":[4,17], "x":17.5, "y":4.25},
+ {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5},
- {"matrix": [5, 16], "x": 16.5, "y": 5.25},
- {"matrix": [5, 17], "x": 17.5, "y": 5.25},
- {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5},
+ {"matrix":[5,16], "x":16.5, "y":5.25},
+ {"matrix":[5,17], "x":17.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q5/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q5/ansi_encoder/keymaps/default/keymap.c
index c9079b53fff5..7b2980979456 100644
--- a/keyboards/keychron/q5/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q5/ansi_encoder/keymaps/default/keymap.c
@@ -25,42 +25,45 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_98(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_98(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/keymap.c
index 62446674fe00..b650e4733de2 100644
--- a/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,50 +29,61 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_98(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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_BASE] = LAYOUT_ansi_98(
- KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_98(
- _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+// clang-format on
+
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q5/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q5/ansi_encoder/keymaps/via/keymap.c
index c9079b53fff5..7b2980979456 100644
--- a/keyboards/keychron/q5/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q5/ansi_encoder/keymaps/via/keymap.c
@@ -25,42 +25,45 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_98(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_98(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q5/ansi_encoder/readme.md b/keyboards/keychron/q5/ansi_encoder/readme.md
deleted file mode 100644
index 0f7018b0849b..000000000000
--- a/keyboards/keychron/q5/ansi_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ANSI variant of the Keychron Q5
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q5/ansi_encoder/rules.mk b/keyboards/keychron/q5/ansi_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/q5/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q5/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q5/config.h b/keyboards/keychron/q5/config.h
index bf25cb7441f7..e3b8d0316557 100644
--- a/keyboards/keychron/q5/config.h
+++ b/keyboards/keychron/q5/config.h
@@ -16,29 +16,25 @@
#pragma once
-/* Key matrix size */
-#define MATRIX_ROWS 6
-#define MATRIX_COLS 18
-
-/* Key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
#define DRIVER_ADDR_2 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 \
{ 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -82,9 +78,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -99,5 +99,13 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_STCP A0
+#define HC595_SHCP A1
+#define HC595_DS C15
+
+#define SHIFT_COL_START 10
+#define SHIFT_COL_END 17
diff --git a/keyboards/keychron/q5/halconf.h b/keyboards/keychron/q5/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q5/halconf.h
+++ b/keyboards/keychron/q5/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q5/iso/config.h b/keyboards/keychron/q5/iso/config.h
index df775f11f1f8..8a10f742925e 100644
--- a/keyboards/keychron/q5/iso/config.h
+++ b/keyboards/keychron/q5/iso/config.h
@@ -22,7 +22,7 @@
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 53
+#define CAPS_LOCK_LED_INDEX 54
/* Enable num-lock LED */
-// #define NUM_LOCK_LED_INDEX 33
+#define NUM_LOCK_LED_INDEX 33
diff --git a/keyboards/keychron/q5/iso/info.json b/keyboards/keychron/q5/iso/info.json
index 3b0b2ea1a069..8f58971f03c5 100644
--- a/keyboards/keychron/q5/iso/info.json
+++ b/keyboards/keychron/q5/iso/info.json
@@ -6,122 +6,138 @@
"usb": {
"vid": "0x3434",
"pid": "0x0152",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_101": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [0, 14], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.5, "y": 0},
- {"matrix": [0, 16], "x": 16.5, "y": 0},
- {"matrix": [0, 17], "x": 17.5, "y": 0},
- {"matrix": [3, 12], "x": 18.5, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[0,14], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.5, "y":0},
+ {"matrix":[0,16], "x":16.5, "y":0},
+ {"matrix":[0,17], "x":17.5, "y":0},
+ {"matrix":[3,12], "x":18.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.5, "y": 1.25},
- {"matrix": [1, 16], "x": 16.5, "y": 1.25},
- {"matrix": [1, 17], "x": 17.5, "y": 1.25},
- {"matrix": [3, 14], "x": 18.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.5, "y":1.25},
+ {"matrix":[1,16], "x":16.5, "y":1.25},
+ {"matrix":[1,17], "x":17.5, "y":1.25},
+ {"matrix":[3,14], "x":18.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 15], "x": 15.5, "y": 2.25},
- {"matrix": [2, 16], "x": 16.5, "y": 2.25},
- {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.5, "y":2.25},
+ {"matrix":[2,16], "x":16.5, "y":2.25},
+ {"matrix":[2,17], "x":17.5, "y":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
- {"matrix": [3, 16], "x": 16.5, "y": 3.25},
- {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.5, "y":3.25},
+ {"matrix":[3,16], "x":16.5, "y":3.25},
+ {"matrix":[3,17], "x":17.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix": [4, 15], "x": 15.5, "y": 4.25},
- {"matrix": [4, 16], "x": 16.5, "y": 4.25},
- {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix":[4,15], "x":15.5, "y":4.25},
+ {"matrix":[4,16], "x":16.5, "y":4.25},
+ {"matrix":[4,17], "x":17.5, "y":4.25},
+ {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5},
- {"matrix": [5, 16], "x": 16.5, "y": 5.25},
- {"matrix": [5, 17], "x": 17.5, "y": 5.25},
- {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5},
+ {"matrix":[5,16], "x":16.5, "y":5.25},
+ {"matrix":[5,17], "x":17.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q5/iso/iso.c b/keyboards/keychron/q5/iso/iso.c
index 65924abd76ec..7fe24c2c95e8 100644
--- a/keyboards/keychron/q5/iso/iso.c
+++ b/keyboards/keychron/q5/iso/iso.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -82,6 +82,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -100,7 +101,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
- {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -119,6 +119,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -132,7 +133,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
- {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -140,31 +140,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
- { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
- { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 66, 70, 50, 51, 52 },
- { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 18, 65, 36, 67, 68, 69 },
- { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, __, 83, 84, 85, 86, 87 },
- { 88, 89, 90, __, __, 100, 91, __, __, __, 92, 93, 94, 95, 96, 97, 98, 99 },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
+ { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
+ { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 67, 53, 50, 51, 52 },
+ { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 36, 68, 69, 70 },
+ { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, __, 83, 84, 85, 86, 87 },
+ { 89, 90, 91, __, __, 88, 92, __, __, __, 93, 94, 95, 96, 97, 98, 99, 100 },
},
{
// LED Index to Physical Position
{0,0}, {12,0}, {24,0}, {36,0}, {48,0}, {60,0}, {72,0}, {85,0}, {97,0}, {109,0}, {121,0}, {133,0}, {145,0}, {157,0}, {169,0}, {188,0}, {200,0}, {212,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38}, {224,32},
- {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26}, {224,32},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38},
+ {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q5/iso/keymaps/default/keymap.c b/keyboards/keychron/q5/iso/keymaps/default/keymap.c
index 6b0214d4d692..d756b8542278 100644
--- a/keyboards/keychron/q5/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q5/iso/keymaps/default/keymap.c
@@ -25,35 +25,36 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_101(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-
-// clang-format on
diff --git a/keyboards/keychron/q5/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q5/iso/keymaps/keychron/keymap.c
index a96063512fdd..67aa61d21732 100644
--- a/keyboards/keychron/q5/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q5/iso/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,41 +29,50 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q5/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q5/iso/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/q5/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q5/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q5/iso/keymaps/via/keymap.c b/keyboards/keychron/q5/iso/keymaps/via/keymap.c
index ae1d483cf747..d756b8542278 100644
--- a/keyboards/keychron/q5/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q5/iso/keymaps/via/keymap.c
@@ -25,33 +25,36 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_101(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q5/iso/readme.md b/keyboards/keychron/q5/iso/readme.md
deleted file mode 100644
index 01ca9b20d4de..000000000000
--- a/keyboards/keychron/q5/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the Keychron Q5
diff --git a/keyboards/keychron/q5/iso/rules.mk b/keyboards/keychron/q5/iso/rules.mk
index e859eb9c34c6..aa286a161677 100644
--- a/keyboards/keychron/q5/iso/rules.mk
+++ b/keyboards/keychron/q5/iso/rules.mk
@@ -1,21 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q5/iso_encoder/config.h b/keyboards/keychron/q5/iso_encoder/config.h
index 3a786cbb39be..ab5453e4dac2 100644
--- a/keyboards/keychron/q5/iso_encoder/config.h
+++ b/keyboards/keychron/q5/iso_encoder/config.h
@@ -25,7 +25,7 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 51
+#define CAPS_LOCK_LED_INDEX 52
/* Enable num-lock LED */
-// #define NUM_LOCK_LED_INDEX 31
+#define NUM_LOCK_LED_INDEX 31
diff --git a/keyboards/keychron/q5/iso_encoder/info.json b/keyboards/keychron/q5/iso_encoder/info.json
index eefa6dc69306..757ba59c0157 100644
--- a/keyboards/keychron/q5/iso_encoder/info.json
+++ b/keyboards/keychron/q5/iso_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0153",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -21,110 +37,110 @@
"layouts": {
"LAYOUT_iso_99": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 2], "x": 2, "y": 0},
- {"matrix": [0, 3], "x": 3, "y": 0},
- {"matrix": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 7], "x": 6.5, "y": 0},
- {"matrix": [0, 8], "x": 7.5, "y": 0},
- {"matrix": [0, 9], "x": 8.5, "y": 0},
- {"matrix": [0, 10], "x": 9.5, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [0, 14], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix": [0, 16], "x": 16.25, "y": 0},
- {"matrix": [0, 17], "x": 17.25, "y": 0},
- {"matrix": [3, 12], "x": 18.5, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 2], "x":2, "y":0},
+ {"matrix":[0, 3], "x":3, "y":0},
+ {"matrix":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 7], "x":6.5, "y":0},
+ {"matrix":[0, 8], "x":7.5, "y":0},
+ {"matrix":[0, 9], "x":8.5, "y":0},
+ {"matrix":[0,10], "x":9.5, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[0,14], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+ {"matrix":[0,16], "x":16.25, "y":0},
+ {"matrix":[0,17], "x":17.25, "y":0},
+ {"matrix":[3,12], "x":18.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.5, "y": 1.25},
- {"matrix": [1, 16], "x": 16.5, "y": 1.25},
- {"matrix": [1, 17], "x": 17.5, "y": 1.25},
- {"matrix": [3, 14], "x": 18.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.5, "y":1.25},
+ {"matrix":[1,16], "x":16.5, "y":1.25},
+ {"matrix":[1,17], "x":17.5, "y":1.25},
+ {"matrix":[3,14], "x":18.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 15], "x": 15.5, "y": 2.25},
- {"matrix": [2, 16], "x": 16.5, "y": 2.25},
- {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.5, "y":2.25},
+ {"matrix":[2,16], "x":16.5, "y":2.25},
+ {"matrix":[2,17], "x":17.5, "y":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
- {"matrix": [3, 16], "x": 16.5, "y": 3.25},
- {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.5, "y":3.25},
+ {"matrix":[3,16], "x":16.5, "y":3.25},
+ {"matrix":[3,17], "x":17.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix": [4, 15], "x": 15.5, "y": 4.25},
- {"matrix": [4, 16], "x": 16.5, "y": 4.25},
- {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix":[4,15], "x":15.5, "y":4.25},
+ {"matrix":[4,16], "x":16.5, "y":4.25},
+ {"matrix":[4,17], "x":17.5, "y":4.25},
+ {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5},
- {"matrix": [5, 16], "x": 16.5, "y": 5.25},
- {"matrix": [5, 17], "x": 17.5, "y": 5.25},
- {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5},
+ {"matrix":[5,16], "x":16.5, "y":5.25},
+ {"matrix":[5,17], "x":17.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q5/iso_encoder/iso_encoder.c b/keyboards/keychron/q5/iso_encoder/iso_encoder.c
index 22ba9e2d4ee7..8da6cfc499d2 100644
--- a/keyboards/keychron/q5/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q5/iso_encoder/iso_encoder.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -80,6 +80,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -98,7 +99,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
- {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -117,6 +117,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -130,7 +131,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
- {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -140,29 +140,29 @@ led_config_t g_led_config = {
// Key Matrix to LED Index
{ 0, __, 1, 2, 3, 4, __, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
{ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 64, 68, 48, 49, 50 },
- { 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 16, 63, 34, 65, 66, 67 },
+ { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 65, 51, 48, 49, 50 },
+ { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 16, 64, 34, 66, 67, 68 },
{ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, __, 81, 82, 83, 84, 85 },
- { 86, 87, 88, __, __, 98, 89, __, __, __, 90, 91, 92, 93, 94, 95, 96, 97 },
+ { 87, 88, 89, __, __, 86, 90, __, __, __, 91, 92, 93, 94, 95, 96, 97, 98 },
},
{
// LED Index to Physical Position
{0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {103,0}, {115,0}, {133,0}, {145,0}, {157,0}, {169,0}, {184,0}, {196,0}, {208,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38}, {224,32},
- {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26}, {224,32},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38},
+ {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q5/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q5/iso_encoder/keymaps/default/keymap.c
index e1f3d93212ec..af54e00cbc17 100644
--- a/keyboards/keychron/q5/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q5/iso_encoder/keymaps/default/keymap.c
@@ -25,42 +25,45 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_99(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_99(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, RGB_TOG,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q5/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q5/iso_encoder/keymaps/keychron/keymap.c
index 95dbb282c243..5dc34610e641 100644
--- a/keyboards/keychron/q5/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q5/iso_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,48 +31,59 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_99(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_99(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+// clang-format off
+
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q5/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q5/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q5/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q5/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q5/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q5/iso_encoder/keymaps/via/keymap.c
index 9446d048397a..af54e00cbc17 100644
--- a/keyboards/keychron/q5/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q5/iso_encoder/keymaps/via/keymap.c
@@ -25,42 +25,45 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_99(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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_BASE] = LAYOUT_iso_99(
- KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_99(
- _______, KC_BRID, KC_BRIU, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
};
-#endif
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q5/iso_encoder/readme.md b/keyboards/keychron/q5/iso_encoder/readme.md
deleted file mode 100644
index f628460b3039..000000000000
--- a/keyboards/keychron/q5/iso_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ISO variant of the Keychron Q5
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q5/iso_encoder/rules.mk b/keyboards/keychron/q5/iso_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/q5/iso_encoder/rules.mk
+++ b/keyboards/keychron/q5/iso_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q5/matrix.c b/keyboards/keychron/q5/matrix.c
index 28ef877504a8..081ee6346cf0 100644
--- a/keyboards/keychron/q5/matrix.c
+++ b/keyboards/keychron/q5/matrix.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -14,22 +14,12 @@
* along with this program. If not, see .
*/
-#include "matrix.h"
#include "quantum.h"
-// Pin connected to DS of 74HC595
-#define DATA_PIN C15
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN A1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN A0
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
+
+pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
#define ROWS_PER_HAND (MATRIX_ROWS)
@@ -61,32 +51,45 @@ static inline uint8_t readMatrixPin(pin_t pin) {
}
}
-static void shiftOut(uint8_t dataOut) {
- for (uint8_t i = 0; i < 8; i++) {
- if (dataOut & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
+static inline void HC595_delay(uint16_t n) {
+ while (n-- > 0) {
+ asm volatile("nop" ::: "memory");
+ };
+}
+
+static void HC595_output(uint8_t data) {
+ ATOMIC_BLOCK_FORCEON {
+ for (uint8_t i = 0; i < 8; i++) {
+ if (data & 0x1) {
+ writePinHigh(HC595_DS);
+ } else {
+ writePinLow(HC595_DS);
+ }
+ data = data >> 1;
+ writePinHigh(HC595_SHCP);
+ HC595_delay(3);
+ writePinLow(HC595_SHCP);
}
- dataOut = dataOut >> 1;
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
+ writePinHigh(HC595_STCP);
+ HC595_delay(3);
+ writePinLow(HC595_STCP);
}
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
}
-static void shiftout_single(uint8_t data) {
- if (data & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
+static void HC595_output_bit(uint8_t data) {
+ ATOMIC_BLOCK_FORCEON {
+ if (data & 0x1) {
+ writePinHigh(HC595_DS);
+ } else {
+ writePinLow(HC595_DS);
+ }
+ writePinHigh(HC595_SHCP);
+ HC595_delay(3);
+ writePinLow(HC595_SHCP);
+ writePinHigh(HC595_STCP);
+ HC595_delay(3);
+ writePinLow(HC595_STCP);
}
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
-
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
}
static bool select_col(uint8_t col) {
@@ -97,9 +100,7 @@ static bool select_col(uint8_t col) {
return true;
} else {
if (col == 10) {
- shiftout_single(0x00);
- } else {
- shiftout_single(0x01);
+ HC595_output_bit(0x00);
}
return true;
}
@@ -116,11 +117,7 @@ static void unselect_col(uint8_t col) {
setPinInputHigh_atomic(pin);
#endif
} else {
- if (col == (MATRIX_COLS - 1))
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
+ HC595_output_bit(0x01);
}
}
@@ -128,6 +125,7 @@ static void unselect_cols(void) {
// unselect column pins
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
pin_t pin = col_pins[x];
+
if (pin != NO_PIN) {
#ifdef MATRIX_UNSELECT_DRIVE_HIGH
setPinOutput_writeHigh(pin);
@@ -135,13 +133,22 @@ static void unselect_cols(void) {
setPinInputHigh_atomic(pin);
#endif
}
- if (x == (MATRIX_COLS - 1))
- // unselect shift Register
- shiftOut(0xFF);
+ if (x == 10)
+ HC595_output(0xFF);
}
}
static void matrix_init_pins(void) {
+ setPinOutput(HC595_DS);
+ setPinOutput(HC595_SHCP);
+ setPinOutput(HC595_STCP);
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ if (col_pins[x] != NO_PIN) {
+ setPinOutput(col_pins[x]);
+ }
+ }
+#endif
unselect_cols();
for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
if (row_pins[x] != NO_PIN) {
@@ -158,16 +165,7 @@ static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t curre
return; // skip NO_PIN col
}
- if (current_col < 10) {
- matrix_output_select_delay();
- } else {
- for (int8_t cycle = 4; cycle > 0; cycle--) {
- matrix_output_select_delay(); // 0.25us
- matrix_output_select_delay();
- matrix_output_select_delay();
- matrix_output_select_delay();
- }
- }
+ matrix_output_select_delay();
// For each row...
for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
@@ -180,10 +178,9 @@ static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t curre
// Pin HI, clear col bit
current_matrix[row_index] &= ~row_shifter;
}
-
}
- // // Unselect col
+ // Unselect col
unselect_col(current_col);
matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
}
diff --git a/keyboards/keychron/q5/q5.c b/keyboards/keychron/q5/q5.c
index 7a1cabcd1a5b..883f7c573b84 100644
--- a/keyboards/keychron/q5/q5.c
+++ b/keyboards/keychron/q5/q5.c
@@ -26,7 +26,6 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -36,61 +35,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_LOCK_LED_INDEX))
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- if (!process_record_user(keycode, record)) {
- return false;
- }
- switch (keycode) {
-# ifdef RGB_MATRIX_ENABLE
- 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;
-# endif
- }
- 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 defined(CAPS_LOCK_LED_INDEX)
- 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);
- }
- }
-# endif // CAPS_LOCK_LED_INDEX
-# if defined(NUM_LOCK_LED_INDEX)
- if (host_keyboard_led_state().num_lock) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
- } else {
- if (!rgb_matrix_get_flags()) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
- }
- }
-# endif // NUM_LOCK_LED_INDEX
- return true;
-}
-
-#endif // RGB_MATRIX_ENABLE...
+#endif
diff --git a/keyboards/keychron/q5/readme.md b/keyboards/keychron/q5/readme.md
index ac598392589d..3f97a35e25a9 100644
--- a/keyboards/keychron/q5/readme.md
+++ b/keyboards/keychron/q5/readme.md
@@ -1,18 +1,26 @@
# Keychron Q5
+![Keychron Q5](https://i.imgur.com/hgBjdtT.jpg)
+
A customizable 96% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q5
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q5 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q5-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
- make keychron/q5/ansi:default
+ make keychron/q5/ansi:default
+ make keychron/q5/ansi_encoder:default
+ make keychron/q5/iso:default
+ make keychron/q5/iso_encoder:default
Flashing example for this keyboard:
- make keychron/q5/ansi:default:flash
+ make keychron/q5/ansi:default:flash
+ make keychron/q5/ansi_encoder:default:flash
+ make keychron/q5/iso:default:flash
+ make keychron/q5/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q6/ansi/ansi.c b/keyboards/keychron/q6/ansi/ansi.c
index a81d5f9e9fb5..71529dac91c5 100644
--- a/keyboards/keychron/q6/ansi/ansi.c
+++ b/keyboards/keychron/q6/ansi/ansi.c
@@ -18,10 +18,8 @@
#ifdef RGB_MATRIX_ENABLE
-// clang-format off
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -90,6 +88,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -107,7 +106,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
- {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -125,6 +123,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -139,7 +138,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
- {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -147,31 +145,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 60, 77, 76, 74, 75, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 107, 91, 92, __ },
- { 94, 95, 96, __, __, __, 97, __, __, __, 98, 99, 100, 101, 102, 103, 104, 105, 106, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
+ { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
+ { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
+ { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
},
{
// LED Index to Physical Position
{0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40}, {224,34},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q6/ansi/config.h b/keyboards/keychron/q6/ansi/config.h
index 703da35636f1..0a017f9e767d 100644
--- a/keyboards/keychron/q6/ansi/config.h
+++ b/keyboards/keychron/q6/ansi/config.h
@@ -16,21 +16,16 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, A2, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, C14 }
-#define NO_PIN_START 11
-#define NO_PIN_OFFSET 1
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 61
+#define CAPS_LOCK_LED_INDEX 62
/* Enable NUM_LOCK_LED_INDEX */
-// #define NUM_LOCK_LED_INDEX 37
+#define NUM_LOCK_LED_INDEX 37
+
+#define SHIFT_COL_START 11
+#define SHIFT_COL_END 18
diff --git a/keyboards/keychron/q6/ansi/info.json b/keyboards/keychron/q6/ansi/info.json
index fdec220e80c3..05fe3dbf7dca 100644
--- a/keyboards/keychron/q6/ansi/info.json
+++ b/keyboards/keychron/q6/ansi/info.json
@@ -6,129 +6,145 @@
"usb": {
"vid": "0x3434",
"pid": "0x0160",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_108": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [0, 16], "x": 17.25, "y": 0},
- {"matrix": [0, 19], "x": 18.5, "y": 0},
- {"matrix": [1, 19], "x": 19.5, "y": 0},
- {"matrix": [2, 19], "x": 20.5, "y": 0},
- {"matrix": [3, 19], "x": 21.5, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [1, 16], "x": 17.25, "y": 1.25},
- {"matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"matrix": [1, 18], "x": 19.5, "y": 1.25},
- {"matrix": [0, 17], "x": 20.5, "y": 1.25},
- {"matrix": [0, 18], "x": 21.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [2, 16], "x": 17.25, "y": 2.25},
- {"matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"matrix": [2, 18], "x": 19.5, "y": 2.25},
- {"matrix": [3, 14], "x": 20.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"matrix": [3, 18], "x": 19.5, "y": 3.25},
- {"matrix": [3, 16], "x": 20.5, "y": 3.25},
- {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"matrix": [4, 18], "x": 19.5, "y": 4.25},
- {"matrix": [4, 14], "x": 20.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [5, 16], "x": 17.25, "y": 5.25},
- {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
- {"matrix": [5, 18], "x": 20.5, "y": 5.25},
- {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q6/ansi/keymaps/default/keymap.c b/keyboards/keychron/q6/ansi/keymaps/default/keymap.c
index 19bab1ee378b..3f63412300bd 100644
--- a/keyboards/keychron/q6/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q6/ansi/keymaps/default/keymap.c
@@ -25,33 +25,36 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_108(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q6/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q6/ansi/keymaps/keychron/keymap.c
index 2ae53ecb632f..c1e36ce850cf 100644
--- a/keyboards/keychron/q6/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q6/ansi/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,41 +31,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if(!process_record_keychron(keycode, record)) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
return false;
}
diff --git a/keyboards/keychron/q6/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q6/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/q6/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q6/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q6/ansi/keymaps/via/keymap.c b/keyboards/keychron/q6/ansi/keymaps/via/keymap.c
index 19bab1ee378b..3f63412300bd 100644
--- a/keyboards/keychron/q6/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q6/ansi/keymaps/via/keymap.c
@@ -25,33 +25,36 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_108(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q6/ansi/readme.md b/keyboards/keychron/q6/ansi/readme.md
deleted file mode 100644
index d4075e915939..000000000000
--- a/keyboards/keychron/q6/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q6
diff --git a/keyboards/keychron/q6/ansi/rules.mk b/keyboards/keychron/q6/ansi/rules.mk
index ec47b77d0f64..aa286a161677 100644
--- a/keyboards/keychron/q6/ansi/rules.mk
+++ b/keyboards/keychron/q6/ansi/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_ENABLE = yes
-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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
index 6fbece3678a1..fd59ba356a1e 100644
--- a/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
@@ -16,12 +16,12 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
// clang-format off
+#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -90,6 +90,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -107,7 +108,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
- {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -125,6 +125,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -139,7 +140,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
- {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -147,31 +147,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 60, 77, 76, 74, 75, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 107, 91, 92, __ },
- { 94, 95, 96, __, __, __, 97, __, __, __, 98, 99, 100, 101, 102, 103, 104, 105, 106, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
+ { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
+ { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
+ { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
},
{
// LED Index to Physical Position
{0,0}, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40}, {224,34},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q6/ansi_encoder/config.h b/keyboards/keychron/q6/ansi_encoder/config.h
index 573fa614a321..099c3306f1df 100644
--- a/keyboards/keychron/q6/ansi_encoder/config.h
+++ b/keyboards/keychron/q6/ansi_encoder/config.h
@@ -16,15 +16,6 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-#define NO_PIN_START 10
-#define NO_PIN_NUM 10
-#define CLR_REG_VAL 0x3FF
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
@@ -34,7 +25,10 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 61
+#define CAPS_LOCK_LED_INDEX 62
/* Enable NUM_LOCK_LED_INDEX */
-// #define NUM_LOCK_LED_INDEX 37
+#define NUM_LOCK_LED_INDEX 37
+
+#define SHIFT_COL_START 10
+#define SHIFT_COL_END 19
diff --git a/keyboards/keychron/q6/ansi_encoder/info.json b/keyboards/keychron/q6/ansi_encoder/info.json
index df3902f44abf..99d7174aae4d 100644
--- a/keyboards/keychron/q6/ansi_encoder/info.json
+++ b/keyboards/keychron/q6/ansi_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0161",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -21,120 +37,120 @@
"layouts": {
"LAYOUT_ansi_109": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [4, 19], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [0, 16], "x": 17.25, "y": 0},
- {"matrix": [0, 19], "x": 18.5, "y": 0},
- {"matrix": [1, 19], "x": 19.5, "y": 0},
- {"matrix": [2, 19], "x": 20.5, "y": 0},
- {"matrix": [3, 19], "x": 21.5, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[4,19], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [1, 16], "x": 17.25, "y": 1.25},
- {"matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"matrix": [1, 18], "x": 19.5, "y": 1.25},
- {"matrix": [0, 17], "x": 20.5, "y": 1.25},
- {"matrix": [0, 18], "x": 21.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [2, 16], "x": 17.25, "y": 2.25},
- {"matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"matrix": [2, 18], "x": 19.5, "y": 2.25},
- {"matrix": [3, 14], "x": 20.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"matrix": [3, 18], "x": 19.5, "y": 3.25},
- {"matrix": [3, 16], "x": 20.5, "y": 3.25},
- {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"matrix": [4, 18], "x": 19.5, "y": 4.25},
- {"matrix": [4, 14], "x": 20.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2}
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [5, 16], "x": 17.25, "y": 5.25},
- {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
- {"matrix": [5, 18], "x": 20.5, "y": 5.25},
- {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25},
]
}
}
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q6/ansi_encoder/keymaps/default/keymap.c
index 25f4852ef7e4..f57e544b2608 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/default/keymap.c
@@ -25,42 +25,45 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_109(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/keymap.c
index 2fdbbb7dd140..f853d49596bd 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -29,51 +30,56 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif
+#endif // ENCODER_MAP_ENABLE
// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if(!process_record_keychron(keycode, record)) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
return false;
}
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q6/ansi_encoder/keymaps/via/keymap.c
index 762dfe66daf4..f57e544b2608 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/via/keymap.c
@@ -25,42 +25,45 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_109(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_ansi_109(
- KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_109(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q6/ansi_encoder/keymaps/via/rules.mk
index f1adcab005e8..c09b2475769a 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/via/rules.mk
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
+EMCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q6/ansi_encoder/readme.md b/keyboards/keychron/q6/ansi_encoder/readme.md
deleted file mode 100644
index f63e1c1648eb..000000000000
--- a/keyboards/keychron/q6/ansi_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ANSI variant of the Keychron Q6
-
-- Enable rotary encoder support.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q6/ansi_encoder/rules.mk b/keyboards/keychron/q6/ansi_encoder/rules.mk
index 77b90f246666..aa286a161677 100644
--- a/keyboards/keychron/q6/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q6/ansi_encoder/rules.mk
@@ -1,23 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
-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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q6/config.h b/keyboards/keychron/q6/config.h
index 060804057f9b..25aee4e4524d 100644
--- a/keyboards/keychron/q6/config.h
+++ b/keyboards/keychron/q6/config.h
@@ -16,23 +16,25 @@
#pragma once
-/* Key matrix size */
-#define MATRIX_ROWS 6
-#define MATRIX_COLS 20
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
#define DRIVER_ADDR_2 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 \
{ 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -76,9 +78,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -93,5 +99,10 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_DS C15
+#define HC595_SHCP A1
+#define HC595_STCP A0
diff --git a/keyboards/keychron/q6/halconf.h b/keyboards/keychron/q6/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q6/halconf.h
+++ b/keyboards/keychron/q6/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q6/iso/config.h b/keyboards/keychron/q6/iso/config.h
index 46c9e1c33a20..d46fda6d9f9c 100644
--- a/keyboards/keychron/q6/iso/config.h
+++ b/keyboards/keychron/q6/iso/config.h
@@ -16,21 +16,16 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, A2, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, C14 }
-#define NO_PIN_START 11
-#define NO_PIN_OFFSET 1
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 49
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 60
+#define CAPS_LOCK_LED_INDEX 61
/* Enable NUM_LOCK_LED_INDEX */
-// #define NUM_LOCK_LED_INDEX 37
+#define NUM_LOCK_LED_INDEX 37
+
+#define SHIFT_COL_START 11
+#define SHIFT_COL_END 18
diff --git a/keyboards/keychron/q6/iso/info.json b/keyboards/keychron/q6/iso/info.json
index dfaa20aa9317..ef714b6737c7 100644
--- a/keyboards/keychron/q6/iso/info.json
+++ b/keyboards/keychron/q6/iso/info.json
@@ -6,130 +6,146 @@
"usb": {
"vid": "0x3434",
"pid": "0x0162",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_109": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [0, 16], "x": 17.25, "y": 0},
- {"matrix": [0, 19], "x": 18.5, "y": 0},
- {"matrix": [1, 19], "x": 19.5, "y": 0},
- {"matrix": [2, 19], "x": 20.5, "y": 0},
- {"matrix": [3, 19], "x": 21.5, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [1, 16], "x": 17.25, "y": 1.25},
- {"matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"matrix": [1, 18], "x": 19.5, "y": 1.25},
- {"matrix": [0, 17], "x": 20.5, "y": 1.25},
- {"matrix": [0, 18], "x": 21.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [2, 16], "x": 17.25, "y": 2.25},
- {"matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"matrix": [2, 18], "x": 19.5, "y": 2.25},
- {"matrix": [3, 14], "x": 20.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"matrix": [3, 18], "x": 19.5, "y": 3.25},
- {"matrix": [3, 16], "x": 20.5, "y": 3.25},
- {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"matrix": [4, 18], "x": 19.5, "y": 4.25},
- {"matrix": [4, 14], "x": 20.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [5, 16], "x": 17.25, "y": 5.25},
- {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
- {"matrix": [5, 18], "x": 20.5, "y": 5.25},
- {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/q6/iso/iso.c b/keyboards/keychron/q6/iso/iso.c
index f2081177e919..0e28267a2c6b 100644
--- a/keyboards/keychron/q6/iso/iso.c
+++ b/keyboards/keychron/q6/iso/iso.c
@@ -16,12 +16,12 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
// clang-format off
+#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -89,6 +89,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -107,7 +108,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
- {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -126,6 +126,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -140,7 +141,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
- {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -148,31 +148,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 73, 54, 55, 56, 57, 58, 18 },
- { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, __, 72, 59, 77, 76, 74, 75, 19 },
- { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 108, 92, 93, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 54, 55, 56, 57, 58, 18 },
+ { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 59, 60, 77, 75, 76, 19 },
+ { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 95, 92, 93, __ },
+ { 96, 97, 98, __, __, __, 99, __, __, __, 100, 101, 102, 103, 104, 105, 106, 107, 108, __ },
},
{
// LED Index to Physical Position
{0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40}, {224,34},
- {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
+ {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q6/iso/keymaps/default/keymap.c b/keyboards/keychron/q6/iso/keymaps/default/keymap.c
index cf376b890483..754831db3335 100644
--- a/keyboards/keychron/q6/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q6/iso/keymaps/default/keymap.c
@@ -25,33 +25,36 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_109(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q6/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q6/iso/keymaps/keychron/keymap.c
index 363b10e92e33..2dbd2e23e8bf 100644
--- a/keyboards/keychron/q6/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q6/iso/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,41 +31,46 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if(!process_record_keychron(keycode, record)) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
return false;
}
diff --git a/keyboards/keychron/q6/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q6/iso/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/q6/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q6/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q6/iso/keymaps/via/keymap.c b/keyboards/keychron/q6/iso/keymaps/via/keymap.c
index cf376b890483..754831db3335 100644
--- a/keyboards/keychron/q6/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q6/iso/keymaps/via/keymap.c
@@ -25,33 +25,36 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_109(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q6/iso/readme.md b/keyboards/keychron/q6/iso/readme.md
deleted file mode 100644
index 05fced2017de..000000000000
--- a/keyboards/keychron/q6/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the Keychron Q6
diff --git a/keyboards/keychron/q6/iso/rules.mk b/keyboards/keychron/q6/iso/rules.mk
index 6548448302c0..aa286a161677 100644
--- a/keyboards/keychron/q6/iso/rules.mk
+++ b/keyboards/keychron/q6/iso/rules.mk
@@ -1,23 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_ENABLE = yes
-RAW_ENABLE = yes
-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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q6/iso_encoder/config.h b/keyboards/keychron/q6/iso_encoder/config.h
index 512a33bafdec..cf287b19859a 100644
--- a/keyboards/keychron/q6/iso_encoder/config.h
+++ b/keyboards/keychron/q6/iso_encoder/config.h
@@ -16,15 +16,6 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-#define NO_PIN_START 10
-#define NO_PIN_NUM 10
-#define CLR_REG_VAL 0x3FF
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 49
@@ -34,7 +25,10 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 60
+#define CAPS_LOCK_LED_INDEX 61
/* Enable NUM_LOCK_LED_INDEX */
-// #define NUM_LOCK_LED_INDEX 37
+#define NUM_LOCK_LED_INDEX 37
+
+#define SHIFT_COL_START 10
+#define SHIFT_COL_END 19
diff --git a/keyboards/keychron/q6/iso_encoder/info.json b/keyboards/keychron/q6/iso_encoder/info.json
index 45906168312c..74a74ab41bf1 100644
--- a/keyboards/keychron/q6/iso_encoder/info.json
+++ b/keyboards/keychron/q6/iso_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0163",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -21,121 +37,121 @@
"layouts": {
"LAYOUT_iso_110": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [4, 19], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [0, 16], "x": 17.25, "y": 0},
- {"matrix": [0, 19], "x": 18.5, "y": 0},
- {"matrix": [1, 19], "x": 19.5, "y": 0},
- {"matrix": [2, 19], "x": 20.5, "y": 0},
- {"matrix": [3, 19], "x": 21.5, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[4,19], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [1, 16], "x": 17.25, "y": 1.25},
- {"matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"matrix": [1, 18], "x": 19.5, "y": 1.25},
- {"matrix": [0, 17], "x": 20.5, "y": 1.25},
- {"matrix": [0, 18], "x": 21.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [2, 16], "x": 17.25, "y": 2.25},
- {"matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"matrix": [2, 18], "x": 19.5, "y": 2.25},
- {"matrix": [3, 14], "x": 20.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"matrix": [3, 18], "x": 19.5, "y": 3.25},
- {"matrix": [3, 16], "x": 20.5, "y": 3.25},
- {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"matrix": [4, 18], "x": 19.5, "y": 4.25},
- {"matrix": [4, 14], "x": 20.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2}
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [5, 16], "x": 17.25, "y": 5.25},
- {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
- {"matrix": [5, 18], "x": 20.5, "y": 5.25},
- {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25},
]
}
}
diff --git a/keyboards/keychron/q6/iso_encoder/iso_encoder.c b/keyboards/keychron/q6/iso_encoder/iso_encoder.c
index e9a6f6edfcf1..f406a83392c8 100644
--- a/keyboards/keychron/q6/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q6/iso_encoder/iso_encoder.c
@@ -16,12 +16,12 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
// clang-format off
+#ifdef RGB_MATRIX_ENABLE
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -89,6 +89,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -107,7 +108,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
- {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -126,6 +126,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -140,7 +141,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
- {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -148,31 +148,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 73, 54, 55, 56, 57, 58, 18 },
- { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, __, 72, 59, 77, 76, 74, 75, 19 },
- { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 108, 92, 93, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 54, 55, 56, 57, 58, 18 },
+ { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 59, 60, 77, 75, 76, 19 },
+ { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 95, 92, 93, __ },
+ { 96, 97, 98, __, __, __, 99, __, __, __, 100, 101, 102, 103, 104, 105, 106, 107, 108, __ },
},
{
// LED Index to Physical Position
{0,0}, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40}, {224,34},
- {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
+ {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q6/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q6/iso_encoder/keymaps/default/keymap.c
index 8eed8a5b76e9..790538586efb 100644
--- a/keyboards/keychron/q6/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q6/iso_encoder/keymaps/default/keymap.c
@@ -25,39 +25,42 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD , KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_110(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_110(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_110(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG, _______, _______, _______, _______,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q6/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q6/iso_encoder/keymaps/keychron/keymap.c
index 564d070f93aa..c61a163b4edc 100644
--- a/keyboards/keychron/q6/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q6/iso_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -26,55 +27,59 @@ enum layers{
WIN_FN
};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_110(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_iso_110(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_110(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif
+#endif // ENCODER_MAP_ENABLE
// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if(!process_record_keychron(keycode, record)) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
return false;
}
diff --git a/keyboards/keychron/q6/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q6/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q6/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q6/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q6/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q6/iso_encoder/keymaps/via/keymap.c
index bfd60011dee2..790538586efb 100644
--- a/keyboards/keychron/q6/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q6/iso_encoder/keymaps/via/keymap.c
@@ -25,39 +25,42 @@ enum layers{
WIN_FN
};
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_110(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_iso_110(
- KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_110(
- _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q6/iso_encoder/readme.md b/keyboards/keychron/q6/iso_encoder/readme.md
deleted file mode 100644
index b68e34014960..000000000000
--- a/keyboards/keychron/q6/iso_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ISO variant of the Keychron Q6
-
-- Enable rotary encoder support.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q6/iso_encoder/rules.mk b/keyboards/keychron/q6/iso_encoder/rules.mk
index 548b0d696baa..aa286a161677 100644
--- a/keyboards/keychron/q6/iso_encoder/rules.mk
+++ b/keyboards/keychron/q6/iso_encoder/rules.mk
@@ -1,24 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_ENABLE = yes
-RAW_ENABLE = yes
-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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q6/matrix.c b/keyboards/keychron/q6/matrix.c
deleted file mode 100644
index 11f3432e6b18..000000000000
--- a/keyboards/keychron/q6/matrix.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* 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 .
- */
-
-#include "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN C15
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN A1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN A0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-#ifndef NO_PIN_NUM
-# define NO_PIN_NUM 8
-#endif
-
-#ifndef NO_PIN_OFFSET
-# define NO_PIN_OFFSET 0
-#endif
-
-#ifndef CLR_REG_VAL
-# define CLR_REG_VAL 0xFF
-#endif
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-static void shiftOut(uint16_t dataOut) {
- for (uint8_t i = 0; i < NO_PIN_NUM; i++) {
- if (dataOut & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- }
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static void shiftout_single(uint8_t data) {
- if (data & 0x1) {
- setPinOutput_writeHigh(DATA_PIN);
- } else {
- setPinOutput_writeLow(DATA_PIN);
- }
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
-
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == NO_PIN_START) {
- shiftout_single(0x00);
- } else {
- shiftout_single(0x01);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (col == (MATRIX_COLS - NO_PIN_OFFSET - 1))
- setPinOutput_writeHigh(CLOCK_PIN);
- setPinOutput_writeLow(CLOCK_PIN);
- setPinOutput_writeHigh(LATCH_PIN);
- setPinOutput_writeLow(LATCH_PIN);
- }
-}
-
-static void unselect_cols(void) {
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- }
- if (x == (MATRIX_COLS - NO_PIN_OFFSET - 1))
- // unselect shift Register
- shiftOut(CLR_REG_VAL);
- }
-}
-
-static void matrix_init_pins(void) {
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- if (current_col < 10) {
- matrix_output_select_delay();
- } else {
- for (int8_t cycle = 4; cycle > 0; cycle--) {
- matrix_output_select_delay(); // 0.25us
- matrix_output_select_delay();
- matrix_output_select_delay();
- matrix_output_select_delay();
- }
- }
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/q6/q6.c b/keyboards/keychron/q6/q6.c
index 8a9750e9de4f..9a02067c7d4a 100644
--- a/keyboards/keychron/q6/q6.c
+++ b/keyboards/keychron/q6/q6.c
@@ -26,7 +26,6 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -36,61 +35,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_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 defined(CAPS_LOCK_LED_INDEX)
- 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);
- }
- }
-# endif // CAPS_LOCK_LED_INDEX
-# if defined(NUM_LOCK_LED_INDEX)
- if (host_keyboard_led_state().num_lock) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
- } else {
- if (!rgb_matrix_get_flags()) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
- }
- }
-# endif // NUM_LOCK_LED_INDEX
- return true;
-}
-
-#endif // RGB_MATRIX_ENABLE...
+#endif
diff --git a/keyboards/keychron/q6/readme.md b/keyboards/keychron/q6/readme.md
index a2056c57ae26..5d2181ad3dbf 100644
--- a/keyboards/keychron/q6/readme.md
+++ b/keyboards/keychron/q6/readme.md
@@ -1,18 +1,26 @@
# Keychron Q6
+![Keychron Q6](https://i.imgur.com/7h9eBNj.jpg)
+
A customizable 100% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q6
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q6 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q6-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/q6/ansi:default
+ make keychron/q6/ansi_encoder:default
+ make keychron/q6/iso:default
+ make keychron/q6/iso_encoder:default
Flashing example for this keyboard:
- make keychron/q6/ansi:default:flash
+ make keychron/q6/ansi:flash
+ make keychron/q6/ansi_encoder:flash
+ make keychron/q6/iso:flash
+ make keychron/q6/iso_encoder:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q60/ansi/ansi.c b/keyboards/keychron/q60/ansi/ansi.c
index bb3c84b64a9d..0e5d0957f1f7 100644
--- a/keyboards/keychron/q60/ansi/ansi.c
+++ b/keyboards/keychron/q60/ansi/ansi.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -117,7 +117,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
1, 1, 4, 1, 1,
}
};
diff --git a/keyboards/keychron/q60/ansi/config.h b/keyboards/keychron/q60/ansi/config.h
index 05810cce64a8..2f6abf669d3e 100644
--- a/keyboards/keychron/q60/ansi/config.h
+++ b/keyboards/keychron/q60/ansi/config.h
@@ -17,4 +17,5 @@
#pragma once
/* RGB Matrix Configuration */
-#define RGB_MATRIX_LED_COUNT 60
+#define DRIVER_1_LED_TOTAL 60
+#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
diff --git a/keyboards/keychron/q60/ansi/info.json b/keyboards/keychron/q60/ansi/info.json
index 95b1c4e4728f..0ef742bbc6ba 100644
--- a/keyboards/keychron/q60/ansi/info.json
+++ b/keyboards/keychron/q60/ansi/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x01C0",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -21,70 +32,70 @@
"layouts": {
"LAYOUT_ansi_60": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [4, 12], "x": 14, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[4,12], "x":14, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
- {"matrix": [3, 13], "x": 14, "y": 3},
+ {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,12], "x":12.25, "y":3, "w":1.75},
+ {"matrix":[3,13], "x":14, "y":3},
- {"matrix": [4, 0], "x": 1.5, "y": 4},
- {"matrix": [4, 1], "x": 2.5, "y": 4, "w": 1.5},
- {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
- {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
- {"matrix": [4, 11], "x": 12.5, "y": 4}
+ {"matrix":[4, 0], "x":1.5, "y":4},
+ {"matrix":[4, 1], "x":2.5, "y":4, "w":1.5},
+ {"matrix":[4, 6], "x":4, "y":4, "w":7},
+ {"matrix":[4,10], "x":11, "y":4, "w":1.5},
+ {"matrix":[4,11], "x":12.5, "y":4}
]
}
}
diff --git a/keyboards/keychron/q60/ansi/keymaps/default/keymap.c b/keyboards/keychron/q60/ansi/keymaps/default/keymap.c
index cb245ede67a5..f5dc74c7e3b6 100644
--- a/keyboards/keychron/q60/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q60/ansi/keymaps/default/keymap.c
@@ -21,10 +21,7 @@
enum layers {
MAC_BASE,
WIN_BASE,
- FUNC,
- L3,
- L4,
- L5
+ _FN1,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -32,41 +29,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN),
[WIN_BASE] = LAYOUT_ansi_60(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
KC_LALT, KC_LWIN, KC_SPC, KC_RWIN, KC_RALT),
- [FUNC] = LAYOUT_ansi_60(
+ [_FN1] = LAYOUT_ansi_60(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______),
-
- [L3] = LAYOUT_ansi_60(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______),
-
- [L4] = LAYOUT_ansi_60(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______),
-
- [L5] = LAYOUT_ansi_60(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q60/ansi/keymaps/keychron/config.h b/keyboards/keychron/q60/ansi/keymaps/keychron/config.h
new file mode 100644
index 000000000000..100548654b07
--- /dev/null
+++ b/keyboards/keychron/q60/ansi/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6
diff --git a/keyboards/keychron/q60/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q60/ansi/keymaps/keychron/keymap.c
index e75f61a1f994..a54a56573157 100644
--- a/keyboards/keychron/q60/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q60/ansi/keymaps/keychron/keymap.c
@@ -16,13 +16,14 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- FUNC,
+ _FN1,
L3,
L4,
L5
@@ -33,14 +34,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN),
[WIN_BASE] = LAYOUT_ansi_60(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN),
[FUNC] = LAYOUT_ansi_60(
@@ -74,9 +75,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q60/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q60/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q60/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q60/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q60/ansi/keymaps/via/config.h b/keyboards/keychron/q60/ansi/keymaps/via/config.h
new file mode 100644
index 000000000000..100548654b07
--- /dev/null
+++ b/keyboards/keychron/q60/ansi/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6
diff --git a/keyboards/keychron/q60/ansi/keymaps/via/keymap.c b/keyboards/keychron/q60/ansi/keymaps/via/keymap.c
index cb245ede67a5..f027f4dc1449 100644
--- a/keyboards/keychron/q60/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q60/ansi/keymaps/via/keymap.c
@@ -21,7 +21,7 @@
enum layers {
MAC_BASE,
WIN_BASE,
- FUNC,
+ _FN1,
L3,
L4,
L5
@@ -32,14 +32,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN),
[WIN_BASE] = LAYOUT_ansi_60(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
KC_LALT, KC_LWIN, KC_SPC, KC_RWIN, KC_RALT),
[FUNC] = LAYOUT_ansi_60(
diff --git a/keyboards/keychron/q60/ansi/rules.mk b/keyboards/keychron/q60/ansi/rules.mk
index 46f5aef144b4..4bc1e23a57a0 100644
--- a/keyboards/keychron/q60/ansi/rules.mk
+++ b/keyboards/keychron/q60/ansi/rules.mk
@@ -1,17 +1,8 @@
# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q60/config.h b/keyboards/keychron/q60/config.h
index 779feea4ce1b..5ccd85258ac2 100644
--- a/keyboards/keychron/q60/config.h
+++ b/keyboards/keychron/q60/config.h
@@ -25,13 +25,15 @@
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
-#define I2C1_TIMINGR_SCLL 51U
+#define I2C1_TIMINGR_SCLL 30U
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xD8, 0xD8, 0x60, 0xD8, 0xD8, 0x60, 0xD8, 0xD8, 0x60, 0xD8, 0xD8, 0x60 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -39,8 +41,6 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define DYNAMIC_KEYMAP_LAYER_COUNT 6
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -77,9 +77,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -94,5 +98,7 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define BL_TEST_KEY1 KC_B
+#define BL_TEST_KEY2 KC_L
diff --git a/keyboards/keychron/q60/q60.c b/keyboards/keychron/q60/q60.c
index d97f72fb8ea1..1c40e430ea7c 100644
--- a/keyboards/keychron/q60/q60.c
+++ b/keyboards/keychron/q60/q60.c
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,5 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
+#endif
diff --git a/keyboards/keychron/q60/readme.md b/keyboards/keychron/q60/readme.md
index 6e546ae1e15f..88a6a13f05bb 100644
--- a/keyboards/keychron/q60/readme.md
+++ b/keyboards/keychron/q60/readme.md
@@ -1,10 +1,12 @@
# Keychron Q60
+[Keychron Q60](https://i.imgur.com/Uxgs4Sr.jpg)
+
A customizable 60% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q60
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q60 QMK Custom Mechanical Keyboard](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
index fffa00194d6e..93f33196753d 100644
--- a/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
@@ -19,12 +19,12 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, C_15, A_15, B_15}, // Esc
{0, C_14, A_14, B_14}, // 1!
{0, C_13, A_13, B_13}, // 2@
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q65/ansi_encoder/info.json b/keyboards/keychron/q65/ansi_encoder/info.json
index 0f7679945a26..01cd5f1d5caa 100644
--- a/keyboards/keychron/q65/ansi_encoder/info.json
+++ b/keyboards/keychron/q65/ansi_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x01B1",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": [null, null, null, null, null, null, null, null, "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1"],
+ "rows": ["B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -24,83 +40,83 @@
"layouts": {
"LAYOUT_ansi_73": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 1.5, "y": 0.25},
- {"matrix": [0, 2], "x": 2.5, "y": 0.25},
- {"matrix": [0, 3], "x": 3.5, "y": 0.25},
- {"matrix": [0, 4], "x": 4.5, "y": 0.25},
- {"matrix": [0, 5], "x": 5.5, "y": 0.25},
- {"matrix": [0, 6], "x": 6.5, "y": 0.25},
- {"matrix": [0, 7], "x": 7.5, "y": 0.25},
- {"matrix": [0, 8], "x": 8.5, "y": 0.25},
- {"matrix": [0, 9], "x": 9.5, "y": 0.25},
- {"matrix": [0, 10], "x": 10.5, "y": 0.25},
- {"matrix": [0, 11], "x": 11.5, "y": 0.25},
- {"matrix": [0, 12], "x": 12.5, "y": 0.25},
- {"matrix": [0, 13], "x": 13.5, "y": 0.25},
- {"matrix": [0, 14], "x": 14.5, "y": 0.25, "w": 2},
- {"matrix": [0, 15], "x": 17, "y": 0.25},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":1.5, "y":0.25},
+ {"matrix":[0, 2], "x":2.5, "y":0.25},
+ {"matrix":[0, 3], "x":3.5, "y":0.25},
+ {"matrix":[0, 4], "x":4.5, "y":0.25},
+ {"matrix":[0, 5], "x":5.5, "y":0.25},
+ {"matrix":[0, 6], "x":6.5, "y":0.25},
+ {"matrix":[0, 7], "x":7.5, "y":0.25},
+ {"matrix":[0, 8], "x":8.5, "y":0.25},
+ {"matrix":[0, 9], "x":9.5, "y":0.25},
+ {"matrix":[0,10], "x":10.5, "y":0.25},
+ {"matrix":[0,11], "x":11.5, "y":0.25},
+ {"matrix":[0,12], "x":12.5, "y":0.25},
+ {"matrix":[0,13], "x":13.5, "y":0.25},
+ {"matrix":[0,14], "x":14.5, "y":0.25, "w":2},
+ {"matrix":[0,15], "x":17, "y":0.25},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 2], "x": 3, "y": 1.25},
- {"matrix": [1, 3], "x": 4, "y": 1.25},
- {"matrix": [1, 4], "x": 5, "y": 1.25},
- {"matrix": [1, 5], "x": 6, "y": 1.25},
- {"matrix": [1, 6], "x": 7, "y": 1.25},
- {"matrix": [1, 7], "x": 8, "y": 1.25},
- {"matrix": [1, 8], "x": 9, "y": 1.25},
- {"matrix": [1, 9], "x": 10, "y": 1.25},
- {"matrix": [1, 10], "x": 11, "y": 1.25},
- {"matrix": [1, 11], "x": 12, "y": 1.25},
- {"matrix": [1, 12], "x": 13, "y": 1.25},
- {"matrix": [1, 13], "x": 14, "y": 1.25},
- {"matrix": [1, 14], "x": 15, "y": 1.25, "w": 1.5},
- {"matrix": [1, 15], "x": 17, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 2], "x":3, "y":1.25},
+ {"matrix":[1, 3], "x":4, "y":1.25},
+ {"matrix":[1, 4], "x":5, "y":1.25},
+ {"matrix":[1, 5], "x":6, "y":1.25},
+ {"matrix":[1, 6], "x":7, "y":1.25},
+ {"matrix":[1, 7], "x":8, "y":1.25},
+ {"matrix":[1, 8], "x":9, "y":1.25},
+ {"matrix":[1, 9], "x":10, "y":1.25},
+ {"matrix":[1,10], "x":11, "y":1.25},
+ {"matrix":[1,11], "x":12, "y":1.25},
+ {"matrix":[1,12], "x":13, "y":1.25},
+ {"matrix":[1,13], "x":14, "y":1.25},
+ {"matrix":[1,14], "x":15, "y":1.25, "w":1.5},
+ {"matrix":[1,15], "x":17, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25, "w": 1.75},
- {"matrix": [2, 2], "x": 3.25, "y": 2.25},
- {"matrix": [2, 3], "x": 4.25, "y": 2.25},
- {"matrix": [2, 4], "x": 5.25, "y": 2.25},
- {"matrix": [2, 5], "x": 6.25, "y": 2.25},
- {"matrix": [2, 6], "x": 7.25, "y": 2.25},
- {"matrix": [2, 7], "x": 8.25, "y": 2.25},
- {"matrix": [2, 8], "x": 9.25, "y": 2.25},
- {"matrix": [2, 9], "x": 10.25, "y": 2.25},
- {"matrix": [2, 10], "x": 11.25, "y": 2.25},
- {"matrix": [2, 11], "x": 12.25, "y": 2.25},
- {"matrix": [2, 12], "x": 13.25, "y": 2.25},
- {"matrix": [2, 14], "x": 14.25, "y": 2.25, "w": 2.25},
- {"matrix": [2, 15], "x": 17, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25},
+ {"matrix":[2, 1], "x":1.5, "y":2.25, "w":1.75},
+ {"matrix":[2, 2], "x":3.25, "y":2.25},
+ {"matrix":[2, 3], "x":4.25, "y":2.25},
+ {"matrix":[2, 4], "x":5.25, "y":2.25},
+ {"matrix":[2, 5], "x":6.25, "y":2.25},
+ {"matrix":[2, 6], "x":7.25, "y":2.25},
+ {"matrix":[2, 7], "x":8.25, "y":2.25},
+ {"matrix":[2, 8], "x":9.25, "y":2.25},
+ {"matrix":[2, 9], "x":10.25, "y":2.25},
+ {"matrix":[2,10], "x":11.25, "y":2.25},
+ {"matrix":[2,11], "x":12.25, "y":2.25},
+ {"matrix":[2,12], "x":13.25, "y":2.25},
+ {"matrix":[2,14], "x":14.25, "y":2.25, "w":2.25},
+ {"matrix":[2,15], "x":17, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 2.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 12], "x": 12.75, "y": 3.25},
- {"matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17, "y": 3.25},
- {"matrix": [3, 15], "x": 15.75, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25},
+ {"matrix":[3, 1], "x":1.5, "y":3.25, "w":2.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,12], "x":12.75, "y":3.25},
+ {"matrix":[3,13], "x":13.75, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17, "y":3.25},
+ {"matrix":[3,15], "x":15.75, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25},
- {"matrix": [4, 1], "x": 1.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 4, "y": 4.25, "w": 1.25},
- {"matrix": [4, 7], "x": 5.25, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 11.5, "y": 4.25},
- {"matrix": [4, 11], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 13.5, "y": 4.25},
- {"matrix": [4, 13], "x": 14.75, "y": 4.5},
- {"matrix": [4, 14], "x": 15.75, "y": 4.5},
- {"matrix": [4, 15], "x": 16.75, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25},
+ {"matrix":[4, 1], "x":1.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":4, "y":4.25, "w":1.25},
+ {"matrix":[4, 7], "x":5.25, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":11.5, "y":4.25},
+ {"matrix":[4,11], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":13.5, "y":4.25},
+ {"matrix":[4,13], "x":14.75, "y":4.5},
+ {"matrix":[4,14], "x":15.75, "y":4.5},
+ {"matrix":[4,15], "x":16.75, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q65/ansi_encoder/keymaps/default/keymap.c
index dbe8c04973c7..75490d2dd337 100644
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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_HOME,
_______, 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_PGUP,
_______, 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_PGDN,
- _______, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ _______, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_73(
KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
_______, 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_HOME,
_______, 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_PGUP,
_______, 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_PGDN,
- _______, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ _______, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_73(
- RGB_TOG, KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_73(
+ RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_73(
+ [WIN_FN1] = LAYOUT_ansi_73(
RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_73(
+ [_FN2] = LAYOUT_ansi_73(
_______, 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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/keymap.c
index d543a3bc5cad..ddbf4b8055c1 100644
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_2, 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_HOME,
MC_3, 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_PGUP,
MC_4, 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_PGDN,
- MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_73(
KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
MC_2, 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_HOME,
MC_3, 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_PGUP,
MC_4, 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_PGDN,
- MC_5, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ MC_5, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_73(
+ [MAC_FN1] = LAYOUT_ansi_73(
RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_73(
+ [WIN_FN1] = LAYOUT_ansi_73(
RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_73(
+ [_FN2] = LAYOUT_ansi_73(
_______, 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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -64,21 +65,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q65/ansi_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q65/ansi_encoder/keymaps/via/keymap.c
index dbe8c04973c7..1ae68eda41d5 100644
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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_HOME,
_______, 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_PGUP,
_______, 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_PGDN,
- _______, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ _______, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_73(
KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
_______, 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_HOME,
_______, 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_PGUP,
_______, 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_PGDN,
- _______, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ _______, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_73(
+ [MAC_FN1] = LAYOUT_ansi_73(
RGB_TOG, KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, 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_ansi_73(
+ [WIN_FN1] = LAYOUT_ansi_73(
RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_73(
+ [_FN2] = LAYOUT_ansi_73(
_______, 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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q65/ansi_encoder/rules.mk b/keyboards/keychron/q65/ansi_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/q65/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q65/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q65/config.h b/keyboards/keychron/q65/config.h
index 148ea9ad1405..7fddb901ddff 100644
--- a/keyboards/keychron/q65/config.h
+++ b/keyboards/keychron/q65/config.h
@@ -16,15 +16,6 @@
#pragma once
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, A2, A3, A4, A5, A6, A7, B0, B1 }
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -35,7 +26,7 @@
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
-#define I2C1_TIMINGR_SCLL 30U
+#define I2C1_TIMINGR_SCLL 51U
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
@@ -46,13 +37,12 @@
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
/* Turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -89,9 +79,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -106,5 +100,13 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
+
+#define HC595_STCP A0
+#define HC595_SHCP A1
+#define HC595_DS C15
+
+#define SHIFT_COL_START 0
+#define SHIFT_COL_END 7
diff --git a/keyboards/keychron/q65/halconf.h b/keyboards/keychron/q65/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q65/halconf.h
+++ b/keyboards/keychron/q65/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q65/matrix.c b/keyboards/keychron/q65/matrix.c
deleted file mode 100644
index 5785f5d5709b..000000000000
--- a/keyboards/keychron/q65/matrix.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/* Copyright 2021 @ 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 "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN C15
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN A1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN A0
-
-#ifdef MATRIX_ROW_PINS
-static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void writePinLow_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- writePinLow(pin);
- }
-}
-
-static inline void writePinHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- writePinHigh(pin);
- }
-}
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-// At 3.6V input, three nops (37.5ns) should be enough for all signals
-#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
-#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
-
-static void shiftOut(uint8_t dataOut) {
- ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < 8; i++) {
- compiler_barrier();
- if (dataOut & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- }
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static void shiftout_single(uint8_t data) {
- ATOMIC_BLOCK_FORCEON {
- compiler_barrier();
- if (data & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- writePinLow_atomic(pin);
-#else
- setPinOutput_writeLow(pin);
-#endif
- return true;
- } else {
- if (col == 0) {
- shiftout_single(0x00);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- writePinHigh_atomic(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- shiftout_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (x == 0)
- // unselect shift Register
- shiftOut(0xFF);
- }
- }
-}
-
-static void matrix_init_pins(void) {
- setPinOutput(DATA_PIN);
- setPinOutput(CLOCK_PIN);
- setPinOutput(LATCH_PIN);
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- if (col_pins[x] != NO_PIN) {
- setPinOutput(col_pins[x]);
- }
- }
-#endif
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- matrix_output_select_delay();
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/q65/q65.c b/keyboards/keychron/q65/q65.c
index 18fa8697c79d..0cb6a646a50b 100644
--- a/keyboards/keychron/q65/q65.c
+++ b/keyboards/keychron/q65/q65.c
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,50 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-// clang-format on
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q65/readme.md b/keyboards/keychron/q65/readme.md
index 1a2a27dc752e..f546ea3b5f11 100644
--- a/keyboards/keychron/q65/readme.md
+++ b/keyboards/keychron/q65/readme.md
@@ -1,10 +1,12 @@
# Keychron Q65
+![Keychron Q65](https://i.imgur.com/5Cbb1C5.jpg)
+
A customizable 65% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q65
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [KKeychron Q65 QMK Custom Mechanical Keyboardeychron](https://www.keychron.com/products/keychron-q65-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/keychron/q7/ansi/ansi.c b/keyboards/keychron/q7/ansi/ansi.c
index 3dccb8b660d2..88d552e36257 100644
--- a/keyboards/keychron/q7/ansi/ansi.c
+++ b/keyboards/keychron/q7/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -130,8 +130,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q7/ansi/config.h b/keyboards/keychron/q7/ansi/config.h
index 32727a13ce9c..277e505e065f 100644
--- a/keyboards/keychron/q7/ansi/config.h
+++ b/keyboards/keychron/q7/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q7/ansi/info.json b/keyboards/keychron/q7/ansi/info.json
index 2549e329f26b..76e2f3e71086 100644
--- a/keyboards/keychron/q7/ansi/info.json
+++ b/keyboards/keychron/q7/ansi/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0170",
- "device_version": "1.0.0"
+ "device_version": "1.0.6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "B5"],
@@ -21,82 +32,82 @@
"layouts": {
"LAYOUT_ansi_72": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
- {"matrix": [0, 14], "x": 15, "y": 0},
- {"matrix": [0, 15], "x": 16, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
+ {"matrix":[0,14], "x":15, "y":0},
+ {"matrix":[0,15], "x":16, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
- {"matrix": [1, 14], "x": 15, "y": 1},
- {"matrix": [1, 15], "x": 16, "y": 1},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
+ {"matrix":[1,14], "x":15, "y":1},
+ {"matrix":[1,15], "x":16, "y":1},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
- {"matrix": [2, 14], "x": 15, "y": 2},
- {"matrix": [2, 15], "x": 16, "y": 2},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
+ {"matrix":[2,14], "x":15, "y":2},
+ {"matrix":[2,15], "x":16, "y":2},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
- {"matrix": [3, 14], "x": 15, "y": 3},
- {"matrix": [3, 15], "x": 16, "y": 3},
+ {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
+ {"matrix":[3,14], "x":15, "y":3},
+ {"matrix":[3,15], "x":16, "y":3},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 9], "x": 10, "y": 4},
- {"matrix": [4, 10], "x": 11, "y": 4},
- {"matrix": [4, 11], "x": 12, "y": 4},
- {"matrix": [4, 12], "x": 13, "y": 4},
- {"matrix": [4, 13], "x": 14, "y": 4},
- {"matrix": [4, 14], "x": 15, "y": 4},
- {"matrix": [4, 15], "x": 16, "y": 4}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4, 9], "x":10, "y":4},
+ {"matrix":[4,10], "x":11, "y":4},
+ {"matrix":[4,11], "x":12, "y":4},
+ {"matrix":[4,12], "x":13, "y":4},
+ {"matrix":[4,13], "x":14, "y":4},
+ {"matrix":[4,14], "x":15, "y":4},
+ {"matrix":[4,15], "x":16, "y":4}
]
}
}
diff --git a/keyboards/keychron/q7/ansi/keymaps/default/keymap.c b/keyboards/keychron/q7/ansi/keymaps/default/keymap.c
index 4fb2e861ca00..169f512f55c6 100644
--- a/keyboards/keychron/q7/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q7/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_72(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_ansi_72(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, , 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_ansi_72(
+ [WIN_FN1] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q7/ansi/keymaps/keychron/config.h b/keyboards/keychron/q7/ansi/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q7/ansi/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q7/ansi/keymaps/keychron/keymap.c
index f0c1684677eb..9773ffc11d82 100644
--- a/keyboards/keychron/q7/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q7/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_72(
+ [MAC_FN1] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_72(
+ [WIN_FN1] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q7/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q7/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q7/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q7/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q7/ansi/keymaps/via/config.h b/keyboards/keychron/q7/ansi/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q7/ansi/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/ansi/keymaps/via/keymap.c b/keyboards/keychron/q7/ansi/keymaps/via/keymap.c
index 4fb2e861ca00..169f512f55c6 100644
--- a/keyboards/keychron/q7/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q7/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_72(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_ansi_72(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, , 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_ansi_72(
+ [WIN_FN1] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q7/ansi/rules.mk b/keyboards/keychron/q7/ansi/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/q7/ansi/rules.mk
+++ b/keyboards/keychron/q7/ansi/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q7/config.h b/keyboards/keychron/q7/config.h
index 0ea9ee5f4689..ec8060f25f28 100644
--- a/keyboards/keychron/q7/config.h
+++ b/keyboards/keychron/q7/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,11 +30,12 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define SCAN_PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -42,8 +43,6 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -80,9 +79,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -97,5 +100,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q7/iso/config.h b/keyboards/keychron/q7/iso/config.h
index dc9813f6e8a5..e9da747ab154 100644
--- a/keyboards/keychron/q7/iso/config.h
+++ b/keyboards/keychron/q7/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q7/iso/info.json b/keyboards/keychron/q7/iso/info.json
index 27262eb4f368..c5c3692b0f73 100644
--- a/keyboards/keychron/q7/iso/info.json
+++ b/keyboards/keychron/q7/iso/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0172",
- "device_version": "1.0.0"
+ "device_version": "1.0.4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "B5"],
@@ -21,83 +32,83 @@
"layouts": {
"LAYOUT_iso_73": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
- {"matrix": [0, 14], "x": 15, "y": 0},
- {"matrix": [0, 15], "x": 16, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
+ {"matrix":[0,14], "x":15, "y":0},
+ {"matrix":[0,15], "x":16, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix": [1, 14], "x": 15, "y": 1},
- {"matrix": [1, 15], "x": 16, "y": 1},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix":[1,14], "x":15, "y":1},
+ {"matrix":[1,15], "x":16, "y":1},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2},
- {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15, "y": 2},
- {"matrix": [2, 15], "x": 16, "y": 2},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2},
+ {"matrix":[1,13], "x":13.75, "y":1, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15, "y":2},
+ {"matrix":[2,15], "x":16, "y":2},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
- {"matrix": [3, 14], "x": 15, "y": 3},
- {"matrix": [3, 15], "x": 16, "y": 3},
+ {"matrix":[3, 0], "x":0, "y":3, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
+ {"matrix":[3,14], "x":15, "y":3},
+ {"matrix":[3,15], "x":16, "y":3},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 9], "x": 10, "y": 4},
- {"matrix": [4, 10], "x": 11, "y": 4},
- {"matrix": [4, 11], "x": 12, "y": 4},
- {"matrix": [4, 12], "x": 13, "y": 4},
- {"matrix": [4, 13], "x": 14, "y": 4},
- {"matrix": [4, 14], "x": 15, "y": 4},
- {"matrix": [4, 15], "x": 16, "y": 4}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4, 9], "x":10, "y":4},
+ {"matrix":[4,10], "x":11, "y":4},
+ {"matrix":[4,11], "x":12, "y":4},
+ {"matrix":[4,12], "x":13, "y":4},
+ {"matrix":[4,13], "x":14, "y":4},
+ {"matrix":[4,14], "x":15, "y":4},
+ {"matrix":[4,15], "x":16, "y":4}
]
}
}
diff --git a/keyboards/keychron/q7/iso/iso.c b/keyboards/keychron/q7/iso/iso.c
index 039bd1383615..a03848f27064 100644
--- a/keyboards/keychron/q7/iso/iso.c
+++ b/keyboards/keychron/q7/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -129,7 +129,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/q7/iso/keymaps/default/keymap.c b/keyboards/keychron/q7/iso/keymaps/default/keymap.c
index afb0aae445ca..6b57e8175b70 100644
--- a/keyboards/keychron/q7/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q7/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_73(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_iso_73(
+ 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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_73(
+ [WIN_FN1] = LAYOUT_iso_73(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q7/iso/keymaps/keychron/config.h b/keyboards/keychron/q7/iso/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q7/iso/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q7/iso/keymaps/keychron/keymap.c
index 52bec9699abb..1bf476eb3698 100644
--- a/keyboards/keychron/q7/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q7/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_73(
+ [MAC_FN1] = LAYOUT_iso_73(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_73(
+ [WIN_FN1] = LAYOUT_iso_73(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q7/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q7/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q7/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q7/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q7/iso/keymaps/via/config.h b/keyboards/keychron/q7/iso/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q7/iso/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/iso/keymaps/via/keymap.c b/keyboards/keychron/q7/iso/keymaps/via/keymap.c
index afb0aae445ca..6b57e8175b70 100644
--- a/keyboards/keychron/q7/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q7/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_73(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_iso_73(
+ 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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_73(
+ [WIN_FN1] = LAYOUT_iso_73(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q7/iso/rules.mk b/keyboards/keychron/q7/iso/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/q7/iso/rules.mk
+++ b/keyboards/keychron/q7/iso/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q7/q7.c b/keyboards/keychron/q7/q7.c
index abd4ac11f030..0cb6a646a50b 100644
--- a/keyboards/keychron/q7/q7.c
+++ b/keyboards/keychron/q7/q7.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,49 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q7/readme.md b/keyboards/keychron/q7/readme.md
index ea4846422264..33b8f92017a1 100644
--- a/keyboards/keychron/q7/readme.md
+++ b/keyboards/keychron/q7/readme.md
@@ -1,18 +1,22 @@
# Keychron Q7
+![Keychron Q7](https://i.imgur.com/dMnFpx0.jpg)
+
A customizable 70% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q7
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q7 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q7-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/q7/ansi:default
+ make keychron/q7/iso:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/q7/ansi:default:flash
+ make keychron/q7/iso:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q8/ansi/ansi.c b/keyboards/keychron/q8/ansi/ansi.c
index e9c4edeb3e57..7743a9acbdb7 100644
--- a/keyboards/keychron/q8/ansi/ansi.c
+++ b/keyboards/keychron/q8/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q8/ansi/config.h b/keyboards/keychron/q8/ansi/config.h
index cd2d037bb369..b818d1d8d30d 100644
--- a/keyboards/keychron/q8/ansi/config.h
+++ b/keyboards/keychron/q8/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q8/ansi/info.json b/keyboards/keychron/q8/ansi/info.json
index 7ee5b6c21f3e..d54c58d1ae8b 100644
--- a/keyboards/keychron/q8/ansi/info.json
+++ b/keyboards/keychron/q8/ansi/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0180",
- "device_version": "1.0.0"
+ "device_version": "1.0.7"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,79 +32,79 @@
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
- {"matrix": [0, 0], "x": 0.75, "y": 0.25},
- {"matrix": [0, 1], "x": 1.75, "y": 0.25},
- {"matrix": [0, 2], "x": 2.75, "y": 0},
- {"matrix": [0, 3], "x": 3.75, "y": 0.25},
- {"matrix": [0, 4], "x": 4.75, "y": 0.25},
- {"matrix": [0, 5], "x": 5.75, "y": 0.25},
- {"matrix": [0, 6], "x": 6.75, "y": 0.25},
- {"matrix": [0, 7], "x": 9.5, "y": 0.25},
- {"matrix": [0, 8], "x": 10.5, "y": 0.25},
- {"matrix": [0, 9], "x": 11.5, "y": 0.25},
- {"matrix": [0, 10], "x": 12.5, "y": 0.25},
- {"matrix": [0, 11], "x": 13.5, "y": 0},
- {"matrix": [0, 12], "x": 14.5, "y": 0.25},
- {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 18, "y": 0},
+ {"matrix":[0, 0], "x":0.75, "y":0.25},
+ {"matrix":[0, 1], "x":1.75, "y":0.25},
+ {"matrix":[0, 2], "x":2.75, "y":0},
+ {"matrix":[0, 3], "x":3.75, "y":0.25},
+ {"matrix":[0, 4], "x":4.75, "y":0.25},
+ {"matrix":[0, 5], "x":5.75, "y":0.25},
+ {"matrix":[0, 6], "x":6.75, "y":0.25},
+ {"matrix":[0, 7], "x":9.5, "y":0.25},
+ {"matrix":[0, 8], "x":10.5, "y":0.25},
+ {"matrix":[0, 9], "x":11.5, "y":0.25},
+ {"matrix":[0,10], "x":12.5, "y":0.25},
+ {"matrix":[0,11], "x":13.5, "y":0},
+ {"matrix":[0,12], "x":14.5, "y":0.25},
+ {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":18, "y":0},
- {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 2, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 9, "y": 1.25},
- {"matrix": [1, 7], "x": 10, "y": 1.25},
- {"matrix": [1, 8], "x": 11, "y": 1.25},
- {"matrix": [1, 9], "x": 12, "y": 1.25},
- {"matrix": [1, 10], "x": 13.25, "y": 1.25},
- {"matrix": [1, 11], "x": 14.25, "y": 1.25},
- {"matrix": [1, 12], "x": 15.25, "y": 1.25},
- {"matrix": [1, 13], "x": 16.25, "y": 1.25, "w": 1.5},
- {"matrix": [1, 14], "x": 18.25, "y": 1.5},
+ {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":2, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":9, "y":1.25},
+ {"matrix":[1, 7], "x":10, "y":1.25},
+ {"matrix":[1, 8], "x":11, "y":1.25},
+ {"matrix":[1, 9], "x":12, "y":1.25},
+ {"matrix":[1,10], "x":13.25, "y":1.25},
+ {"matrix":[1,11], "x":14.25, "y":1.25},
+ {"matrix":[1,12], "x":15.25, "y":1.25},
+ {"matrix":[1,13], "x":16.25, "y":1.25, "w":1.5},
+ {"matrix":[1,14], "x":18.25, "y":1.5},
- {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 2, "y": 2.25},
- {"matrix": [2, 2], "x": 3.5, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 9.25, "y": 2.25},
- {"matrix": [2, 8], "x": 10.25, "y": 2.25},
- {"matrix": [2, 9], "x": 11.25, "y": 2.25},
- {"matrix": [2, 10], "x": 12.25, "y": 2.25},
- {"matrix": [2, 11], "x": 13.75, "y": 2.25},
- {"matrix": [2, 12], "x": 14.75, "y": 2.25},
- {"matrix": [2, 13], "x": 15.75, "y": 2.25, "w": 2.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.5},
+ {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":2, "y":2.25},
+ {"matrix":[2, 2], "x":3.5, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":9.25, "y":2.25},
+ {"matrix":[2, 8], "x":10.25, "y":2.25},
+ {"matrix":[2, 9], "x":11.25, "y":2.25},
+ {"matrix":[2,10], "x":12.25, "y":2.25},
+ {"matrix":[2,11], "x":13.75, "y":2.25},
+ {"matrix":[2,12], "x":14.75, "y":2.25},
+ {"matrix":[2,13], "x":15.75, "y":2.25, "w":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3.25},
- {"matrix": [3, 8], "x": 9.5, "y": 3.25},
- {"matrix": [3, 9], "x": 10.5, "y": 3.25},
- {"matrix": [3, 10], "x": 11.5, "y": 3.25},
- {"matrix": [3, 11], "x": 12.5, "y": 3.25},
- {"matrix": [3, 12], "x": 14.25, "y": 3.25},
- {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":8.5, "y":3.25},
+ {"matrix":[3, 8], "x":9.5, "y":3.25},
+ {"matrix":[3, 9], "x":10.5, "y":3.25},
+ {"matrix":[3,10], "x":11.5, "y":3.25},
+ {"matrix":[3,11], "x":12.5, "y":3.25},
+ {"matrix":[3,12], "x":14.25, "y":3.25},
+ {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 6], "x": 7.25, "y": 4.25},
- {"matrix": [4, 7], "x": 8.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
- {"matrix": [4, 9], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 16.25, "y": 4.5},
- {"matrix": [4, 13], "x": 17.25, "y": 4.5},
- {"matrix": [4, 14], "x": 18.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
+ {"matrix":[4, 6], "x":7.25, "y":4.25},
+ {"matrix":[4, 7], "x":8.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
+ {"matrix":[4, 9], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":16.25, "y":4.5},
+ {"matrix":[4,13], "x":17.25, "y":4.5},
+ {"matrix":[4,14], "x":18.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q8/ansi/keymaps/default/keymap.c b/keyboards/keychron/q8/ansi/keymaps/default/keymap.c
index fa67e871440d..15806904e6e9 100644
--- a/keyboards/keychron/q8/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q8/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_69(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q8/ansi/keymaps/keychron/config.h b/keyboards/keychron/q8/ansi/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q8/ansi/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q8/ansi/keymaps/keychron/keymap.c
index 490b6b4617b4..b14dbd1cd490 100644
--- a/keyboards/keychron/q8/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q8/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
+ [MAC_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -68,11 +69,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q8/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q8/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q8/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q8/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q8/ansi/keymaps/via/config.h b/keyboards/keychron/q8/ansi/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q8/ansi/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/ansi/keymaps/via/keymap.c b/keyboards/keychron/q8/ansi/keymaps/via/keymap.c
index 2522eff2b9d4..9296c5eb1045 100644
--- a/keyboards/keychron/q8/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q8/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_69(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q8/ansi/readme.md b/keyboards/keychron/q8/ansi/readme.md
deleted file mode 100644
index 0d803d4475d9..000000000000
--- a/keyboards/keychron/q8/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q8
diff --git a/keyboards/keychron/q8/ansi/rules.mk b/keyboards/keychron/q8/ansi/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/q8/ansi/rules.mk
+++ b/keyboards/keychron/q8/ansi/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
index e9c4edeb3e57..7743a9acbdb7 100644
--- a/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q8/ansi_encoder/info.json b/keyboards/keychron/q8/ansi_encoder/info.json
index a4c3ac77e13a..88510d47982b 100644
--- a/keyboards/keychron/q8/ansi_encoder/info.json
+++ b/keyboards/keychron/q8/ansi_encoder/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0181",
- "device_version": "1.0.0"
+ "device_version": "1.0.7"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -26,79 +37,79 @@
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
- {"matrix": [0, 0], "x": 0.75, "y": 0.25},
- {"matrix": [0, 1], "x": 1.75, "y": 0.25},
- {"matrix": [0, 2], "x": 2.75, "y": 0},
- {"matrix": [0, 3], "x": 3.75, "y": 0.25},
- {"matrix": [0, 4], "x": 4.75, "y": 0.25},
- {"matrix": [0, 5], "x": 5.75, "y": 0.25},
- {"matrix": [0, 6], "x": 6.75, "y": 0.25},
- {"matrix": [0, 7], "x": 9.5, "y": 0.25},
- {"matrix": [0, 8], "x": 10.5, "y": 0.25},
- {"matrix": [0, 9], "x": 11.5, "y": 0.25},
- {"matrix": [0, 10], "x": 12.5, "y": 0.25},
- {"matrix": [0, 11], "x": 13.5, "y": 0},
- {"matrix": [0, 12], "x": 14.5, "y": 0.25},
- {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 18, "y": 0},
+ {"matrix":[0, 0], "x":0.75, "y":0.25},
+ {"matrix":[0, 1], "x":1.75, "y":0.25},
+ {"matrix":[0, 2], "x":2.75, "y":0},
+ {"matrix":[0, 3], "x":3.75, "y":0.25},
+ {"matrix":[0, 4], "x":4.75, "y":0.25},
+ {"matrix":[0, 5], "x":5.75, "y":0.25},
+ {"matrix":[0, 6], "x":6.75, "y":0.25},
+ {"matrix":[0, 7], "x":9.5, "y":0.25},
+ {"matrix":[0, 8], "x":10.5, "y":0.25},
+ {"matrix":[0, 9], "x":11.5, "y":0.25},
+ {"matrix":[0,10], "x":12.5, "y":0.25},
+ {"matrix":[0,11], "x":13.5, "y":0},
+ {"matrix":[0,12], "x":14.5, "y":0.25},
+ {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":18, "y":0},
- {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 2, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 9, "y": 1.25},
- {"matrix": [1, 7], "x": 10, "y": 1.25},
- {"matrix": [1, 8], "x": 11, "y": 1.25},
- {"matrix": [1, 9], "x": 12, "y": 1.25},
- {"matrix": [1, 10], "x": 13.25, "y": 1.25},
- {"matrix": [1, 11], "x": 14.25, "y": 1.25},
- {"matrix": [1, 12], "x": 15.25, "y": 1.25},
- {"matrix": [1, 13], "x": 16.25, "y": 1.25, "w": 1.5},
- {"matrix": [1, 14], "x": 18.25, "y": 1.5},
+ {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":2, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":9, "y":1.25},
+ {"matrix":[1, 7], "x":10, "y":1.25},
+ {"matrix":[1, 8], "x":11, "y":1.25},
+ {"matrix":[1, 9], "x":12, "y":1.25},
+ {"matrix":[1,10], "x":13.25, "y":1.25},
+ {"matrix":[1,11], "x":14.25, "y":1.25},
+ {"matrix":[1,12], "x":15.25, "y":1.25},
+ {"matrix":[1,13], "x":16.25, "y":1.25, "w":1.5},
+ {"matrix":[1,14], "x":18.25, "y":1.5},
- {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 2, "y": 2.25},
- {"matrix": [2, 2], "x": 3.5, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 9.25, "y": 2.25},
- {"matrix": [2, 8], "x": 10.25, "y": 2.25},
- {"matrix": [2, 9], "x": 11.25, "y": 2.25},
- {"matrix": [2, 10], "x": 12.25, "y": 2.25},
- {"matrix": [2, 11], "x": 13.75, "y": 2.25},
- {"matrix": [2, 12], "x": 14.75, "y": 2.25},
- {"matrix": [2, 13], "x": 15.75, "y": 2.25, "w": 2.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.5},
+ {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":2, "y":2.25},
+ {"matrix":[2, 2], "x":3.5, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":9.25, "y":2.25},
+ {"matrix":[2, 8], "x":10.25, "y":2.25},
+ {"matrix":[2, 9], "x":11.25, "y":2.25},
+ {"matrix":[2,10], "x":12.25, "y":2.25},
+ {"matrix":[2,11], "x":13.75, "y":2.25},
+ {"matrix":[2,12], "x":14.75, "y":2.25},
+ {"matrix":[2,13], "x":15.75, "y":2.25, "w":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3.25},
- {"matrix": [3, 8], "x": 9.5, "y": 3.25},
- {"matrix": [3, 9], "x": 10.5, "y": 3.25},
- {"matrix": [3, 10], "x": 11.5, "y": 3.25},
- {"matrix": [3, 11], "x": 12.5, "y": 3.25},
- {"matrix": [3, 12], "x": 14.25, "y": 3.25},
- {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":8.5, "y":3.25},
+ {"matrix":[3, 8], "x":9.5, "y":3.25},
+ {"matrix":[3, 9], "x":10.5, "y":3.25},
+ {"matrix":[3,10], "x":11.5, "y":3.25},
+ {"matrix":[3,11], "x":12.5, "y":3.25},
+ {"matrix":[3,12], "x":14.25, "y":3.25},
+ {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 6], "x": 7.25, "y": 4.25},
- {"matrix": [4, 7], "x": 8.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
- {"matrix": [4, 9], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 16.25, "y": 4.5},
- {"matrix": [4, 13], "x": 17.25, "y": 4.5},
- {"matrix": [4, 14], "x": 18.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
+ {"matrix":[4, 6], "x":7.25, "y":4.25},
+ {"matrix":[4, 7], "x":8.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
+ {"matrix":[4, 9], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":16.25, "y":4.5},
+ {"matrix":[4,13], "x":17.25, "y":4.5},
+ {"matrix":[4,14], "x":18.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q8/ansi_encoder/keymaps/default/keymap.c
index a86ae6d8cf25..863fc66d4a33 100644
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_ansi_69(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/keymap.c
index bb5c406046dc..e4725cec51d2 100644
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
+ [MAC_FN1] = LAYOUT_ansi_69(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -65,12 +66,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
@@ -78,11 +79,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q8/ansi_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q8/ansi_encoder/keymaps/via/keymap.c
index a86ae6d8cf25..863fc66d4a33 100644
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_ansi_69(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q8/ansi_encoder/readme.md b/keyboards/keychron/q8/ansi_encoder/readme.md
deleted file mode 100644
index 74609975c96a..000000000000
--- a/keyboards/keychron/q8/ansi_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ANSI variant of the Keychron Q8
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q8/ansi_encoder/rules.mk b/keyboards/keychron/q8/ansi_encoder/rules.mk
index 5091fe94148b..4bc1e23a57a0 100644
--- a/keyboards/keychron/q8/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q8/ansi_encoder/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q8/config.h b/keyboards/keychron/q8/config.h
index e0f6c673a539..5e506a004e86 100644
--- a/keyboards/keychron/q8/config.h
+++ b/keyboards/keychron/q8/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -33,11 +33,13 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4, 4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -48,7 +50,6 @@
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
@@ -82,9 +83,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -99,5 +104,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q8/halconf.h b/keyboards/keychron/q8/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q8/halconf.h
+++ b/keyboards/keychron/q8/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q8/iso/config.h b/keyboards/keychron/q8/iso/config.h
index 99ba64d7134d..3a62cba38eb6 100644
--- a/keyboards/keychron/q8/iso/config.h
+++ b/keyboards/keychron/q8/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q8/iso/info.json b/keyboards/keychron/q8/iso/info.json
index 03a6cd1fddcb..41d53fc281a4 100644
--- a/keyboards/keychron/q8/iso/info.json
+++ b/keyboards/keychron/q8/iso/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0182",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,80 +32,80 @@
"layouts": {
"LAYOUT_iso_70": {
"layout": [
- {"matrix": [0, 0], "x": 0.75, "y": 0.25},
- {"matrix": [0, 1], "x": 1.75, "y": 0.25},
- {"matrix": [0, 2], "x": 2.75, "y": 0},
- {"matrix": [0, 3], "x": 3.75, "y": 0.25},
- {"matrix": [0, 4], "x": 4.75, "y": 0.25},
- {"matrix": [0, 5], "x": 5.75, "y": 0.25},
- {"matrix": [0, 6], "x": 6.75, "y": 0.25},
- {"matrix": [0, 7], "x": 9.5, "y": 0.25},
- {"matrix": [0, 8], "x": 10.5, "y": 0.25},
- {"matrix": [0, 9], "x": 11.5, "y": 0.25},
- {"matrix": [0, 10], "x": 12.5, "y": 0.25},
- {"matrix": [0, 11], "x": 13.5, "y": 0},
- {"matrix": [0, 12], "x": 14.5, "y": 0.25},
- {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 18, "y": 0.25},
+ {"matrix":[0, 0], "x":0.75, "y":0.25},
+ {"matrix":[0, 1], "x":1.75, "y":0.25},
+ {"matrix":[0, 2], "x":2.75, "y":0},
+ {"matrix":[0, 3], "x":3.75, "y":0.25},
+ {"matrix":[0, 4], "x":4.75, "y":0.25},
+ {"matrix":[0, 5], "x":5.75, "y":0.25},
+ {"matrix":[0, 6], "x":6.75, "y":0.25},
+ {"matrix":[0, 7], "x":9.5, "y":0.25},
+ {"matrix":[0, 8], "x":10.5, "y":0.25},
+ {"matrix":[0, 9], "x":11.5, "y":0.25},
+ {"matrix":[0,10], "x":12.5, "y":0.25},
+ {"matrix":[0,11], "x":13.5, "y":0},
+ {"matrix":[0,12], "x":14.5, "y":0.25},
+ {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":18, "y":0.25},
- {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 2, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 9, "y": 1.25},
- {"matrix": [1, 7], "x": 10, "y": 1.25},
- {"matrix": [1, 8], "x": 11, "y": 1.25},
- {"matrix": [1, 9], "x": 12, "y": 1.25},
- {"matrix": [1, 10], "x": 13.25, "y": 1.25},
- {"matrix": [1, 11], "x": 14.25, "y": 1.25},
- {"matrix": [1, 12], "x": 15.25, "y": 1.25},
- {"matrix": [1, 14], "x": 18.25, "y": 1.5},
+ {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":2, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":9, "y":1.25},
+ {"matrix":[1, 7], "x":10, "y":1.25},
+ {"matrix":[1, 8], "x":11, "y":1.25},
+ {"matrix":[1, 9], "x":12, "y":1.25},
+ {"matrix":[1,10], "x":13.25, "y":1.25},
+ {"matrix":[1,11], "x":14.25, "y":1.25},
+ {"matrix":[1,12], "x":15.25, "y":1.25},
+ {"matrix":[1,14], "x":18.25, "y":1.5},
- {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 2, "y": 2.25},
- {"matrix": [2, 2], "x": 3.5, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 9.25, "y": 2.25},
- {"matrix": [2, 8], "x": 10.25, "y": 2.25},
- {"matrix": [2, 9], "x": 11.25, "y": 2.25},
- {"matrix": [2, 10], "x": 12.25, "y": 2.25},
- {"matrix": [2, 11], "x": 13.5, "y": 2.25},
- {"matrix": [2, 12], "x": 14.5, "y": 2.25},
- {"matrix": [2, 13], "x": 15.5, "y": 2.25},
- {"matrix": [1, 13], "x": 16.5, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 18.5, "y": 2.5},
+ {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":2, "y":2.25},
+ {"matrix":[2, 2], "x":3.5, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":9.25, "y":2.25},
+ {"matrix":[2, 8], "x":10.25, "y":2.25},
+ {"matrix":[2, 9], "x":11.25, "y":2.25},
+ {"matrix":[2,10], "x":12.25, "y":2.25},
+ {"matrix":[2,11], "x":13.5, "y":2.25},
+ {"matrix":[2,12], "x":14.5, "y":2.25},
+ {"matrix":[2,13], "x":15.5, "y":2.25},
+ {"matrix":[1,13], "x":16.5, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":18.5, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3.25},
- {"matrix": [3, 8], "x": 9.5, "y": 3.25},
- {"matrix": [3, 9], "x": 10.5, "y": 3.25},
- {"matrix": [3, 10], "x": 11.5, "y": 3.25},
- {"matrix": [3, 11], "x": 12.5, "y": 3.25},
- {"matrix": [3, 12], "x": 14.25, "y": 3.25},
- {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":8.5, "y":3.25},
+ {"matrix":[3, 8], "x":9.5, "y":3.25},
+ {"matrix":[3, 9], "x":10.5, "y":3.25},
+ {"matrix":[3,10], "x":11.5, "y":3.25},
+ {"matrix":[3,11], "x":12.5, "y":3.25},
+ {"matrix":[3,12], "x":14.25, "y":3.25},
+ {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 6], "x": 7.25, "y": 4.25},
- {"matrix": [4, 7], "x": 8.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
- {"matrix": [4, 9], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 16.25, "y": 4.5},
- {"matrix": [4, 13], "x": 17.25, "y": 4.5},
- {"matrix": [4, 14], "x": 18.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
+ {"matrix":[4, 6], "x":7.25, "y":4.25},
+ {"matrix":[4, 7], "x":8.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
+ {"matrix":[4, 9], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":16.25, "y":4.5},
+ {"matrix":[4,13], "x":17.25, "y":4.5},
+ {"matrix":[4,14], "x":18.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q8/iso/iso.c b/keyboards/keychron/q8/iso/iso.c
index 205989383e3f..6686ab22c151 100644
--- a/keyboards/keychron/q8/iso/iso.c
+++ b/keyboards/keychron/q8/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q8/iso/keymaps/default/keymap.c b/keyboards/keychron/q8/iso/keymaps/default/keymap.c
index e999d0406269..aa4601e52068 100644
--- a/keyboards/keychron/q8/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q8/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q8/iso/keymaps/keychron/config.h b/keyboards/keychron/q8/iso/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q8/iso/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q8/iso/keymaps/keychron/keymap.c
index c5bc9c787ef5..b284ef9ac712 100644
--- a/keyboards/keychron/q8/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q8/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
+ [MAC_FN1] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,11 +67,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q8/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q8/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q8/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q8/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q8/iso/keymaps/via/config.h b/keyboards/keychron/q8/iso/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q8/iso/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/iso/keymaps/via/keymap.c b/keyboards/keychron/q8/iso/keymaps/via/keymap.c
index e999d0406269..aa4601e52068 100644
--- a/keyboards/keychron/q8/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q8/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q8/iso/readme.md b/keyboards/keychron/q8/iso/readme.md
deleted file mode 100644
index 1a38fdf8aae6..000000000000
--- a/keyboards/keychron/q8/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the Keychron Q8
diff --git a/keyboards/keychron/q8/iso/rules.mk b/keyboards/keychron/q8/iso/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/q8/iso/rules.mk
+++ b/keyboards/keychron/q8/iso/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q8/iso_encoder/config.h b/keyboards/keychron/q8/iso_encoder/config.h
index cdda41df5d09..0bb4fbf8217e 100644
--- a/keyboards/keychron/q8/iso_encoder/config.h
+++ b/keyboards/keychron/q8/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q8/iso_encoder/info.json b/keyboards/keychron/q8/iso_encoder/info.json
index eb9dc22503b6..ea421afac581 100644
--- a/keyboards/keychron/q8/iso_encoder/info.json
+++ b/keyboards/keychron/q8/iso_encoder/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0183",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -26,80 +37,80 @@
"layouts": {
"LAYOUT_iso_70": {
"layout": [
- {"matrix": [0, 0], "x": 0.75, "y": 0.25},
- {"matrix": [0, 1], "x": 1.75, "y": 0.25},
- {"matrix": [0, 2], "x": 2.75, "y": 0},
- {"matrix": [0, 3], "x": 3.75, "y": 0.25},
- {"matrix": [0, 4], "x": 4.75, "y": 0.25},
- {"matrix": [0, 5], "x": 5.75, "y": 0.25},
- {"matrix": [0, 6], "x": 6.75, "y": 0.25},
- {"matrix": [0, 7], "x": 9.5, "y": 0.25},
- {"matrix": [0, 8], "x": 10.5, "y": 0.25},
- {"matrix": [0, 9], "x": 11.5, "y": 0.25},
- {"matrix": [0, 10], "x": 12.5, "y": 0.25},
- {"matrix": [0, 11], "x": 13.5, "y": 0},
- {"matrix": [0, 12], "x": 14.5, "y": 0.25},
- {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 18, "y": 0.25},
+ {"matrix":[0, 0], "x":0.75, "y":0.25},
+ {"matrix":[0, 1], "x":1.75, "y":0.25},
+ {"matrix":[0, 2], "x":2.75, "y":0},
+ {"matrix":[0, 3], "x":3.75, "y":0.25},
+ {"matrix":[0, 4], "x":4.75, "y":0.25},
+ {"matrix":[0, 5], "x":5.75, "y":0.25},
+ {"matrix":[0, 6], "x":6.75, "y":0.25},
+ {"matrix":[0, 7], "x":9.5, "y":0.25},
+ {"matrix":[0, 8], "x":10.5, "y":0.25},
+ {"matrix":[0, 9], "x":11.5, "y":0.25},
+ {"matrix":[0,10], "x":12.5, "y":0.25},
+ {"matrix":[0,11], "x":13.5, "y":0},
+ {"matrix":[0,12], "x":14.5, "y":0.25},
+ {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":18, "y":0.25},
- {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 2, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 9, "y": 1.25},
- {"matrix": [1, 7], "x": 10, "y": 1.25},
- {"matrix": [1, 8], "x": 11, "y": 1.25},
- {"matrix": [1, 9], "x": 12, "y": 1.25},
- {"matrix": [1, 10], "x": 13.25, "y": 1.25},
- {"matrix": [1, 11], "x": 14.25, "y": 1.25},
- {"matrix": [1, 12], "x": 15.25, "y": 1.25},
- {"matrix": [1, 14], "x": 18.25, "y": 1.5},
+ {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":2, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":9, "y":1.25},
+ {"matrix":[1, 7], "x":10, "y":1.25},
+ {"matrix":[1, 8], "x":11, "y":1.25},
+ {"matrix":[1, 9], "x":12, "y":1.25},
+ {"matrix":[1,10], "x":13.25, "y":1.25},
+ {"matrix":[1,11], "x":14.25, "y":1.25},
+ {"matrix":[1,12], "x":15.25, "y":1.25},
+ {"matrix":[1,14], "x":18.25, "y":1.5},
- {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 2, "y": 2.25},
- {"matrix": [2, 2], "x": 3.5, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 9.25, "y": 2.25},
- {"matrix": [2, 8], "x": 10.25, "y": 2.25},
- {"matrix": [2, 9], "x": 11.25, "y": 2.25},
- {"matrix": [2, 10], "x": 12.25, "y": 2.25},
- {"matrix": [2, 11], "x": 13.5, "y": 2.25},
- {"matrix": [2, 12], "x": 14.5, "y": 2.25},
- {"matrix": [2, 13], "x": 15.5, "y": 2.25},
- {"matrix": [1, 13], "x": 16.5, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 18.5, "y": 2.5},
+ {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":2, "y":2.25},
+ {"matrix":[2, 2], "x":3.5, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":9.25, "y":2.25},
+ {"matrix":[2, 8], "x":10.25, "y":2.25},
+ {"matrix":[2, 9], "x":11.25, "y":2.25},
+ {"matrix":[2,10], "x":12.25, "y":2.25},
+ {"matrix":[2,11], "x":13.5, "y":2.25},
+ {"matrix":[2,12], "x":14.5, "y":2.25},
+ {"matrix":[2,13], "x":15.5, "y":2.25},
+ {"matrix":[1,13], "x":16.5, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":18.5, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3.25},
- {"matrix": [3, 8], "x": 9.5, "y": 3.25},
- {"matrix": [3, 9], "x": 10.5, "y": 3.25},
- {"matrix": [3, 10], "x": 11.5, "y": 3.25},
- {"matrix": [3, 11], "x": 12.5, "y": 3.25},
- {"matrix": [3, 12], "x": 14.25, "y": 3.25},
- {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":8.5, "y":3.25},
+ {"matrix":[3, 8], "x":9.5, "y":3.25},
+ {"matrix":[3, 9], "x":10.5, "y":3.25},
+ {"matrix":[3,10], "x":11.5, "y":3.25},
+ {"matrix":[3,11], "x":12.5, "y":3.25},
+ {"matrix":[3,12], "x":14.25, "y":3.25},
+ {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 6], "x": 7.25, "y": 4.25},
- {"matrix": [4, 7], "x": 8.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
- {"matrix": [4, 9], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 16.25, "y": 4.5},
- {"matrix": [4, 13], "x": 17.25, "y": 4.5},
- {"matrix": [4, 14], "x": 18.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
+ {"matrix":[4, 6], "x":7.25, "y":4.25},
+ {"matrix":[4, 7], "x":8.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
+ {"matrix":[4, 9], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":16.25, "y":4.5},
+ {"matrix":[4,13], "x":17.25, "y":4.5},
+ {"matrix":[4,14], "x":18.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/q8/iso_encoder/iso_encoder.c b/keyboards/keychron/q8/iso_encoder/iso_encoder.c
index 205989383e3f..6686ab22c151 100644
--- a/keyboards/keychron/q8/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q8/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q8/iso_encoder/keymaps/default/keymap.c
index 7db63d4118bf..eaeb32052251 100644
--- a/keyboards/keychron/q8/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/keymap.c
index b3abda29754c..e0182fde1766 100644
--- a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
+ [MAC_FN1] = LAYOUT_iso_70(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -65,24 +66,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/via/config.h b/keyboards/keychron/q8/iso_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q8/iso_encoder/keymaps/via/keymap.c
index 8b66a40c6bb5..ad73d3618eef 100644
--- a/keyboards/keychron/q8/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
- 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,
+ [WIN_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q8/iso_encoder/readme.md b/keyboards/keychron/q8/iso_encoder/readme.md
deleted file mode 100644
index 6c46b50397f3..000000000000
--- a/keyboards/keychron/q8/iso_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ISO variant of the Keychron Q8
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q8/iso_encoder/rules.mk b/keyboards/keychron/q8/iso_encoder/rules.mk
index 5091fe94148b..4bc1e23a57a0 100644
--- a/keyboards/keychron/q8/iso_encoder/rules.mk
+++ b/keyboards/keychron/q8/iso_encoder/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q8/q8.c b/keyboards/keychron/q8/q8.c
index a653bdc8b934..e903b1f70ae8 100644
--- a/keyboards/keychron/q8/q8.c
+++ b/keyboards/keychron/q8/q8.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,50 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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;
- }
-
- 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 // CAPS_LOCK_LED_INDEX
+#endif
diff --git a/keyboards/keychron/q8/readme.md b/keyboards/keychron/q8/readme.md
index da200e2c1879..8dcb89a84a17 100644
--- a/keyboards/keychron/q8/readme.md
+++ b/keyboards/keychron/q8/readme.md
@@ -1,18 +1,26 @@
# Keychron Q8
+![Keychron Q8](https://i.imgur.com/FQnOwRr.jpg)
+
A customizable 65% Alice layout keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q8
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron Q8 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q8-alice-layout-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/q8/ansi:default
+ make keychron/q8/ansi_encoder:default
+ make keychron/q8/iso:default
+ make keychron/q8/iso_encoder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/q8/ansi:default:flash
+ make keychron/q8/ansi_encoder:default:flash
+ make keychron/q8/iso:default:flash
+ make keychron/q8/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q9/ansi/ansi.c b/keyboards/keychron/q9/ansi/ansi.c
index b98149a5f894..eec0651693f7 100644
--- a/keyboards/keychron/q9/ansi/ansi.c
+++ b/keyboards/keychron/q9/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -106,8 +106,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q9/ansi/config.h b/keyboards/keychron/q9/ansi/config.h
index f9565bd6f0ee..553c5830418f 100644
--- a/keyboards/keychron/q9/ansi/config.h
+++ b/keyboards/keychron/q9/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q9/ansi/info.json b/keyboards/keychron/q9/ansi/info.json
index 952d3158c813..55ca51fc46c6 100644
--- a/keyboards/keychron/q9/ansi/info.json
+++ b/keyboards/keychron/q9/ansi/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0190",
- "device_version": "1.0.0"
+ "device_version": "1.0.4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -21,61 +32,61 @@
"layouts": {
"LAYOUT_ansi_52": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25, "w": 1.5},
- {"matrix": [0, 1], "x": 1.5, "y": 0.25},
- {"matrix": [0, 2], "x": 2.5, "y": 0.25},
- {"matrix": [0, 3], "x": 3.5, "y": 0.25},
- {"matrix": [0, 4], "x": 4.5, "y": 0.25},
- {"matrix": [0, 5], "x": 5.5, "y": 0.25},
- {"matrix": [0, 6], "x": 6.5, "y": 0.25},
- {"matrix": [0, 7], "x": 7.5, "y": 0.25},
- {"matrix": [0, 8], "x": 8.5, "y": 0.25},
- {"matrix": [0, 9], "x": 9.5, "y": 0.25},
- {"matrix": [0, 10], "x": 10.5, "y": 0.25},
- {"matrix": [0, 11], "x": 11.5, "y": 0.25},
- {"matrix": [0, 12], "x": 12.5, "y": 0.25},
- {"matrix": [0, 13], "x": 13.5, "y": 0.25, "w": 1.5},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25, "w":1.5},
+ {"matrix":[0, 1], "x":1.5, "y":0.25},
+ {"matrix":[0, 2], "x":2.5, "y":0.25},
+ {"matrix":[0, 3], "x":3.5, "y":0.25},
+ {"matrix":[0, 4], "x":4.5, "y":0.25},
+ {"matrix":[0, 5], "x":5.5, "y":0.25},
+ {"matrix":[0, 6], "x":6.5, "y":0.25},
+ {"matrix":[0, 7], "x":7.5, "y":0.25},
+ {"matrix":[0, 8], "x":8.5, "y":0.25},
+ {"matrix":[0, 9], "x":9.5, "y":0.25},
+ {"matrix":[0,10], "x":10.5, "y":0.25},
+ {"matrix":[0,11], "x":11.5, "y":0.25},
+ {"matrix":[0,12], "x":12.5, "y":0.25},
+ {"matrix":[0,13], "x":13.5, "y":0.25, "w":1.5},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.75},
- {"matrix": [1, 1], "x": 1.75, "y": 1.25},
- {"matrix": [1, 2], "x": 2.75, "y": 1.25},
- {"matrix": [1, 3], "x": 3.75, "y": 1.25},
- {"matrix": [1, 4], "x": 4.75, "y": 1.25},
- {"matrix": [1, 5], "x": 5.75, "y": 1.25},
- {"matrix": [1, 6], "x": 6.75, "y": 1.25},
- {"matrix": [1, 7], "x": 7.75, "y": 1.25},
- {"matrix": [1, 8], "x": 8.75, "y": 1.25},
- {"matrix": [1, 9], "x": 9.75, "y": 1.25},
- {"matrix": [1, 10], "x": 10.75, "y": 1.25},
- {"matrix": [1, 11], "x": 11.75, "y": 1.25},
- {"matrix": [1, 13], "x": 12.75, "y": 1.25, "w": 2.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.75},
+ {"matrix":[1, 1], "x":1.75, "y":1.25},
+ {"matrix":[1, 2], "x":2.75, "y":1.25},
+ {"matrix":[1, 3], "x":3.75, "y":1.25},
+ {"matrix":[1, 4], "x":4.75, "y":1.25},
+ {"matrix":[1, 5], "x":5.75, "y":1.25},
+ {"matrix":[1, 6], "x":6.75, "y":1.25},
+ {"matrix":[1, 7], "x":7.75, "y":1.25},
+ {"matrix":[1, 8], "x":8.75, "y":1.25},
+ {"matrix":[1, 9], "x":9.75, "y":1.25},
+ {"matrix":[1,10], "x":10.75, "y":1.25},
+ {"matrix":[1,11], "x":11.75, "y":1.25},
+ {"matrix":[1,13], "x":12.75, "y":1.25, "w":2.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 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},
- {"matrix": [2, 5], "x": 5.25, "y": 2.25},
- {"matrix": [2, 6], "x": 6.25, "y": 2.25},
- {"matrix": [2, 7], "x": 7.25, "y": 2.25},
- {"matrix": [2, 8], "x": 8.25, "y": 2.25},
- {"matrix": [2, 9], "x": 9.25, "y": 2.25},
- {"matrix": [2, 10], "x": 10.25, "y": 2.25},
- {"matrix": [2, 11], "x": 11.25, "y": 2.25},
- {"matrix": [2, 13], "x": 12.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 14], "x": 14.25, "y": 2.5},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":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},
+ {"matrix":[2, 5], "x":5.25, "y":2.25},
+ {"matrix":[2, 6], "x":6.25, "y":2.25},
+ {"matrix":[2, 7], "x":7.25, "y":2.25},
+ {"matrix":[2, 8], "x":8.25, "y":2.25},
+ {"matrix":[2, 9], "x":9.25, "y":2.25},
+ {"matrix":[2,10], "x":10.25, "y":2.25},
+ {"matrix":[2,11], "x":11.25, "y":2.25},
+ {"matrix":[2,13], "x":12.25, "y":2.25, "w":1.75},
+ {"matrix":[2,14], "x":14.25, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.25, "w": 1.25},
- {"matrix": [3, 2], "x": 2.5, "y": 3.25, "w": 1.25},
- {"matrix": [3, 6], "x": 3.75, "y": 3.25, "w": 6.25},
- {"matrix": [3, 10], "x": 10, "y": 3.25},
- {"matrix": [3, 11], "x": 11, "y": 3.25},
- {"matrix": [3, 12], "x": 12, "y": 3.25},
- {"matrix": [3, 13], "x": 13.25, "y": 3.5},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix": [1, 12], "x": 15.25, "y": 3.5}
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3.25, "w":1.25},
+ {"matrix":[3, 2], "x":2.5, "y":3.25, "w":1.25},
+ {"matrix":[3, 6], "x":3.75, "y":3.25, "w":6.25},
+ {"matrix":[3,10], "x":10, "y":3.25},
+ {"matrix":[3,11], "x":11, "y":3.25},
+ {"matrix":[3,12], "x":12, "y":3.25},
+ {"matrix":[3,13], "x":13.25, "y":3.5},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix":[1,12], "x":15.25, "y":3.5}
]
}
}
diff --git a/keyboards/keychron/q9/ansi/keymaps/default/keymap.c b/keyboards/keychron/q9/ansi/keymaps/default/keymap.c
index 1c2d017284d8..195f4cdb850f 100644
--- a/keyboards/keychron/q9/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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_DEL,
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_52(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_52(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [WIN_FN1] = LAYOUT_ansi_52(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q9/ansi/keymaps/keychron/config.h b/keyboards/keychron/q9/ansi/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q9/ansi/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q9/ansi/keymaps/keychron/keymap.c
index f6592924f736..966951e16890 100644
--- a/keyboards/keychron/q9/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -32,27 +33,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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_DEL,
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_52(
+ [MAC_FN1] = LAYOUT_ansi_52(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [WIN_FN1] = LAYOUT_ansi_52(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,9 +62,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q9/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q9/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q9/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q9/ansi/keymaps/via/config.h b/keyboards/keychron/q9/ansi/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q9/ansi/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/ansi/keymaps/via/keymap.c b/keyboards/keychron/q9/ansi/keymaps/via/keymap.c
index 1c2d017284d8..195f4cdb850f 100644
--- a/keyboards/keychron/q9/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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_DEL,
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_52(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_52(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [WIN_FN1] = LAYOUT_ansi_52(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q9/ansi/readme.md b/keyboards/keychron/q9/ansi/readme.md
deleted file mode 100644
index 95eac692a6d3..000000000000
--- a/keyboards/keychron/q9/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the Keychron Q9
diff --git a/keyboards/keychron/q9/ansi/rules.mk b/keyboards/keychron/q9/ansi/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/q9/ansi/rules.mk
+++ b/keyboards/keychron/q9/ansi/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
index de0eda1c023a..be991f8426e1 100644
--- a/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -106,8 +106,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 4, 4, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q9/ansi_encoder/config.h b/keyboards/keychron/q9/ansi_encoder/config.h
index 6850e5c2d67d..a2e2ed4f9d99 100644
--- a/keyboards/keychron/q9/ansi_encoder/config.h
+++ b/keyboards/keychron/q9/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q9/ansi_encoder/info.json b/keyboards/keychron/q9/ansi_encoder/info.json
index 4fd5352638a0..a11eb3b91361 100644
--- a/keyboards/keychron/q9/ansi_encoder/info.json
+++ b/keyboards/keychron/q9/ansi_encoder/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0191",
- "device_version": "1.0.0"
+ "device_version": "1.0.4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -26,61 +37,61 @@
"layouts": {
"LAYOUT_ansi_52": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25, "w": 1.5},
- {"matrix": [0, 1], "x": 1.5, "y": 0.25},
- {"matrix": [0, 2], "x": 2.5, "y": 0.25},
- {"matrix": [0, 3], "x": 3.5, "y": 0.25},
- {"matrix": [0, 4], "x": 4.5, "y": 0.25},
- {"matrix": [0, 5], "x": 5.5, "y": 0.25},
- {"matrix": [0, 6], "x": 6.5, "y": 0.25},
- {"matrix": [0, 7], "x": 7.5, "y": 0.25},
- {"matrix": [0, 8], "x": 8.5, "y": 0.25},
- {"matrix": [0, 9], "x": 9.5, "y": 0.25},
- {"matrix": [0, 10], "x": 10.5, "y": 0.25},
- {"matrix": [0, 11], "x": 11.5, "y": 0.25},
- {"matrix": [0, 12], "x": 12.5, "y": 0.25},
- {"matrix": [0, 13], "x": 13.5, "y": 0.25, "w": 1.5},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25, "w":1.5},
+ {"matrix":[0, 1], "x":1.5, "y":0.25},
+ {"matrix":[0, 2], "x":2.5, "y":0.25},
+ {"matrix":[0, 3], "x":3.5, "y":0.25},
+ {"matrix":[0, 4], "x":4.5, "y":0.25},
+ {"matrix":[0, 5], "x":5.5, "y":0.25},
+ {"matrix":[0, 6], "x":6.5, "y":0.25},
+ {"matrix":[0, 7], "x":7.5, "y":0.25},
+ {"matrix":[0, 8], "x":8.5, "y":0.25},
+ {"matrix":[0, 9], "x":9.5, "y":0.25},
+ {"matrix":[0,10], "x":10.5, "y":0.25},
+ {"matrix":[0,11], "x":11.5, "y":0.25},
+ {"matrix":[0,12], "x":12.5, "y":0.25},
+ {"matrix":[0,13], "x":13.5, "y":0.25, "w":1.5},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.75},
- {"matrix": [1, 1], "x": 1.75, "y": 1.25},
- {"matrix": [1, 2], "x": 2.75, "y": 1.25},
- {"matrix": [1, 3], "x": 3.75, "y": 1.25},
- {"matrix": [1, 4], "x": 4.75, "y": 1.25},
- {"matrix": [1, 5], "x": 5.75, "y": 1.25},
- {"matrix": [1, 6], "x": 6.75, "y": 1.25},
- {"matrix": [1, 7], "x": 7.75, "y": 1.25},
- {"matrix": [1, 8], "x": 8.75, "y": 1.25},
- {"matrix": [1, 9], "x": 9.75, "y": 1.25},
- {"matrix": [1, 10], "x": 10.75, "y": 1.25},
- {"matrix": [1, 11], "x": 11.75, "y": 1.25},
- {"matrix": [1, 13], "x": 12.75, "y": 1.25, "w": 2.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.75},
+ {"matrix":[1, 1], "x":1.75, "y":1.25},
+ {"matrix":[1, 2], "x":2.75, "y":1.25},
+ {"matrix":[1, 3], "x":3.75, "y":1.25},
+ {"matrix":[1, 4], "x":4.75, "y":1.25},
+ {"matrix":[1, 5], "x":5.75, "y":1.25},
+ {"matrix":[1, 6], "x":6.75, "y":1.25},
+ {"matrix":[1, 7], "x":7.75, "y":1.25},
+ {"matrix":[1, 8], "x":8.75, "y":1.25},
+ {"matrix":[1, 9], "x":9.75, "y":1.25},
+ {"matrix":[1,10], "x":10.75, "y":1.25},
+ {"matrix":[1,11], "x":11.75, "y":1.25},
+ {"matrix":[1,13], "x":12.75, "y":1.25, "w":2.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 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},
- {"matrix": [2, 5], "x": 5.25, "y": 2.25},
- {"matrix": [2, 6], "x": 6.25, "y": 2.25},
- {"matrix": [2, 7], "x": 7.25, "y": 2.25},
- {"matrix": [2, 8], "x": 8.25, "y": 2.25},
- {"matrix": [2, 9], "x": 9.25, "y": 2.25},
- {"matrix": [2, 10], "x": 10.25, "y": 2.25},
- {"matrix": [2, 11], "x": 11.25, "y": 2.25},
- {"matrix": [2, 13], "x": 12.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 14], "x": 14.25, "y": 2.5},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":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},
+ {"matrix":[2, 5], "x":5.25, "y":2.25},
+ {"matrix":[2, 6], "x":6.25, "y":2.25},
+ {"matrix":[2, 7], "x":7.25, "y":2.25},
+ {"matrix":[2, 8], "x":8.25, "y":2.25},
+ {"matrix":[2, 9], "x":9.25, "y":2.25},
+ {"matrix":[2,10], "x":10.25, "y":2.25},
+ {"matrix":[2,11], "x":11.25, "y":2.25},
+ {"matrix":[2,13], "x":12.25, "y":2.25, "w":1.75},
+ {"matrix":[2,14], "x":14.25, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.25, "w": 1.25},
- {"matrix": [3, 2], "x": 2.5, "y": 3.25, "w": 1.25},
- {"matrix": [3, 6], "x": 3.75, "y": 3.25, "w": 6.25},
- {"matrix": [3, 10], "x": 10, "y": 3.25},
- {"matrix": [3, 11], "x": 11, "y": 3.25},
- {"matrix": [3, 12], "x": 12, "y": 3.25},
- {"matrix": [3, 13], "x": 13.25, "y": 3.5},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix": [1, 12], "x": 15.25, "y": 3.5}
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3.25, "w":1.25},
+ {"matrix":[3, 2], "x":2.5, "y":3.25, "w":1.25},
+ {"matrix":[3, 6], "x":3.75, "y":3.25, "w":6.25},
+ {"matrix":[3,10], "x":10, "y":3.25},
+ {"matrix":[3,11], "x":11, "y":3.25},
+ {"matrix":[3,12], "x":12, "y":3.25},
+ {"matrix":[3,13], "x":13.25, "y":3.5},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix":[1,12], "x":15.25, "y":3.5}
]
}
}
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q9/ansi_encoder/keymaps/default/keymap.c
index eb5a5fa3b3e4..d20ed4cea3ad 100644
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_52(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_52(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
- 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, _______, _______,
+ [WIN_FN1] = LAYOUT_ansi_52(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/keymap.c
index c8718da22879..a9bfa25aff5e 100644
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -32,21 +33,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_52(
+ [MAC_FN1] = LAYOUT_ansi_52(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [WIN_FN1] = LAYOUT_ansi_52(
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, _______, _______, _______, _______, _______, _______,
@@ -60,20 +61,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q9/ansi_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q9/ansi_encoder/keymaps/via/keymap.c
index eb5a5fa3b3e4..d20ed4cea3ad 100644
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_52(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_52(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
- 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, _______, _______,
+ [WIN_FN1] = LAYOUT_ansi_52(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9/ansi_encoder/readme.md b/keyboards/keychron/q9/ansi_encoder/readme.md
deleted file mode 100644
index 492aaf47dc27..000000000000
--- a/keyboards/keychron/q9/ansi_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ANSI variant of the Keychron Q9
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q9/ansi_encoder/rules.mk b/keyboards/keychron/q9/ansi_encoder/rules.mk
index 911c497043a0..4bc1e23a57a0 100644
--- a/keyboards/keychron/q9/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q9/ansi_encoder/rules.mk
@@ -1,19 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-ENCODER_MAP_ENBALE = no
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q9/config.h b/keyboards/keychron/q9/config.h
index 742dde3ff27e..1902ef588326 100644
--- a/keyboards/keychron/q9/config.h
+++ b/keyboards/keychron/q9/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* Copyright 2 @ 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
@@ -21,6 +21,7 @@
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { { 3, 4 } }
+#define SCAN_COUNT_MAX 100
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 1
@@ -33,14 +34,13 @@
#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
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -77,9 +77,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -94,5 +98,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(4)
diff --git a/keyboards/keychron/q9/halconf.h b/keyboards/keychron/q9/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/q9/halconf.h
+++ b/keyboards/keychron/q9/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q9/iso/config.h b/keyboards/keychron/q9/iso/config.h
index eba60f456252..761110688420 100644
--- a/keyboards/keychron/q9/iso/config.h
+++ b/keyboards/keychron/q9/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q9/iso/info.json b/keyboards/keychron/q9/iso/info.json
index 3e9a7690c18a..0e13b382c7c1 100644
--- a/keyboards/keychron/q9/iso/info.json
+++ b/keyboards/keychron/q9/iso/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0192",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -21,62 +32,62 @@
"layouts": {
"LAYOUT_iso_53": {
"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, 14], "x": 15.25, "y": 0},
+ {"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,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},
- {"matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.25, "h": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"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},
+ {"matrix":[0,13], "x":13.75, "y":0, "w":1.25, "h":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.25},
- {"matrix": [2, 1], "x": 1.25, "y": 2},
- {"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":[2, 0], "x":0, "y":2, "w":1.25},
+ {"matrix":[2, 1], "x":1.25, "y":2},
+ {"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, 6], "x": 3.75, "y": 3, "w": 6.25},
- {"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}
+ {"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, 6], "x":3.75, "y":3, "w":6.25},
+ {"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}
]
}
}
diff --git a/keyboards/keychron/q9/iso/iso.c b/keyboards/keychron/q9/iso/iso.c
index 0e258e8c6399..661653580546 100644
--- a/keyboards/keychron/q9/iso/iso.c
+++ b/keyboards/keychron/q9/iso/iso.c
@@ -21,12 +21,12 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, L_16, J_16, K_16}, // Tab
{0, L_15, J_15, K_15}, // Q
{0, L_14, J_14, K_14}, // W
@@ -107,8 +107,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q9/iso/keymaps/default/keymap.c b/keyboards/keychron/q9/iso/keymaps/default/keymap.c
index 0724304e78f5..08ac2fdf71f2 100644
--- a/keyboards/keychron/q9/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9/iso/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_53(
+ [MAC_FN1] = LAYOUT_iso_53(
KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______,
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_iso_53(
+ [WIN_FN1] = LAYOUT_iso_53(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q9/iso/keymaps/keychron/config.h b/keyboards/keychron/q9/iso/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q9/iso/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q9/iso/keymaps/keychron/keymap.c
index 0ee0fb695965..1f9df82db2c3 100644
--- a/keyboards/keychron/q9/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9/iso/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -32,27 +33,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_53(
+ [MAC_FN1] = LAYOUT_iso_53(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_53(
+ [WIN_FN1] = LAYOUT_iso_53(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,9 +62,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q9/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q9/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/q9/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q9/iso/keymaps/via/config.h b/keyboards/keychron/q9/iso/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q9/iso/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso/keymaps/via/keymap.c b/keyboards/keychron/q9/iso/keymaps/via/keymap.c
index 0724304e78f5..08ac2fdf71f2 100644
--- a/keyboards/keychron/q9/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9/iso/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_53(
+ [MAC_FN1] = LAYOUT_iso_53(
KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______,
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_iso_53(
+ [WIN_FN1] = LAYOUT_iso_53(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q9/iso/readme.md b/keyboards/keychron/q9/iso/readme.md
deleted file mode 100644
index 72c4324575cf..000000000000
--- a/keyboards/keychron/q9/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the Keychron Q9
diff --git a/keyboards/keychron/q9/iso/rules.mk b/keyboards/keychron/q9/iso/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/q9/iso/rules.mk
+++ b/keyboards/keychron/q9/iso/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q9/iso_encoder/config.h b/keyboards/keychron/q9/iso_encoder/config.h
index 65d7ad770824..b56185f2b148 100644
--- a/keyboards/keychron/q9/iso_encoder/config.h
+++ b/keyboards/keychron/q9/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/q9/iso_encoder/info.json b/keyboards/keychron/q9/iso_encoder/info.json
index ecf944744d82..479cb853e169 100644
--- a/keyboards/keychron/q9/iso_encoder/info.json
+++ b/keyboards/keychron/q9/iso_encoder/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0193",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -26,62 +37,62 @@
"layouts": {
"LAYOUT_iso_53": {
"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, 14], "x": 15.25, "y": 0},
+ {"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,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},
- {"matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.25, "h": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"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},
+ {"matrix":[0,13], "x":13.75, "y":0, "w":1.25, "h":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.25},
- {"matrix": [2, 1], "x": 1.25, "y": 2},
- {"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":[2, 0], "x":0, "y":2, "w":1.25},
+ {"matrix":[2, 1], "x":1.25, "y":2},
+ {"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, 6], "x": 3.75, "y": 3, "w": 6.25},
- {"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}
+ {"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, 6], "x":3.75, "y":3, "w":6.25},
+ {"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}
]
}
}
diff --git a/keyboards/keychron/q9/iso_encoder/iso_encoder.c b/keyboards/keychron/q9/iso_encoder/iso_encoder.c
index 0804f33671fc..aff90cb9b330 100644
--- a/keyboards/keychron/q9/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q9/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,12 +21,12 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, L_16, J_16, K_16}, // Tab
{0, L_15, J_15, K_15}, // Q
{0, L_14, J_14, K_14}, // W
@@ -107,8 +107,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q9/iso_encoder/keymaps/default/keymap.c
index 3541851973b1..27f27efb0ec9 100644
--- a/keyboards/keychron/q9/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_53(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______,
+ [MAC_FN1] = LAYOUT_iso_53(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_53(
- 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, _______,
+ [WIN_FN1] = LAYOUT_iso_53(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/keymap.c
index 2eab2923895b..b91472957344 100644
--- a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -32,27 +33,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_53(
+ [MAC_FN1] = LAYOUT_iso_53(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_53(
+ [WIN_FN1] = LAYOUT_iso_53(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -60,20 +61,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/via/config.h b/keyboards/keychron/q9/iso_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q9/iso_encoder/keymaps/via/keymap.c
index 94b160f1c89a..27f27efb0ec9 100644
--- a/keyboards/keychron/q9/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_53(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______,
+ [MAC_FN1] = LAYOUT_iso_53(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_53(
- 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, _______,
+ [WIN_FN1] = LAYOUT_iso_53(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9/iso_encoder/readme.md b/keyboards/keychron/q9/iso_encoder/readme.md
deleted file mode 100644
index 0ebe5dfc0adc..000000000000
--- a/keyboards/keychron/q9/iso_encoder/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The ISO variant of the Keychron Q9
-
-- Enable EC11 rotary encoder.
-- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
-- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q9/iso_encoder/rules.mk b/keyboards/keychron/q9/iso_encoder/rules.mk
index 911c497043a0..4bc1e23a57a0 100644
--- a/keyboards/keychron/q9/iso_encoder/rules.mk
+++ b/keyboards/keychron/q9/iso_encoder/rules.mk
@@ -1,19 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-ENCODER_MAP_ENBALE = no
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/q9/q9.c b/keyboards/keychron/q9/q9.c
index 51dea886f1ca..a1ebd1ddb215 100644
--- a/keyboards/keychron/q9/q9.c
+++ b/keyboards/keychron/q9/q9.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -24,7 +24,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,49 +31,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q9/readme.md b/keyboards/keychron/q9/readme.md
index e2368ff75873..754634fb6394 100644
--- a/keyboards/keychron/q9/readme.md
+++ b/keyboards/keychron/q9/readme.md
@@ -1,19 +1,27 @@
# Keychron Q9
+![Keychron Q9](https://i.imgur.com/G8xJ4TR.jpg)
+
A customizable 40% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q9
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* 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/ansi:default
+ make keychron/q9/ansi_encoder:default
+ make keychron/q9/iso:default
+ make keychron/q9/iso_enocder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/q9/ansi:default:flash
+ make keychron/q9/ansi_encoder:default:flash
+ make keychron/q9/iso:default:flash
+ make keychron/q9/iso_encoder:default:flash
-**Reset Key**: Hold down the key located at *K00*, which programmed as *Tab* while plugging in the keyboard.
+**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* 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).
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
old mode 100755
new mode 100644
index c0b4b3a32ddb..7ff63fd8896d
--- a/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
@@ -17,6 +17,7 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
+// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -80,6 +81,32 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{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},
+ {0, C_4, A_4, B_4}
+};
+
+#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, 11, 12, 13, __ },
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 52, 26, 27 },
+ { 28, __, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, __, 39, 40 },
+ { 41, 42, 43, 44, __, __, 45, __, __, 46, 47, 48, 49, 50, 51 },
+ },
+ {
+ // LED Index to Physical Position
+ {2,0}, {20,0}, {35,0}, {50,0}, {65,0}, {80,0}, {94,0}, {109,0}, {124,0}, {139,0}, {154,0}, {168,0}, {183,0}, {202,0},
+ {4,21}, {24,21}, {39,21}, {54,21}, {68,21}, {83,21}, {98,21}, {113,21}, {128,21}, {142,21}, {157,21}, {172,21}, {196,21}, {224,27},
+ {7,43}, {31,43}, {46,43}, {61,43}, {76,43}, {91,43}, {105,43}, {120,43}, {135,43}, {150,43}, {165,43}, {185,43}, {205,43},
+ {0,64}, {18,64}, {37,64}, {55,64}, {81,64}, {118,64}, {146,64}, {161,64}, {176,64}, {190,64}, {205,64}, {220,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 4, 4, 1, 4, 4, 1, 1, 1,
+ }
};
#endif
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/config.h b/keyboards/keychron/q9_plus/ansi_encoder/config.h
old mode 100755
new mode 100644
index 1943a0fb2755..e88f3d8252e4
--- a/keyboards/keychron/q9_plus/ansi_encoder/config.h
+++ b/keyboards/keychron/q9_plus/ansi_encoder/config.h
@@ -17,7 +17,8 @@
#pragma once
/* RGB Matrix Configuration */
-#define RGB_MATRIX_LED_COUNT 53
+#define DRIVER_1_LED_TOTAL 54
+#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/info.json b/keyboards/keychron/q9_plus/ansi_encoder/info.json
old mode 100755
new mode 100644
index c465071ca14a..21bc9be2f228
--- a/keyboards/keychron/q9_plus/ansi_encoder/info.json
+++ b/keyboards/keychron/q9_plus/ansi_encoder/info.json
@@ -1,66 +1,100 @@
{
+ "keyboard_name": "Keychron Q9 Plus",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
"usb": {
+ "vid": "0x3434",
"pid": "0x0194",
"device_version": "1.0.0"
},
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
"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},
+ "driver": "CKLED2001"
+ },
+ "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"}
+ ]
+ },
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT": {
+ "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], "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":[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], "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":[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], "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}
- ]
+ {"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}
+ ]
+ }
}
}
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
old mode 100755
new mode 100644
index 06c43f6929d7..abeafa492272
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,44 +16,45 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
MAC_FN1,
WIN_FN1,
- FN2,
+ 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(
+ [MAC_BASE] = LAYOUT(
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(
+ [WIN_BASE] = LAYOUT(
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(
+ [MAC_FN1] = LAYOUT(
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(
+ [WIN_FN1] = LAYOUT(
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(
+ [FN2] = LAYOUT(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[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
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
old mode 100755
new mode 100644
index f1adcab005e8..ee325681483f
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
@@ -1,2 +1 @@
-VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..76cdab739231
--- /dev/null
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
old mode 100755
new mode 100644
index bf995fca2b25..c8a4f2e2720f
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,42 +16,44 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
MAC_FN1,
WIN_FN1,
- FN2,
+ FN2
};
-// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_54_ansi(
+ [MAC_BASE] = LAYOUT(
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(
+ [WIN_BASE] = LAYOUT(
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(
+ [MAC_FN1] = LAYOUT(
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(
+ [WIN_FN1] = LAYOUT(
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(
+ [FN2] = LAYOUT(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -59,22 +61,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[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
+#endif // ENCODER_MAP_ENABLE
+
+// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
old mode 100755
new mode 100644
index 9cf1a9b56cba..88c27a468a8b
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..76cdab739231
--- /dev/null
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
old mode 100755
new mode 100644
index 06c43f6929d7..abeafa492272
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,44 +16,45 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
WIN_BASE,
MAC_FN1,
WIN_FN1,
- FN2,
+ 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(
+ [MAC_BASE] = LAYOUT(
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(
+ [WIN_BASE] = LAYOUT(
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(
+ [MAC_FN1] = LAYOUT(
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(
+ [WIN_FN1] = LAYOUT(
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(
+ [FN2] = LAYOUT(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[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
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/rules.mk
old mode 100755
new mode 100644
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/rules.mk
old mode 100755
new mode 100644
index e69de29bb2d1..bbe678bed5d4
--- a/keyboards/keychron/q9_plus/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q9_plus/ansi_encoder/rules.mk
@@ -0,0 +1,8 @@
+# Build Options
+# change yes to no to disable
+#
+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
diff --git a/keyboards/keychron/q9_plus/config.h b/keyboards/keychron/q9_plus/config.h
old mode 100755
new mode 100644
index a8cba07e9028..6dea4a646494
--- a/keyboards/keychron/q9_plus/config.h
+++ b/keyboards/keychron/q9_plus/config.h
@@ -20,7 +20,8 @@
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID {{ 3, 4 }}
+#define DIP_SWITCH_MATRIX_GRID { { 3, 4 } }
+#define SCAN_COUNT_MAX 100
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 1
@@ -47,8 +48,55 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+// #define ENABLE_RGB_MATRIX_BAND_SAT
+// #define ENABLE_RGB_MATRIX_BAND_VAL
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// #define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// #define ENABLE_RGB_MATRIX_HUE_BREATHING
+// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
+// #define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
+// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
#define RGB_MATRIX_KEYPRESSES
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Old default behavior of mod-taps */
-#define HOLD_ON_OTHER_KEY_PRESS
+/* Factory test keys */
+#define FN_KEY1 MO(4)
diff --git a/keyboards/keychron/q9_plus/halconf.h b/keyboards/keychron/q9_plus/halconf.h
old mode 100755
new mode 100644
index 41bddcb2799b..463d177eabc7
--- a/keyboards/keychron/q9_plus/halconf.h
+++ b/keyboards/keychron/q9_plus/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/q9_plus/info.json b/keyboards/keychron/q9_plus/info.json
deleted file mode 100755
index c56650cb1dca..000000000000
--- a/keyboards/keychron/q9_plus/info.json
+++ /dev/null
@@ -1,124 +0,0 @@
-{
- "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
- }
- }
-}
diff --git a/keyboards/keychron/q9_plus/mcuconf.h b/keyboards/keychron/q9_plus/mcuconf.h
old mode 100755
new mode 100644
diff --git a/keyboards/keychron/q9_plus/q9_plus.c b/keyboards/keychron/q9_plus/q9_plus.c
old mode 100755
new mode 100644
index 848117d323be..1c742a26adab
--- a/keyboards/keychron/q9_plus/q9_plus.c
+++ b/keyboards/keychron/q9_plus/q9_plus.c
@@ -25,57 +25,10 @@ const matrix_row_t matrix_mask[] = {
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {
- if (!dip_switch_update_user(index, active)) {
- return false;
- }
+ 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;
- }
-
- 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
diff --git a/keyboards/keychron/q9_plus/readme.md b/keyboards/keychron/q9_plus/readme.md
old mode 100755
new mode 100644
index d0ab58e13c3a..174cf8c2328f
--- a/keyboards/keychron/q9_plus/readme.md
+++ b/keyboards/keychron/q9_plus/readme.md
@@ -1,20 +1,20 @@
# Keychron Q9 Plus
-![Keychron Q9 Plus](https://i.imgur.com/Yp9K7Gsh.jpg)
+![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)
+* Hardware Availability: []()
Make example for this keyboard (after setting up your build environment):
- make keychron/q9_plus/ansi_encoder:default
+ make keychron/q9/ansi_encoder:default
-Flashing example for this keyboard:
+Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
- make keychron/q9_plus/ansi:default:flash
+ make keychron/q9/ansi:default:flash
**Reset Key**: Hold down the key located at *K00*, programmed as *TAB* while plugging in the keyboard.
diff --git a/keyboards/keychron/s1/ansi/rgb/config.h b/keyboards/keychron/s1/ansi/rgb/config.h
index 9cf8df3b8243..b0d214f331e2 100644
--- a/keyboards/keychron/s1/ansi/rgb/config.h
+++ b/keyboards/keychron/s1/ansi/rgb/config.h
@@ -26,6 +26,7 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48 }
@@ -67,9 +68,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -83,6 +88,3 @@
// #define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keychron/s1/ansi/rgb/info.json b/keyboards/keychron/s1/ansi/rgb/info.json
index 3bef5f343c30..822f8f252170 100644
--- a/keyboards/keychron/s1/ansi/rgb/info.json
+++ b/keyboards/keychron/s1/ansi/rgb/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0410",
- "device_version": "1.0.0"
+ "device_version": "1.0.5"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -18,102 +29,98 @@
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
- "layout_aliases": {
- "LAYOUT_ansi_84": "LAYOUT_75_ansi"
- },
- "community_layouts": ["75_ansi"],
"layouts": {
"LAYOUT_75_ansi": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [3, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[3,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15, "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": [1, 4], "x": 4, "y": 1},
- {"matrix": [1, 5], "x": 5, "y": 1},
- {"matrix": [1, 6], "x": 6, "y": 1},
- {"matrix": [1, 7], "x": 7, "y": 1},
- {"matrix": [1, 8], "x": 8, "y": 1},
- {"matrix": [1, 9], "x": 9, "y": 1},
- {"matrix": [1, 10], "x": 10, "y": 1},
- {"matrix": [1, 11], "x": 11, "y": 1},
- {"matrix": [1, 12], "x": 12, "y": 1},
- {"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
- {"matrix": [1, 14], "x": 15, "y": 1},
+ {"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":[1, 4], "x":4, "y":1},
+ {"matrix":[1, 5], "x":5, "y":1},
+ {"matrix":[1, 6], "x":6, "y":1},
+ {"matrix":[1, 7], "x":7, "y":1},
+ {"matrix":[1, 8], "x":8, "y":1},
+ {"matrix":[1, 9], "x":9, "y":1},
+ {"matrix":[1,10], "x":10, "y":1},
+ {"matrix":[1,11], "x":11, "y":1},
+ {"matrix":[1,12], "x":12, "y":1},
+ {"matrix":[1,13], "x":13, "y":1, "w":2},
+ {"matrix":[1,14], "x":15, "y":1},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2},
- {"matrix": [2, 2], "x": 2.5, "y": 2},
- {"matrix": [2, 3], "x": 3.5, "y": 2},
- {"matrix": [2, 4], "x": 4.5, "y": 2},
- {"matrix": [2, 5], "x": 5.5, "y": 2},
- {"matrix": [2, 6], "x": 6.5, "y": 2},
- {"matrix": [2, 7], "x": 7.5, "y": 2},
- {"matrix": [2, 8], "x": 8.5, "y": 2},
- {"matrix": [2, 9], "x": 9.5, "y": 2},
- {"matrix": [2, 10], "x": 10.5, "y": 2},
- {"matrix": [2, 11], "x": 11.5, "y": 2},
- {"matrix": [2, 12], "x": 12.5, "y": 2},
- {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
- {"matrix": [2, 14], "x": 15, "y": 2},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2},
+ {"matrix":[2, 2], "x":2.5, "y":2},
+ {"matrix":[2, 3], "x":3.5, "y":2},
+ {"matrix":[2, 4], "x":4.5, "y":2},
+ {"matrix":[2, 5], "x":5.5, "y":2},
+ {"matrix":[2, 6], "x":6.5, "y":2},
+ {"matrix":[2, 7], "x":7.5, "y":2},
+ {"matrix":[2, 8], "x":8.5, "y":2},
+ {"matrix":[2, 9], "x":9.5, "y":2},
+ {"matrix":[2,10], "x":10.5, "y":2},
+ {"matrix":[2,11], "x":11.5, "y":2},
+ {"matrix":[2,12], "x":12.5, "y":2},
+ {"matrix":[2,13], "x":13.5, "y":2, "w":1.5},
+ {"matrix":[2,14], "x":15, "y":2},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3},
- {"matrix": [3, 2], "x": 2.75, "y": 3},
- {"matrix": [3, 3], "x": 3.75, "y": 3},
- {"matrix": [3, 4], "x": 4.75, "y": 3},
- {"matrix": [3, 5], "x": 5.75, "y": 3},
- {"matrix": [3, 6], "x": 6.75, "y": 3},
- {"matrix": [3, 7], "x": 7.75, "y": 3},
- {"matrix": [3, 8], "x": 8.75, "y": 3},
- {"matrix": [3, 9], "x": 9.75, "y": 3},
- {"matrix": [3, 10], "x": 10.75, "y": 3},
- {"matrix": [3, 11], "x": 11.75, "y": 3},
- {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
- {"matrix": [3, 14], "x": 15, "y": 3},
+ {"matrix":[3, 0], "x":0, "y":3, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3},
+ {"matrix":[3, 2], "x":2.75, "y":3},
+ {"matrix":[3, 3], "x":3.75, "y":3},
+ {"matrix":[3, 4], "x":4.75, "y":3},
+ {"matrix":[3, 5], "x":5.75, "y":3},
+ {"matrix":[3, 6], "x":6.75, "y":3},
+ {"matrix":[3, 7], "x":7.75, "y":3},
+ {"matrix":[3, 8], "x":8.75, "y":3},
+ {"matrix":[3, 9], "x":9.75, "y":3},
+ {"matrix":[3,10], "x":10.75, "y":3},
+ {"matrix":[3,11], "x":11.75, "y":3},
+ {"matrix":[3,13], "x":12.75, "y":3, "w":2.25},
+ {"matrix":[3,14], "x":15, "y":3},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
- {"matrix": [4, 2], "x": 2.25, "y": 4},
- {"matrix": [4, 3], "x": 3.25, "y": 4},
- {"matrix": [4, 4], "x": 4.25, "y": 4},
- {"matrix": [4, 5], "x": 5.25, "y": 4},
- {"matrix": [4, 6], "x": 6.25, "y": 4},
- {"matrix": [4, 7], "x": 7.25, "y": 4},
- {"matrix": [4, 8], "x": 8.25, "y": 4},
- {"matrix": [4, 9], "x": 9.25, "y": 4},
- {"matrix": [4, 10], "x": 10.25, "y": 4},
- {"matrix": [4, 11], "x": 11.25, "y": 4},
- {"matrix": [4, 12], "x": 12.25, "y": 4, "w": 1.75},
- {"matrix": [4, 13], "x": 14, "y": 4},
- {"matrix": [4, 14], "x": 15, "y": 4},
+ {"matrix":[4, 0], "x":0, "y":4, "w":2.25},
+ {"matrix":[4, 2], "x":2.25, "y":4},
+ {"matrix":[4, 3], "x":3.25, "y":4},
+ {"matrix":[4, 4], "x":4.25, "y":4},
+ {"matrix":[4, 5], "x":5.25, "y":4},
+ {"matrix":[4, 6], "x":6.25, "y":4},
+ {"matrix":[4, 7], "x":7.25, "y":4},
+ {"matrix":[4, 8], "x":8.25, "y":4},
+ {"matrix":[4, 9], "x":9.25, "y":4},
+ {"matrix":[4,10], "x":10.25, "y":4},
+ {"matrix":[4,11], "x":11.25, "y":4},
+ {"matrix":[4,12], "x":12.25, "y":4, "w":1.75},
+ {"matrix":[4,13], "x":14, "y":4},
+ {"matrix":[4,14], "x":15, "y":4},
- {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
- {"matrix": [5, 9], "x": 10, "y": 5},
- {"matrix": [5, 10], "x": 11, "y": 5},
- {"matrix": [5, 11], "x": 12, "y": 5},
- {"matrix": [5, 12], "x": 13, "y": 5},
- {"matrix": [5, 13], "x": 14, "y": 5},
- {"matrix": [5, 14], "x": 15, "y": 5}
+ {"matrix":[5, 0], "x":0, "y":5, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5, "w":6.25},
+ {"matrix":[5, 9], "x":10, "y":5},
+ {"matrix":[5,10], "x":11, "y":5},
+ {"matrix":[5,11], "x":12, "y":5},
+ {"matrix":[5,12], "x":13, "y":5},
+ {"matrix":[5,13], "x":14, "y":5},
+ {"matrix":[5,14], "x":15, "y":5}
]
}
}
diff --git a/keyboards/keychron/s1/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/s1/ansi/rgb/keymaps/default/keymap.c
index 68a5434bed70..46a18690600c 100644
--- a/keyboards/keychron/s1/ansi/rgb/keymaps/default/keymap.c
+++ b/keyboards/keychron/s1/ansi/rgb/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_75_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/keymap.c
index 3a91b3cf7c44..833d745549b0 100644
--- a/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -62,9 +63,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-bool process_record_user(uint16_t keycode, keyrecord_t * record) {
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/s1/ansi/rgb/keymaps/via/keymap.c b/keyboards/keychron/s1/ansi/rgb/keymaps/via/keymap.c
index 869d359a1e82..62df94d330ec 100644
--- a/keyboards/keychron/s1/ansi/rgb/keymaps/via/keymap.c
+++ b/keyboards/keychron/s1/ansi/rgb/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_75_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/s1/ansi/rgb/rgb.c b/keyboards/keychron/s1/ansi/rgb/rgb.c
index a0a2d25f94d2..045fa0bd7952 100644
--- a/keyboards/keychron/s1/ansi/rgb/rgb.c
+++ b/keyboards/keychron/s1/ansi/rgb/rgb.c
@@ -24,9 +24,9 @@ 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
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, I_1, G_1, H_1}, // esc
{0, I_2, G_2, H_2}, // f1
{0, I_3, G_3, H_3}, // f2
@@ -142,11 +142,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/s1/ansi/rgb/rules.mk b/keyboards/keychron/s1/ansi/rgb/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/s1/ansi/rgb/rules.mk
+++ b/keyboards/keychron/s1/ansi/rgb/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/s1/ansi/white/config.h b/keyboards/keychron/s1/ansi/white/config.h
index 65a79726ca77..fc361daa426b 100644
--- a/keyboards/keychron/s1/ansi/white/config.h
+++ b/keyboards/keychron/s1/ansi/white/config.h
@@ -24,44 +24,42 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_6CHANNEL
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 } // 250mA
- // { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 } // 127mA
+// { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 } // 127mA
/* Disable LED lighting when PC is in suspend */
#define LED_DISABLE_WHEN_USB_SUSPENDED
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 46
-
// LED Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
#define ENABLE_LED_MATRIX_NONE
-#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
+#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
// #define ENABLE_LED_MATRIX_ALPHAS_MODS // Static dual val, speed is val for LEDs marked as modifiers
-#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
+#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
// #define ENABLE_LED_MATRIX_BAND // Band fading brightness scrolling left to right
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
-#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
+#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
+#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
#define LED_MATRIX_KEYPRESSES
#define LED_MATRIX_KEYRELEASES
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out
// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out
// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
+#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
// #endif
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
-#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
+#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
+#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
// #define ENABLE_LED_MATRIX_EFFECT_MAX
diff --git a/keyboards/keychron/s1/ansi/white/info.json b/keyboards/keychron/s1/ansi/white/info.json
index ff0a6b69cbb6..8f0c49197350 100644
--- a/keyboards/keychron/s1/ansi/white/info.json
+++ b/keyboards/keychron/s1/ansi/white/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0411",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
},
- "led_matrix": {
- "driver": "ckled2001"
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -18,102 +29,98 @@
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
- "layout_aliases": {
- "LAYOUT_ansi_84": "LAYOUT_75_ansi"
- },
- "community_layouts": ["75_ansi"],
"layouts": {
"LAYOUT_75_ansi": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [3, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[3,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15, "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": [1, 4], "x": 4, "y": 1},
- {"matrix": [1, 5], "x": 5, "y": 1},
- {"matrix": [1, 6], "x": 6, "y": 1},
- {"matrix": [1, 7], "x": 7, "y": 1},
- {"matrix": [1, 8], "x": 8, "y": 1},
- {"matrix": [1, 9], "x": 9, "y": 1},
- {"matrix": [1, 10], "x": 10, "y": 1},
- {"matrix": [1, 11], "x": 11, "y": 1},
- {"matrix": [1, 12], "x": 12, "y": 1},
- {"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
- {"matrix": [1, 14], "x": 15, "y": 1},
+ {"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":[1, 4], "x":4, "y":1},
+ {"matrix":[1, 5], "x":5, "y":1},
+ {"matrix":[1, 6], "x":6, "y":1},
+ {"matrix":[1, 7], "x":7, "y":1},
+ {"matrix":[1, 8], "x":8, "y":1},
+ {"matrix":[1, 9], "x":9, "y":1},
+ {"matrix":[1,10], "x":10, "y":1},
+ {"matrix":[1,11], "x":11, "y":1},
+ {"matrix":[1,12], "x":12, "y":1},
+ {"matrix":[1,13], "x":13, "y":1, "w":2},
+ {"matrix":[1,14], "x":15, "y":1},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2},
- {"matrix": [2, 2], "x": 2.5, "y": 2},
- {"matrix": [2, 3], "x": 3.5, "y": 2},
- {"matrix": [2, 4], "x": 4.5, "y": 2},
- {"matrix": [2, 5], "x": 5.5, "y": 2},
- {"matrix": [2, 6], "x": 6.5, "y": 2},
- {"matrix": [2, 7], "x": 7.5, "y": 2},
- {"matrix": [2, 8], "x": 8.5, "y": 2},
- {"matrix": [2, 9], "x": 9.5, "y": 2},
- {"matrix": [2, 10], "x": 10.5, "y": 2},
- {"matrix": [2, 11], "x": 11.5, "y": 2},
- {"matrix": [2, 12], "x": 12.5, "y": 2},
- {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
- {"matrix": [2, 14], "x": 15, "y": 2},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2},
+ {"matrix":[2, 2], "x":2.5, "y":2},
+ {"matrix":[2, 3], "x":3.5, "y":2},
+ {"matrix":[2, 4], "x":4.5, "y":2},
+ {"matrix":[2, 5], "x":5.5, "y":2},
+ {"matrix":[2, 6], "x":6.5, "y":2},
+ {"matrix":[2, 7], "x":7.5, "y":2},
+ {"matrix":[2, 8], "x":8.5, "y":2},
+ {"matrix":[2, 9], "x":9.5, "y":2},
+ {"matrix":[2,10], "x":10.5, "y":2},
+ {"matrix":[2,11], "x":11.5, "y":2},
+ {"matrix":[2,12], "x":12.5, "y":2},
+ {"matrix":[2,13], "x":13.5, "y":2, "w":1.5},
+ {"matrix":[2,14], "x":15, "y":2},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3},
- {"matrix": [3, 2], "x": 2.75, "y": 3},
- {"matrix": [3, 3], "x": 3.75, "y": 3},
- {"matrix": [3, 4], "x": 4.75, "y": 3},
- {"matrix": [3, 5], "x": 5.75, "y": 3},
- {"matrix": [3, 6], "x": 6.75, "y": 3},
- {"matrix": [3, 7], "x": 7.75, "y": 3},
- {"matrix": [3, 8], "x": 8.75, "y": 3},
- {"matrix": [3, 9], "x": 9.75, "y": 3},
- {"matrix": [3, 10], "x": 10.75, "y": 3},
- {"matrix": [3, 11], "x": 11.75, "y": 3},
- {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
- {"matrix": [3, 14], "x": 15, "y": 3},
+ {"matrix":[3, 0], "x":0, "y":3, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3},
+ {"matrix":[3, 2], "x":2.75, "y":3},
+ {"matrix":[3, 3], "x":3.75, "y":3},
+ {"matrix":[3, 4], "x":4.75, "y":3},
+ {"matrix":[3, 5], "x":5.75, "y":3},
+ {"matrix":[3, 6], "x":6.75, "y":3},
+ {"matrix":[3, 7], "x":7.75, "y":3},
+ {"matrix":[3, 8], "x":8.75, "y":3},
+ {"matrix":[3, 9], "x":9.75, "y":3},
+ {"matrix":[3,10], "x":10.75, "y":3},
+ {"matrix":[3,11], "x":11.75, "y":3},
+ {"matrix":[3,13], "x":12.75, "y":3, "w":2.25},
+ {"matrix":[3,14], "x":15, "y":3},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
- {"matrix": [4, 2], "x": 2.25, "y": 4},
- {"matrix": [4, 3], "x": 3.25, "y": 4},
- {"matrix": [4, 4], "x": 4.25, "y": 4},
- {"matrix": [4, 5], "x": 5.25, "y": 4},
- {"matrix": [4, 6], "x": 6.25, "y": 4},
- {"matrix": [4, 7], "x": 7.25, "y": 4},
- {"matrix": [4, 8], "x": 8.25, "y": 4},
- {"matrix": [4, 9], "x": 9.25, "y": 4},
- {"matrix": [4, 10], "x": 10.25, "y": 4},
- {"matrix": [4, 11], "x": 11.25, "y": 4},
- {"matrix": [4, 12], "x": 12.25, "y": 4, "w": 1.75},
- {"matrix": [4, 13], "x": 14, "y": 4},
- {"matrix": [4, 14], "x": 15, "y": 4},
+ {"matrix":[4, 0], "x":0, "y":4, "w":2.25},
+ {"matrix":[4, 2], "x":2.25, "y":4},
+ {"matrix":[4, 3], "x":3.25, "y":4},
+ {"matrix":[4, 4], "x":4.25, "y":4},
+ {"matrix":[4, 5], "x":5.25, "y":4},
+ {"matrix":[4, 6], "x":6.25, "y":4},
+ {"matrix":[4, 7], "x":7.25, "y":4},
+ {"matrix":[4, 8], "x":8.25, "y":4},
+ {"matrix":[4, 9], "x":9.25, "y":4},
+ {"matrix":[4,10], "x":10.25, "y":4},
+ {"matrix":[4,11], "x":11.25, "y":4},
+ {"matrix":[4,12], "x":12.25, "y":4, "w":1.75},
+ {"matrix":[4,13], "x":14, "y":4},
+ {"matrix":[4,14], "x":15, "y":4},
- {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
- {"matrix": [5, 9], "x": 10, "y": 5},
- {"matrix": [5, 10], "x": 11, "y": 5},
- {"matrix": [5, 11], "x": 12, "y": 5},
- {"matrix": [5, 12], "x": 13, "y": 5},
- {"matrix": [5, 13], "x": 14, "y": 5},
- {"matrix": [5, 14], "x": 15, "y": 5}
+ {"matrix":[5, 0], "x":0, "y":5, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5, "w":6.25},
+ {"matrix":[5, 9], "x":10, "y":5},
+ {"matrix":[5,10], "x":11, "y":5},
+ {"matrix":[5,11], "x":12, "y":5},
+ {"matrix":[5,12], "x":13, "y":5},
+ {"matrix":[5,13], "x":14, "y":5},
+ {"matrix":[5,14], "x":15, "y":5}
]
}
}
diff --git a/keyboards/keychron/s1/ansi/white/keymaps/default/keymap.c b/keyboards/keychron/s1/ansi/white/keymaps/default/keymap.c
index 00dc1c07793b..75b81b5c60ef 100644
--- a/keyboards/keychron/s1/ansi/white/keymaps/default/keymap.c
+++ b/keyboards/keychron/s1/ansi/white/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_75_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, BL_STEP,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/s1/ansi/white/keymaps/keychron/keymap.c b/keyboards/keychron/s1/ansi/white/keymaps/keychron/keymap.c
index baced4f97c73..6df74d18e4d1 100644
--- a/keyboards/keychron/s1/ansi/white/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/s1/ansi/white/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -62,9 +63,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/s1/ansi/white/keymaps/keychron/rules.mk b/keyboards/keychron/s1/ansi/white/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/s1/ansi/white/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/s1/ansi/white/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/s1/ansi/white/keymaps/via/keymap.c b/keyboards/keychron/s1/ansi/white/keymaps/via/keymap.c
index 10d2e08aef34..bf45ace9b3e0 100644
--- a/keyboards/keychron/s1/ansi/white/keymaps/via/keymap.c
+++ b/keyboards/keychron/s1/ansi/white/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_75_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, BL_STEP,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/s1/ansi/white/rules.mk b/keyboards/keychron/s1/ansi/white/rules.mk
index cb70ced9173b..4bc1e23a57a0 100644
--- a/keyboards/keychron/s1/ansi/white/rules.mk
+++ b/keyboards/keychron/s1/ansi/white/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-LED_MATRIX_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
diff --git a/keyboards/keychron/s1/ansi/white/white.c b/keyboards/keychron/s1/ansi/white/white.c
index e41ba06401ca..89d5991119cb 100644
--- a/keyboards/keychron/s1/ansi/white/white.c
+++ b/keyboards/keychron/s1/ansi/white/white.c
@@ -16,10 +16,8 @@
#include "quantum.h"
-#ifdef LED_MATRIX_ENABLE
-
// clang-format off
-
+#ifdef LED_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -140,12 +138,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
}
};
-
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/s1/config.h b/keyboards/keychron/s1/config.h
index 8c9838952272..c74e0b4a4977 100644
--- a/keyboards/keychron/s1/config.h
+++ b/keyboards/keychron/s1/config.h
@@ -20,7 +20,8 @@
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
@@ -32,3 +33,7 @@
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/s1/readme.md b/keyboards/keychron/s1/readme.md
index ddb616fceae9..864d3815a841 100644
--- a/keyboards/keychron/s1/readme.md
+++ b/keyboards/keychron/s1/readme.md
@@ -1,38 +1,20 @@
# Keychron S1
-A customizable 75% keyboard with RGB backlight and White backlight.
+![Keychron S1](https://i.imgur.com/X1GFlYK.jpg)
+
+A customizable 75% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron S1
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron S1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-s1-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
-* For RGB backlight version:
-
-```bash
-make keychron/s1/ansi/rgb:default
-```
-
-* For White backlight version:
-
-```bash
-make keychron/s1/ansi/white:default
-```
+ make keychron/s1/ansi/rgb:default
Flashing example for this keyboard:
-* For RGB backlight version:
-
-```bash
-make keychron/s1/ansi/rgb:default:flash
-```
-
-* For White backlight version:
-
-```bash
-make keychron/s1/ansi/white:default:flash
-```
+ make keychron/s1/ansi/rgb:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/s1/s1.c b/keyboards/keychron/s1/s1.c
index d8488dd6ea6f..72e5ac4845be 100644
--- a/keyboards/keychron/s1/s1.c
+++ b/keyboards/keychron/s1/s1.c
@@ -16,6 +16,7 @@
#include "quantum.h"
+// clang-format off
const matrix_row_t matrix_mask[] = {
0b111111111111111,
0b111111111111111,
@@ -24,103 +25,16 @@ const matrix_row_t matrix_mask[] = {
0b111111111111111,
0b111111111101111,
};
+// clang-format on
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
- if (!dip_switch_update_user(index, active)) { return false; }
+ if (!dip_switch_update_user(index, active)) {
+ return false;
+ }
if (index == 0) {
default_layer_set(1UL << (active ? 2 : 0));
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // RGB_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX
-
-#if defined(LED_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) {
-#ifdef LED_MATRIX_ENABLE
- case BL_TOGG:
- if (record->event.pressed) {
- switch (led_matrix_get_flags()) {
- case LED_FLAG_ALL: {
- led_matrix_set_flags(LED_FLAG_NONE);
- led_matrix_set_value_all(0);
- } break;
- default: {
- led_matrix_set_flags(LED_FLAG_ALL);
- } break;
- }
- }
- if (!led_matrix_is_enabled()) {
- led_matrix_set_flags(LED_FLAG_ALL);
- led_matrix_enable();
- }
- return false;
-#endif
- }
- return true;
-}
-
-bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
- if (!led_matrix_indicators_advanced_user(led_min, led_max)) { return false; }
-
- if (host_keyboard_led_state().caps_lock) {
- led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
-
- } else {
- if (!led_matrix_get_flags()) {
- led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- }
- }
- return true;
-}
-
-#endif // LED_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v1/ansi/ansi.c b/keyboards/keychron/v1/ansi/ansi.c
index dc488d1b7359..839e4e8bb65a 100644
--- a/keyboards/keychron/v1/ansi/ansi.c
+++ b/keyboards/keychron/v1/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -140,11 +140,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v1/ansi/config.h b/keyboards/keychron/v1/ansi/config.h
index 143042076db1..f539f861e514 100644
--- a/keyboards/keychron/v1/ansi/config.h
+++ b/keyboards/keychron/v1/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,8 +21,5 @@
#define DRIVER_2_LED_TOTAL 37
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/v1/ansi/info.json b/keyboards/keychron/v1/ansi/info.json
index f4c526bfdcbc..1bd2a3b7e6b3 100644
--- a/keyboards/keychron/v1/ansi/info.json
+++ b/keyboards/keychron/v1/ansi/info.json
@@ -6,103 +6,119 @@
"usb": {
"vid": "0x3434",
"pid": "0x0310",
- "device_version": "1.0.0"
+ "device_version": "1.0.7"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_82": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.25, "y": 1.25},
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 15], "x": 15.25, "y": 2.25},
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 15], "x": 15.25, "y": 3.25},
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5}
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/v1/ansi/keymaps/default/keymap.c b/keyboards/keychron/v1/ansi/keymaps/default/keymap.c
index da0ffcdafb47..42292f385123 100644
--- a/keyboards/keychron/v1/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
index 4653954d7e9d..429ea2e24bc0 100644
--- a/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -64,11 +65,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v1/ansi/keymaps/via/keymap.c b/keyboards/keychron/v1/ansi/keymaps/via/keymap.c
index da0ffcdafb47..42292f385123 100644
--- a/keyboards/keychron/v1/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/v1/ansi/keymaps/vnmm/keymap.c b/keyboards/keychron/v1/ansi/keymaps/vnmm/keymap.c
deleted file mode 100644
index 6f26cc8729c2..000000000000
--- a/keyboards/keychron/v1/ansi/keymaps/vnmm/keymap.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2021 @ 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 "vnmm.h"
-
-// clang-format off
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_DEL,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMD, MAC_F, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_82(
- _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
- _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
- EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
-
- [WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_DEL,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RALT, WIN_F, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_ansi_82(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
- _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, KC_END,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
- EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
-};
diff --git a/keyboards/keychron/v1/ansi/keymaps/vnmm/readme.md b/keyboards/keychron/v1/ansi/keymaps/vnmm/readme.md
deleted file mode 100644
index 1ee0e0b117bc..000000000000
--- a/keyboards/keychron/v1/ansi/keymaps/vnmm/readme.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Vnmm's Keychron V1 ansi layout
-
-This keymap builds on the default but with some extras I use on all my keyboards
-
-## Features
-
-- Alphabet keys light up red when caps lock is on or shift is pressed
-- Pressing either FN shows keys that have a definition
-- Via enabled
-- Reset to bootloader with FN+Space
diff --git a/keyboards/keychron/v1/ansi/keymaps/vnmm/rules.mk b/keyboards/keychron/v1/ansi/keymaps/vnmm/rules.mk
deleted file mode 100644
index 1e5b99807cb7..000000000000
--- a/keyboards/keychron/v1/ansi/keymaps/vnmm/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-VIA_ENABLE = yes
diff --git a/keyboards/keychron/v1/ansi/rules.mk b/keyboards/keychron/v1/ansi/rules.mk
index e859eb9c34c6..aa286a161677 100644
--- a/keyboards/keychron/v1/ansi/rules.mk
+++ b/keyboards/keychron/v1/ansi/rules.mk
@@ -1,21 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
index dc488d1b7359..6b72f111ad2d 100644
--- a/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -140,12 +140,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v1/ansi_encoder/config.h b/keyboards/keychron/v1/ansi_encoder/config.h
index c32e4d104a37..610e8261b8cc 100644
--- a/keyboards/keychron/v1/ansi_encoder/config.h
+++ b/keyboards/keychron/v1/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,6 @@
#define DRIVER_2_LED_TOTAL 37
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v1/ansi_encoder/info.json b/keyboards/keychron/v1/ansi_encoder/info.json
index 9beffb9f6a18..38ef3c764a8a 100644
--- a/keyboards/keychron/v1/ansi_encoder/info.json
+++ b/keyboards/keychron/v1/ansi_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0311",
- "device_version": "1.0.0"
+ "device_version": "1.0.7"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -21,93 +37,93 @@
"layouts": {
"LAYOUT_ansi_82": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.25, "y": 1.25},
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 15], "x": 15.25, "y": 2.25},
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 15], "x": 15.25, "y": 3.25},
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5}
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v1/ansi_encoder/keymaps/default/keymap.c
index a5eed7de198c..b21f1aef75e2 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LCMD, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
index f5e6247ca6ab..f47f1f25c644 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -63,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -71,11 +72,19 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
};
#endif // ENCODER_MAP_ENABLE
-// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v1/ansi_encoder/keymaps/via/keymap.c
index 2ff15e873dea..ad6cec2d426b 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/v1/ansi_encoder/keymaps/via/rules.mk
index f1adcab005e8..ee325681483f 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/via/rules.mk
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/via/rules.mk
@@ -1,2 +1 @@
-VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/v1/ansi_encoder/rules.mk b/keyboards/keychron/v1/ansi_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v1/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v1/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/config.h b/keyboards/keychron/v1/config.h
index e5b82a143dae..afddf76d1706 100644
--- a/keyboards/keychron/v1/config.h
+++ b/keyboards/keychron/v1/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron(https://www.keychron.com)
+/* 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
@@ -16,20 +16,12 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
@@ -45,6 +37,9 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
@@ -85,9 +80,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -102,5 +101,10 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
diff --git a/keyboards/keychron/v1/halconf.h b/keyboards/keychron/v1/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/v1/halconf.h
+++ b/keyboards/keychron/v1/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/v1/iso/config.h b/keyboards/keychron/v1/iso/config.h
index 13ebd695f363..219b77db85d7 100644
--- a/keyboards/keychron/v1/iso/config.h
+++ b/keyboards/keychron/v1/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,8 +21,5 @@
#define DRIVER_2_LED_TOTAL 38
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/v1/iso/info.json b/keyboards/keychron/v1/iso/info.json
index 5a4c74234c15..1d6988e04783 100644
--- a/keyboards/keychron/v1/iso/info.json
+++ b/keyboards/keychron/v1/iso/info.json
@@ -6,104 +6,120 @@
"usb": {
"vid": "0x3434",
"pid": "0x0312",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_83": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 15], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 15.25, "y": 3.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/v1/iso/iso.c b/keyboards/keychron/v1/iso/iso.c
index 1d9ef7699718..8fb5b7a1c260 100644
--- a/keyboards/keychron/v1/iso/iso.c
+++ b/keyboards/keychron/v1/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -141,11 +141,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v1/iso/keymaps/default/keymap.c b/keyboards/keychron/v1/iso/keymaps/default/keymap.c
index e222112d2a1d..f37a37658ea5 100644
--- a/keyboards/keychron/v1/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
diff --git a/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
index 351b426571cc..45c2c74acac6 100644
--- a/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -62,9 +63,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v1/iso/keymaps/via/keymap.c b/keyboards/keychron/v1/iso/keymaps/via/keymap.c
index e222112d2a1d..f37a37658ea5 100644
--- a/keyboards/keychron/v1/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
diff --git a/keyboards/keychron/v1/iso/rules.mk b/keyboards/keychron/v1/iso/rules.mk
index e859eb9c34c6..aa286a161677 100644
--- a/keyboards/keychron/v1/iso/rules.mk
+++ b/keyboards/keychron/v1/iso/rules.mk
@@ -1,21 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/iso_encoder/config.h b/keyboards/keychron/v1/iso_encoder/config.h
index fd231aa98a18..ef25a4a54497 100644
--- a/keyboards/keychron/v1/iso_encoder/config.h
+++ b/keyboards/keychron/v1/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,6 @@
#define DRIVER_2_LED_TOTAL 38
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v1/iso_encoder/info.json b/keyboards/keychron/v1/iso_encoder/info.json
index 106b43b5e794..22869526d01d 100644
--- a/keyboards/keychron/v1/iso_encoder/info.json
+++ b/keyboards/keychron/v1/iso_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0313",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -21,94 +37,94 @@
"layouts": {
"LAYOUT_iso_83": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 15], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 15.25, "y": 3.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/v1/iso_encoder/iso_encoder.c b/keyboards/keychron/v1/iso_encoder/iso_encoder.c
index 1d9ef7699718..32d3989861d0 100644
--- a/keyboards/keychron/v1/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v1/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -141,12 +141,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v1/iso_encoder/keymaps/default/keymap.c
index 2667e16d5ee7..c12e21a7ee6d 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,40 +30,40 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
index 52e1a316546c..664d5585c542 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,42 +29,42 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -71,11 +72,19 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
};
#endif // ENCODER_MAP_ENABLE
-// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v1/iso_encoder/keymaps/via/keymap.c
index 2667e16d5ee7..c12e21a7ee6d 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,40 +30,40 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/iso_encoder/rules.mk b/keyboards/keychron/v1/iso_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v1/iso_encoder/rules.mk
+++ b/keyboards/keychron/v1/iso_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/jis/config.h b/keyboards/keychron/v1/jis/config.h
index 300beba867da..8fb01a1409e1 100644
--- a/keyboards/keychron/v1/jis/config.h
+++ b/keyboards/keychron/v1/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -26,8 +26,5 @@
#define DRIVER_2_LED_TOTAL 40
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D }
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/v1/jis/info.json b/keyboards/keychron/v1/jis/info.json
index 16365ccd9eec..cb8f773a8ae4 100644
--- a/keyboards/keychron/v1/jis/info.json
+++ b/keyboards/keychron/v1/jis/info.json
@@ -6,107 +6,123 @@
"usb": {
"vid": "0x3434",
"pid": "0x0314",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_jis_86": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.251},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25},
- {"matrix": [1, 14], "x": 14, "y": 1.25},
- {"matrix": [1, 15], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.251},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[1,14], "x":14, "y":1.25},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 15], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 15.25, "y": 3.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25},
- {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 3.5, "y": 5.25},
- {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
- {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
- {"matrix": [5, 10], "x": 10.25, "y": 5.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25},
- {"matrix": [5, 12], "x": 12.25, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.25},
- {"matrix": [5, 14], "x": 14.25, "y": 5.25},
- {"matrix": [5, 15], "x": 15.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25},
+ {"matrix":[5,12], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.25},
+ {"matrix":[5,14], "x":14.25, "y":5.25},
+ {"matrix":[5,15], "x":15.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v1/jis/jis.c b/keyboards/keychron/v1/jis/jis.c
index 7f2f02bfa5e2..dbef48c10a34 100644
--- a/keyboards/keychron/v1/jis/jis.c
+++ b/keyboards/keychron/v1/jis/jis.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v1/jis/keymaps/default/keymap.c b/keyboards/keychron/v1/jis/keymaps/default/keymap.c
index 95784d077a28..86fb9f7303dd 100644
--- a/keyboards/keychron/v1/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,34 +30,34 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
index 126288b7f087..933c589a8a9d 100644
--- a/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,43 +29,53 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk b/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v1/jis/keymaps/via/keymap.c b/keyboards/keychron/v1/jis/keymaps/via/keymap.c
index 95784d077a28..86fb9f7303dd 100644
--- a/keyboards/keychron/v1/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,34 +30,34 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v1/jis/rules.mk b/keyboards/keychron/v1/jis/rules.mk
index e859eb9c34c6..aa286a161677 100644
--- a/keyboards/keychron/v1/jis/rules.mk
+++ b/keyboards/keychron/v1/jis/rules.mk
@@ -1,21 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/jis_encoder/config.h b/keyboards/keychron/v1/jis_encoder/config.h
index 93d2a72d98a6..f5a549cd493a 100644
--- a/keyboards/keychron/v1/jis_encoder/config.h
+++ b/keyboards/keychron/v1/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,6 @@
#define DRIVER_2_LED_TOTAL 40
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D }
-
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v1/jis_encoder/info.json b/keyboards/keychron/v1/jis_encoder/info.json
index 702e57975800..e69049c1d76f 100644
--- a/keyboards/keychron/v1/jis_encoder/info.json
+++ b/keyboards/keychron/v1/jis_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0315",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -21,97 +37,97 @@
"layouts": {
"LAYOUT_jis_86": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.251},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25},
- {"matrix": [1, 14], "x": 14, "y": 1.25},
- {"matrix": [1, 15], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.251},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[1,14], "x":14, "y":1.25},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 15], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 15.25, "y": 3.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25},
- {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 3.5, "y": 5.25},
- {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
- {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
- {"matrix": [5, 10], "x": 10.25, "y": 5.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25},
- {"matrix": [5, 12], "x": 12.25, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.25},
- {"matrix": [5, 14], "x": 14.25, "y": 5.25},
- {"matrix": [5, 15], "x": 15.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25},
+ {"matrix":[5,12], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.25},
+ {"matrix":[5,14], "x":14.25, "y":5.25},
+ {"matrix":[5,15], "x":15.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v1/jis_encoder/jis_encoder.c b/keyboards/keychron/v1/jis_encoder/jis_encoder.c
index 7f2f02bfa5e2..dbef48c10a34 100644
--- a/keyboards/keychron/v1/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v1/jis_encoder/jis_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
index 05f0d38846ef..0086534adc1b 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,40 +30,40 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
index bef69ccea8ec..3fd9bcf8f093 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,42 +29,42 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -73,9 +74,19 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
index 05f0d38846ef..0086534adc1b 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,40 +30,40 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/jis_encoder/rules.mk b/keyboards/keychron/v1/jis_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v1/jis_encoder/rules.mk
+++ b/keyboards/keychron/v1/jis_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/matrix.c b/keyboards/keychron/v1/matrix.c
deleted file mode 100644
index 82a883834f82..000000000000
--- a/keyboards/keychron/v1/matrix.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/* 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 .
- */
-
-#include "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN A7
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN B1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN B0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND MATRIX_ROWS
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-// At 3.6V input, three nops (37.5ns) should be enough for all signals
-#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
-#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
-
-static void shiftOut(uint8_t dataOut) {
- ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < 8; i++) {
- compiler_barrier();
- if (dataOut & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- }
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static void shiftOut_single(uint8_t data) {
- ATOMIC_BLOCK_FORCEON {
- compiler_barrier();
- if (data & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == 8) {
- shiftOut_single(0x00);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- shiftOut_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (x == 8)
- // unselect shift Register
- shiftOut(0xFF);
- }
- }
-}
-
-static void matrix_init_pins(void) {
- setPinOutput(DATA_PIN);
- setPinOutput(CLOCK_PIN);
- setPinOutput(LATCH_PIN);
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- if (col_pins[x] != NO_PIN) {
- setPinOutput(col_pins[x]);
- }
- }
-#endif
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- matrix_output_select_delay();
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/v1/readme.md b/keyboards/keychron/v1/readme.md
index d68a34230726..4115295023c1 100644
--- a/keyboards/keychron/v1/readme.md
+++ b/keyboards/keychron/v1/readme.md
@@ -1,18 +1,30 @@
# Keychron V1
+![Keychron V1](https://i.imgur.com/zTnj6IV.jpg)
+
A customizable 75% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V1
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v1-qmk-via-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/v1/ansi:default
+ make keychron/v1/ansi_encoder:default
+ make keychron/v1/iso:default
+ make keychron/v1/iso_encoder:default
+ make keychron/v1/jis:default
+ make keychron/v1/jis_encoder:default
Flashing example for this keyboard:
make keychron/v1/ansi:default:flash
+ make keychron/v1/ansi_encoder:default:flash
+ make keychron/v1/iso:default:flash
+ make keychron/v1/iso_encoder:default:flash
+ make keychron/v1/jis:default:flash
+ make keychron/v1/jis_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v1/v1.c b/keyboards/keychron/v1/v1.c
index 79c591917475..374a80e09a5a 100644
--- a/keyboards/keychron/v1/v1.c
+++ b/keyboards/keychron/v1/v1.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -26,7 +26,6 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -36,49 +35,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
-#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
index bada8af6e98f..4a8384cdae4b 100644
--- a/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -146,12 +146,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v10/ansi_encoder/config.h b/keyboards/keychron/v10/ansi_encoder/config.h
index 8b5595e4d6c6..9012abd4f75c 100644
--- a/keyboards/keychron/v10/ansi_encoder/config.h
+++ b/keyboards/keychron/v10/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/v10/ansi_encoder/info.json b/keyboards/keychron/v10/ansi_encoder/info.json
index 2a7dc307cb03..0ae97be49187 100644
--- a/keyboards/keychron/v10/ansi_encoder/info.json
+++ b/keyboards/keychron/v10/ansi_encoder/info.json
@@ -5,12 +5,28 @@
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
- "pid": "0x03A1",
- "device_version": "1.0.0"
+ "pid": "0x01A1",
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -24,100 +40,100 @@
"layouts": {
"LAYOUT_ansi_89": {
"layout": [
- {"matrix": [0, 0], "x": 0.25, "y": 0},
- {"matrix": [0, 1], "x": 1.75, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6, "y": 0},
- {"matrix": [0, 6], "x": 7.25, "y": 0},
- {"matrix": [0, 7], "x": 8.25, "y": 0},
- {"matrix": [0, 8], "x": 11, "y": 0},
- {"matrix": [0, 9], "x": 12, "y": 0},
- {"matrix": [0, 10], "x": 13.25, "y": 0},
- {"matrix": [0, 11], "x": 14.25, "y": 0},
- {"matrix": [0, 12], "x": 15.25, "y": 0},
- {"matrix": [0, 13], "x": 16.25, "y": 0},
- {"matrix": [0, 14], "x": 17.5, "y": 0},
- {"matrix": [0, 15], "x": 18.75, "y": 0},
+ {"matrix":[0, 0], "x":0.25, "y":0},
+ {"matrix":[0, 1], "x":1.75, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6, "y":0},
+ {"matrix":[0, 6], "x":7.25, "y":0},
+ {"matrix":[0, 7], "x":8.25, "y":0},
+ {"matrix":[0, 8], "x":11, "y":0},
+ {"matrix":[0, 9], "x":12, "y":0},
+ {"matrix":[0,10], "x":13.25, "y":0},
+ {"matrix":[0,11], "x":14.25, "y":0},
+ {"matrix":[0,12], "x":15.25, "y":0},
+ {"matrix":[0,13], "x":16.25, "y":0},
+ {"matrix":[0,14], "x":17.5, "y":0},
+ {"matrix":[0,15], "x":18.75, "y":0},
- {"matrix": [1, 0], "x": 0.75, "y": 1.25},
- {"matrix": [1, 1], "x": 2.25, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 7.25, "y": 1.25},
- {"matrix": [1, 7], "x": 8.25, "y": 1.25},
- {"matrix": [1, 8], "x": 10.5, "y": 1.25},
- {"matrix": [1, 9], "x": 11.5, "y": 1.25},
- {"matrix": [1, 10], "x": 12.5, "y": 1.25},
- {"matrix": [1, 11], "x": 13.5, "y": 1.25},
- {"matrix": [1, 12], "x": 14.5, "y": 1.25},
- {"matrix": [1, 13], "x": 15.5, "y": 1.25},
- {"matrix": [1, 14], "x": 16.5, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 19, "y": 1.25},
+ {"matrix":[1, 0], "x":0.75, "y":1.25},
+ {"matrix":[1, 1], "x":2.25, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":7.25, "y":1.25},
+ {"matrix":[1, 7], "x":8.25, "y":1.25},
+ {"matrix":[1, 8], "x":10.5, "y":1.25},
+ {"matrix":[1, 9], "x":11.5, "y":1.25},
+ {"matrix":[1,10], "x":12.5, "y":1.25},
+ {"matrix":[1,11], "x":13.5, "y":1.25},
+ {"matrix":[1,12], "x":14.5, "y":1.25},
+ {"matrix":[1,13], "x":15.5, "y":1.25},
+ {"matrix":[1,14], "x":16.5, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":19, "y":1.25},
- {"matrix": [2, 0], "x": 0.5, "y": 2.25},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
- {"matrix": [2, 2], "x": 3.25, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 6], "x": 7.5, "y": 2.25},
- {"matrix": [2, 7], "x": 10, "y": 2.25},
- {"matrix": [2, 8], "x": 11, "y": 2.25},
- {"matrix": [2, 9], "x": 12, "y": 2.25},
- {"matrix": [2, 10], "x": 13, "y": 2.25},
- {"matrix": [2, 11], "x": 14, "y": 2.25},
- {"matrix": [2, 12], "x": 15.25, "y": 2.25},
- {"matrix": [2, 13], "x": 16.25, "y": 2.25},
- {"matrix": [2, 14], "x": 17.25, "y": 2.25, "w": 1.5},
- {"matrix": [2, 15], "x": 19.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0.5, "y":2.25},
+ {"matrix":[2, 1], "x":1.75, "y":2.25, "w":1.5},
+ {"matrix":[2, 2], "x":3.25, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 6], "x":7.5, "y":2.25},
+ {"matrix":[2, 7], "x":10, "y":2.25},
+ {"matrix":[2, 8], "x":11, "y":2.25},
+ {"matrix":[2, 9], "x":12, "y":2.25},
+ {"matrix":[2,10], "x":13, "y":2.25},
+ {"matrix":[2,11], "x":14, "y":2.25},
+ {"matrix":[2,12], "x":15.25, "y":2.25},
+ {"matrix":[2,13], "x":16.25, "y":2.25},
+ {"matrix":[2,14], "x":17.25, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":19.25, "y":2.25},
- {"matrix": [3, 0], "x": 0.25, "y": 3.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
- {"matrix": [3, 2], "x": 3.25, "y": 3.25},
- {"matrix": [3, 3], "x": 4.5, "y": 3.25},
- {"matrix": [3, 4], "x": 5.5, "y": 3.25},
- {"matrix": [3, 5], "x": 6.5, "y": 3.25},
- {"matrix": [3, 6], "x": 7.5, "y": 3.25},
- {"matrix": [3, 8], "x": 10.25, "y": 3.25},
- {"matrix": [3, 9], "x": 11.25, "y": 3.25},
- {"matrix": [3, 10], "x": 12.25, "y": 3.25},
- {"matrix": [3, 11], "x": 13.25, "y": 3.25},
- {"matrix": [3, 12], "x": 14.75, "y": 3.25},
- {"matrix": [3, 13], "x": 15.75, "y": 3.25},
- {"matrix": [3, 14], "x": 16.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 15], "x": 19.5, "y": 3.25},
+ {"matrix":[3, 0], "x":0.25, "y":3.25},
+ {"matrix":[3, 1], "x":1.5, "y":3.25, "w":1.75},
+ {"matrix":[3, 2], "x":3.25, "y":3.25},
+ {"matrix":[3, 3], "x":4.5, "y":3.25},
+ {"matrix":[3, 4], "x":5.5, "y":3.25},
+ {"matrix":[3, 5], "x":6.5, "y":3.25},
+ {"matrix":[3, 6], "x":7.5, "y":3.25},
+ {"matrix":[3, 8], "x":10.25, "y":3.25},
+ {"matrix":[3, 9], "x":11.25, "y":3.25},
+ {"matrix":[3,10], "x":12.25, "y":3.25},
+ {"matrix":[3,11], "x":13.25, "y":3.25},
+ {"matrix":[3,12], "x":14.75, "y":3.25},
+ {"matrix":[3,13], "x":15.75, "y":3.25},
+ {"matrix":[3,14], "x":16.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":19.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25},
- {"matrix": [4, 1], "x": 1.5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 4], "x": 4.75, "y": 4.25},
- {"matrix": [4, 5], "x": 5.75, "y": 4.25},
- {"matrix": [4, 6], "x": 6.75, "y": 4.25},
- {"matrix": [4, 7], "x": 7.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.5, "y": 4.25},
- {"matrix": [4, 9], "x": 10.5, "y": 4.25},
- {"matrix": [4, 10], "x": 11.5, "y": 4.25},
- {"matrix": [4, 11], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 13.5, "y": 4.25},
- {"matrix": [4, 13], "x": 15.25, "y": 4.25},
- {"matrix": [4, 14], "x": 16.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 15], "x": 18.25, "y": 4.5},
+ {"matrix":[4, 0], "x":0, "y":4.25},
+ {"matrix":[4, 1], "x":1.5, "y":4.25, "w":2.25},
+ {"matrix":[4, 3], "x":3.5, "y":4.25},
+ {"matrix":[4, 4], "x":4.75, "y":4.25},
+ {"matrix":[4, 5], "x":5.75, "y":4.25},
+ {"matrix":[4, 6], "x":6.75, "y":4.25},
+ {"matrix":[4, 7], "x":7.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.5, "y":4.25},
+ {"matrix":[4, 9], "x":10.5, "y":4.25},
+ {"matrix":[4,10], "x":11.5, "y":4.25},
+ {"matrix":[4,11], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":13.5, "y":4.25},
+ {"matrix":[4,13], "x":15.25, "y":4.25},
+ {"matrix":[4,14], "x":16.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":18.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 4.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 4], "x": 6, "y": 5.25, "w": 2.25},
- {"matrix": [5, 7], "x": 8.25, "y": 5.25},
- {"matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 2.75},
- {"matrix": [5, 9], "x": 12.25, "y": 5.25},
- {"matrix": [5, 13], "x": 17.25, "y": 5.5},
- {"matrix": [5, 14], "x": 18.25, "y": 5.5},
- {"matrix": [5, 15], "x": 19.25, "y": 5.5}
+ {"matrix":[5, 0], "x":0, "y":5.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":4.75, "y":5.25, "w":1.25},
+ {"matrix":[5, 4], "x":6, "y":5.25, "w":2.25},
+ {"matrix":[5, 7], "x":8.25, "y":5.25},
+ {"matrix":[5, 8], "x":9.5, "y":5.25, "w":2.75},
+ {"matrix":[5, 9], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":17.25, "y":5.5},
+ {"matrix":[5,14], "x":18.25, "y":5.5},
+ {"matrix":[5,15], "x":19.25, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/v10/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v10/ansi_encoder/keymaps/default/keymap.c
index 85daf6fb52fb..b16cf5407fca 100644
--- a/keyboards/keychron/v10/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v10/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
_______, 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,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/keymap.c
index 888d9cf75453..c9c8d1da0668 100644
--- a/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,7 +29,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -36,15 +37,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_89(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL,
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -52,16 +53,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_89(
- RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -73,11 +74,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v10/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v10/ansi_encoder/keymaps/via/keymap.c
index 939edd9548c5..4fb15a686e55 100644
--- a/keyboards/keychron/v10/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v10/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -38,15 +38,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_89(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL,
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -54,16 +54,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_89(
- RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v10/ansi_encoder/rules.mk b/keyboards/keychron/v10/ansi_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v10/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v10/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v10/config.h b/keyboards/keychron/v10/config.h
index 9bc5d0f55985..1895c52910dd 100644
--- a/keyboards/keychron/v10/config.h
+++ b/keyboards/keychron/v10/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron(https://www.keychron.com)
+/* 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
@@ -16,20 +16,6 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
-/* Pin connected to DS of 74HC595 */
-#define DATA_PIN_74HC595 A7
-/* Pin connected to SH_CP of 74HC595 */
-#define CLOCK_PIN_74HC595 B1
-/* Pin connected to ST_CP of 74HC595 */
-#define LATCH_PIN_74HC595 B0
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -44,10 +30,13 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-#define CKLED2001_CURRENT_TUNE { 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A }
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5,5} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 5 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -91,9 +80,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -108,5 +101,10 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
diff --git a/keyboards/keychron/v10/halconf.h b/keyboards/keychron/v10/halconf.h
index e490b49e005a..463d177eabc7 100644
--- a/keyboards/keychron/v10/halconf.h
+++ b/keyboards/keychron/v10/halconf.h
@@ -17,6 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
-#define PAL_USE_CALLBACKS TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/v10/iso_encoder/info.json b/keyboards/keychron/v10/iso_encoder/info.json
index 455b375472b3..bbd102aedded 100644
--- a/keyboards/keychron/v10/iso_encoder/info.json
+++ b/keyboards/keychron/v10/iso_encoder/info.json
@@ -8,9 +8,25 @@
"pid": "0x03A3",
"device_version": "1.0.0"
},
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -24,101 +40,101 @@
"layouts": {
"LAYOUT_iso_90": {
"layout": [
- {"matrix": [0, 0], "x": 0.25, "y": 0},
- {"matrix": [0, 1], "x": 1.75, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6, "y": 0},
- {"matrix": [0, 6], "x": 7.25, "y": 0},
- {"matrix": [0, 7], "x": 8.25, "y": 0},
- {"matrix": [0, 8], "x": 11, "y": 0},
- {"matrix": [0, 9], "x": 12, "y": 0},
- {"matrix": [0, 10], "x": 13.25, "y": 0},
- {"matrix": [0, 11], "x": 14.25, "y": 0},
- {"matrix": [0, 12], "x": 15.25, "y": 0},
- {"matrix": [0, 13], "x": 16.25, "y": 0},
- {"matrix": [0, 14], "x": 17.5, "y": 0},
- {"matrix": [0, 15], "x": 18.75, "y": 0},
+ {"matrix":[0, 0], "x":0.25, "y":0},
+ {"matrix":[0, 1], "x":1.75, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6, "y":0},
+ {"matrix":[0, 6], "x":7.25, "y":0},
+ {"matrix":[0, 7], "x":8.25, "y":0},
+ {"matrix":[0, 8], "x":11, "y":0},
+ {"matrix":[0, 9], "x":12, "y":0},
+ {"matrix":[0,10], "x":13.25, "y":0},
+ {"matrix":[0,11], "x":14.25, "y":0},
+ {"matrix":[0,12], "x":15.25, "y":0},
+ {"matrix":[0,13], "x":16.25, "y":0},
+ {"matrix":[0,14], "x":17.5, "y":0},
+ {"matrix":[0,15], "x":18.75, "y":0},
- {"matrix": [1, 0], "x": 0.75, "y": 1.25},
- {"matrix": [1, 1], "x": 2.25, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 7.25, "y": 1.25},
- {"matrix": [1, 7], "x": 8.25, "y": 1.25},
- {"matrix": [1, 8], "x": 10.5, "y": 1.25},
- {"matrix": [1, 9], "x": 11.5, "y": 1.25},
- {"matrix": [1, 10], "x": 12.5, "y": 1.25},
- {"matrix": [1, 11], "x": 13.5, "y": 1.25},
- {"matrix": [1, 12], "x": 14.5, "y": 1.25},
- {"matrix": [1, 13], "x": 15.5, "y": 1.25},
- {"matrix": [1, 14], "x": 16.5, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 19, "y": 1.25},
+ {"matrix":[1, 0], "x":0.75, "y":1.25},
+ {"matrix":[1, 1], "x":2.25, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":7.25, "y":1.25},
+ {"matrix":[1, 7], "x":8.25, "y":1.25},
+ {"matrix":[1, 8], "x":10.5, "y":1.25},
+ {"matrix":[1, 9], "x":11.5, "y":1.25},
+ {"matrix":[1,10], "x":12.5, "y":1.25},
+ {"matrix":[1,11], "x":13.5, "y":1.25},
+ {"matrix":[1,12], "x":14.5, "y":1.25},
+ {"matrix":[1,13], "x":15.5, "y":1.25},
+ {"matrix":[1,14], "x":16.5, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":19, "y":1.25},
- {"matrix": [2, 0], "x": 0.5, "y": 2.25},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
- {"matrix": [2, 2], "x": 3.25, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 6], "x": 7.5, "y": 2.25},
- {"matrix": [2, 7], "x": 10, "y": 2.25},
- {"matrix": [2, 8], "x": 11, "y": 2.25},
- {"matrix": [2, 9], "x": 12, "y": 2.25},
- {"matrix": [2, 10], "x": 13, "y": 2.25},
- {"matrix": [2, 11], "x": 14, "y": 2.25},
- {"matrix": [2, 12], "x": 15.25, "y": 2.25},
- {"matrix": [2, 13], "x": 16.25, "y": 2.25},
- {"matrix": [2, 15], "x": 19.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0.5, "y":2.25},
+ {"matrix":[2, 1], "x":1.75, "y":2.25, "w":1.5},
+ {"matrix":[2, 2], "x":3.25, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 6], "x":7.5, "y":2.25},
+ {"matrix":[2, 7], "x":10, "y":2.25},
+ {"matrix":[2, 8], "x":11, "y":2.25},
+ {"matrix":[2, 9], "x":12, "y":2.25},
+ {"matrix":[2,10], "x":13, "y":2.25},
+ {"matrix":[2,11], "x":14, "y":2.25},
+ {"matrix":[2,12], "x":15.25, "y":2.25},
+ {"matrix":[2,13], "x":16.25, "y":2.25},
+ {"matrix":[2,15], "x":19.25, "y":2.25},
- {"matrix": [3, 0], "x": 0.25, "y": 3.25},
- {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
- {"matrix": [3, 2], "x": 3.25, "y": 3.25},
- {"matrix": [3, 3], "x": 4.5, "y": 3.25},
- {"matrix": [3, 4], "x": 5.5, "y": 3.25},
- {"matrix": [3, 5], "x": 6.5, "y": 3.25},
- {"matrix": [3, 6], "x": 7.5, "y": 3.25},
- {"matrix": [3, 8], "x": 10.25, "y": 3.25},
- {"matrix": [3, 9], "x": 11.25, "y": 3.25},
- {"matrix": [3, 10], "x": 12.25, "y": 3.25},
- {"matrix": [3, 11], "x": 13.25, "y": 3.25},
- {"matrix": [3, 12], "x": 14.75, "y": 3.25},
- {"matrix": [3, 13], "x": 15.75, "y": 3.25},
- {"matrix": [3, 14], "x": 16.75, "y": 3.25},
- {"matrix": [2, 14], "x": 17.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 19.5, "y": 3.25},
+ {"matrix":[3, 0], "x":0.25, "y":3.25},
+ {"matrix":[3, 1], "x":1.5, "y":3.25, "w":1.75},
+ {"matrix":[3, 2], "x":3.25, "y":3.25},
+ {"matrix":[3, 3], "x":4.5, "y":3.25},
+ {"matrix":[3, 4], "x":5.5, "y":3.25},
+ {"matrix":[3, 5], "x":6.5, "y":3.25},
+ {"matrix":[3, 6], "x":7.5, "y":3.25},
+ {"matrix":[3, 8], "x":10.25, "y":3.25},
+ {"matrix":[3, 9], "x":11.25, "y":3.25},
+ {"matrix":[3,10], "x":12.25, "y":3.25},
+ {"matrix":[3,11], "x":13.25, "y":3.25},
+ {"matrix":[3,12], "x":14.75, "y":3.25},
+ {"matrix":[3,13], "x":15.75, "y":3.25},
+ {"matrix":[3,14], "x":16.75, "y":3.25},
+ {"matrix":[2,14], "x":17.75, "y":3.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":19.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25},
- {"matrix": [4, 1], "x": 1.5, "y": 4.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 4], "x": 4.75, "y": 4.25},
- {"matrix": [4, 5], "x": 5.75, "y": 4.25},
- {"matrix": [4, 6], "x": 6.75, "y": 4.25},
- {"matrix": [4, 7], "x": 7.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.5, "y": 4.25},
- {"matrix": [4, 9], "x": 10.5, "y": 4.25},
- {"matrix": [4, 10], "x": 11.5, "y": 4.25},
- {"matrix": [4, 11], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 13.5, "y": 4.25},
- {"matrix": [4, 13], "x": 15.25, "y": 4.25},
- {"matrix": [4, 14], "x": 16.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 15], "x": 18.25, "y": 4.5},
+ {"matrix":[4, 0], "x":0, "y":4.25},
+ {"matrix":[4, 1], "x":1.5, "y":4.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25},
+ {"matrix":[4, 3], "x":3.5, "y":4.25},
+ {"matrix":[4, 4], "x":4.75, "y":4.25},
+ {"matrix":[4, 5], "x":5.75, "y":4.25},
+ {"matrix":[4, 6], "x":6.75, "y":4.25},
+ {"matrix":[4, 7], "x":7.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.5, "y":4.25},
+ {"matrix":[4, 9], "x":10.5, "y":4.25},
+ {"matrix":[4,10], "x":11.5, "y":4.25},
+ {"matrix":[4,11], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":13.5, "y":4.25},
+ {"matrix":[4,13], "x":15.25, "y":4.25},
+ {"matrix":[4,14], "x":16.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":18.25, "y":4.5},
- {"matrix": [5, 0], "x": 0, "y": 5.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 4.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 4], "x": 6, "y": 5.25, "w": 2.25},
- {"matrix": [5, 7], "x": 8.25, "y": 5.25},
- {"matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 2.75},
- {"matrix": [5, 9], "x": 12.25, "y": 5.25},
- {"matrix": [5, 13], "x": 17.25, "y": 5.5},
- {"matrix": [5, 14], "x": 18.25, "y": 5.5},
- {"matrix": [5, 15], "x": 19.25, "y": 5.5}
+ {"matrix":[5, 0], "x":0, "y":5.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":4.75, "y":5.25, "w":1.25},
+ {"matrix":[5, 4], "x":6, "y":5.25, "w":2.25},
+ {"matrix":[5, 7], "x":8.25, "y":5.25},
+ {"matrix":[5, 8], "x":9.5, "y":5.25, "w":2.75},
+ {"matrix":[5, 9], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":17.25, "y":5.5},
+ {"matrix":[5,14], "x":18.25, "y":5.5},
+ {"matrix":[5,15], "x":19.25, "y":5.5}
]
}
}
diff --git a/keyboards/keychron/v10/iso_encoder/iso_encoder.c b/keyboards/keychron/v10/iso_encoder/iso_encoder.c
index 070a01a8a828..a6f2fde9314a 100644
--- a/keyboards/keychron/v10/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v10/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -147,7 +147,7 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
@@ -155,4 +155,4 @@ led_config_t g_led_config = {
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v10/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v10/iso_encoder/keymaps/default/keymap.c
index 40046cc69d82..1997eb4b391e 100644
--- a/keyboards/keychron/v10/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v10/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
_______, 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_NUHS, KC_ENT, KC_HOME,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v10/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v10/iso_encoder/keymaps/keychron/keymap.c
index 0db9e3783183..8e2367615428 100644
--- a/keyboards/keychron/v10/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v10/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,7 +29,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -36,15 +37,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_90(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL,
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -52,16 +53,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_90(
- RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -69,15 +70,19 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
};
#endif // ENCODER_MAP_ENABLE
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v10/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v10/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v10/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v10/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v10/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v10/iso_encoder/keymaps/via/keymap.c
index 66545f8b1874..65a6586ae111 100644
--- a/keyboards/keychron/v10/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v10/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -38,15 +38,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_90(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL,
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -54,16 +54,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_90(
- RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v10/iso_encoder/rules.mk b/keyboards/keychron/v10/iso_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v10/iso_encoder/rules.mk
+++ b/keyboards/keychron/v10/iso_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v10/matrix.c b/keyboards/keychron/v10/matrix.c
deleted file mode 100644
index 9269fed8d669..000000000000
--- a/keyboards/keychron/v10/matrix.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* 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 .
- */
-
-#include "matrix.h"
-#include "quantum.h"
-
-#ifndef PIN_USED_74HC595
-# define PIN_USED_74HC595 8
-#endif
-#ifndef PIN_START_74HC595
-# define PIN_START_74HC595 8
-#endif
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-void small_delay(volatile uint8_t timeout) {
- while (timeout--);
-}
-
-static void shiftOut(uint16_t dataOut) {
- ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < PIN_USED_74HC595; i++) {
- if (dataOut & 0x1) {
- writePinHigh(DATA_PIN_74HC595);
- } else {
- writePinLow(DATA_PIN_74HC595);
- }
- dataOut = dataOut >> 1;
- writePinHigh(CLOCK_PIN_74HC595);
- small_delay(2);
- writePinLow(CLOCK_PIN_74HC595);
- }
- writePinHigh(LATCH_PIN_74HC595);
- small_delay(2);
- writePinLow(LATCH_PIN_74HC595);
- }
-}
-
-static void shiftOut_single(uint8_t data) {
- ATOMIC_BLOCK_FORCEON {
- if (data & 0x1) {
- writePinHigh(DATA_PIN_74HC595);
- } else {
- writePinLow(DATA_PIN_74HC595);
- }
- writePinHigh(CLOCK_PIN_74HC595);
- small_delay(2);
- writePinLow(CLOCK_PIN_74HC595);
- writePinHigh(LATCH_PIN_74HC595);
- small_delay(2);
- writePinLow(LATCH_PIN_74HC595);
- }
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == PIN_START_74HC595) {
- shiftOut_single(0x00);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- shiftOut_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- // unselect column pins
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- }
- if (x == PIN_START_74HC595)
- // unselect Shift Register
- shiftOut(0xFFFF);
- }
-}
-
-static void matrix_init_pins(void) {
- setPinOutput(DATA_PIN_74HC595);
- setPinOutput(CLOCK_PIN_74HC595);
- setPinOutput(LATCH_PIN_74HC595);
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- if (col_pins[x] != NO_PIN) {
- setPinOutput(col_pins[x]);
- }
- }
-#endif
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- matrix_output_select_delay();
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/v10/readme.md b/keyboards/keychron/v10/readme.md
index 248ec375210f..60f1d4ea801f 100644
--- a/keyboards/keychron/v10/readme.md
+++ b/keyboards/keychron/v10/readme.md
@@ -1,10 +1,12 @@
# Keychron V10
+![Keychron V10](https://i.imgur.com/Dh1WLdD.jpg)
+
A customizable 75% ergonomic keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V10
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V10 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v10-alice-layout-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/keychron/v10/v10.c b/keyboards/keychron/v10/v10.c
index 2e1e3f090f03..66c66afd863f 100644
--- a/keyboards/keychron/v10/v10.c
+++ b/keyboards/keychron/v10/v10.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -26,7 +26,6 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -36,51 +35,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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 // CAPS_LOCK_LED_INDEX
+#endif
diff --git a/keyboards/keychron/v2/ansi/ansi.c b/keyboards/keychron/v2/ansi/ansi.c
index a2524d36cce4..e93cf8798161 100644
--- a/keyboards/keychron/v2/ansi/ansi.c
+++ b/keyboards/keychron/v2/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -109,7 +109,7 @@ led_config_t g_led_config = {
{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
{ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 65, 42, 43 },
{ 44, __, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, __, 55, 56 },
- { 57, 58, 59, __, __, __, 60, __, __, __, 61, 62, 63, 64, 66 }
+ { 57, 58, 59, __, __, __, 60, __, __, __, 61, 62, 63, 64, 66 },
},
{
// LED Index to Physical Position
@@ -117,15 +117,15 @@ led_config_t g_led_config = {
{4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {202,15}, {224,15},
{6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {196,30}, {224,30},
{9,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
- {2,60}, {20,60}, {39,60}, {94,60}, {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64}
+ {2,60}, {20,60}, {39,60}, {94,60}, {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64},
},
{
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v2/ansi/config.h b/keyboards/keychron/v2/ansi/config.h
index b6c31201a79b..88d86a5a7f95 100644
--- a/keyboards/keychron/v2/ansi/config.h
+++ b/keyboards/keychron/v2/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,8 +21,5 @@
#define DRIVER_2_LED_TOTAL 33
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/v2/ansi/info.json b/keyboards/keychron/v2/ansi/info.json
index d07fba97b864..49fa470f1a28 100644
--- a/keyboards/keychron/v2/ansi/info.json
+++ b/keyboards/keychron/v2/ansi/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0320",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,77 +32,77 @@
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 13], "x": 13.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25, "w": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.25, "y": 3.25},
- {"matrix": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.25, "y":3.25},
+ {"matrix":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4.25},
- {"matrix": [4, 11], "x": 11, "y": 4.25},
- {"matrix": [4, 12], "x": 12, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.5},
- {"matrix": [2, 12], "x": 14.25, "y": 4.5},
- {"matrix": [4, 14], "x": 15.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4.25},
+ {"matrix":[4,11], "x":11, "y":4.25},
+ {"matrix":[4,12], "x":12, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.5},
+ {"matrix":[2,12], "x":14.25, "y":4.5},
+ {"matrix":[4,14], "x":15.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/v2/ansi/keymaps/default/keymap.c b/keyboards/keychron/v2/ansi/keymaps/default/keymap.c
index 39c169dddb61..fa10916396d3 100644
--- a/keyboards/keychron/v2/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [WIN_FN1] = LAYOUT_ansi_67(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/ansi/keymaps/keychron/config.h b/keyboards/keychron/v2/ansi/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/ansi/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v2/ansi/keymaps/keychron/keymap.c
index f3e766c86919..ea2d8880fa31 100644
--- a/keyboards/keychron/v2/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
+ [MAC_FN1] = LAYOUT_ansi_67(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [WIN_FN1] = LAYOUT_ansi_67(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v2/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v2/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v2/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v2/ansi/keymaps/via/config.h b/keyboards/keychron/v2/ansi/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/ansi/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/ansi/keymaps/via/keymap.c b/keyboards/keychron/v2/ansi/keymaps/via/keymap.c
index 39c169dddb61..fa10916396d3 100644
--- a/keyboards/keychron/v2/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [WIN_FN1] = LAYOUT_ansi_67(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/ansi/keymaps/vnmm/keymap.c b/keyboards/keychron/v2/ansi/keymaps/vnmm/keymap.c
deleted file mode 100644
index 8e93b07639aa..000000000000
--- a/keyboards/keychron/v2/ansi/keymaps/vnmm/keymap.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright 2021 @ 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 "vnmm.h"
-
-// clang-format off
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_67(
- QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MAC_F, EXT_F, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_BASE] = LAYOUT_ansi_67(
- QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RALT, WIN_F, EXT_F, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
- _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
- EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
-
- [WIN_FN] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
- _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
- EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
-
- [EXTRA_FN] = LAYOUT_ansi_67(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______)
-};
diff --git a/keyboards/keychron/v2/ansi/keymaps/vnmm/readme.md b/keyboards/keychron/v2/ansi/keymaps/vnmm/readme.md
deleted file mode 100644
index c4fd5e9d017b..000000000000
--- a/keyboards/keychron/v2/ansi/keymaps/vnmm/readme.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Vnmm's Keychron V2 ansi layout
-
-This keymap builds on the default but with some extras I use on all my keyboards
-
-## Features
-
-- Alphabet keys light up red when caps lock is on or shift is pressed
-- Pressing either FN shows keys that have a definition
-- Via enabled
-- Reset to bootloader with FN+Space
diff --git a/keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk b/keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk
deleted file mode 100644
index 1e5b99807cb7..000000000000
--- a/keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-VIA_ENABLE = yes
diff --git a/keyboards/keychron/v2/ansi/rules.mk b/keyboards/keychron/v2/ansi/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/v2/ansi/rules.mk
+++ b/keyboards/keychron/v2/ansi/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
index 2c9fe0e8e28e..1ebdc6f4bde3 100644
--- a/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -125,8 +125,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v2/ansi_encoder/config.h b/keyboards/keychron/v2/ansi_encoder/config.h
index 6ee6d1e7c66e..17d0d125de1b 100644
--- a/keyboards/keychron/v2/ansi_encoder/config.h
+++ b/keyboards/keychron/v2/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/v2/ansi_encoder/info.json b/keyboards/keychron/v2/ansi_encoder/info.json
index c733b389e685..37eb953fbf9e 100644
--- a/keyboards/keychron/v2/ansi_encoder/info.json
+++ b/keyboards/keychron/v2/ansi_encoder/info.json
@@ -1,15 +1,26 @@
{
- "keyboard_name": "V2",
+ "keyboard_name": "Keychron V2",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0321",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -26,77 +37,77 @@
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 13], "x": 13.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25, "w": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.25, "y": 3.25},
- {"matrix": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.25, "y":3.25},
+ {"matrix":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4.25},
- {"matrix": [4, 11], "x": 11, "y": 4.25},
- {"matrix": [4, 12], "x": 12, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.5},
- {"matrix": [2, 12], "x": 14.25, "y": 4.5},
- {"matrix": [4, 14], "x": 15.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4.25},
+ {"matrix":[4,11], "x":11, "y":4.25},
+ {"matrix":[4,12], "x":12, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.5},
+ {"matrix":[2,12], "x":14.25, "y":4.5},
+ {"matrix":[4,14], "x":15.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v2/ansi_encoder/keymaps/default/keymap.c
index 71da961daccc..4c2df8554722 100644
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
- 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, _______, _______,
+ [WIN_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/keymap.c
index 5aa3a1feccca..484b2dd6c1a8 100644
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
+ [MAC_FN1] = LAYOUT_ansi_67(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [WIN_FN1] = LAYOUT_ansi_67(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,18 +68,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/v2/ansi_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v2/ansi_encoder/keymaps/via/keymap.c
index 71da961daccc..4c2df8554722 100644
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_67(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
- 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, _______, _______,
+ [WIN_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/ansi_encoder/rules.mk b/keyboards/keychron/v2/ansi_encoder/rules.mk
index 5091fe94148b..4bc1e23a57a0 100644
--- a/keyboards/keychron/v2/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v2/ansi_encoder/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/config.h b/keyboards/keychron/v2/config.h
index 08cc5b8e8412..11b41476fb62 100644
--- a/keyboards/keychron/v2/config.h
+++ b/keyboards/keychron/v2/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -33,18 +33,20 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -81,9 +83,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -98,5 +104,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/v2/halconf.h b/keyboards/keychron/v2/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/v2/halconf.h
+++ b/keyboards/keychron/v2/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/v2/iso/config.h b/keyboards/keychron/v2/iso/config.h
index b952607d83ef..1ea629f68067 100644
--- a/keyboards/keychron/v2/iso/config.h
+++ b/keyboards/keychron/v2/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/v2/iso/info.json b/keyboards/keychron/v2/iso/info.json
index 0d8376f7b76e..60bb1e6daac2 100644
--- a/keyboards/keychron/v2/iso/info.json
+++ b/keyboards/keychron/v2/iso/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0322",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,78 +32,78 @@
"layouts": {
"LAYOUT_iso_68": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25},
- {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25},
+ {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.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": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.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":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4.25},
- {"matrix": [4, 11], "x": 11, "y": 4.25},
- {"matrix": [4, 12], "x": 12, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.5},
- {"matrix": [2, 12], "x": 14.25, "y": 4.5},
- {"matrix": [4, 14], "x": 15.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4.25},
+ {"matrix":[4,11], "x":11, "y":4.25},
+ {"matrix":[4,12], "x":12, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.5},
+ {"matrix":[2,12], "x":14.25, "y":4.5},
+ {"matrix":[4,14], "x":15.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/v2/iso/iso.c b/keyboards/keychron/v2/iso/iso.c
index 385f5662524b..9f6a274167c0 100644
--- a/keyboards/keychron/v2/iso/iso.c
+++ b/keyboards/keychron/v2/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -126,7 +126,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v2/iso/keymaps/default/keymap.c b/keyboards/keychron/v2/iso/keymaps/default/keymap.c
index bdee4ad8fd5a..3401266132fc 100644
--- a/keyboards/keychron/v2/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [WIN_FN1] = LAYOUT_iso_68(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/iso/keymaps/keychron/config.h b/keyboards/keychron/v2/iso/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/iso/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v2/iso/keymaps/keychron/keymap.c
index f96ce108bea7..5a61f3f06bb5 100644
--- a/keyboards/keychron/v2/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
+ [MAC_FN1] = LAYOUT_iso_68(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [WIN_FN1] = LAYOUT_iso_68(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v2/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v2/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v2/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v2/iso/keymaps/via/config.h b/keyboards/keychron/v2/iso/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/iso/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso/keymaps/via/keymap.c b/keyboards/keychron/v2/iso/keymaps/via/keymap.c
index bdee4ad8fd5a..3401266132fc 100644
--- a/keyboards/keychron/v2/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [WIN_FN1] = LAYOUT_iso_68(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/iso/rules.mk b/keyboards/keychron/v2/iso/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/v2/iso/rules.mk
+++ b/keyboards/keychron/v2/iso/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/iso_encoder/config.h b/keyboards/keychron/v2/iso_encoder/config.h
index f69d6834538d..2f97b868b9dc 100644
--- a/keyboards/keychron/v2/iso_encoder/config.h
+++ b/keyboards/keychron/v2/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/v2/iso_encoder/info.json b/keyboards/keychron/v2/iso_encoder/info.json
index 0241cdb21e30..7291bebf2918 100644
--- a/keyboards/keychron/v2/iso_encoder/info.json
+++ b/keyboards/keychron/v2/iso_encoder/info.json
@@ -1,15 +1,25 @@
-{
- "keyboard_name": "Keychron V2",
+{ "keyboard_name": "Keychron V2",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0323",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -26,78 +36,78 @@
"layouts": {
"LAYOUT_iso_68": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25},
- {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25},
+ {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.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": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.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":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4.25},
- {"matrix": [4, 11], "x": 11, "y": 4.25},
- {"matrix": [4, 12], "x": 12, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.5},
- {"matrix": [2, 12], "x": 14.25, "y": 4.5},
- {"matrix": [4, 14], "x": 15.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4.25},
+ {"matrix":[4,11], "x":11, "y":4.25},
+ {"matrix":[4,12], "x":12, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.5},
+ {"matrix":[2,12], "x":14.25, "y":4.5},
+ {"matrix":[4,14], "x":15.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/v2/iso_encoder/iso_encoder.c b/keyboards/keychron/v2/iso_encoder/iso_encoder.c
index 385f5662524b..82dd116e79ec 100644
--- a/keyboards/keychron/v2/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v2/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -126,8 +126,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v2/iso_encoder/keymaps/default/keymap.c
index 585b6bb6cb02..cc408fea0e1a 100644
--- a/keyboards/keychron/v2/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
- 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, _______, _______,
+ [WIN_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/keymap.c
index 8057fd7a1bed..e7279ae461eb 100644
--- a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
+ [MAC_FN1] = LAYOUT_iso_68(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [WIN_FN1] = LAYOUT_iso_68(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,18 +68,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/via/config.h b/keyboards/keychron/v2/iso_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v2/iso_encoder/keymaps/via/keymap.c
index 585b6bb6cb02..cc408fea0e1a 100644
--- a/keyboards/keychron/v2/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_68(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
- 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, _______, _______,
+ [WIN_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/iso_encoder/rules.mk b/keyboards/keychron/v2/iso_encoder/rules.mk
index 5091fe94148b..4bc1e23a57a0 100644
--- a/keyboards/keychron/v2/iso_encoder/rules.mk
+++ b/keyboards/keychron/v2/iso_encoder/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/jis/config.h b/keyboards/keychron/v2/jis/config.h
index f258f9edd16e..e6d9bff37597 100644
--- a/keyboards/keychron/v2/jis/config.h
+++ b/keyboards/keychron/v2/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,8 +21,5 @@
#define DRIVER_2_LED_TOTAL 36
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D }
-
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/v2/jis/info.json b/keyboards/keychron/v2/jis/info.json
index f65e2b51d2ac..c051b0063641 100644
--- a/keyboards/keychron/v2/jis/info.json
+++ b/keyboards/keychron/v2/jis/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0324",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,81 +32,81 @@
"layouts": {
"LAYOUT_jis_71": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25},
- {"matrix": [3, 1], "x": 14, "y": 0.25},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25},
+ {"matrix":[3, 1], "x":14, "y":0.25},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25},
- {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25},
+ {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.25, "y": 3.25},
- {"matrix": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 12], "x": 12.25, "y": 3.25},
- {"matrix": [3, 13], "x": 13.25, "y": 3.25},
- {"matrix": [3, 14], "x": 14.25, "y": 3.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.25, "y":3.25},
+ {"matrix":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,12], "x":12.25, "y":3.25},
+ {"matrix":[3,13], "x":13.25, "y":3.25},
+ {"matrix":[3,14], "x":14.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25},
- {"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 6], "x": 4.5, "y": 4.25, "w": 4.5},
- {"matrix": [4, 9], "x": 9, "y": 4.25, "w": 1.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25},
- {"matrix": [2, 12], "x": 14.25, "y": 4.25},
- {"matrix": [4, 14], "x": 15.25, "y": 4.25}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25},
+ {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":3.5, "y":4.25},
+ {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5},
+ {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[2,12], "x":14.25, "y":4.25},
+ {"matrix":[4,14], "x":15.25, "y":4.25}
]
}
}
diff --git a/keyboards/keychron/v2/jis/jis.c b/keyboards/keychron/v2/jis/jis.c
index b9060cafb2bb..c84f2d107622 100644
--- a/keyboards/keychron/v2/jis/jis.c
+++ b/keyboards/keychron/v2/jis/jis.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -127,7 +127,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v2/jis/keymaps/default/keymap.c b/keyboards/keychron/v2/jis/keymaps/default/keymap.c
index 30e83b21a624..cf85a0ebe58e 100644
--- a/keyboards/keychron/v2/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ [MAC_FN1] = LAYOUT_jis_71(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/jis/keymaps/keychron/config.h b/keyboards/keychron/v2/jis/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/jis/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
index 68c399a18b65..cd4c0b419204 100644
--- a/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
+ [MAC_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v2/jis/keymaps/keychron/rules.mk b/keyboards/keychron/v2/jis/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v2/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v2/jis/keymaps/via/config.h b/keyboards/keychron/v2/jis/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/jis/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/jis/keymaps/via/keymap.c b/keyboards/keychron/v2/jis/keymaps/via/keymap.c
index 30e83b21a624..cf85a0ebe58e 100644
--- a/keyboards/keychron/v2/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ [MAC_FN1] = LAYOUT_jis_71(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/jis/rules.mk b/keyboards/keychron/v2/jis/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/v2/jis/rules.mk
+++ b/keyboards/keychron/v2/jis/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/jis_encoder/config.h b/keyboards/keychron/v2/jis_encoder/config.h
index a9a3438ab759..fc961ea2dbb2 100644
--- a/keyboards/keychron/v2/jis_encoder/config.h
+++ b/keyboards/keychron/v2/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,6 @@
#define DRIVER_2_LED_TOTAL 36
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D }
-
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v2/jis_encoder/info.json b/keyboards/keychron/v2/jis_encoder/info.json
index 263e403167c6..0dfaac90ed17 100644
--- a/keyboards/keychron/v2/jis_encoder/info.json
+++ b/keyboards/keychron/v2/jis_encoder/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0325",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -26,81 +37,81 @@
"layouts": {
"LAYOUT_jis_71": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0.25},
- {"matrix": [0, 1], "x": 1, "y": 0.25},
- {"matrix": [0, 2], "x": 2, "y": 0.25},
- {"matrix": [0, 3], "x": 3, "y": 0.25},
- {"matrix": [0, 4], "x": 4, "y": 0.25},
- {"matrix": [0, 5], "x": 5, "y": 0.25},
- {"matrix": [0, 6], "x": 6, "y": 0.25},
- {"matrix": [0, 7], "x": 7, "y": 0.25},
- {"matrix": [0, 8], "x": 8, "y": 0.25},
- {"matrix": [0, 9], "x": 9, "y": 0.25},
- {"matrix": [0, 10], "x": 10, "y": 0.25},
- {"matrix": [0, 11], "x": 11, "y": 0.25},
- {"matrix": [0, 12], "x": 12, "y": 0.25},
- {"matrix": [0, 13], "x": 13, "y": 0.25},
- {"matrix": [3, 1], "x": 14, "y": 0.25},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0.25},
+ {"matrix":[0, 1], "x":1, "y":0.25},
+ {"matrix":[0, 2], "x":2, "y":0.25},
+ {"matrix":[0, 3], "x":3, "y":0.25},
+ {"matrix":[0, 4], "x":4, "y":0.25},
+ {"matrix":[0, 5], "x":5, "y":0.25},
+ {"matrix":[0, 6], "x":6, "y":0.25},
+ {"matrix":[0, 7], "x":7, "y":0.25},
+ {"matrix":[0, 8], "x":8, "y":0.25},
+ {"matrix":[0, 9], "x":9, "y":0.25},
+ {"matrix":[0,10], "x":10, "y":0.25},
+ {"matrix":[0,11], "x":11, "y":0.25},
+ {"matrix":[0,12], "x":12, "y":0.25},
+ {"matrix":[0,13], "x":13, "y":0.25},
+ {"matrix":[3, 1], "x":14, "y":0.25},
+ {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1.25},
- {"matrix": [1, 2], "x": 2.5, "y": 1.25},
- {"matrix": [1, 3], "x": 3.5, "y": 1.25},
- {"matrix": [1, 4], "x": 4.5, "y": 1.25},
- {"matrix": [1, 5], "x": 5.5, "y": 1.25},
- {"matrix": [1, 6], "x": 6.5, "y": 1.25},
- {"matrix": [1, 7], "x": 7.5, "y": 1.25},
- {"matrix": [1, 8], "x": 8.5, "y": 1.25},
- {"matrix": [1, 9], "x": 9.5, "y": 1.25},
- {"matrix": [1, 10], "x": 10.5, "y": 1.25},
- {"matrix": [1, 11], "x": 11.5, "y": 1.25},
- {"matrix": [1, 12], "x": 12.5, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1.25},
+ {"matrix":[1, 2], "x":2.5, "y":1.25},
+ {"matrix":[1, 3], "x":3.5, "y":1.25},
+ {"matrix":[1, 4], "x":4.5, "y":1.25},
+ {"matrix":[1, 5], "x":5.5, "y":1.25},
+ {"matrix":[1, 6], "x":6.5, "y":1.25},
+ {"matrix":[1, 7], "x":7.5, "y":1.25},
+ {"matrix":[1, 8], "x":8.5, "y":1.25},
+ {"matrix":[1, 9], "x":9.5, "y":1.25},
+ {"matrix":[1,10], "x":10.5, "y":1.25},
+ {"matrix":[1,11], "x":11.5, "y":1.25},
+ {"matrix":[1,12], "x":12.5, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2.25},
- {"matrix": [2, 2], "x": 2.75, "y": 2.25},
- {"matrix": [2, 3], "x": 3.75, "y": 2.25},
- {"matrix": [2, 4], "x": 4.75, "y": 2.25},
- {"matrix": [2, 5], "x": 5.75, "y": 2.25},
- {"matrix": [2, 6], "x": 6.75, "y": 2.25},
- {"matrix": [2, 7], "x": 7.75, "y": 2.25},
- {"matrix": [2, 8], "x": 8.75, "y": 2.25},
- {"matrix": [2, 9], "x": 9.75, "y": 2.25},
- {"matrix": [2, 10], "x": 10.75, "y": 2.25},
- {"matrix": [2, 11], "x": 11.75, "y": 2.25},
- {"matrix": [2, 13], "x": 12.75, "y": 2.25},
- {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2.25},
+ {"matrix":[2, 2], "x":2.75, "y":2.25},
+ {"matrix":[2, 3], "x":3.75, "y":2.25},
+ {"matrix":[2, 4], "x":4.75, "y":2.25},
+ {"matrix":[2, 5], "x":5.75, "y":2.25},
+ {"matrix":[2, 6], "x":6.75, "y":2.25},
+ {"matrix":[2, 7], "x":7.75, "y":2.25},
+ {"matrix":[2, 8], "x":8.75, "y":2.25},
+ {"matrix":[2, 9], "x":9.75, "y":2.25},
+ {"matrix":[2,10], "x":10.75, "y":2.25},
+ {"matrix":[2,11], "x":11.75, "y":2.25},
+ {"matrix":[2,13], "x":12.75, "y":2.25},
+ {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.25, "y": 3.25},
- {"matrix": [3, 4], "x": 4.25, "y": 3.25},
- {"matrix": [3, 5], "x": 5.25, "y": 3.25},
- {"matrix": [3, 6], "x": 6.25, "y": 3.25},
- {"matrix": [3, 7], "x": 7.25, "y": 3.25},
- {"matrix": [3, 8], "x": 8.25, "y": 3.25},
- {"matrix": [3, 9], "x": 9.25, "y": 3.25},
- {"matrix": [3, 10], "x": 10.25, "y": 3.25},
- {"matrix": [3, 11], "x": 11.25, "y": 3.25},
- {"matrix": [3, 12], "x": 12.25, "y": 3.25},
- {"matrix": [3, 13], "x": 13.25, "y": 3.25},
- {"matrix": [3, 14], "x": 14.25, "y": 3.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.25, "y":3.25},
+ {"matrix":[3, 4], "x":4.25, "y":3.25},
+ {"matrix":[3, 5], "x":5.25, "y":3.25},
+ {"matrix":[3, 6], "x":6.25, "y":3.25},
+ {"matrix":[3, 7], "x":7.25, "y":3.25},
+ {"matrix":[3, 8], "x":8.25, "y":3.25},
+ {"matrix":[3, 9], "x":9.25, "y":3.25},
+ {"matrix":[3,10], "x":10.25, "y":3.25},
+ {"matrix":[3,11], "x":11.25, "y":3.25},
+ {"matrix":[3,12], "x":12.25, "y":3.25},
+ {"matrix":[3,13], "x":13.25, "y":3.25},
+ {"matrix":[3,14], "x":14.25, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25},
- {"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 3.5, "y": 4.25},
- {"matrix": [4, 6], "x": 4.5, "y": 4.25, "w": 4.5},
- {"matrix": [4, 9], "x": 9, "y": 4.25, "w": 1.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25},
- {"matrix": [2, 12], "x": 14.25, "y": 4.25},
- {"matrix": [4, 14], "x": 15.25, "y": 4.25}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25},
+ {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":3.5, "y":4.25},
+ {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5},
+ {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[2,12], "x":14.25, "y":4.25},
+ {"matrix":[4,14], "x":15.25, "y":4.25}
]
}
}
diff --git a/keyboards/keychron/v2/jis_encoder/jis_encoder.c b/keyboards/keychron/v2/jis_encoder/jis_encoder.c
index 661ee0c1d65f..71d4f0af8e11 100644
--- a/keyboards/keychron/v2/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v2/jis_encoder/jis_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -127,8 +127,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
index 68ca97e791b4..8d11a8a0ea98 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_jis_71(
+ 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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/config.h b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
index 49bdca2fd121..a55d05f873da 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
+ [MAC_FN1] = LAYOUT_jis_71(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,18 +68,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/via/config.h b/keyboards/keychron/v2/jis_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
index 68ca97e791b4..c6d2c5262b3e 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_jis_71(
+ [MAC_FN1] = LAYOUT_jis_71(
KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_jis_71(
+ [WIN_FN1] = LAYOUT_jis_71(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = { ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/jis_encoder/rules.mk b/keyboards/keychron/v2/jis_encoder/rules.mk
index 5091fe94148b..4bc1e23a57a0 100644
--- a/keyboards/keychron/v2/jis_encoder/rules.mk
+++ b/keyboards/keychron/v2/jis_encoder/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/readme.md b/keyboards/keychron/v2/readme.md
index 7836a457fbd9..03c36a064ea6 100644
--- a/keyboards/keychron/v2/readme.md
+++ b/keyboards/keychron/v2/readme.md
@@ -1,18 +1,30 @@
# Keychron V2
+![Keychron V2](https://i.imgur.com/mEZWo30.jpg)
+
A customizable 65% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V2
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V2 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v2-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/v2/ansi:default
+ make keychron/v2/ansi_encoder:default
+ make keychron/v2/iso:default
+ make keychron/v2/iso_encoder:default
+ make keychron/v2/jis:default
+ make keychron/v2/jis_encoder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/v2/ansi:default:flash
+ make keychron/v2/ansi_encoder:default:flash
+ make keychron/v2/iso:default:flash
+ make keychron/v2/iso_encoder:default:flash
+ make keychron/v2/jis:default:flash
+ make keychron/v2/jis_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v2/v2.c b/keyboards/keychron/v2/v2.c
index 7703c280df08..e903b1f70ae8 100644
--- a/keyboards/keychron/v2/v2.c
+++ b/keyboards/keychron/v2/v2.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,48 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v3/ansi/ansi.c b/keyboards/keychron/v3/ansi/ansi.c
index 6d56122c5249..fc6d20f0a875 100644
--- a/keyboards/keychron/v3/ansi/ansi.c
+++ b/keyboards/keychron/v3/ansi/ansi.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -143,11 +143,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v3/ansi/config.h b/keyboards/keychron/v3/ansi/config.h
index ff756dc04656..9e3a2704cf65 100644
--- a/keyboards/keychron/v3/ansi/config.h
+++ b/keyboards/keychron/v3/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,22 +16,10 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
-
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 39
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0x95, 0x95, 0x55, 0x95, 0x95, 0x55, 0x95, 0x95, 0x55, 0x95, 0x95, 0x55 }
-
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
diff --git a/keyboards/keychron/v3/ansi/info.json b/keyboards/keychron/v3/ansi/info.json
index 65720663291a..1c26ca175016 100644
--- a/keyboards/keychron/v3/ansi/info.json
+++ b/keyboards/keychron/v3/ansi/info.json
@@ -6,108 +6,124 @@
"usb": {
"vid": "0x3434",
"pid": "0x0330",
- "device_version": "1.0.0"
+ "device_version": "1.0.4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
- "LAYOUT_tkl_ansi": {
+ "LAYOUT_ansi_87": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v3/ansi/keymaps/default/keymap.c b/keyboards/keychron/v3/ansi/keymaps/default/keymap.c
index 4a986de4df04..314593c5e1f8 100644
--- a/keyboards/keychron/v3/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_ansi_87(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
+ [WIN_BASE] = LAYOUT_ansi_87(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v3/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v3/ansi/keymaps/keychron/keymap.c
index 9673bf32f15a..a61b0b9ca750 100644
--- a/keyboards/keychron/v3/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -27,7 +28,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
+ [MAC_BASE] = LAYOUT_ansi_87(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -35,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
+ [WIN_BASE] = LAYOUT_ansi_87(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -51,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -64,11 +65,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v3/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v3/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v3/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v3/ansi/keymaps/via/keymap.c b/keyboards/keychron/v3/ansi/keymaps/via/keymap.c
index 4a986de4df04..314593c5e1f8 100644
--- a/keyboards/keychron/v3/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_ansi_87(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_ansi(
+ [MAC_FN] = LAYOUT_ansi_87(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_ansi(
+ [WIN_BASE] = LAYOUT_ansi_87(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_ansi(
+ [WIN_FN] = LAYOUT_ansi_87(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v3/ansi/rules.mk b/keyboards/keychron/v3/ansi/rules.mk
index c37beecb9ec1..4bc1e23a57a0 100644
--- a/keyboards/keychron/v3/ansi/rules.mk
+++ b/keyboards/keychron/v3/ansi/rules.mk
@@ -1,17 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
index 5ed38074e3de..b513c15ed422 100644
--- a/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v3/ansi_encoder/config.h b/keyboards/keychron/v3/ansi_encoder/config.h
index 6310f181a08c..6ecb3a5cf9f9 100644
--- a/keyboards/keychron/v3/ansi_encoder/config.h
+++ b/keyboards/keychron/v3/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,6 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 39
diff --git a/keyboards/keychron/v3/ansi_encoder/info.json b/keyboards/keychron/v3/ansi_encoder/info.json
index cffbc851581c..e52a53c6a2df 100644
--- a/keyboards/keychron/v3/ansi_encoder/info.json
+++ b/keyboards/keychron/v3/ansi_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0331",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -19,101 +35,101 @@
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
- "LAYOUT_tkl_f13_ansi": {
+ "LAYOUT_ansi_88": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v3/ansi_encoder/keymaps/default/keymap.c
index 1d3b2a2d4651..ccaee932d967 100644
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_ansi_88(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_f13_ansi(
+ [MAC_FN] = LAYOUT_ansi_88(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_f13_ansi(
+ [WIN_BASE] = LAYOUT_ansi_88(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_f13_ansi(
+ [WIN_FN] = LAYOUT_ansi_88(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/keymap.c
index 1cae15b737c2..3a60cc8dda97 100644
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -27,7 +28,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_f13_ansi(
+ [MAC_BASE] = LAYOUT_ansi_88(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -35,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_f13_ansi(
+ [MAC_FN] = LAYOUT_ansi_88(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_f13_ansi(
+ [WIN_BASE] = LAYOUT_ansi_88(
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -51,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_f13_ansi(
+ [WIN_FN] = LAYOUT_ansi_88(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -73,11 +74,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v3/ansi_encoder/keymaps/via/keymap.c
index 1d3b2a2d4651..ccaee932d967 100644
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_ansi_88(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_f13_ansi(
+ [MAC_FN] = LAYOUT_ansi_88(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_f13_ansi(
+ [WIN_BASE] = LAYOUT_ansi_88(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_f13_ansi(
+ [WIN_FN] = LAYOUT_ansi_88(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/keymap.c b/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/keymap.c
deleted file mode 100644
index e32c683016fd..000000000000
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/keymap.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* Copyright 2021 @ 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 "vnmm.h"
-
-// clang-format off
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_PSCR, KC_SCRL, KC_PAUS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
- 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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, 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_MUTE, KC_PSCR, KC_SCRL, KC_PAUS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
- 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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_tkl_f13_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_MPRV, _______, KC_MNXT),
-
- [WIN_FN] = LAYOUT_tkl_f13_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_MPRV, _______, KC_MNXT),
-};
-
-#ifdef ENCODER_MAP_ENABLE
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
-};
-#endif // ENCODER_MAP_ENABLE
-
-#ifdef DIP_SWITCH_ENABLE
-
-bool dip_switch_update_user(uint8_t index, bool active) {
- if (index == 0) {
- default_layer_set(1UL << (active ? 1 : 0));
- }
- return false;
-}
-
-#endif // DIP_SWITCH_ENABLE
\ No newline at end of file
diff --git a/keyboards/keychron/v3/ansi_encoder/rules.mk b/keyboards/keychron/v3/ansi_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v3/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v3/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v3/config.h b/keyboards/keychron/v3/config.h
index 87ab3c866753..10f2c6cebb2a 100644
--- a/keyboards/keychron/v3/config.h
+++ b/keyboards/keychron/v3/config.h
@@ -16,8 +16,8 @@
#pragma once
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
@@ -33,9 +33,14 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0x98, 0x98, 0x44, 0x98, 0x98, 0x44, 0x98, 0x98, 0x44, 0x98, 0x98, 0x44 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
+#define OS_SWITCH_REVERSE
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -79,9 +84,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -96,5 +105,10 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
diff --git a/keyboards/keychron/v3/halconf.h b/keyboards/keychron/v3/halconf.h
index 41bddcb2799b..a3b80ff51749 100644
--- a/keyboards/keychron/v3/halconf.h
+++ b/keyboards/keychron/v3/halconf.h
@@ -14,8 +14,9 @@
* along with this program. If not, see .
*/
-#pragma once
-
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/v3/iso/config.h b/keyboards/keychron/v3/iso/config.h
index ca0a03a71023..2f7f39ad9517 100644
--- a/keyboards/keychron/v3/iso/config.h
+++ b/keyboards/keychron/v3/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,6 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
-
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 40
diff --git a/keyboards/keychron/v3/iso/info.json b/keyboards/keychron/v3/iso/info.json
index 18c73a8f5821..ca24e67e4a65 100644
--- a/keyboards/keychron/v3/iso/info.json
+++ b/keyboards/keychron/v3/iso/info.json
@@ -6,109 +6,125 @@
"usb": {
"vid": "0x3434",
"pid": "0x0332",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
- "LAYOUT_tkl_iso": {
+ "LAYOUT_iso_88": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v3/iso/iso.c b/keyboards/keychron/v3/iso/iso.c
index 95b324d11b2c..d648ecf46e49 100644
--- a/keyboards/keychron/v3/iso/iso.c
+++ b/keyboards/keychron/v3/iso/iso.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -144,11 +144,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v3/iso/keymaps/default/keymap.c b/keyboards/keychron/v3/iso/keymaps/default/keymap.c
index e50315c1fd60..0b0255078e15 100644
--- a/keyboards/keychron/v3/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -27,15 +27,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_iso_88(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_iso(
+ [MAC_FN] = LAYOUT_iso_88(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_iso(
+ [WIN_BASE] = LAYOUT_iso_88(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_iso(
+ [WIN_FN] = LAYOUT_iso_88(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v3/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v3/iso/keymaps/keychron/keymap.c
index b1e5b98bfa8d..8a4d678d33e4 100644
--- a/keyboards/keychron/v3/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-
+#include "keychron_ft_common.h"
enum layers{
MAC_BASE,
@@ -26,7 +26,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_iso(
+ [MAC_BASE] = LAYOUT_iso_88(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_iso(
+ [MAC_FN] = LAYOUT_iso_88(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_iso(
+ [WIN_BASE] = LAYOUT_iso_88(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_iso(
+ [WIN_FN] = LAYOUT_iso_88(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,11 +61,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v3/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v3/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v3/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v3/iso/keymaps/via/keymap.c b/keyboards/keychron/v3/iso/keymaps/via/keymap.c
index e50315c1fd60..0b0255078e15 100644
--- a/keyboards/keychron/v3/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -27,15 +27,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_iso_88(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_iso(
+ [MAC_FN] = LAYOUT_iso_88(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_iso(
+ [WIN_BASE] = LAYOUT_iso_88(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_iso(
+ [WIN_FN] = LAYOUT_iso_88(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v3/iso/rules.mk b/keyboards/keychron/v3/iso/rules.mk
index 2eadfbded904..9077e5e2e345 100644
--- a/keyboards/keychron/v3/iso/rules.mk
+++ b/keyboards/keychron/v3/iso/rules.mk
@@ -1,17 +1,10 @@
# Build Options
-# change yes to no to disable
+# 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 = yes # 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 = yes
-RGB_MATRIX_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
+
+VPATH += keyboards/keychron/common
diff --git a/keyboards/keychron/v3/iso_encoder/config.h b/keyboards/keychron/v3/iso_encoder/config.h
index 7033a2093aa4..7c9eb0a32e67 100644
--- a/keyboards/keychron/v3/iso_encoder/config.h
+++ b/keyboards/keychron/v3/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,12 +16,6 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 40
diff --git a/keyboards/keychron/v3/iso_encoder/info.json b/keyboards/keychron/v3/iso_encoder/info.json
index 60c56a6b87bb..6e48497ee6df 100644
--- a/keyboards/keychron/v3/iso_encoder/info.json
+++ b/keyboards/keychron/v3/iso_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0333",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -19,102 +35,102 @@
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
- "LAYOUT_tkl_f13_iso": {
+ "LAYOUT_iso_89": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v3/iso_encoder/iso_encoder.c b/keyboards/keychron/v3/iso_encoder/iso_encoder.c
index 6231172fde56..a213a7637aee 100644
--- a/keyboards/keychron/v3/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v3/iso_encoder/iso_encoder.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v3/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v3/iso_encoder/keymaps/default/keymap.c
index 9d9286552822..0a99c4c2880b 100644
--- a/keyboards/keychron/v3/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_f13_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_iso_89(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_f13_iso(
+ [MAC_FN] = LAYOUT_iso_89(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_f13_iso(
+ [WIN_BASE] = LAYOUT_iso_89(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_f13_iso(
+ [WIN_FN] = LAYOUT_iso_89(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v3/iso_encoder/keymaps/keychron/keymap.c
index 3f28e23e31d7..03715140eeb3 100644
--- a/keyboards/keychron/v3/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -27,7 +28,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_f13_iso(
+ [MAC_BASE] = LAYOUT_iso_89(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -35,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, KC_ROPTN,MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_f13_iso(
+ [MAC_FN] = LAYOUT_iso_89(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_f13_iso(
+ [WIN_BASE] = LAYOUT_iso_89(
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -51,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_f13_iso(
+ [WIN_FN] = LAYOUT_iso_89(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -75,11 +76,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v3/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v3/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v3/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v3/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v3/iso_encoder/keymaps/via/keymap.c
index 9d9286552822..0a99c4c2880b 100644
--- a/keyboards/keychron/v3/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_f13_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_iso_89(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_f13_iso(
+ [MAC_FN] = LAYOUT_iso_89(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_tkl_f13_iso(
+ [WIN_BASE] = LAYOUT_iso_89(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_f13_iso(
+ [WIN_FN] = LAYOUT_iso_89(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/iso_encoder/rules.mk b/keyboards/keychron/v3/iso_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v3/iso_encoder/rules.mk
+++ b/keyboards/keychron/v3/iso_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v3/jis/config.h b/keyboards/keychron/v3/jis/config.h
index f19e7538c29e..ae247da3ee89 100644
--- a/keyboards/keychron/v3/jis/config.h
+++ b/keyboards/keychron/v3/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,23 +16,10 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
-
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 43
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44 }
-
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
-
diff --git a/keyboards/keychron/v3/jis/info.json b/keyboards/keychron/v3/jis/info.json
index 9b97707b2f7d..3088496b8b2a 100644
--- a/keyboards/keychron/v3/jis/info.json
+++ b/keyboards/keychron/v3/jis/info.json
@@ -6,112 +6,128 @@
"usb": {
"vid": "0x3434",
"pid": "0x0334",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_jis_91": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [0, 13], "x": 13, "y": 1.25},
- {"matrix": [1, 13], "x": 14, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[0,13], "x":13, "y":1.25},
+ {"matrix":[1,13], "x":14, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25},
- {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 3.5, "y": 5.25},
- {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
- {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
- {"matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.75, "y": 5.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.75, "y":5.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v3/jis/jis.c b/keyboards/keychron/v3/jis/jis.c
index 7e05aa406374..0066c5222ed0 100644
--- a/keyboards/keychron/v3/jis/jis.c
+++ b/keyboards/keychron/v3/jis/jis.c
@@ -19,21 +19,21 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, I_1, G_1, H_1}, // ESC
- {0, I_2, G_2, H_2}, // F1
- {0, I_3, G_3, H_3}, // F2
- {0, I_4, G_4, H_4}, // F3
- {0, I_5, G_5, H_5}, // F4
- {0, I_6, G_6, H_6}, // F5
- {0, I_7, G_7, H_7}, // F6
- {0, I_8, G_8, H_8}, // F7
- {0, I_9, G_9, H_9}, // F8
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, I_1, G_1, H_1}, // ESC
+ {0, I_2, G_2, H_2}, // F1
+ {0, I_3, G_3, H_3}, // F2
+ {0, I_4, G_4, H_4}, // F3
+ {0, I_5, G_5, H_5}, // F4
+ {0, I_6, G_6, H_6}, // F5
+ {0, I_7, G_7, H_7}, // F6
+ {0, I_8, G_8, H_8}, // F7
+ {0, I_9, G_9, H_9}, // F8
{0, I_10, G_10, H_10}, // F9
{0, I_11, G_11, H_11}, // F10
{0, I_12, G_12, H_12}, // F11
@@ -42,15 +42,15 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, I_16, G_16, H_16}, // Cortana
{1, I_15, G_15, H_15}, // Light
- {0, C_1, A_1, B_1}, // `~
- {0, C_2, A_2, B_2}, // 1!
- {0, C_3, A_3, B_3}, // 2@
- {0, C_4, A_4, B_4}, // 3#
- {0, C_5, A_5, B_5}, // 4$
- {0, C_6, A_6, B_6}, // 5%
- {0, C_7, A_7, B_7}, // 6^
- {0, C_8, A_8, B_8}, // 7&
- {0, C_9, A_9, B_9}, // 8*
+ {0, C_1, A_1, B_1}, // `~
+ {0, C_2, A_2, B_2}, // 1!
+ {0, C_3, A_3, B_3}, // 2@
+ {0, C_4, A_4, B_4}, // 3#
+ {0, C_5, A_5, B_5}, // 4$
+ {0, C_6, A_6, B_6}, // 5%
+ {0, C_7, A_7, B_7}, // 6^
+ {0, C_8, A_8, B_8}, // 7&
+ {0, C_9, A_9, B_9}, // 8*
{0, C_10, A_10, B_10}, // 9()
{0, C_11, A_11, B_11}, // 0)
{0, C_12, A_12, B_12}, // -_
@@ -61,15 +61,15 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, C_16, A_16, B_16}, // Home
{1, I_16, G_16, H_16}, // Page Up
- {0, F_1, D_1, E_1}, // tab
- {0, F_2, D_2, E_2}, // Q
- {0, F_3, D_3, E_3}, // W
- {0, F_4, D_4, E_4}, // E
- {0, F_5, D_5, E_5}, // R
- {0, F_6, D_6, E_6}, // T
- {0, F_7, D_7, E_7}, // Y
- {0, F_8, D_8, E_8}, // U
- {0, F_9, D_9, E_9}, // I
+ {0, F_1, D_1, E_1}, // tab
+ {0, F_2, D_2, E_2}, // Q
+ {0, F_3, D_3, E_3}, // W
+ {0, F_4, D_4, E_4}, // E
+ {0, F_5, D_5, E_5}, // R
+ {0, F_6, D_6, E_6}, // T
+ {0, F_7, D_7, E_7}, // Y
+ {0, F_8, D_8, E_8}, // U
+ {0, F_9, D_9, E_9}, // I
{0, F_10, D_10, E_10}, // O
{0, F_11, D_11, E_11}, // P
{0, F_12, D_12, E_12}, // [{
@@ -78,29 +78,29 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_16, D_16, E_16}, // End
{1, I_13, G_13, H_13}, // Page Down
- {1, I_1, G_1, H_1}, // Cpas
- {1, I_2, G_2, H_2}, // A
- {1, I_3, G_3, H_3}, // S
- {1, I_4, G_4, H_4}, // D
- {1, I_5, G_5, H_5}, // F
- {1, I_6, G_6, H_6}, // G
- {1, I_7, G_7, H_7}, // H
- {1, I_8, G_8, H_8}, // J
- {1, I_9, G_9, H_9}, // K
+ {1, I_1, G_1, H_1}, // Cpas
+ {1, I_2, G_2, H_2}, // A
+ {1, I_3, G_3, H_3}, // S
+ {1, I_4, G_4, H_4}, // D
+ {1, I_5, G_5, H_5}, // F
+ {1, I_6, G_6, H_6}, // G
+ {1, I_7, G_7, H_7}, // H
+ {1, I_8, G_8, H_8}, // J
+ {1, I_9, G_9, H_9}, // K
{1, I_10, G_10, H_10}, // L
{1, I_11, G_11, H_11}, // ;
{1, I_12, G_12, H_12}, // :
{1, I_14, G_14, H_14}, // #~
{0, F_14, D_14, E_14}, // Enter
- {1, C_1, A_1, B_1}, // LShift
- {1, C_3, A_3, B_3}, // Z
- {1, C_4, A_4, B_4}, // X
- {1, C_5, A_5, B_5}, // C
- {1, C_6, A_6, B_6}, // V
- {1, C_7, A_7, B_7}, // B
- {1, C_8, A_8, B_8}, // N
- {1, C_9, A_9, B_9}, // M
+ {1, C_1, A_1, B_1}, // LShift
+ {1, C_3, A_3, B_3}, // Z
+ {1, C_4, A_4, B_4}, // X
+ {1, C_5, A_5, B_5}, // C
+ {1, C_6, A_6, B_6}, // V
+ {1, C_7, A_7, B_7}, // B
+ {1, C_8, A_8, B_8}, // N
+ {1, C_9, A_9, B_9}, // M
{1, C_10, A_10, B_10}, // ,<
{1, C_11, A_11, B_11}, // .>
{1, C_12, A_12, B_12}, // /?
@@ -108,11 +108,11 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_14, A_14, B_14}, // RShift
{1, C_16, A_16, B_16}, // Up
- {1, F_1, D_1, E_1}, // LCtrl
- {1, F_2, D_2, E_2}, // LWin
- {1, F_3, D_3, E_3}, // LAlt
- {1, F_4, D_4, E_4}, // NUm
- {1, F_7, D_7, E_7}, // Space
+ {1, F_1, D_1, E_1}, // LCtrl
+ {1, F_2, D_2, E_2}, // LWin
+ {1, F_3, D_3, E_3}, // LAlt
+ {1, F_4, D_4, E_4}, // NUm
+ {1, F_7, D_7, E_7}, // Space
{1, F_10, D_10, E_10}, // Jap
{1, F_11, D_11, E_11}, // RAlt
{1, F_12, D_12, E_12}, // RWin
@@ -147,11 +147,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v3/jis/keymaps/default/keymap.c b/keyboards/keychron/v3/jis/keymaps/default/keymap.c
index 7fa980bb0864..c56c21938ec4 100644
--- a/keyboards/keychron/v3/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_91(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
diff --git a/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
index 38c93f505acf..925988e42f25 100644
--- a/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -64,11 +65,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v3/jis/keymaps/keychron/rules.mk b/keyboards/keychron/v3/jis/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v3/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v3/jis/keymaps/via/keymap.c b/keyboards/keychron/v3/jis/keymaps/via/keymap.c
index 7fa980bb0864..c56c21938ec4 100644
--- a/keyboards/keychron/v3/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_91(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
diff --git a/keyboards/keychron/v3/jis/rules.mk b/keyboards/keychron/v3/jis/rules.mk
index c37beecb9ec1..9077e5e2e345 100644
--- a/keyboards/keychron/v3/jis/rules.mk
+++ b/keyboards/keychron/v3/jis/rules.mk
@@ -1,17 +1,10 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
+
+VPATH += keyboards/keychron/common
diff --git a/keyboards/keychron/v3/jis_encoder/config.h b/keyboards/keychron/v3/jis_encoder/config.h
index 5f67d6a870d8..59f888a4c3ab 100644
--- a/keyboards/keychron/v3/jis_encoder/config.h
+++ b/keyboards/keychron/v3/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,20 +16,11 @@
#pragma once
-/* key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 49
#define DRIVER_2_LED_TOTAL 43
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-#define CKLED2001_CURRENT_TUNE \
- { 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44 }
-
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v3/jis_encoder/info.json b/keyboards/keychron/v3/jis_encoder/info.json
index 585cf4519e01..37444f7cccc5 100644
--- a/keyboards/keychron/v3/jis_encoder/info.json
+++ b/keyboards/keychron/v3/jis_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0335",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -21,103 +37,103 @@
"layouts": {
"LAYOUT_jis_92": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [0, 13], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [3, 14], "x": 17.25, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25},
- {"matrix": [5, 5], "x": 14, "y": 1.25},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [3, 15], "x": 17.25, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[5, 5], "x":14, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [3, 12], "x": 17.25, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 12], "x": 12.25, "y": 4.25},
- {"matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25},
- {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 3], "x": 3.5, "y": 5.25},
- {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
- {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
- {"matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.75, "y": 5.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [4, 14], "x": 17.25, "y": 5.25}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.75, "y":5.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v3/jis_encoder/jis_encoder.c b/keyboards/keychron/v3/jis_encoder/jis_encoder.c
index 41b1c1e5af50..b9a3c5eb92f9 100644
--- a/keyboards/keychron/v3/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v3/jis_encoder/jis_encoder.c
@@ -22,18 +22,18 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, I_1, G_1, H_1}, // ESC
- {0, I_2, G_2, H_2}, // F1
- {0, I_3, G_3, H_3}, // F2
- {0, I_4, G_4, H_4}, // F3
- {0, I_5, G_5, H_5}, // F4
- {0, I_6, G_6, H_6}, // F5
- {0, I_7, G_7, H_7}, // F6
- {0, I_8, G_8, H_8}, // F7
- {0, I_9, G_9, H_9}, // F8
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, I_1, G_1, H_1}, // ESC
+ {0, I_2, G_2, H_2}, // F1
+ {0, I_3, G_3, H_3}, // F2
+ {0, I_4, G_4, H_4}, // F3
+ {0, I_5, G_5, H_5}, // F4
+ {0, I_6, G_6, H_6}, // F5
+ {0, I_7, G_7, H_7}, // F6
+ {0, I_8, G_8, H_8}, // F7
+ {0, I_9, G_9, H_9}, // F8
{0, I_10, G_10, H_10}, // F9
{0, I_11, G_11, H_11}, // F10
{0, I_12, G_12, H_12}, // F11
@@ -43,34 +43,34 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, I_16, G_16, H_16}, // Cortana
{1, I_15, G_15, H_15}, // Light
- {0, C_1, A_1, B_1}, // `~
- {0, C_2, A_2, B_2}, // 1!
- {0, C_3, A_3, B_3}, // 2@
- {0, C_4, A_4, B_4}, // 3#
- {0, C_5, A_5, B_5}, // 4$
- {0, C_6, A_6, B_6}, // 5%
- {0, C_7, A_7, B_7}, // 6^
- {0, C_8, A_8, B_8}, // 7&
- {0, C_9, A_9, B_9}, // 8*
+ {0, C_1, A_1, B_1}, // `~
+ {0, C_2, A_2, B_2}, // 1!
+ {0, C_3, A_3, B_3}, // 2@
+ {0, C_4, A_4, B_4}, // 3#
+ {0, C_5, A_5, B_5}, // 4$
+ {0, C_6, A_6, B_6}, // 5%
+ {0, C_7, A_7, B_7}, // 6^
+ {0, C_8, A_8, B_8}, // 7&
+ {0, C_9, A_9, B_9}, // 8*
{0, C_10, A_10, B_10}, // 9()
{0, C_11, A_11, B_11}, // 0)
{0, C_12, A_12, B_12}, // -_
{0, C_13, A_13, B_13}, // =+
{0, C_14, A_14, B_14}, // |
- {1, F_6, D_6, E_6}, // Backspace
+ {1, F_6, D_6, E_6}, // Backspace
{0, C_15, A_15, B_15}, // Ins
{0, C_16, A_16, B_16}, // Home
{1, I_16, G_16, H_16}, // Page Up
- {0, F_1, D_1, E_1}, // tab
- {0, F_2, D_2, E_2}, // Q
- {0, F_3, D_3, E_3}, // W
- {0, F_4, D_4, E_4}, // E
- {0, F_5, D_5, E_5}, // R
- {0, F_6, D_6, E_6}, // T
- {0, F_7, D_7, E_7}, // Y
- {0, F_8, D_8, E_8}, // U
- {0, F_9, D_9, E_9}, // I
+ {0, F_1, D_1, E_1}, // tab
+ {0, F_2, D_2, E_2}, // Q
+ {0, F_3, D_3, E_3}, // W
+ {0, F_4, D_4, E_4}, // E
+ {0, F_5, D_5, E_5}, // R
+ {0, F_6, D_6, E_6}, // T
+ {0, F_7, D_7, E_7}, // Y
+ {0, F_8, D_8, E_8}, // U
+ {0, F_9, D_9, E_9}, // I
{0, F_10, D_10, E_10}, // O
{0, F_11, D_11, E_11}, // P
{0, F_12, D_12, E_12}, // [{
@@ -79,29 +79,29 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_16, D_16, E_16}, // End
{1, I_13, G_13, H_13}, // Page Down
- {1, I_1, G_1, H_1}, // Cpas
- {1, I_2, G_2, H_2}, // A
- {1, I_3, G_3, H_3}, // S
- {1, I_4, G_4, H_4}, // D
- {1, I_5, G_5, H_5}, // F
- {1, I_6, G_6, H_6}, // G
- {1, I_7, G_7, H_7}, // H
- {1, I_8, G_8, H_8}, // J
- {1, I_9, G_9, H_9}, // K
+ {1, I_1, G_1, H_1}, // Cpas
+ {1, I_2, G_2, H_2}, // A
+ {1, I_3, G_3, H_3}, // S
+ {1, I_4, G_4, H_4}, // D
+ {1, I_5, G_5, H_5}, // F
+ {1, I_6, G_6, H_6}, // G
+ {1, I_7, G_7, H_7}, // H
+ {1, I_8, G_8, H_8}, // J
+ {1, I_9, G_9, H_9}, // K
{1, I_10, G_10, H_10}, // L
{1, I_11, G_11, H_11}, // ;
{1, I_12, G_12, H_12}, // :
{1, I_14, G_14, H_14}, // #~
{0, F_14, D_14, E_14}, // Enter
- {1, C_1, A_1, B_1}, // LShift
- {1, C_3, A_3, B_3}, // Z
- {1, C_4, A_4, B_4}, // X
- {1, C_5, A_5, B_5}, // C
- {1, C_6, A_6, B_6}, // V
- {1, C_7, A_7, B_7}, // B
- {1, C_8, A_8, B_8}, // N
- {1, C_9, A_9, B_9}, // M
+ {1, C_1, A_1, B_1}, // LShift
+ {1, C_3, A_3, B_3}, // Z
+ {1, C_4, A_4, B_4}, // X
+ {1, C_5, A_5, B_5}, // C
+ {1, C_6, A_6, B_6}, // V
+ {1, C_7, A_7, B_7}, // B
+ {1, C_8, A_8, B_8}, // N
+ {1, C_9, A_9, B_9}, // M
{1, C_10, A_10, B_10}, // ,<
{1, C_11, A_11, B_11}, // .>
{1, C_12, A_12, B_12}, // /?
@@ -109,11 +109,11 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_14, A_14, B_14}, // RShift
{1, C_16, A_16, B_16}, // Up
- {1, F_1, D_1, E_1}, // LCtrl
- {1, F_2, D_2, E_2}, // LWin
- {1, F_3, D_3, E_3}, // LAlt
- {1, F_4, D_4, E_4}, // NUm
- {1, F_7, D_7, E_7}, // Space
+ {1, F_1, D_1, E_1}, // LCtrl
+ {1, F_2, D_2, E_2}, // LWin
+ {1, F_3, D_3, E_3}, // LAlt
+ {1, F_4, D_4, E_4}, // NUm
+ {1, F_7, D_7, E_7}, // Space
{1, F_10, D_10, E_10}, // Jap
{1, F_11, D_11, E_11}, // RAlt
{1, F_12, D_12, E_12}, // RWin
@@ -148,12 +148,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
index 18c17da4fd4b..f92035cc32f6 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_92(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_92(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_92(
- _______, 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,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
index 9b69c9443c81..a3b15bc99fd4 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -63,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -75,11 +76,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
index 18c17da4fd4b..f92035cc32f6 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_92(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_92(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_92(
- _______, 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,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/jis_encoder/rules.mk b/keyboards/keychron/v3/jis_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v3/jis_encoder/rules.mk
+++ b/keyboards/keychron/v3/jis_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v3/matrix.c b/keyboards/keychron/v3/matrix.c
deleted file mode 100644
index 44a1676afa99..000000000000
--- a/keyboards/keychron/v3/matrix.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/* Copyright 2021 @ 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 "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN A7
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN B1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN B0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-// At 3.6V input, three nops (37.5ns) should be enough for all signals
-#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
-#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
-
-static void shiftOut(uint8_t dataOut) {
- ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < 8; i++) {
- compiler_barrier();
- if (dataOut & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- }
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static void shiftOut_single(uint8_t data) {
- ATOMIC_BLOCK_FORCEON {
- compiler_barrier();
- if (data & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == 8) {
- shiftOut_single(0x00);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- shiftOut_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (x == 8)
- // unselect shift Register
- shiftOut(0xFF);
- }
- }
-}
-
-static void matrix_init_pins(void) {
- setPinOutput(DATA_PIN);
- setPinOutput(CLOCK_PIN);
- setPinOutput(LATCH_PIN);
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- if (col_pins[x] != NO_PIN) {
- setPinOutput(col_pins[x]);
- }
- }
-#endif
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- matrix_output_select_delay();
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/v3/readme.md b/keyboards/keychron/v3/readme.md
index 658118882489..5e188b0f2fdb 100644
--- a/keyboards/keychron/v3/readme.md
+++ b/keyboards/keychron/v3/readme.md
@@ -1,18 +1,30 @@
# Keychron V3
+![Keychron V3](https://i.imgur.com/AIrmjVk.jpg)
+
A customizable 80% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V3
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V3 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v3-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/v3/ansi:default
+ make keychron/v3/ansi_encoder:default
+ make keychron/v3/iso:default
+ make keychron/v3/iso_encoder:default
+ make keychron/v3/jis:default
+ make keychron/v3/jis_encoder:default
Flashing example for this keyboard:
make keychron/v3/ansi:default:flash
+ make keychron/v3/ansi_encoder:default:flash
+ make keychron/v3/iso:default:flash
+ make keychron/v3/iso_encoder:default:flash
+ make keychron/v3/jis:default:flash
+ make keychron/v3/jis_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v3/v3.c b/keyboards/keychron/v3/v3.c
index 17ea8f0e9790..2d9d7921f0bc 100644
--- a/keyboards/keychron/v3/v3.c
+++ b/keyboards/keychron/v3/v3.c
@@ -30,59 +30,17 @@ const matrix_row_t matrix_mask[] = {
// clang-format on
#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 ? 0 : 2));
+# if defined(OS_SWITCH_REVERSE)
+ default_layer_set(1UL << (!active ? 2 : 0));
+# else
+ default_layer_set(1UL << (active ? 2 : 0));
+# endif
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v4/ansi/ansi.c b/keyboards/keychron/v4/ansi/ansi.c
index 44056459f96f..8d0b6c35b11c 100644
--- a/keyboards/keychron/v4/ansi/ansi.c
+++ b/keyboards/keychron/v4/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -119,7 +119,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 4, 1,
}
};
diff --git a/keyboards/keychron/v4/ansi/config.h b/keyboards/keychron/v4/ansi/config.h
index 3cbec7238732..d9a9892279ec 100644
--- a/keyboards/keychron/v4/ansi/config.h
+++ b/keyboards/keychron/v4/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/v4/ansi/info.json b/keyboards/keychron/v4/ansi/info.json
index 812aec53a71a..f5a82bafb667 100644
--- a/keyboards/keychron/v4/ansi/info.json
+++ b/keyboards/keychron/v4/ansi/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0340",
- "device_version": "1.0.0"
+ "device_version": "1.0.4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -18,78 +29,74 @@
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
- "layout_aliases": {
- "LAYOUT_ansi_61": "LAYOUT_60_ansi"
- },
- "community_layouts": ["60_ansi"],
"layouts": {
- "LAYOUT_60_ansi": {
+ "LAYOUT_ansi_61": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
- {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
- {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4, "w":1.25},
+ {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
+ {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
+ {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
]
}
}
diff --git a/keyboards/keychron/v4/ansi/keymaps/default/keymap.c b/keyboards/keychron/v4/ansi/keymaps/default/keymap.c
index b23029bee48a..1e0084850d75 100644
--- a/keyboards/keychron/v4/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v4/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,44 +21,44 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_60_ansi(
+ [MAC_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
- [WIN_BASE] = LAYOUT_60_ansi(
+ [WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_60_ansi(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_60_ansi(
+ [WIN_FN1] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_60_ansi(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v4/ansi/keymaps/keychron/config.h b/keyboards/keychron/v4/ansi/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v4/ansi/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v4/ansi/keymaps/keychron/keymap.c
index 50a5fd4267eb..261c78ddbc9b 100644
--- a/keyboards/keychron/v4/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v4/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,47 +16,48 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_60_ansi(
+ [MAC_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
- [WIN_BASE] = LAYOUT_60_ansi(
+ [WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_60_ansi(
+ [MAC_FN1] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_60_ansi(
+ [WIN_FN1] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_60_ansi(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v4/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v4/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v4/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v4/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v4/ansi/keymaps/via/config.h b/keyboards/keychron/v4/ansi/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v4/ansi/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/ansi/keymaps/via/keymap.c b/keyboards/keychron/v4/ansi/keymaps/via/keymap.c
index b23029bee48a..1e0084850d75 100644
--- a/keyboards/keychron/v4/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v4/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,44 +21,44 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_60_ansi(
+ [MAC_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
- [WIN_BASE] = LAYOUT_60_ansi(
+ [WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_60_ansi(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_ansi_61(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_60_ansi(
+ [WIN_FN1] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_60_ansi(
+ [_FN2] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v4/ansi/rules.mk b/keyboards/keychron/v4/ansi/rules.mk
index 46f5aef144b4..4bc1e23a57a0 100644
--- a/keyboards/keychron/v4/ansi/rules.mk
+++ b/keyboards/keychron/v4/ansi/rules.mk
@@ -1,17 +1,8 @@
# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v4/config.h b/keyboards/keychron/v4/config.h
index 8d92219f205c..9e7d9f29d14f 100644
--- a/keyboards/keychron/v4/config.h
+++ b/keyboards/keychron/v4/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* Copyright 2 @ 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
@@ -25,13 +25,15 @@
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
-#define I2C1_TIMINGR_SCLL 51U
+#define I2C1_TIMINGR_SCLL 30U
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xD0, 0xD0, 0x60, 0xD0, 0xD0, 0x60, 0xD0, 0xD0, 0x60, 0xD0, 0xD0, 0x60 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -39,8 +41,6 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -77,9 +77,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -94,5 +98,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/v4/iso/config.h b/keyboards/keychron/v4/iso/config.h
index db18729155d4..d20264e0b749 100644
--- a/keyboards/keychron/v4/iso/config.h
+++ b/keyboards/keychron/v4/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/v4/iso/info.json b/keyboards/keychron/v4/iso/info.json
index 7d4a8eae1d29..4a22280fd99e 100644
--- a/keyboards/keychron/v4/iso/info.json
+++ b/keyboards/keychron/v4/iso/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0342",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -18,79 +29,75 @@
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
- "layout_aliases": {
- "LAYOUT_iso_62": "LAYOUT_60_iso"
- },
- "community_layouts": ["60_iso"],
"layouts": {
- "LAYOUT_60_iso": {
+ "LAYOUT_iso_62": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2},
- {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2},
+ {"matrix":[1,13], "x":13.75, "y":1, "w":1.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix":[3, 0], "x":0, "y":3, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3.25},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
- {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
- {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4,10], "x":10, "y":4, "w":1.25},
+ {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
+ {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
+ {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
]
}
}
diff --git a/keyboards/keychron/v4/iso/iso.c b/keyboards/keychron/v4/iso/iso.c
index 8f86aa04980f..fb7ff251e42a 100644
--- a/keyboards/keychron/v4/iso/iso.c
+++ b/keyboards/keychron/v4/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -120,7 +120,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 4, 4, 1,
}
};
diff --git a/keyboards/keychron/v4/iso/keymaps/default/keymap.c b/keyboards/keychron/v4/iso/keymaps/default/keymap.c
index 1569e513cf80..1e8156581556 100644
--- a/keyboards/keychron/v4/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v4/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,44 +21,44 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_60_iso(
+ [MAC_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
- [WIN_BASE] = LAYOUT_60_iso(
+ [WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_60_iso(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_iso_62(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_60_iso(
+ [WIN_FN1] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_60_iso(
+ [_FN2] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v4/iso/keymaps/keychron/config.h b/keyboards/keychron/v4/iso/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v4/iso/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v4/iso/keymaps/keychron/keymap.c
index 0bc8e995dc68..4cf623c73da6 100644
--- a/keyboards/keychron/v4/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v4/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,47 +16,48 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_60_iso(
+ [MAC_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
- [WIN_BASE] = LAYOUT_60_iso(
+ [WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_60_iso(
+ [MAC_FN1] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_60_iso(
+ [WIN_FN1] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_60_iso(
+ [_FN2] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v4/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v4/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v4/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v4/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v4/iso/keymaps/via/config.h b/keyboards/keychron/v4/iso/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v4/iso/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/iso/keymaps/via/keymap.c b/keyboards/keychron/v4/iso/keymaps/via/keymap.c
index 1569e513cf80..1e8156581556 100644
--- a/keyboards/keychron/v4/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v4/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,44 +21,44 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_60_iso(
+ [MAC_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
- [WIN_BASE] = LAYOUT_60_iso(
+ [WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
- [_FN1] = LAYOUT_60_iso(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
+ [MAC_FN1] = LAYOUT_iso_62(
+ 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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_60_iso(
+ [WIN_FN1] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_60_iso(
+ [_FN2] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v4/iso/rules.mk b/keyboards/keychron/v4/iso/rules.mk
index 46f5aef144b4..4bc1e23a57a0 100644
--- a/keyboards/keychron/v4/iso/rules.mk
+++ b/keyboards/keychron/v4/iso/rules.mk
@@ -1,17 +1,8 @@
# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v4/readme.md b/keyboards/keychron/v4/readme.md
index 62846a5e70a0..db55f85f4658 100644
--- a/keyboards/keychron/v4/readme.md
+++ b/keyboards/keychron/v4/readme.md
@@ -1,10 +1,12 @@
# Keychron V4
+![Keychron V4](https://i.imgur.com/I8XYxlb.jpg)
+
A customizable 60% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V4
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V4 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v4-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/keychron/v4/v4.c b/keyboards/keychron/v4/v4.c
index 402eadf2d77a..1c40e430ea7c 100644
--- a/keyboards/keychron/v4/v4.c
+++ b/keyboards/keychron/v4/v4.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,49 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v5/ansi/ansi.c b/keyboards/keychron/v5/ansi/ansi.c
index f4525dc3dc14..8791ad4fa845 100644
--- a/keyboards/keychron/v5/ansi/ansi.c
+++ b/keyboards/keychron/v5/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -83,6 +83,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -100,7 +101,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
- {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -118,6 +118,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -131,7 +132,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
- {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -141,28 +141,28 @@ led_config_t g_led_config = {
// Key Matrix to LED Index
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
{ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
- { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 70, 51, 52, 53 },
- { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 36, 67, 68, 69 },
+ { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 54, 51, 52, 53 },
+ { 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 18, 67, 68, 69, 70 },
{ 71, __, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, __, 82, 83, 84, 85, 86 },
- { 87, 88, 89, __, __, 99, 90, __, __, __, 91, 92, 93, 94, 95, 96, 97, 98 }
+ { 88, 89, 90, __, __, 87, 91, __, __, __, 92, 93, 94, 95, 96, 97, 98, 99 }
},
{
// LED Index to Physical Position
{0,0}, {12,0}, {24,0}, {36,0}, {48,0}, {60,0}, {72,0}, {84,0}, {97,0}, {109,0}, {121,0}, {133,0}, {145,0}, {157,0}, {169,0}, {188,0}, {200,0}, {212,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {84,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38}, {224,32},
- {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26}, {224,32},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38},
+ {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
diff --git a/keyboards/keychron/v5/ansi/config.h b/keyboards/keychron/v5/ansi/config.h
index 7985d4390156..7e3a2e9911ac 100644
--- a/keyboards/keychron/v5/ansi/config.h
+++ b/keyboards/keychron/v5/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -22,4 +22,7 @@
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 54
+#define CAPS_LOCK_LED_INDEX 55
+
+/* Enable num-lock LED */
+#define NUM_LOCK_LED_INDEX 33
diff --git a/keyboards/keychron/v5/ansi/info.json b/keyboards/keychron/v5/ansi/info.json
index bc5eec2ca55e..a9a6df9a8223 100644
--- a/keyboards/keychron/v5/ansi/info.json
+++ b/keyboards/keychron/v5/ansi/info.json
@@ -6,121 +6,137 @@
"usb": {
"vid": "0x3434",
"pid": "0x0350",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_100": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [0, 14], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.5, "y": 0},
- {"matrix": [0, 16], "x": 16.5, "y": 0},
- {"matrix": [0, 17], "x": 17.5, "y": 0},
- {"matrix": [3, 12], "x": 18.5, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[0,14], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.5, "y":0},
+ {"matrix":[0,16], "x":16.5, "y":0},
+ {"matrix":[0,17], "x":17.5, "y":0},
+ {"matrix":[3,12], "x":18.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.5, "y": 1.25},
- {"matrix": [1, 16], "x": 16.5, "y": 1.25},
- {"matrix": [1, 17], "x": 17.5, "y": 1.25},
- {"matrix": [3, 14], "x": 18.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.5, "y":1.25},
+ {"matrix":[1,16], "x":16.5, "y":1.25},
+ {"matrix":[1,17], "x":17.5, "y":1.25},
+ {"matrix":[3,14], "x":18.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 15], "x": 15.5, "y": 2.25},
- {"matrix": [2, 16], "x": 16.5, "y": 2.25},
- {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.5, "y":2.25},
+ {"matrix":[2,16], "x":16.5, "y":2.25},
+ {"matrix":[2,17], "x":17.5, "y":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
- {"matrix": [3, 16], "x": 16.5, "y": 3.25},
- {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.5, "y":3.25},
+ {"matrix":[3,16], "x":16.5, "y":3.25},
+ {"matrix":[3,17], "x":17.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix": [4, 15], "x": 15.5, "y": 4.25},
- {"matrix": [4, 16], "x": 16.5, "y": 4.25},
- {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix":[4,15], "x":15.5, "y":4.25},
+ {"matrix":[4,16], "x":16.5, "y":4.25},
+ {"matrix":[4,17], "x":17.5, "y":4.25},
+ {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5},
- {"matrix": [5, 16], "x": 16.5, "y": 5.25},
- {"matrix": [5, 17], "x": 17.5, "y": 5.25},
- {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5},
+ {"matrix":[5,16], "x":16.5, "y":5.25},
+ {"matrix":[5,17], "x":17.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v5/ansi/keymaps/default/keymap.c b/keyboards/keychron/v5/ansi/keymaps/default/keymap.c
index 655756c2d7d7..1de732fe29ca 100644
--- a/keyboards/keychron/v5/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v5/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v5/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v5/ansi/keymaps/keychron/keymap.c
index 96a213a2d3c2..39d14d2b950b 100644
--- a/keyboards/keychron/v5/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v5/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,38 +31,48 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v5/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v5/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/v5/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v5/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v5/ansi/keymaps/via/keymap.c b/keyboards/keychron/v5/ansi/keymaps/via/keymap.c
index 655756c2d7d7..1de732fe29ca 100644
--- a/keyboards/keychron/v5/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v5/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v5/ansi/rules.mk b/keyboards/keychron/v5/ansi/rules.mk
index e859eb9c34c6..aa286a161677 100644
--- a/keyboards/keychron/v5/ansi/rules.mk
+++ b/keyboards/keychron/v5/ansi/rules.mk
@@ -1,21 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
index 1e3b3038964f..0a6d48decff4 100644
--- a/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -83,6 +83,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -100,7 +101,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
- {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -118,6 +118,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -131,7 +132,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
- {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -141,29 +141,29 @@ led_config_t g_led_config = {
// Key Matrix to LED Index
{ 0, __, 1, 2, 3, 4, __, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
{ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 68, 49, 50, 51 },
- { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 16, 64, 34, 65, 66, 67 },
+ { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 52, 49, 50, 51 },
+ { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 16, 65, 34, 66, 67, 68 },
{ 69, __, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, __, 80, 81, 82, 83, 84 },
- { 85, 86, 87, __, __, 97, 88, __, __, __, 89, 90, 91, 92, 93, 94, 95, 96 }
+ { 86, 87, 88, __, __, 85, 89, __, __, __, 90, 91, 92, 93, 94, 95, 96, 97 }
},
{
// LED Index to Physical Position
{0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {103,0}, {115,0}, {133,0}, {145,0}, {157,0}, {169,0}, {184,0}, {196,0}, {208,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38}, {224,32},
- {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26}, {224,32},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38},
+ {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 4, 4, 1
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v5/ansi_encoder/config.h b/keyboards/keychron/v5/ansi_encoder/config.h
index 6ce87e63ab84..13cb7cfb969c 100644
--- a/keyboards/keychron/v5/ansi_encoder/config.h
+++ b/keyboards/keychron/v5/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -25,4 +25,7 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 52
+#define CAPS_LOCK_LED_INDEX 53
+
+/* Enable num-lock LED */
+#define NUM_LOCK_LED_INDEX 31
diff --git a/keyboards/keychron/v5/ansi_encoder/info.json b/keyboards/keychron/v5/ansi_encoder/info.json
index 8a4aec4e3660..9e16e5dbc5b8 100644
--- a/keyboards/keychron/v5/ansi_encoder/info.json
+++ b/keyboards/keychron/v5/ansi_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0351",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -21,109 +37,109 @@
"layouts": {
"LAYOUT_ansi_98": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 2], "x": 2, "y": 0},
- {"matrix": [0, 3], "x": 3, "y": 0},
- {"matrix": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 7], "x": 6.5, "y": 0},
- {"matrix": [0, 8], "x": 7.5, "y": 0},
- {"matrix": [0, 9], "x": 8.5, "y": 0},
- {"matrix": [0, 10], "x": 9.5, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [0, 14], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix": [0, 16], "x": 16.25, "y": 0},
- {"matrix": [0, 17], "x": 17.25, "y": 0},
- {"matrix": [3, 12], "x": 18.5, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 2], "x":2, "y":0},
+ {"matrix":[0, 3], "x":3, "y":0},
+ {"matrix":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 7], "x":6.5, "y":0},
+ {"matrix":[0, 8], "x":7.5, "y":0},
+ {"matrix":[0, 9], "x":8.5, "y":0},
+ {"matrix":[0,10], "x":9.5, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[0,14], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+ {"matrix":[0,16], "x":16.25, "y":0},
+ {"matrix":[0,17], "x":17.25, "y":0},
+ {"matrix":[3,12], "x":18.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.5, "y": 1.25},
- {"matrix": [1, 16], "x": 16.5, "y": 1.25},
- {"matrix": [1, 17], "x": 17.5, "y": 1.25},
- {"matrix": [3, 14], "x": 18.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.5, "y":1.25},
+ {"matrix":[1,16], "x":16.5, "y":1.25},
+ {"matrix":[1,17], "x":17.5, "y":1.25},
+ {"matrix":[3,14], "x":18.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 15], "x": 15.5, "y": 2.25},
- {"matrix": [2, 16], "x": 16.5, "y": 2.25},
- {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.5, "y":2.25},
+ {"matrix":[2,16], "x":16.5, "y":2.25},
+ {"matrix":[2,17], "x":17.5, "y":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
- {"matrix": [3, 16], "x": 16.5, "y": 3.25},
- {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.5, "y":3.25},
+ {"matrix":[3,16], "x":16.5, "y":3.25},
+ {"matrix":[3,17], "x":17.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix": [4, 15], "x": 15.5, "y": 4.25},
- {"matrix": [4, 16], "x": 16.5, "y": 4.25},
- {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix":[4,15], "x":15.5, "y":4.25},
+ {"matrix":[4,16], "x":16.5, "y":4.25},
+ {"matrix":[4,17], "x":17.5, "y":4.25},
+ {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5},
- {"matrix": [5, 16], "x": 16.5, "y": 5.25},
- {"matrix": [5, 17], "x": 17.5, "y": 5.25},
- {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5},
+ {"matrix":[5,16], "x":16.5, "y":5.25},
+ {"matrix":[5,17], "x":17.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v5/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v5/ansi_encoder/keymaps/default/keymap.c
index c48e7036bea7..7b2980979456 100644
--- a/keyboards/keychron/v5/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v5/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_98(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_98(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/keymap.c
index b2ec70c09574..b650e4733de2 100644
--- a/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,37 +31,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_98(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_98(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -70,9 +71,19 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v5/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v5/ansi_encoder/keymaps/via/keymap.c
index c48e7036bea7..7b2980979456 100644
--- a/keyboards/keychron/v5/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v5/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_98(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_98(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v5/ansi_encoder/rules.mk b/keyboards/keychron/v5/ansi_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v5/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v5/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v5/config.h b/keyboards/keychron/v5/config.h
index 142dfead34b4..edf2414bd310 100644
--- a/keyboards/keychron/v5/config.h
+++ b/keyboards/keychron/v5/config.h
@@ -16,15 +16,6 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS \
- { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS \
- { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -37,11 +28,13 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
+/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
- { 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56 }
+ { 0xB0, 0xB0, 0x56, 0xB0, 0xB0, 0x56, 0xB0, 0xB0, 0x56, 0xB0, 0xB0, 0x56 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -85,9 +78,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -102,5 +99,13 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_DS C15
+#define HC595_SHCP A1
+#define HC595_STCP A0
+
+#define SHIFT_COL_START 10
+#define SHIFT_COL_END 17
diff --git a/keyboards/keychron/v5/halconf.h b/keyboards/keychron/v5/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/v5/halconf.h
+++ b/keyboards/keychron/v5/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/v5/iso/config.h b/keyboards/keychron/v5/iso/config.h
index 5074f47a8f1f..8a10f742925e 100644
--- a/keyboards/keychron/v5/iso/config.h
+++ b/keyboards/keychron/v5/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -22,4 +22,7 @@
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 53
+#define CAPS_LOCK_LED_INDEX 54
+
+/* Enable num-lock LED */
+#define NUM_LOCK_LED_INDEX 33
diff --git a/keyboards/keychron/v5/iso/info.json b/keyboards/keychron/v5/iso/info.json
index 02db87e9ac25..6f5aad7e6011 100644
--- a/keyboards/keychron/v5/iso/info.json
+++ b/keyboards/keychron/v5/iso/info.json
@@ -6,122 +6,138 @@
"usb": {
"vid": "0x3434",
"pid": "0x0352",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_101": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [0, 14], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.5, "y": 0},
- {"matrix": [0, 16], "x": 16.5, "y": 0},
- {"matrix": [0, 17], "x": 17.5, "y": 0},
- {"matrix": [3, 12], "x": 18.5, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[0,14], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.5, "y":0},
+ {"matrix":[0,16], "x":16.5, "y":0},
+ {"matrix":[0,17], "x":17.5, "y":0},
+ {"matrix":[3,12], "x":18.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.5, "y": 1.25},
- {"matrix": [1, 16], "x": 16.5, "y": 1.25},
- {"matrix": [1, 17], "x": 17.5, "y": 1.25},
- {"matrix": [3, 14], "x": 18.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.5, "y":1.25},
+ {"matrix":[1,16], "x":16.5, "y":1.25},
+ {"matrix":[1,17], "x":17.5, "y":1.25},
+ {"matrix":[3,14], "x":18.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 15], "x": 15.5, "y": 2.25},
- {"matrix": [2, 16], "x": 16.5, "y": 2.25},
- {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.5, "y":2.25},
+ {"matrix":[2,16], "x":16.5, "y":2.25},
+ {"matrix":[2,17], "x":17.5, "y":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
- {"matrix": [3, 16], "x": 16.5, "y": 3.25},
- {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.5, "y":3.25},
+ {"matrix":[3,16], "x":16.5, "y":3.25},
+ {"matrix":[3,17], "x":17.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix": [4, 15], "x": 15.5, "y": 4.25},
- {"matrix": [4, 16], "x": 16.5, "y": 4.25},
- {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix":[4,15], "x":15.5, "y":4.25},
+ {"matrix":[4,16], "x":16.5, "y":4.25},
+ {"matrix":[4,17], "x":17.5, "y":4.25},
+ {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5},
- {"matrix": [5, 16], "x": 16.5, "y": 5.25},
- {"matrix": [5, 17], "x": 17.5, "y": 5.25},
- {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5},
+ {"matrix":[5,16], "x":16.5, "y":5.25},
+ {"matrix":[5,17], "x":17.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v5/iso/iso.c b/keyboards/keychron/v5/iso/iso.c
index d67be2d530a2..7fe24c2c95e8 100644
--- a/keyboards/keychron/v5/iso/iso.c
+++ b/keyboards/keychron/v5/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -82,6 +82,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -100,7 +101,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
- {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -119,6 +119,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -132,7 +133,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
- {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -140,31 +140,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
- { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
- { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 66, 70, 50, 51, 52 },
- { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 18, 65, 36, 67, 68, 69 },
- { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, __, 83, 84, 85, 86, 87 },
- { 88, 89, 90, __, __, 100, 91, __, __, __, 92, 93, 94, 95, 96, 97, 98, 99 },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
+ { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
+ { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 67, 53, 50, 51, 52 },
+ { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 36, 68, 69, 70 },
+ { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, __, 83, 84, 85, 86, 87 },
+ { 89, 90, 91, __, __, 88, 92, __, __, __, 93, 94, 95, 96, 97, 98, 99, 100 },
},
{
// LED Index to Physical Position
{0,0}, {12,0}, {24,0}, {36,0}, {48,0}, {60,0}, {72,0}, {85,0}, {97,0}, {109,0}, {121,0}, {133,0}, {145,0}, {157,0}, {169,0}, {188,0}, {200,0}, {212,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38}, {224,32},
- {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26}, {224,32},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38},
+ {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v5/iso/keymaps/default/keymap.c b/keyboards/keychron/v5/iso/keymaps/default/keymap.c
index 0635b7d866f4..d756b8542278 100644
--- a/keyboards/keychron/v5/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v5/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v5/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v5/iso/keymaps/keychron/keymap.c
index 90ce349f1b50..67aa61d21732 100644
--- a/keyboards/keychron/v5/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v5/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,38 +31,48 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v5/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v5/iso/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/v5/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v5/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v5/iso/keymaps/via/keymap.c b/keyboards/keychron/v5/iso/keymaps/via/keymap.c
index 0635b7d866f4..d756b8542278 100644
--- a/keyboards/keychron/v5/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v5/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v5/iso/rules.mk b/keyboards/keychron/v5/iso/rules.mk
index e859eb9c34c6..aa286a161677 100644
--- a/keyboards/keychron/v5/iso/rules.mk
+++ b/keyboards/keychron/v5/iso/rules.mk
@@ -1,21 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v5/iso_encoder/config.h b/keyboards/keychron/v5/iso_encoder/config.h
index dab565612eb3..ab5453e4dac2 100644
--- a/keyboards/keychron/v5/iso_encoder/config.h
+++ b/keyboards/keychron/v5/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -25,4 +25,7 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 51
+#define CAPS_LOCK_LED_INDEX 52
+
+/* Enable num-lock LED */
+#define NUM_LOCK_LED_INDEX 31
diff --git a/keyboards/keychron/v5/iso_encoder/info.json b/keyboards/keychron/v5/iso_encoder/info.json
index b0be43fc502f..f41f333860e9 100644
--- a/keyboards/keychron/v5/iso_encoder/info.json
+++ b/keyboards/keychron/v5/iso_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0353",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -21,110 +37,110 @@
"layouts": {
"LAYOUT_iso_99": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 2], "x": 2, "y": 0},
- {"matrix": [0, 3], "x": 3, "y": 0},
- {"matrix": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 7], "x": 6.5, "y": 0},
- {"matrix": [0, 8], "x": 7.5, "y": 0},
- {"matrix": [0, 9], "x": 8.5, "y": 0},
- {"matrix": [0, 10], "x": 9.5, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0},
- {"matrix": [0, 14], "x": 14, "y": 0},
- {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix": [0, 16], "x": 16.25, "y": 0},
- {"matrix": [0, 17], "x": 17.25, "y": 0},
- {"matrix": [3, 12], "x": 18.5, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 2], "x":2, "y":0},
+ {"matrix":[0, 3], "x":3, "y":0},
+ {"matrix":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 7], "x":6.5, "y":0},
+ {"matrix":[0, 8], "x":7.5, "y":0},
+ {"matrix":[0, 9], "x":8.5, "y":0},
+ {"matrix":[0,10], "x":9.5, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0},
+ {"matrix":[0,14], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+ {"matrix":[0,16], "x":16.25, "y":0},
+ {"matrix":[0,17], "x":17.25, "y":0},
+ {"matrix":[3,12], "x":18.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 15], "x": 15.5, "y": 1.25},
- {"matrix": [1, 16], "x": 16.5, "y": 1.25},
- {"matrix": [1, 17], "x": 17.5, "y": 1.25},
- {"matrix": [3, 14], "x": 18.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.5, "y":1.25},
+ {"matrix":[1,16], "x":16.5, "y":1.25},
+ {"matrix":[1,17], "x":17.5, "y":1.25},
+ {"matrix":[3,14], "x":18.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 15], "x": 15.5, "y": 2.25},
- {"matrix": [2, 16], "x": 16.5, "y": 2.25},
- {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.5, "y":2.25},
+ {"matrix":[2,16], "x":16.5, "y":2.25},
+ {"matrix":[2,17], "x":17.5, "y":2.25},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 15], "x": 15.5, "y": 3.25},
- {"matrix": [3, 16], "x": 16.5, "y": 3.25},
- {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.5, "y":3.25},
+ {"matrix":[3,16], "x":16.5, "y":3.25},
+ {"matrix":[3,17], "x":17.5, "y":3.25},
+ {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
- {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix": [4, 15], "x": 15.5, "y": 4.25},
- {"matrix": [4, 16], "x": 16.5, "y": 4.25},
- {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix":[4,15], "x":15.5, "y":4.25},
+ {"matrix":[4,16], "x":16.5, "y":4.25},
+ {"matrix":[4,17], "x":17.5, "y":4.25},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25},
- {"matrix": [5, 11], "x": 11, "y": 5.25},
- {"matrix": [5, 12], "x": 12, "y": 5.25},
- {"matrix": [5, 13], "x": 13.25, "y": 5.5},
- {"matrix": [5, 14], "x": 14.25, "y": 5.5},
- {"matrix": [5, 15], "x": 15.25, "y": 5.5},
- {"matrix": [5, 16], "x": 16.5, "y": 5.25},
- {"matrix": [5, 17], "x": 17.5, "y": 5.25},
- {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5},
+ {"matrix":[5,16], "x":16.5, "y":5.25},
+ {"matrix":[5,17], "x":17.5, "y":5.25},
+ {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2}
]
}
}
diff --git a/keyboards/keychron/v5/iso_encoder/iso_encoder.c b/keyboards/keychron/v5/iso_encoder/iso_encoder.c
index 5719da5e3495..8da6cfc499d2 100644
--- a/keyboards/keychron/v5/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v5/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -80,6 +80,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -98,7 +99,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
- {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -117,6 +117,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -130,7 +131,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
- {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -140,29 +140,29 @@ led_config_t g_led_config = {
// Key Matrix to LED Index
{ 0, __, 1, 2, 3, 4, __, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
{ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 64, 68, 48, 49, 50 },
- { 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 16, 63, 34, 65, 66, 67 },
+ { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 65, 51, 48, 49, 50 },
+ { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 16, 64, 34, 66, 67, 68 },
{ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, __, 81, 82, 83, 84, 85 },
- { 86, 87, 88, __, __, 98, 89, __, __, __, 90, 91, 92, 93, 94, 95, 96, 97 },
+ { 87, 88, 89, __, __, 86, 90, __, __, __, 91, 92, 93, 94, 95, 96, 97, 98 },
},
{
// LED Index to Physical Position
{0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {103,0}, {115,0}, {133,0}, {145,0}, {157,0}, {169,0}, {184,0}, {196,0}, {208,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38}, {224,32},
- {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26}, {224,32},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38},
+ {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v5/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v5/iso_encoder/keymaps/default/keymap.c
index 7defc8c79a7f..af54e00cbc17 100644
--- a/keyboards/keychron/v5/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v5/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_99(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_99(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v5/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v5/iso_encoder/keymaps/keychron/keymap.c
index fe61219034f5..5dc34610e641 100644
--- a/keyboards/keychron/v5/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v5/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,37 +31,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_99(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_99(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format off
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -70,9 +71,19 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v5/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v5/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v5/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v5/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v5/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v5/iso_encoder/keymaps/via/keymap.c
index 7defc8c79a7f..af54e00cbc17 100644
--- a/keyboards/keychron/v5/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v5/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_99(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_99(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v5/iso_encoder/rules.mk b/keyboards/keychron/v5/iso_encoder/rules.mk
index 7da353fbd162..aa286a161677 100644
--- a/keyboards/keychron/v5/iso_encoder/rules.mk
+++ b/keyboards/keychron/v5/iso_encoder/rules.mk
@@ -1,22 +1,14 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v5/matrix.c b/keyboards/keychron/v5/matrix.c
deleted file mode 100644
index ced844288188..000000000000
--- a/keyboards/keychron/v5/matrix.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/* Copyright 2021 @ 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 "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN C15
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN A1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN A0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-// At 3.6V input, three nops (37.5ns) should be enough for all signals
-#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
-#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
-
-static void shiftOut(uint8_t dataOut) {
- ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < 8; i++) {
- compiler_barrier();
- if (dataOut & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- }
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static void shiftOut_single(uint8_t data) {
- ATOMIC_BLOCK_FORCEON {
- compiler_barrier();
- if (data & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == 10) {
- shiftOut_single(0x00);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- shiftOut_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (x == 10)
- // unselect shift Register
- shiftOut(0xFF);
- }
- }
-}
-
-static void matrix_init_pins(void) {
- setPinOutput(DATA_PIN);
- setPinOutput(CLOCK_PIN);
- setPinOutput(LATCH_PIN);
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- if (col_pins[x] != NO_PIN) {
- setPinOutput(col_pins[x]);
- }
- }
-#endif
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- matrix_output_select_delay();
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/v5/readme.md b/keyboards/keychron/v5/readme.md
index 2fac219f2c3e..e54aec5ed833 100644
--- a/keyboards/keychron/v5/readme.md
+++ b/keyboards/keychron/v5/readme.md
@@ -1,18 +1,26 @@
# Keychron V5
+[Keychron V5](https://i.imgur.com/5aT9lhP.jpg)
+
A customizable 96% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V5
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V5 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v5-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/v5/ansi:default
+ make keychron/v5/ansi_encoder:default
+ make keychron/v5/iso:default
+ make keychron/v5/iso_encoder:default
Flashing example for this keyboard:
make keychron/v5/ansi:default:flash
+ make keychron/v5/ansi_encoder:default:flash
+ make keychron/v5/iso:default:flash
+ make keychron/v5/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v5/v5.c b/keyboards/keychron/v5/v5.c
index 6d87524b2333..883f7c573b84 100644
--- a/keyboards/keychron/v5/v5.c
+++ b/keyboards/keychron/v5/v5.c
@@ -26,7 +26,6 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -36,49 +35,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v6/ansi/ansi.c b/keyboards/keychron/v6/ansi/ansi.c
index 40115298831e..523090bd74cd 100644
--- a/keyboards/keychron/v6/ansi/ansi.c
+++ b/keyboards/keychron/v6/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -88,6 +88,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -105,7 +106,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
- {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -123,6 +123,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -137,35 +138,37 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
- {1, L_9, J_9, K_9},
};
#define __ NO_LED
led_config_t g_led_config = {
{
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 60, 77, 76, 74, 75, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 107, 91, 92, __ },
- { 94, 95, 96, __, __, __, 97, __, __, __, 98, 99, 100, 101, 102, 103, 104, 105, 106, __ },
+ // Key Matrix to LED Index
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
+ { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
+ { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
+ { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
},
{
+ // LED Index to Physical Position
{0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40}, {224,34},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
},
{
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
diff --git a/keyboards/keychron/v6/ansi/config.h b/keyboards/keychron/v6/ansi/config.h
index fa9d7e48b314..0a017f9e767d 100644
--- a/keyboards/keychron/v6/ansi/config.h
+++ b/keyboards/keychron/v6/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,26 +16,16 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, A2, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, C14 }
-
-/* Pin connected to DS of 74HC595 */
-#define DATA_PIN_74HC595 C15
-/* Pin connected to SH_CP of 74HC595 */
-#define CLOCK_PIN_74HC595 A1
-/* Pin connected to ST_CP of 74HC595 */
-#define LATCH_PIN_74HC595 A0
-/* Pin used index start of 74HC595 */
-#define PIN_START_74HC595 11
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 61
+#define CAPS_LOCK_LED_INDEX 62
/* Enable NUM_LOCK_LED_INDEX */
-// #define NUM_LOCK_LED_INDEX 37
+#define NUM_LOCK_LED_INDEX 37
+
+#define SHIFT_COL_START 11
+#define SHIFT_COL_END 18
diff --git a/keyboards/keychron/v6/ansi/info.json b/keyboards/keychron/v6/ansi/info.json
index 3f12305f06a5..ec361856876e 100644
--- a/keyboards/keychron/v6/ansi/info.json
+++ b/keyboards/keychron/v6/ansi/info.json
@@ -6,129 +6,145 @@
"usb": {
"vid": "0x3434",
"pid": "0x0360",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_108": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [0, 16], "x": 17.25, "y": 0},
- {"matrix": [0, 19], "x": 18.5, "y": 0},
- {"matrix": [1, 19], "x": 19.5, "y": 0},
- {"matrix": [2, 19], "x": 20.5, "y": 0},
- {"matrix": [3, 19], "x": 21.5, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [1, 16], "x": 17.25, "y": 1.25},
- {"matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"matrix": [1, 18], "x": 19.5, "y": 1.25},
- {"matrix": [0, 17], "x": 20.5, "y": 1.25},
- {"matrix": [0, 18], "x": 21.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [2, 16], "x": 17.25, "y": 2.25},
- {"matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"matrix": [2, 18], "x": 19.5, "y": 2.25},
- {"matrix": [3, 14], "x": 20.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"matrix": [3, 18], "x": 19.5, "y": 3.25},
- {"matrix": [3, 16], "x": 20.5, "y": 3.25},
- {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"matrix": [4, 18], "x": 19.5, "y": 4.25},
- {"matrix": [4, 14], "x": 20.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [5, 16], "x": 17.25, "y": 5.25},
- {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
- {"matrix": [5, 18], "x": 20.5, "y": 5.25},
- {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v6/ansi/keymaps/default/keymap.c b/keyboards/keychron/v6/ansi/keymaps/default/keymap.c
index 8eac2214bbff..3f63412300bd 100644
--- a/keyboards/keychron/v6/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v6/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -14,7 +14,6 @@
* along with this program. If not, see .
*/
-#include "keycode.h"
#include QMK_KEYBOARD_H
// clang-format off
@@ -31,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v6/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v6/ansi/keymaps/keychron/keymap.c
index 21ce25564306..c1e36ce850cf 100644
--- a/keyboards/keychron/v6/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v6/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,42 +31,48 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
- return true;
-}
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
+ return true;
}
diff --git a/keyboards/keychron/v6/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v6/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/v6/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v6/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v6/ansi/keymaps/via/keymap.c b/keyboards/keychron/v6/ansi/keymaps/via/keymap.c
index bedb5b9ea1ce..60311ba42c03 100644
--- a/keyboards/keychron/v6/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v6/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_LPAD, RGB_VAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v6/ansi/rules.mk b/keyboards/keychron/v6/ansi/rules.mk
index 980311d3f2fe..aa286a161677 100644
--- a/keyboards/keychron/v6/ansi/rules.mk
+++ b/keyboards/keychron/v6/ansi/rules.mk
@@ -1,21 +1,14 @@
# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
index 91831bf3c161..fd59ba356a1e 100644
--- a/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -90,6 +90,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -107,7 +108,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
- {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -125,6 +125,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -139,7 +140,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
- {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -147,31 +147,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 60, 77, 76, 74, 75, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 107, 91, 92, __ },
- { 94, 95, 96, __, __, __, 97, __, __, __, 98, 99, 100, 101, 102, 103, 104, 105, 106, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
+ { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
+ { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
+ { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
},
{
// LED Index to Physical Position
{0,0}, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40}, {224,34},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v6/ansi_encoder/config.h b/keyboards/keychron/v6/ansi_encoder/config.h
index 0d8d843d2f34..099c3306f1df 100644
--- a/keyboards/keychron/v6/ansi_encoder/config.h
+++ b/keyboards/keychron/v6/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,21 +16,6 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
-/* Pin connected to DS of 74HC595 */
-#define DATA_PIN_74HC595 C15
-/* Pin connected to SH_CP of 74HC595 */
-#define CLOCK_PIN_74HC595 A1
-/* Pin connected to ST_CP of 74HC595 */
-#define LATCH_PIN_74HC595 A0
-/* Pin used number of 74HC595 */
-#define PIN_USED_74HC595 10
-/* Pin used index start of 74HC595 */
-#define PIN_START_74HC595 10
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
@@ -40,7 +25,10 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 61
+#define CAPS_LOCK_LED_INDEX 62
/* Enable NUM_LOCK_LED_INDEX */
-// #define NUM_LOCK_LED_INDEX 37
+#define NUM_LOCK_LED_INDEX 37
+
+#define SHIFT_COL_START 10
+#define SHIFT_COL_END 19
diff --git a/keyboards/keychron/v6/ansi_encoder/info.json b/keyboards/keychron/v6/ansi_encoder/info.json
index ad0ea78318a3..b62f21ca8187 100644
--- a/keyboards/keychron/v6/ansi_encoder/info.json
+++ b/keyboards/keychron/v6/ansi_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0361",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -21,120 +37,120 @@
"layouts": {
"LAYOUT_ansi_109": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [4, 19], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [0, 16], "x": 17.25, "y": 0},
- {"matrix": [0, 19], "x": 18.5, "y": 0},
- {"matrix": [1, 19], "x": 19.5, "y": 0},
- {"matrix": [2, 19], "x": 20.5, "y": 0},
- {"matrix": [3, 19], "x": 21.5, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[4,19], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [1, 16], "x": 17.25, "y": 1.25},
- {"matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"matrix": [1, 18], "x": 19.5, "y": 1.25},
- {"matrix": [0, 17], "x": 20.5, "y": 1.25},
- {"matrix": [0, 18], "x": 21.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [2, 16], "x": 17.25, "y": 2.25},
- {"matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"matrix": [2, 18], "x": 19.5, "y": 2.25},
- {"matrix": [3, 14], "x": 20.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"matrix": [3, 18], "x": 19.5, "y": 3.25},
- {"matrix": [3, 16], "x": 20.5, "y": 3.25},
- {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"matrix": [4, 18], "x": 19.5, "y": 4.25},
- {"matrix": [4, 14], "x": 20.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [5, 16], "x": 17.25, "y": 5.25},
- {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
- {"matrix": [5, 18], "x": 20.5, "y": 5.25},
- {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v6/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v6/ansi_encoder/keymaps/default/keymap.c
index b51ea1a09c70..f57e544b2608 100644
--- a/keyboards/keychron/v6/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v6/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -28,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/keymap.c
index 058ec0dcc9a1..f853d49596bd 100644
--- a/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,35 +31,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -68,13 +69,19 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
- return true;
-}
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
+ return true;
}
diff --git a/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v6/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v6/ansi_encoder/keymaps/via/keymap.c
index b51ea1a09c70..f57e544b2608 100644
--- a/keyboards/keychron/v6/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v6/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -28,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v6/ansi_encoder/rules.mk b/keyboards/keychron/v6/ansi_encoder/rules.mk
index 80a3f300bd22..aa286a161677 100644
--- a/keyboards/keychron/v6/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v6/ansi_encoder/rules.mk
@@ -1,22 +1,14 @@
# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v6/config.h b/keyboards/keychron/v6/config.h
index 38cff19e6b56..6c902e824c86 100644
--- a/keyboards/keychron/v6/config.h
+++ b/keyboards/keychron/v6/config.h
@@ -16,9 +16,6 @@
#pragma once
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -31,11 +28,12 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* Limit the maximum brigtness current of colour white to 500mA */
-#define CKLED2001_CURRENT_TUNE { 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48 }
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
@@ -80,9 +78,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -97,5 +99,10 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
+#define HC595_DS C15
+#define HC595_SHCP A1
+#define HC595_STCP A0
diff --git a/keyboards/keychron/v6/halconf.h b/keyboards/keychron/v6/halconf.h
index e490b49e005a..463d177eabc7 100644
--- a/keyboards/keychron/v6/halconf.h
+++ b/keyboards/keychron/v6/halconf.h
@@ -17,6 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
-#define PAL_USE_CALLBACKS TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/v6/iso/config.h b/keyboards/keychron/v6/iso/config.h
index 0a9528d03be3..d46fda6d9f9c 100644
--- a/keyboards/keychron/v6/iso/config.h
+++ b/keyboards/keychron/v6/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,26 +16,16 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, A2, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, C14 }
-
-/* Pin connected to DS of 74HC595 */
-#define DATA_PIN_74HC595 C15
-/* Pin connected to SH_CP of 74HC595 */
-#define CLOCK_PIN_74HC595 A1
-/* Pin connected to ST_CP of 74HC595 */
-#define LATCH_PIN_74HC595 A0
-/* Pin used index start of 74HC595 */
-#define PIN_START_74HC595 11
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 49
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 60
+#define CAPS_LOCK_LED_INDEX 61
/* Enable NUM_LOCK_LED_INDEX */
-// #define NUM_LOCK_LED_INDEX 37
+#define NUM_LOCK_LED_INDEX 37
+
+#define SHIFT_COL_START 11
+#define SHIFT_COL_END 18
diff --git a/keyboards/keychron/v6/iso/info.json b/keyboards/keychron/v6/iso/info.json
index 0840ee9cc8e9..c1c389ff9433 100644
--- a/keyboards/keychron/v6/iso/info.json
+++ b/keyboards/keychron/v6/iso/info.json
@@ -6,130 +6,146 @@
"usb": {
"vid": "0x3434",
"pid": "0x0362",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ }
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_109": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 0},
- {"matrix": [0, 1], "x": 2, "y": 0},
- {"matrix": [0, 2], "x": 3, "y": 0},
- {"matrix": [0, 3], "x": 4, "y": 0},
- {"matrix": [0, 4], "x": 5, "y": 0},
- {"matrix": [0, 5], "x": 6.5, "y": 0},
- {"matrix": [0, 6], "x": 7.5, "y": 0},
- {"matrix": [0, 7], "x": 8.5, "y": 0},
- {"matrix": [0, 8], "x": 9.5, "y": 0},
- {"matrix": [0, 9], "x": 11, "y": 0},
- {"matrix": [0, 10], "x": 12, "y": 0},
- {"matrix": [0, 11], "x": 13, "y": 0},
- {"matrix": [0, 12], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [0, 16], "x": 17.25, "y": 0},
- {"matrix": [0, 19], "x": 18.5, "y": 0},
- {"matrix": [1, 19], "x": 19.5, "y": 0},
- {"matrix": [2, 19], "x": 20.5, "y": 0},
- {"matrix": [3, 19], "x": 21.5, "y": 0},
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [1, 16], "x": 17.25, "y": 1.25},
- {"matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"matrix": [1, 18], "x": 19.5, "y": 1.25},
- {"matrix": [0, 17], "x": 20.5, "y": 1.25},
- {"matrix": [0, 18], "x": 21.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [2, 16], "x": 17.25, "y": 2.25},
- {"matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"matrix": [2, 18], "x": 19.5, "y": 2.25},
- {"matrix": [3, 14], "x": 20.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"matrix": [3, 18], "x": 19.5, "y": 3.25},
- {"matrix": [3, 16], "x": 20.5, "y": 3.25},
- {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"matrix": [4, 18], "x": 19.5, "y": 4.25},
- {"matrix": [4, 14], "x": 20.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [5, 16], "x": 17.25, "y": 5.25},
- {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
- {"matrix": [5, 18], "x": 20.5, "y": 5.25},
- {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v6/iso/iso.c b/keyboards/keychron/v6/iso/iso.c
index 5c0e2fa39671..d270da68e1e5 100644
--- a/keyboards/keychron/v6/iso/iso.c
+++ b/keyboards/keychron/v6/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -89,6 +89,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -107,7 +108,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
- {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -126,6 +126,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -140,7 +141,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
- {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -148,30 +148,30 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 73, 54, 55, 56, 57, 58, 18 },
- { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, __, 72, 59, 77, 76, 74, 75, 19 },
- { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 108, 92, 93, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 54, 55, 56, 57, 58, 18 },
+ { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 59, 60, 77, 75, 76, 19 },
+ { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 95, 92, 93, __ },
+ { 96, 97, 98, __, __, __, 99, __, __, __, 100, 101, 102, 103, 104, 105, 106, 107, 108, __ },
},
{
// LED Index to Physical Position
{0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40}, {224,34},
- {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
+ {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
diff --git a/keyboards/keychron/v6/iso/keymaps/default/keymap.c b/keyboards/keychron/v6/iso/keymaps/default/keymap.c
index c1463b3060b1..754831db3335 100644
--- a/keyboards/keychron/v6/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v6/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -28,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v6/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v6/iso/keymaps/keychron/keymap.c
index 07199e2a070f..2dbd2e23e8bf 100644
--- a/keyboards/keychron/v6/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v6/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -30,42 +31,48 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
- return true;
-}
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
+ return true;
}
diff --git a/keyboards/keychron/v6/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v6/iso/keymaps/keychron/rules.mk
index 495e8907b48c..65df6fb72655 100644
--- a/keyboards/keychron/v6/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v6/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v6/iso/keymaps/via/keymap.c b/keyboards/keychron/v6/iso/keymaps/via/keymap.c
index c1463b3060b1..754831db3335 100644
--- a/keyboards/keychron/v6/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v6/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,8 @@
#include QMK_KEYBOARD_H
+// clang-format off
+
enum layers{
MAC_BASE,
MAC_FN,
@@ -28,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v6/iso/rules.mk b/keyboards/keychron/v6/iso/rules.mk
index 980311d3f2fe..aa286a161677 100644
--- a/keyboards/keychron/v6/iso/rules.mk
+++ b/keyboards/keychron/v6/iso/rules.mk
@@ -1,21 +1,14 @@
# 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 = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v6/iso_encoder/config.h b/keyboards/keychron/v6/iso_encoder/config.h
index 6e8069f7ece3..cf287b19859a 100644
--- a/keyboards/keychron/v6/iso_encoder/config.h
+++ b/keyboards/keychron/v6/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,21 +16,6 @@
#pragma once
-/* Key matrix pins */
-#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
-#define MATRIX_COL_PINS { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-
-/* Pin connected to DS of 74HC595 */
-#define DATA_PIN_74HC595 C15
-/* Pin connected to SH_CP of 74HC595 */
-#define CLOCK_PIN_74HC595 A1
-/* Pin connected to ST_CP of 74HC595 */
-#define LATCH_PIN_74HC595 A0
-/* Pin used number of 74HC595 */
-#define PIN_USED_74HC595 10
-/* Pin used index start of 74HC595 */
-#define PIN_START_74HC595 10
-
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 49
@@ -40,7 +25,10 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 60
+#define CAPS_LOCK_LED_INDEX 61
/* Enable NUM_LOCK_LED_INDEX */
-// #define NUM_LOCK_LED_INDEX 37
+#define NUM_LOCK_LED_INDEX 37
+
+#define SHIFT_COL_START 10
+#define SHIFT_COL_END 19
diff --git a/keyboards/keychron/v6/iso_encoder/info.json b/keyboards/keychron/v6/iso_encoder/info.json
index a40d4d66b62e..976a551ab97f 100644
--- a/keyboards/keychron/v6/iso_encoder/info.json
+++ b/keyboards/keychron/v6/iso_encoder/info.json
@@ -6,11 +6,27 @@
"usb": {
"vid": "0x3434",
"pid": "0x0363",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -21,121 +37,121 @@
"layouts": {
"LAYOUT_iso_110": {
"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": [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.75, "y": 0},
- {"matrix": [0, 10], "x": 10.75, "y": 0},
- {"matrix": [0, 11], "x": 11.75, "y": 0},
- {"matrix": [0, 12], "x": 12.75, "y": 0},
- {"matrix": [4, 19], "x": 14, "y": 0},
- {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix": [0, 15], "x": 16.25, "y": 0},
- {"matrix": [0, 16], "x": 17.25, "y": 0},
- {"matrix": [0, 19], "x": 18.5, "y": 0},
- {"matrix": [1, 19], "x": 19.5, "y": 0},
- {"matrix": [2, 19], "x": 20.5, "y": 0},
- {"matrix": [3, 19], "x": 21.5, "y": 0},
+ {"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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[4,19], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1.25},
- {"matrix": [1, 1], "x": 1, "y": 1.25},
- {"matrix": [1, 2], "x": 2, "y": 1.25},
- {"matrix": [1, 3], "x": 3, "y": 1.25},
- {"matrix": [1, 4], "x": 4, "y": 1.25},
- {"matrix": [1, 5], "x": 5, "y": 1.25},
- {"matrix": [1, 6], "x": 6, "y": 1.25},
- {"matrix": [1, 7], "x": 7, "y": 1.25},
- {"matrix": [1, 8], "x": 8, "y": 1.25},
- {"matrix": [1, 9], "x": 9, "y": 1.25},
- {"matrix": [1, 10], "x": 10, "y": 1.25},
- {"matrix": [1, 11], "x": 11, "y": 1.25},
- {"matrix": [1, 12], "x": 12, "y": 1.25},
- {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
- {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix": [1, 15], "x": 16.25, "y": 1.25},
- {"matrix": [1, 16], "x": 17.25, "y": 1.25},
- {"matrix": [1, 17], "x": 18.5, "y": 1.25},
- {"matrix": [1, 18], "x": 19.5, "y": 1.25},
- {"matrix": [0, 17], "x": 20.5, "y": 1.25},
- {"matrix": [0, 18], "x": 21.5, "y": 1.25},
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
- {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
- {"matrix": [2, 1], "x": 1.5, "y": 2.25},
- {"matrix": [2, 2], "x": 2.5, "y": 2.25},
- {"matrix": [2, 3], "x": 3.5, "y": 2.25},
- {"matrix": [2, 4], "x": 4.5, "y": 2.25},
- {"matrix": [2, 5], "x": 5.5, "y": 2.25},
- {"matrix": [2, 6], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 7.5, "y": 2.25},
- {"matrix": [2, 8], "x": 8.5, "y": 2.25},
- {"matrix": [2, 9], "x": 9.5, "y": 2.25},
- {"matrix": [2, 10], "x": 10.5, "y": 2.25},
- {"matrix": [2, 11], "x": 11.5, "y": 2.25},
- {"matrix": [2, 12], "x": 12.5, "y": 2.25},
- {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix": [2, 15], "x": 16.25, "y": 2.25},
- {"matrix": [2, 16], "x": 17.25, "y": 2.25},
- {"matrix": [2, 17], "x": 18.5, "y": 2.25},
- {"matrix": [2, 18], "x": 19.5, "y": 2.25},
- {"matrix": [3, 14], "x": 20.5, "y": 2.25},
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
- {"matrix": [3, 1], "x": 1.75, "y": 3.25},
- {"matrix": [3, 2], "x": 2.75, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 7.75, "y": 3.25},
- {"matrix": [3, 8], "x": 8.75, "y": 3.25},
- {"matrix": [3, 9], "x": 9.75, "y": 3.25},
- {"matrix": [3, 10], "x": 10.75, "y": 3.25},
- {"matrix": [3, 11], "x": 11.75, "y": 3.25},
- {"matrix": [3, 13], "x": 12.75, "y": 3.25},
- {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix": [3, 17], "x": 18.5, "y": 3.25},
- {"matrix": [3, 18], "x": 19.5, "y": 3.25},
- {"matrix": [3, 16], "x": 20.5, "y": 3.25},
- {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
- {"matrix": [4, 5], "x": 5.25, "y": 4.25},
- {"matrix": [4, 6], "x": 6.25, "y": 4.25},
- {"matrix": [4, 7], "x": 7.25, "y": 4.25},
- {"matrix": [4, 8], "x": 8.25, "y": 4.25},
- {"matrix": [4, 9], "x": 9.25, "y": 4.25},
- {"matrix": [4, 10], "x": 10.25, "y": 4.25},
- {"matrix": [4, 11], "x": 11.25, "y": 4.25},
- {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
- {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix": [4, 17], "x": 18.5, "y": 4.25},
- {"matrix": [4, 18], "x": 19.5, "y": 4.25},
- {"matrix": [4, 14], "x": 20.5, "y": 4.25},
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
- {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
- {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
- {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
- {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
- {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
- {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
- {"matrix": [5, 14], "x": 15.25, "y": 5.25},
- {"matrix": [5, 15], "x": 16.25, "y": 5.25},
- {"matrix": [5, 16], "x": 17.25, "y": 5.25},
- {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
- {"matrix": [5, 18], "x": 20.5, "y": 5.25},
- {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/v6/iso_encoder/iso_encoder.c b/keyboards/keychron/v6/iso_encoder/iso_encoder.c
index 8268e5b0a9ac..f406a83392c8 100644
--- a/keyboards/keychron/v6/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v6/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -89,6 +89,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -107,7 +108,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
- {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -126,6 +126,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -140,7 +141,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
- {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -148,31 +148,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 73, 54, 55, 56, 57, 58, 18 },
- { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, __, 72, 59, 77, 76, 74, 75, 19 },
- { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 108, 92, 93, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 54, 55, 56, 57, 58, 18 },
+ { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 59, 60, 77, 75, 76, 19 },
+ { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 95, 92, 93, __ },
+ { 96, 97, 98, __, __, __, 99, __, __, __, 100, 101, 102, 103, 104, 105, 106, 107, 108, __ },
},
{
// LED Index to Physical Position
{0,0}, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40}, {224,34},
- {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
+ {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v6/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v6/iso_encoder/keymaps/default/keymap.c
index 73b0c5778684..790538586efb 100644
--- a/keyboards/keychron/v6/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v6/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_110(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_110(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_110(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v6/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v6/iso_encoder/keymaps/keychron/keymap.c
index bef0b61bac08..c61a163b4edc 100644
--- a/keyboards/keychron/v6/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v6/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
@@ -28,37 +29,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_110(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_iso_110(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_110(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -68,13 +69,19 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
- return true;
-}
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
+ return true;
}
diff --git a/keyboards/keychron/v6/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v6/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..340c028b389c 100644
--- a/keyboards/keychron/v6/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v6/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v6/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v6/iso_encoder/keymaps/via/keymap.c
index 73b0c5778684..790538586efb 100644
--- a/keyboards/keychron/v6/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v6/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[MAC_FN] = LAYOUT_iso_110(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_110(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[WIN_FN] = LAYOUT_iso_110(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][1][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v6/iso_encoder/rules.mk b/keyboards/keychron/v6/iso_encoder/rules.mk
index 986772495755..aa286a161677 100644
--- a/keyboards/keychron/v6/iso_encoder/rules.mk
+++ b/keyboards/keychron/v6/iso_encoder/rules.mk
@@ -1,23 +1,14 @@
# 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
-ENCODER_ENABLE = yes # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
+
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH ?= keyboards/keychron/common
+VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q1v2/jis_encoder/config.h b/keyboards/keychron/v6/jis_encoder/config.h
similarity index 74%
rename from keyboards/keychron/q1v2/jis_encoder/config.h
rename to keyboards/keychron/v6/jis_encoder/config.h
index c80c4238f57d..0766ba1a00e0 100644
--- a/keyboards/keychron/q1v2/jis_encoder/config.h
+++ b/keyboards/keychron/v6/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,12 +17,18 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 46
-#define DRIVER_2_LED_TOTAL 40
+#define DRIVER_1_LED_TOTAL 61
+#define DRIVER_2_LED_TOTAL 51
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
+/* Enable caps-lock LED*/
+#define CAPS_LOCK_LED_INDEX 62
+
+/* Enable NUM_LOCK_LED_INDEX */
+#define NUM_LOCK_LED_INDEX 38
+
+#define SHIFT_COL_START 10
+#define SHIFT_COL_END 19
diff --git a/keyboards/keychron/v6/jis_encoder/info.json b/keyboards/keychron/v6/jis_encoder/info.json
new file mode 100644
index 000000000000..262b74e448b3
--- /dev/null
+++ b/keyboards/keychron/v6/jis_encoder/info.json
@@ -0,0 +1,161 @@
+{
+ "keyboard_name": "Keychron V6",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0365",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "CKLED2001"
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "encoder": {
+ "rotary": [
+ {"pin_a": "C14", "pin_b": "A2"}
+ ]
+ },
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "layouts": {
+ "LAYOUT_jis_113": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[4,19], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,19], "x":18.5, "y":0},
+ {"matrix":[1,19], "x":19.5, "y":0},
+ {"matrix":[2,19], "x":20.5, "y":0},
+ {"matrix":[3,19], "x":21.5, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":14, "y":1.25},
+ {"matrix":[0,13], "x":13, "y":1.25},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25},
+ {"matrix":[5,2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5,3], "x":3.5, "y":5.25},
+ {"matrix":[5,6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5,9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.75, "y":5.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/v6/jis_encoder/jis_encoder.c b/keyboards/keychron/v6/jis_encoder/jis_encoder.c
new file mode 100644
index 000000000000..ecb3537447f7
--- /dev/null
+++ b/keyboards/keychron/v6/jis_encoder/jis_encoder.c
@@ -0,0 +1,178 @@
+/* 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 .
+ */
+
+#include "quantum.h"
+
+// clang-format off
+#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, I_1, G_1, H_1},
+ {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, 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, I_10, G_10, H_10},
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_15, G_15, H_15},
+ {0, I_16, G_16, H_16},
+ {0, L_5, J_5, K_5},
+ {0, L_6, J_6, K_6},
+ {0, L_7, J_7, K_7},
+ {0, L_8, J_8, K_8},
+ {0, L_4, J_4, K_4},
+
+ {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, 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, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, I_14, G_14, H_14},
+ {0, C_14, A_14, B_14},
+ {0, C_15, A_15, B_15},
+ {0, C_16, A_16, B_16},
+ {0, L_9, J_9, K_9},
+ {0, L_10, J_10, K_10},
+ {0, L_11, J_11, K_11},
+ {0, L_12, J_12, K_12},
+ {0, L_13, J_13, K_13},
+
+ {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, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_15, D_15, E_15},
+ {0, F_16, D_16, E_16},
+ {0, L_14, J_14, K_14},
+ {0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
+ {1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
+
+ {1, C_16, A_16, B_16},
+ {1, C_15, A_15, B_15},
+ {1, C_14, A_14, B_14},
+ {1, C_13, A_13, B_13},
+ {1, C_12, A_12, B_12},
+ {1, C_11, A_11, B_11},
+ {1, C_10, A_10, B_10},
+ {1, C_9, A_9, B_9},
+ {1, C_8, A_8, B_8},
+ {1, C_7, A_7, B_7},
+ {1, C_6, A_6, B_6},
+ {1, C_5, A_5, B_5},
+ {1, C_3, A_3, B_3},
+ {0, F_14, D_14, E_14},
+ {1, L_3, J_3, K_3},
+ {1, L_4, J_4, K_4},
+ {1, L_5, J_5, K_5},
+
+ {1, I_16, G_16, H_16},
+ {1, I_14, G_14, H_14},
+ {1, I_13, G_13, H_13},
+ {1, I_12, G_12, H_12},
+ {1, I_11, G_11, H_11},
+ {1, I_10, G_10, H_10},
+ {1, I_9, G_9, H_9},
+ {1, I_8, G_8, H_8},
+ {1, I_7, G_7, H_7},
+ {1, I_6, G_6, H_6},
+ {1, I_5, G_5, H_5},
+ {1, I_4, G_4, H_4},
+ {1, I_3, G_3, H_3},
+ {1, I_1, G_1, H_1},
+ {1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
+ {1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
+
+ {1, F_16, D_16, E_16},
+ {1, F_15, D_15, E_15},
+ {1, F_14, D_14, E_14},
+ {1, F_13, D_13, E_13},
+ {1, F_10, D_10, E_10},
+ {1, F_7, D_7, E_7},
+ {1, F_6, D_6, E_6},
+ {1, F_5, D_5, E_5},
+ {1, F_4, D_4, E_4},
+ {1, F_3, D_3, E_3},
+ {1, F_2, D_2, E_2},
+ {1, F_1, D_1, E_1},
+ {1, L_10, J_10, K_10},
+ {1, L_11, J_11, K_11},
+ {1, L_12, J_12, K_12},
+};
+
+#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, 11, 12, 33, 13, 14, 15, 40, 41, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 17 },
+ { 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 75, 55, 56, 57, 58, 59, 18 },
+ { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 78, 76, 77, 19 },
+ { 79, __, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 92, 96, 93, 94, __ },
+ { 97, 98, 99, 100, __, __, 101, __, __, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, __ },
+ },
+ {
+ // LED Index to Physical Position
+ {0,0 }, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
+ {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {146,15}, {136,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {128,52}, {142,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
+ {1,64}, {13,64}, {25,64}, {36,64}, {65,64}, {95,64}, {108,64}, {121,64}, {133,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
+ 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1, 4, 4,
+ }
+};
+#endif
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v6/jis_encoder/keymaps/default/keymap.c
new file mode 100644
index 000000000000..cecfdce1a408
--- /dev/null
+++ b/keyboards/keychron/v6/jis_encoder/keymaps/default/keymap.c
@@ -0,0 +1,69 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_jis_113(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ [MAC_FN] = LAYOUT_jis_113(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_jis_113(
+ KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ [WIN_FN] = LAYOUT_jis_113(
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][1][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+};
+#endif
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/default/rules.mk b/keyboards/keychron/v6/jis_encoder/keymaps/default/rules.mk
new file mode 100644
index 000000000000..ee325681483f
--- /dev/null
+++ b/keyboards/keychron/v6/jis_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v6/jis_encoder/keymaps/keychron/keymap.c
new file mode 100644
index 000000000000..f2e5241137b3
--- /dev/null
+++ b/keyboards/keychron/v6/jis_encoder/keymaps/keychron/keymap.c
@@ -0,0 +1,87 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+#include "keychron_common.h"
+#include "keychron_ft_common.h"
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_jis_113(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ [MAC_FN] = LAYOUT_jis_113(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_jis_113(
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ [WIN_FN] = LAYOUT_jis_113(
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][1][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+};
+#endif // ENCODER_MAP_ENABLE
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v6/jis_encoder/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..340c028b389c
--- /dev/null
+++ b/keyboards/keychron/v6/jis_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v6/jis_encoder/keymaps/via/keymap.c
new file mode 100644
index 000000000000..cecfdce1a408
--- /dev/null
+++ b/keyboards/keychron/v6/jis_encoder/keymaps/via/keymap.c
@@ -0,0 +1,69 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+// clang-format off
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_jis_113(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ [MAC_FN] = LAYOUT_jis_113(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_jis_113(
+ KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ [WIN_FN] = LAYOUT_jis_113(
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][1][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
+};
+#endif
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/rules.mk b/keyboards/keychron/v6/jis_encoder/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/rules.mk
rename to keyboards/keychron/v6/jis_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/v6/jis_encoder/rules.mk b/keyboards/keychron/v6/jis_encoder/rules.mk
new file mode 100644
index 000000000000..aa286a161677
--- /dev/null
+++ b/keyboards/keychron/v6/jis_encoder/rules.mk
@@ -0,0 +1,14 @@
+# Build Options
+# change yes to no to disable.
+#
+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
+
+# custom matrix setup
+CUSTOM_MATRIX = lite
+
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/v6/matrix.c b/keyboards/keychron/v6/matrix.c
deleted file mode 100644
index 9269fed8d669..000000000000
--- a/keyboards/keychron/v6/matrix.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* 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 .
- */
-
-#include "matrix.h"
-#include "quantum.h"
-
-#ifndef PIN_USED_74HC595
-# define PIN_USED_74HC595 8
-#endif
-#ifndef PIN_START_74HC595
-# define PIN_START_74HC595 8
-#endif
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND (MATRIX_ROWS)
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-void small_delay(volatile uint8_t timeout) {
- while (timeout--);
-}
-
-static void shiftOut(uint16_t dataOut) {
- ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < PIN_USED_74HC595; i++) {
- if (dataOut & 0x1) {
- writePinHigh(DATA_PIN_74HC595);
- } else {
- writePinLow(DATA_PIN_74HC595);
- }
- dataOut = dataOut >> 1;
- writePinHigh(CLOCK_PIN_74HC595);
- small_delay(2);
- writePinLow(CLOCK_PIN_74HC595);
- }
- writePinHigh(LATCH_PIN_74HC595);
- small_delay(2);
- writePinLow(LATCH_PIN_74HC595);
- }
-}
-
-static void shiftOut_single(uint8_t data) {
- ATOMIC_BLOCK_FORCEON {
- if (data & 0x1) {
- writePinHigh(DATA_PIN_74HC595);
- } else {
- writePinLow(DATA_PIN_74HC595);
- }
- writePinHigh(CLOCK_PIN_74HC595);
- small_delay(2);
- writePinLow(CLOCK_PIN_74HC595);
- writePinHigh(LATCH_PIN_74HC595);
- small_delay(2);
- writePinLow(LATCH_PIN_74HC595);
- }
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == PIN_START_74HC595) {
- shiftOut_single(0x00);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- shiftOut_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- // unselect column pins
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- }
- if (x == PIN_START_74HC595)
- // unselect Shift Register
- shiftOut(0xFFFF);
- }
-}
-
-static void matrix_init_pins(void) {
- setPinOutput(DATA_PIN_74HC595);
- setPinOutput(CLOCK_PIN_74HC595);
- setPinOutput(LATCH_PIN_74HC595);
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- if (col_pins[x] != NO_PIN) {
- setPinOutput(col_pins[x]);
- }
- }
-#endif
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- matrix_output_select_delay();
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/v6/readme.md b/keyboards/keychron/v6/readme.md
index d8a68846bd85..082850665a6a 100644
--- a/keyboards/keychron/v6/readme.md
+++ b/keyboards/keychron/v6/readme.md
@@ -1,18 +1,26 @@
# Keychron V6
+![Keychron V6](https://i.imgur.com/Os99bIL.jpg)
+
A customizable 100% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V6
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V6 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v6-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
- make keychron/v6/v6_ansi_stm32l432:default
+ make keychron/v6/ansi:default
+ make keychron/v6/ansi_encoder:default
+ make keychron/v6/iso:default
+ make keychron/v6/iso_encoder:default
Flashing example for this keyboard:
- make keychron/v6/v6_ansi_stm32l432:flash
+ make keychron/v6/ansi:flash
+ make keychron/v6/ansi_encoder:flash
+ make keychron/v6/iso:flash
+ make keychron/v6/iso_encoder:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v6/v6.c b/keyboards/keychron/v6/v6.c
index 0f9305d2d05f..eeabe9800787 100644
--- a/keyboards/keychron/v6/v6.c
+++ b/keyboards/keychron/v6/v6.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,7 @@
#include "quantum.h"
+// clang-format off
const matrix_row_t matrix_mask[] = {
0b11111111111111111111,
0b11111111111111111111,
@@ -24,15 +25,14 @@ const matrix_row_t matrix_mask[] = {
0b11111111111111111111,
0b11111111111111101111,
};
-
+//clang-format on
#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) {
-# if defined(OS_SWITCH_REVERT)
+# if defined(OS_SWITCH_INVERT)
default_layer_set(1UL << (!active ? 2 : 0));
# else
default_layer_set(1UL << (active ? 2 : 0));
@@ -40,61 +40,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_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 defined(CAPS_LOCK_LED_INDEX)
- 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);
- }
- }
-# endif // CAPS_LOCK_LED_INDEX
-# if defined(NUM_LOCK_LED_INDEX)
- if (host_keyboard_led_state().num_lock) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
- } else {
- if (!rgb_matrix_get_flags()) {
- RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
- }
- }
-# endif // NUM_LOCK_LED_INDEX
- return true;
-}
-
-#endif // RGB_MATRIX_ENABLE...
+#endif
diff --git a/keyboards/keychron/v7/ansi/ansi.c b/keyboards/keychron/v7/ansi/ansi.c
index c0deea784518..920c826bd8ea 100644
--- a/keyboards/keychron/v7/ansi/ansi.c
+++ b/keyboards/keychron/v7/ansi/ansi.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -130,7 +130,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v7/ansi/info.json b/keyboards/keychron/v7/ansi/info.json
index 26f31786b5b8..b56387cd006b 100644
--- a/keyboards/keychron/v7/ansi/info.json
+++ b/keyboards/keychron/v7/ansi/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0370",
- "device_version": "1.0.0"
+ "device_version": "1.0.3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "B5"],
@@ -21,82 +32,82 @@
"layouts": {
"LAYOUT_ansi_72": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
- {"matrix": [0, 14], "x": 15, "y": 0},
- {"matrix": [0, 15], "x": 16, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
+ {"matrix":[0,14], "x":15, "y":0},
+ {"matrix":[0,15], "x":16, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
- {"matrix": [1, 14], "x": 15, "y": 1},
- {"matrix": [1, 15], "x": 16, "y": 1},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
+ {"matrix":[1,14], "x":15, "y":1},
+ {"matrix":[1,15], "x":16, "y":1},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
- {"matrix": [2, 14], "x": 15, "y": 2},
- {"matrix": [2, 15], "x": 16, "y": 2},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
+ {"matrix":[2,14], "x":15, "y":2},
+ {"matrix":[2,15], "x":16, "y":2},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
- {"matrix": [3, 14], "x": 15, "y": 3},
- {"matrix": [3, 15], "x": 16, "y": 3},
+ {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
+ {"matrix":[3,14], "x":15, "y":3},
+ {"matrix":[3,15], "x":16, "y":3},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 9], "x": 10, "y": 4},
- {"matrix": [4, 10], "x": 11, "y": 4},
- {"matrix": [4, 11], "x": 12, "y": 4},
- {"matrix": [4, 12], "x": 13, "y": 4},
- {"matrix": [4, 13], "x": 14, "y": 4},
- {"matrix": [4, 14], "x": 15, "y": 4},
- {"matrix": [4, 15], "x": 16, "y": 4}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4, 9], "x":10, "y":4},
+ {"matrix":[4,10], "x":11, "y":4},
+ {"matrix":[4,11], "x":12, "y":4},
+ {"matrix":[4,12], "x":13, "y":4},
+ {"matrix":[4,13], "x":14, "y":4},
+ {"matrix":[4,14], "x":15, "y":4},
+ {"matrix":[4,15], "x":16, "y":4}
]
}
}
diff --git a/keyboards/keychron/v7/ansi/keymaps/default/keymap.c b/keyboards/keychron/v7/ansi/keymaps/default/keymap.c
index 5d5a0ea0b4a3..79a2fa389dbc 100644
--- a/keyboards/keychron/v7/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v7/ansi/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_72(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_ansi_72(
+ 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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_72(
+ [WIN_FN1] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v7/ansi/keymaps/keychron/config.h b/keyboards/keychron/v7/ansi/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v7/ansi/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v7/ansi/keymaps/keychron/keymap.c
index 46a0ca7912f9..9773ffc11d82 100644
--- a/keyboards/keychron/v7/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v7/ansi/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_72(
+ [MAC_FN1] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_72(
+ [WIN_FN1] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v7/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v7/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v7/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v7/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v7/ansi/keymaps/via/config.h b/keyboards/keychron/v7/ansi/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v7/ansi/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/ansi/keymaps/via/keymap.c b/keyboards/keychron/v7/ansi/keymaps/via/keymap.c
index 5d5a0ea0b4a3..f53b6d853d93 100644
--- a/keyboards/keychron/v7/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v7/ansi/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,23 +35,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_72(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_ansi_72(
+ 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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_72(
+ [WIN_FN1] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v7/ansi/rules.mk b/keyboards/keychron/v7/ansi/rules.mk
index 46f5aef144b4..4bc1e23a57a0 100644
--- a/keyboards/keychron/v7/ansi/rules.mk
+++ b/keyboards/keychron/v7/ansi/rules.mk
@@ -1,17 +1,8 @@
# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v7/config.h b/keyboards/keychron/v7/config.h
index c439a7e36615..d71c95914453 100644
--- a/keyboards/keychron/v7/config.h
+++ b/keyboards/keychron/v7/config.h
@@ -30,10 +30,13 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define SCAN_PHASE_CHANNEL MSKPHASE_9CHANNEL
-#define CKLED2001_CURRENT_TUNE { 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70 }
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70 } // v7 iso
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4,4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -41,8 +44,6 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -79,9 +80,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -96,5 +101,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_KEYPRESSES
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/v7/iso/info.json b/keyboards/keychron/v7/iso/info.json
index f29d9d9a3261..dd494245f4ff 100644
--- a/keyboards/keychron/v7/iso/info.json
+++ b/keyboards/keychron/v7/iso/info.json
@@ -6,13 +6,24 @@
"usb": {
"vid": "0x3434",
"pid": "0x0372",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "B5"],
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "B5"],
"rows": ["B4", "B3", "A15", "A14", "A13"]
},
"diode_direction": "ROW2COL",
@@ -21,83 +32,83 @@
"layouts": {
"LAYOUT_iso_73": {
"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": [0, 4], "x": 4, "y": 0},
- {"matrix": [0, 5], "x": 5, "y": 0},
- {"matrix": [0, 6], "x": 6, "y": 0},
- {"matrix": [0, 7], "x": 7, "y": 0},
- {"matrix": [0, 8], "x": 8, "y": 0},
- {"matrix": [0, 9], "x": 9, "y": 0},
- {"matrix": [0, 10], "x": 10, "y": 0},
- {"matrix": [0, 11], "x": 11, "y": 0},
- {"matrix": [0, 12], "x": 12, "y": 0},
- {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
- {"matrix": [0, 14], "x": 15, "y": 0},
- {"matrix": [0, 15], "x": 16, "y": 0},
+ {"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":[0, 4], "x":4, "y":0},
+ {"matrix":[0, 5], "x":5, "y":0},
+ {"matrix":[0, 6], "x":6, "y":0},
+ {"matrix":[0, 7], "x":7, "y":0},
+ {"matrix":[0, 8], "x":8, "y":0},
+ {"matrix":[0, 9], "x":9, "y":0},
+ {"matrix":[0,10], "x":10, "y":0},
+ {"matrix":[0,11], "x":11, "y":0},
+ {"matrix":[0,12], "x":12, "y":0},
+ {"matrix":[0,13], "x":13, "y":0, "w":2},
+ {"matrix":[0,14], "x":15, "y":0},
+ {"matrix":[0,15], "x":16, "y":0},
- {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
- {"matrix": [1, 1], "x": 1.5, "y": 1},
- {"matrix": [1, 2], "x": 2.5, "y": 1},
- {"matrix": [1, 3], "x": 3.5, "y": 1},
- {"matrix": [1, 4], "x": 4.5, "y": 1},
- {"matrix": [1, 5], "x": 5.5, "y": 1},
- {"matrix": [1, 6], "x": 6.5, "y": 1},
- {"matrix": [1, 7], "x": 7.5, "y": 1},
- {"matrix": [1, 8], "x": 8.5, "y": 1},
- {"matrix": [1, 9], "x": 9.5, "y": 1},
- {"matrix": [1, 10], "x": 10.5, "y": 1},
- {"matrix": [1, 11], "x": 11.5, "y": 1},
- {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix": [1, 14], "x": 15, "y": 1},
- {"matrix": [1, 15], "x": 16, "y": 1},
+ {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
+ {"matrix":[1, 1], "x":1.5, "y":1},
+ {"matrix":[1, 2], "x":2.5, "y":1},
+ {"matrix":[1, 3], "x":3.5, "y":1},
+ {"matrix":[1, 4], "x":4.5, "y":1},
+ {"matrix":[1, 5], "x":5.5, "y":1},
+ {"matrix":[1, 6], "x":6.5, "y":1},
+ {"matrix":[1, 7], "x":7.5, "y":1},
+ {"matrix":[1, 8], "x":8.5, "y":1},
+ {"matrix":[1, 9], "x":9.5, "y":1},
+ {"matrix":[1,10], "x":10.5, "y":1},
+ {"matrix":[1,11], "x":11.5, "y":1},
+ {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix":[1,14], "x":15, "y":1},
+ {"matrix":[1,15], "x":16, "y":1},
- {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
- {"matrix": [2, 1], "x": 1.75, "y": 2},
- {"matrix": [2, 2], "x": 2.75, "y": 2},
- {"matrix": [2, 3], "x": 3.75, "y": 2},
- {"matrix": [2, 4], "x": 4.75, "y": 2},
- {"matrix": [2, 5], "x": 5.75, "y": 2},
- {"matrix": [2, 6], "x": 6.75, "y": 2},
- {"matrix": [2, 7], "x": 7.75, "y": 2},
- {"matrix": [2, 8], "x": 8.75, "y": 2},
- {"matrix": [2, 9], "x": 9.75, "y": 2},
- {"matrix": [2, 10], "x": 10.75, "y": 2},
- {"matrix": [2, 11], "x": 11.75, "y": 2},
- {"matrix": [2, 13], "x": 12.75, "y": 2},
- {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 15, "y": 2},
- {"matrix": [2, 15], "x": 16, "y": 2},
+ {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
+ {"matrix":[2, 1], "x":1.75, "y":2},
+ {"matrix":[2, 2], "x":2.75, "y":2},
+ {"matrix":[2, 3], "x":3.75, "y":2},
+ {"matrix":[2, 4], "x":4.75, "y":2},
+ {"matrix":[2, 5], "x":5.75, "y":2},
+ {"matrix":[2, 6], "x":6.75, "y":2},
+ {"matrix":[2, 7], "x":7.75, "y":2},
+ {"matrix":[2, 8], "x":8.75, "y":2},
+ {"matrix":[2, 9], "x":9.75, "y":2},
+ {"matrix":[2,10], "x":10.75, "y":2},
+ {"matrix":[2,11], "x":11.75, "y":2},
+ {"matrix":[2,13], "x":12.75, "y":2},
+ {"matrix":[1,13], "x":13.75, "y":1, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":15, "y":2},
+ {"matrix":[2,15], "x":16, "y":2},
- {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3},
- {"matrix": [3, 2], "x": 2.25, "y": 3},
- {"matrix": [3, 3], "x": 3.25, "y": 3},
- {"matrix": [3, 4], "x": 4.25, "y": 3},
- {"matrix": [3, 5], "x": 5.25, "y": 3},
- {"matrix": [3, 6], "x": 6.25, "y": 3},
- {"matrix": [3, 7], "x": 7.25, "y": 3},
- {"matrix": [3, 8], "x": 8.25, "y": 3},
- {"matrix": [3, 9], "x": 9.25, "y": 3},
- {"matrix": [3, 10], "x": 10.25, "y": 3},
- {"matrix": [3, 11], "x": 11.25, "y": 3},
- {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
- {"matrix": [3, 14], "x": 15, "y": 3},
- {"matrix": [3, 15], "x": 16, "y": 3},
+ {"matrix":[3, 0], "x":0, "y":3, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3},
+ {"matrix":[3, 2], "x":2.25, "y":3},
+ {"matrix":[3, 3], "x":3.25, "y":3},
+ {"matrix":[3, 4], "x":4.25, "y":3},
+ {"matrix":[3, 5], "x":5.25, "y":3},
+ {"matrix":[3, 6], "x":6.25, "y":3},
+ {"matrix":[3, 7], "x":7.25, "y":3},
+ {"matrix":[3, 8], "x":8.25, "y":3},
+ {"matrix":[3, 9], "x":9.25, "y":3},
+ {"matrix":[3,10], "x":10.25, "y":3},
+ {"matrix":[3,11], "x":11.25, "y":3},
+ {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
+ {"matrix":[3,14], "x":15, "y":3},
+ {"matrix":[3,15], "x":16, "y":3},
- {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
- {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
- {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
- {"matrix": [4, 9], "x": 10, "y": 4},
- {"matrix": [4, 10], "x": 11, "y": 4},
- {"matrix": [4, 11], "x": 12, "y": 4},
- {"matrix": [4, 12], "x": 13, "y": 4},
- {"matrix": [4, 13], "x": 14, "y": 4},
- {"matrix": [4, 14], "x": 15, "y": 4},
- {"matrix": [4, 15], "x": 16, "y": 4}
+ {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
+ {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
+ {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
+ {"matrix":[4, 9], "x":10, "y":4},
+ {"matrix":[4,10], "x":11, "y":4},
+ {"matrix":[4,11], "x":12, "y":4},
+ {"matrix":[4,12], "x":13, "y":4},
+ {"matrix":[4,13], "x":14, "y":4},
+ {"matrix":[4,14], "x":15, "y":4},
+ {"matrix":[4,15], "x":16, "y":4}
]
}
}
diff --git a/keyboards/keychron/v7/iso/iso.c b/keyboards/keychron/v7/iso/iso.c
index 4630059be47e..973c2cec474e 100644
--- a/keyboards/keychron/v7/iso/iso.c
+++ b/keyboards/keychron/v7/iso/iso.c
@@ -131,7 +131,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v7/iso/keymaps/default/keymap.c b/keyboards/keychron/v7/iso/keymaps/default/keymap.c
index d033ca6ab1ba..28a25450d2b9 100644
--- a/keyboards/keychron/v7/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v7/iso/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_73(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_iso_73(
+ 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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_73(
+ [WIN_FN1] = LAYOUT_iso_73(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v7/iso/keymaps/keychron/config.h b/keyboards/keychron/v7/iso/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v7/iso/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v7/iso/keymaps/keychron/keymap.c
index 687957147d1f..4945a120a188 100644
--- a/keyboards/keychron/v7/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v7/iso/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_73(
+ [MAC_FN1] = LAYOUT_iso_73(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_73(
+ [WIN_FN1] = LAYOUT_iso_73(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v7/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v7/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v7/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v7/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v7/iso/keymaps/via/config.h b/keyboards/keychron/v7/iso/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v7/iso/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/iso/keymaps/via/keymap.c b/keyboards/keychron/v7/iso/keymaps/via/keymap.c
index d033ca6ab1ba..28a25450d2b9 100644
--- a/keyboards/keychron/v7/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v7/iso/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_73(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_iso_73(
+ 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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_73(
+ [WIN_FN1] = LAYOUT_iso_73(
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, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v7/iso/rules.mk b/keyboards/keychron/v7/iso/rules.mk
index 46f5aef144b4..4bc1e23a57a0 100644
--- a/keyboards/keychron/v7/iso/rules.mk
+++ b/keyboards/keychron/v7/iso/rules.mk
@@ -1,17 +1,8 @@
# 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 = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v7/readme.md b/keyboards/keychron/v7/readme.md
index 2a156494429f..3eea44cf6751 100644
--- a/keyboards/keychron/v7/readme.md
+++ b/keyboards/keychron/v7/readme.md
@@ -1,18 +1,22 @@
# Keychron V7
+![Keychron V7](https://i.imgur.com/5VLYOaX.jpg)
+
A customizable 70% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V7
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V7 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v7-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/v7/ansi:default
+ make keychron/v7/iso:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/v7/ansi:default:flash
+ make keychron/v7/iso:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v7/v7.c b/keyboards/keychron/v7/v7.c
index e6b8309cae7c..0cb6a646a50b 100644
--- a/keyboards/keychron/v7/v7.c
+++ b/keyboards/keychron/v7/v7.c
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,49 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
-#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v8/ansi/ansi.c b/keyboards/keychron/v8/ansi/ansi.c
index 670ff2fbdbc0..2f34d2099223 100644
--- a/keyboards/keychron/v8/ansi/ansi.c
+++ b/keyboards/keychron/v8/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -126,10 +126,10 @@ led_config_t g_led_config = {
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v8/ansi/info.json b/keyboards/keychron/v8/ansi/info.json
index 02780ffcde4e..2c0fcd7c4011 100644
--- a/keyboards/keychron/v8/ansi/info.json
+++ b/keyboards/keychron/v8/ansi/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0380",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -21,79 +32,79 @@
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
- {"matrix": [0, 0], "x": 0.75, "y": 0.25},
- {"matrix": [0, 1], "x": 1.75, "y": 0.25},
- {"matrix": [0, 2], "x": 2.75, "y": 0},
- {"matrix": [0, 3], "x": 3.75, "y": 0.25},
- {"matrix": [0, 4], "x": 4.75, "y": 0.25},
- {"matrix": [0, 5], "x": 5.75, "y": 0.25},
- {"matrix": [0, 6], "x": 6.75, "y": 0.25},
- {"matrix": [0, 7], "x": 9.5, "y": 0.25},
- {"matrix": [0, 8], "x": 10.5, "y": 0.25},
- {"matrix": [0, 9], "x": 11.5, "y": 0.25},
- {"matrix": [0, 10], "x": 12.5, "y": 0.25},
- {"matrix": [0, 11], "x": 13.5, "y": 0},
- {"matrix": [0, 12], "x": 14.5, "y": 0.25},
- {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 18, "y": 0},
+ {"matrix":[0, 0], "x":0.75, "y":0.25},
+ {"matrix":[0, 1], "x":1.75, "y":0.25},
+ {"matrix":[0, 2], "x":2.75, "y":0},
+ {"matrix":[0, 3], "x":3.75, "y":0.25},
+ {"matrix":[0, 4], "x":4.75, "y":0.25},
+ {"matrix":[0, 5], "x":5.75, "y":0.25},
+ {"matrix":[0, 6], "x":6.75, "y":0.25},
+ {"matrix":[0, 7], "x":9.5, "y":0.25},
+ {"matrix":[0, 8], "x":10.5, "y":0.25},
+ {"matrix":[0, 9], "x":11.5, "y":0.25},
+ {"matrix":[0,10], "x":12.5, "y":0.25},
+ {"matrix":[0,11], "x":13.5, "y":0},
+ {"matrix":[0,12], "x":14.5, "y":0.25},
+ {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":18, "y":0},
- {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 2, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 9, "y": 1.25},
- {"matrix": [1, 7], "x": 10, "y": 1.25},
- {"matrix": [1, 8], "x": 11, "y": 1.25},
- {"matrix": [1, 9], "x": 12, "y": 1.25},
- {"matrix": [1, 10], "x": 13.25, "y": 1.25},
- {"matrix": [1, 11], "x": 14.25, "y": 1.25},
- {"matrix": [1, 12], "x": 15.25, "y": 1.25},
- {"matrix": [1, 13], "x": 16.25, "y": 1.25, "w": 1.5},
- {"matrix": [1, 14], "x": 18.25, "y": 1.5},
+ {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":2, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":9, "y":1.25},
+ {"matrix":[1, 7], "x":10, "y":1.25},
+ {"matrix":[1, 8], "x":11, "y":1.25},
+ {"matrix":[1, 9], "x":12, "y":1.25},
+ {"matrix":[1,10], "x":13.25, "y":1.25},
+ {"matrix":[1,11], "x":14.25, "y":1.25},
+ {"matrix":[1,12], "x":15.25, "y":1.25},
+ {"matrix":[1,13], "x":16.25, "y":1.25, "w":1.5},
+ {"matrix":[1,14], "x":18.25, "y":1.5},
- {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 2, "y": 2.25},
- {"matrix": [2, 2], "x": 3.5, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 9.25, "y": 2.25},
- {"matrix": [2, 8], "x": 10.25, "y": 2.25},
- {"matrix": [2, 9], "x": 11.25, "y": 2.25},
- {"matrix": [2, 10], "x": 12.25, "y": 2.25},
- {"matrix": [2, 11], "x": 13.75, "y": 2.25},
- {"matrix": [2, 12], "x": 14.75, "y": 2.25},
- {"matrix": [2, 13], "x": 15.75, "y": 2.25, "w": 2.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.5},
+ {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":2, "y":2.25},
+ {"matrix":[2, 2], "x":3.5, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":9.25, "y":2.25},
+ {"matrix":[2, 8], "x":10.25, "y":2.25},
+ {"matrix":[2, 9], "x":11.25, "y":2.25},
+ {"matrix":[2,10], "x":12.25, "y":2.25},
+ {"matrix":[2,11], "x":13.75, "y":2.25},
+ {"matrix":[2,12], "x":14.75, "y":2.25},
+ {"matrix":[2,13], "x":15.75, "y":2.25, "w":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3.25},
- {"matrix": [3, 8], "x": 9.5, "y": 3.25},
- {"matrix": [3, 9], "x": 10.5, "y": 3.25},
- {"matrix": [3, 10], "x": 11.5, "y": 3.25},
- {"matrix": [3, 11], "x": 12.5, "y": 3.25},
- {"matrix": [3, 12], "x": 14.25, "y": 3.25},
- {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":8.5, "y":3.25},
+ {"matrix":[3, 8], "x":9.5, "y":3.25},
+ {"matrix":[3, 9], "x":10.5, "y":3.25},
+ {"matrix":[3,10], "x":11.5, "y":3.25},
+ {"matrix":[3,11], "x":12.5, "y":3.25},
+ {"matrix":[3,12], "x":14.25, "y":3.25},
+ {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 6], "x": 7.25, "y": 4.25},
- {"matrix": [4, 7], "x": 8.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
- {"matrix": [4, 9], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 16.25, "y": 4.5},
- {"matrix": [4, 13], "x": 17.25, "y": 4.5},
- {"matrix": [4, 14], "x": 18.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
+ {"matrix":[4, 6], "x":7.25, "y":4.25},
+ {"matrix":[4, 7], "x":8.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
+ {"matrix":[4, 9], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":16.25, "y":4.5},
+ {"matrix":[4,13], "x":17.25, "y":4.5},
+ {"matrix":[4,14], "x":18.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/v8/ansi/keymaps/default/keymap.c b/keyboards/keychron/v8/ansi/keymaps/default/keymap.c
index 2f6f1311a958..15806904e6e9 100644
--- a/keyboards/keychron/v8/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v8/ansi/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_69(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v8/ansi/keymaps/keychron/config.h b/keyboards/keychron/v8/ansi/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v8/ansi/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v8/ansi/keymaps/keychron/keymap.c
index 936420b06fb4..b14dbd1cd490 100644
--- a/keyboards/keychron/v8/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v8/ansi/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
+ [MAC_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,9 +67,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v8/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v8/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v8/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v8/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v8/ansi/keymaps/via/config.h b/keyboards/keychron/v8/ansi/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v8/ansi/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/ansi/keymaps/via/keymap.c b/keyboards/keychron/v8/ansi/keymaps/via/keymap.c
index 71f8754316e5..9296c5eb1045 100644
--- a/keyboards/keychron/v8/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v8/ansi/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_ansi_69(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v8/ansi/rules.mk b/keyboards/keychron/v8/ansi/rules.mk
index e506e322d599..4bc1e23a57a0 100644
--- a/keyboards/keychron/v8/ansi/rules.mk
+++ b/keyboards/keychron/v8/ansi/rules.mk
@@ -1,19 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = no # Enable Encoder
-ENCODER_MAP_ENABLE = no
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
index 670ff2fbdbc0..ff13816e179a 100644
--- a/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v8/ansi_encoder/info.json b/keyboards/keychron/v8/ansi_encoder/info.json
index c3fc389780be..6269014261bb 100644
--- a/keyboards/keychron/v8/ansi_encoder/info.json
+++ b/keyboards/keychron/v8/ansi_encoder/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0381",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -18,7 +29,7 @@
"diode_direction": "ROW2COL",
"encoder": {
"rotary": [
- {"pin_a": "A10", "pin_b": "B5"}
+ {"pin_a": "B5", "pin_b": "A10"}
]
},
"processor": "STM32L432",
@@ -26,79 +37,79 @@
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
- {"matrix": [0, 0], "x": 0.75, "y": 0.25},
- {"matrix": [0, 1], "x": 1.75, "y": 0.25},
- {"matrix": [0, 2], "x": 2.75, "y": 0},
- {"matrix": [0, 3], "x": 3.75, "y": 0.25},
- {"matrix": [0, 4], "x": 4.75, "y": 0.25},
- {"matrix": [0, 5], "x": 5.75, "y": 0.25},
- {"matrix": [0, 6], "x": 6.75, "y": 0.25},
- {"matrix": [0, 7], "x": 9.5, "y": 0.25},
- {"matrix": [0, 8], "x": 10.5, "y": 0.25},
- {"matrix": [0, 9], "x": 11.5, "y": 0.25},
- {"matrix": [0, 10], "x": 12.5, "y": 0.25},
- {"matrix": [0, 11], "x": 13.5, "y": 0},
- {"matrix": [0, 12], "x": 14.5, "y": 0.25},
- {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 18, "y": 0},
+ {"matrix":[0, 0], "x":0.75, "y":0.25},
+ {"matrix":[0, 1], "x":1.75, "y":0.25},
+ {"matrix":[0, 2], "x":2.75, "y":0},
+ {"matrix":[0, 3], "x":3.75, "y":0.25},
+ {"matrix":[0, 4], "x":4.75, "y":0.25},
+ {"matrix":[0, 5], "x":5.75, "y":0.25},
+ {"matrix":[0, 6], "x":6.75, "y":0.25},
+ {"matrix":[0, 7], "x":9.5, "y":0.25},
+ {"matrix":[0, 8], "x":10.5, "y":0.25},
+ {"matrix":[0, 9], "x":11.5, "y":0.25},
+ {"matrix":[0,10], "x":12.5, "y":0.25},
+ {"matrix":[0,11], "x":13.5, "y":0},
+ {"matrix":[0,12], "x":14.5, "y":0.25},
+ {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":18, "y":0},
- {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 2, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 9, "y": 1.25},
- {"matrix": [1, 7], "x": 10, "y": 1.25},
- {"matrix": [1, 8], "x": 11, "y": 1.25},
- {"matrix": [1, 9], "x": 12, "y": 1.25},
- {"matrix": [1, 10], "x": 13.25, "y": 1.25},
- {"matrix": [1, 11], "x": 14.25, "y": 1.25},
- {"matrix": [1, 12], "x": 15.25, "y": 1.25},
- {"matrix": [1, 13], "x": 16.25, "y": 1.25, "w": 1.5},
- {"matrix": [1, 14], "x": 18.25, "y": 1.5},
+ {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":2, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":9, "y":1.25},
+ {"matrix":[1, 7], "x":10, "y":1.25},
+ {"matrix":[1, 8], "x":11, "y":1.25},
+ {"matrix":[1, 9], "x":12, "y":1.25},
+ {"matrix":[1,10], "x":13.25, "y":1.25},
+ {"matrix":[1,11], "x":14.25, "y":1.25},
+ {"matrix":[1,12], "x":15.25, "y":1.25},
+ {"matrix":[1,13], "x":16.25, "y":1.25, "w":1.5},
+ {"matrix":[1,14], "x":18.25, "y":1.5},
- {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 2, "y": 2.25},
- {"matrix": [2, 2], "x": 3.5, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 7], "x": 9.25, "y": 2.25},
- {"matrix": [2, 8], "x": 10.25, "y": 2.25},
- {"matrix": [2, 9], "x": 11.25, "y": 2.25},
- {"matrix": [2, 10], "x": 12.25, "y": 2.25},
- {"matrix": [2, 11], "x": 13.75, "y": 2.25},
- {"matrix": [2, 12], "x": 14.75, "y": 2.25},
- {"matrix": [2, 13], "x": 15.75, "y": 2.25, "w": 2.25},
- {"matrix": [2, 14], "x": 18.5, "y": 2.5},
+ {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":2, "y":2.25},
+ {"matrix":[2, 2], "x":3.5, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":9.25, "y":2.25},
+ {"matrix":[2, 8], "x":10.25, "y":2.25},
+ {"matrix":[2, 9], "x":11.25, "y":2.25},
+ {"matrix":[2,10], "x":12.25, "y":2.25},
+ {"matrix":[2,11], "x":13.75, "y":2.25},
+ {"matrix":[2,12], "x":14.75, "y":2.25},
+ {"matrix":[2,13], "x":15.75, "y":2.25, "w":2.25},
+ {"matrix":[2,14], "x":18.5, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3.25},
- {"matrix": [3, 8], "x": 9.5, "y": 3.25},
- {"matrix": [3, 9], "x": 10.5, "y": 3.25},
- {"matrix": [3, 10], "x": 11.5, "y": 3.25},
- {"matrix": [3, 11], "x": 12.5, "y": 3.25},
- {"matrix": [3, 12], "x": 14.25, "y": 3.25},
- {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":8.5, "y":3.25},
+ {"matrix":[3, 8], "x":9.5, "y":3.25},
+ {"matrix":[3, 9], "x":10.5, "y":3.25},
+ {"matrix":[3,10], "x":11.5, "y":3.25},
+ {"matrix":[3,11], "x":12.5, "y":3.25},
+ {"matrix":[3,12], "x":14.25, "y":3.25},
+ {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 6], "x": 7.25, "y": 4.25},
- {"matrix": [4, 7], "x": 8.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
- {"matrix": [4, 9], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 16.25, "y": 4.5},
- {"matrix": [4, 13], "x": 17.25, "y": 4.5},
- {"matrix": [4, 14], "x": 18.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
+ {"matrix":[4, 6], "x":7.25, "y":4.25},
+ {"matrix":[4, 7], "x":8.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
+ {"matrix":[4, 9], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":16.25, "y":4.5},
+ {"matrix":[4,13], "x":17.25, "y":4.5},
+ {"matrix":[4,14], "x":18.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v8/ansi_encoder/keymaps/default/keymap.c
index a128a54a0030..863fc66d4a33 100644
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_ansi_69(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/keymap.c
index 0058ebda38e4..e4725cec51d2 100644
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
+ [MAC_FN1] = LAYOUT_ansi_69(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -65,20 +66,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/v8/ansi_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v8/ansi_encoder/keymaps/via/keymap.c
index a128a54a0030..863fc66d4a33 100644
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_ansi_69(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_ansi_69(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [WIN_FN1] = LAYOUT_ansi_69(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v8/ansi_encoder/rules.mk b/keyboards/keychron/v8/ansi_encoder/rules.mk
index e3b0d8f03f18..4bc1e23a57a0 100644
--- a/keyboards/keychron/v8/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v8/ansi_encoder/rules.mk
@@ -1,19 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-ENCODER_MAP_ENABLE = no
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v8/config.h b/keyboards/keychron/v8/config.h
index 7c6076e199b7..03977b1b2e7c 100644
--- a/keyboards/keychron/v8/config.h
+++ b/keyboards/keychron/v8/config.h
@@ -33,10 +33,13 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-#define CKLED2001_CURRENT_TUNE { 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60 }
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { {4, 4} }
+#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -44,8 +47,6 @@
/* Turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -82,9 +83,13 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -99,5 +104,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-#define RGB_MATRIX_KEYPRESSES
+/* Factory test keys */
+#define FN_KEY1 MO(2)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/v8/halconf.h b/keyboards/keychron/v8/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/v8/halconf.h
+++ b/keyboards/keychron/v8/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/v8/iso/info.json b/keyboards/keychron/v8/iso/info.json
index 5f30af5b1a8c..ba549e354a8c 100644
--- a/keyboards/keychron/v8/iso/info.json
+++ b/keyboards/keychron/v8/iso/info.json
@@ -6,95 +6,105 @@
"usb": {
"vid": "0x3434",
"pid": "0x0382",
- "device_version": "1.0.0"
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
"rows": ["B4", "B3", "A15", "A14", "A13"]
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_70": {
"layout": [
- {"matrix": [0, 0], "x": 0.75, "y": 0.25},
- {"matrix": [0, 1], "x": 1.75, "y": 0.25},
- {"matrix": [0, 2], "x": 2.75, "y": 0},
- {"matrix": [0, 3], "x": 3.75, "y": 0.25},
- {"matrix": [0, 4], "x": 4.75, "y": 0.25},
- {"matrix": [0, 5], "x": 5.75, "y": 0.25},
- {"matrix": [0, 6], "x": 6.75, "y": 0.25},
- {"matrix": [0, 7], "x": 9.5, "y": 0.25},
- {"matrix": [0, 8], "x": 10.5, "y": 0.25},
- {"matrix": [0, 9], "x": 11.5, "y": 0.25},
- {"matrix": [0, 10], "x": 12.5, "y": 0.25},
- {"matrix": [0, 11], "x": 13.5, "y": 0},
- {"matrix": [0, 12], "x": 14.5, "y": 0.25},
- {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 18, "y": 0.25},
+ {"matrix":[0, 0], "x":0.75, "y":0.25},
+ {"matrix":[0, 1], "x":1.75, "y":0.25},
+ {"matrix":[0, 2], "x":2.75, "y":0},
+ {"matrix":[0, 3], "x":3.75, "y":0.25},
+ {"matrix":[0, 4], "x":4.75, "y":0.25},
+ {"matrix":[0, 5], "x":5.75, "y":0.25},
+ {"matrix":[0, 6], "x":6.75, "y":0.25},
+ {"matrix":[0, 7], "x":9.5, "y":0.25},
+ {"matrix":[0, 8], "x":10.5, "y":0.25},
+ {"matrix":[0, 9], "x":11.5, "y":0.25},
+ {"matrix":[0,10], "x":12.5, "y":0.25},
+ {"matrix":[0,11], "x":13.5, "y":0},
+ {"matrix":[0,12], "x":14.5, "y":0.25},
+ {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":18, "y":0.25},
- {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 2, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 9, "y": 1.25},
- {"matrix": [1, 7], "x": 10, "y": 1.25},
- {"matrix": [1, 8], "x": 11, "y": 1.25},
- {"matrix": [1, 9], "x": 12, "y": 1.25},
- {"matrix": [1, 10], "x": 13.25, "y": 1.25},
- {"matrix": [1, 11], "x": 14.25, "y": 1.25},
- {"matrix": [1, 12], "x": 15.25, "y": 1.25},
- {"matrix": [1, 14], "x": 18.25, "y": 1.5},
+ {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":2, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":9, "y":1.25},
+ {"matrix":[1, 7], "x":10, "y":1.25},
+ {"matrix":[1, 8], "x":11, "y":1.25},
+ {"matrix":[1, 9], "x":12, "y":1.25},
+ {"matrix":[1,10], "x":13.25, "y":1.25},
+ {"matrix":[1,11], "x":14.25, "y":1.25},
+ {"matrix":[1,12], "x":15.25, "y":1.25},
+ {"matrix":[1,14], "x":18.25, "y":1.5},
- {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 2, "y": 2.25},
- {"matrix": [2, 2], "x": 3.5, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 6], "x": 9.25, "y": 2.25},
- {"matrix": [2, 7], "x": 10.25, "y": 2.25},
- {"matrix": [2, 8], "x": 11.25, "y": 2.25},
- {"matrix": [2, 9], "x": 12.25, "y": 2.25},
- {"matrix": [2, 10], "x": 13.5, "y": 2.25},
- {"matrix": [2, 11], "x": 14.5, "y": 2.25},
- {"matrix": [2, 13], "x": 15.5, "y": 2.25},
- {"matrix": [1, 13], "x": 16.5, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 18.5, "y": 2.5},
+ {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":2, "y":2.25},
+ {"matrix":[2, 2], "x":3.5, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":9.25, "y":2.25},
+ {"matrix":[2, 8], "x":10.25, "y":2.25},
+ {"matrix":[2, 9], "x":11.25, "y":2.25},
+ {"matrix":[2,10], "x":12.25, "y":2.25},
+ {"matrix":[2,11], "x":13.5, "y":2.25},
+ {"matrix":[2,12], "x":14.5, "y":2.25},
+ {"matrix":[2,13], "x":15.5, "y":2.25},
+ {"matrix":[1,13], "x":16.5, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":18.5, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3.25},
- {"matrix": [3, 8], "x": 9.5, "y": 3.25},
- {"matrix": [3, 9], "x": 10.5, "y": 3.25},
- {"matrix": [3, 10], "x": 11.5, "y": 3.25},
- {"matrix": [3, 11], "x": 12.5, "y": 3.25},
- {"matrix": [3, 12], "x": 14.25, "y": 3.25},
- {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":8.5, "y":3.25},
+ {"matrix":[3, 8], "x":9.5, "y":3.25},
+ {"matrix":[3, 9], "x":10.5, "y":3.25},
+ {"matrix":[3,10], "x":11.5, "y":3.25},
+ {"matrix":[3,11], "x":12.5, "y":3.25},
+ {"matrix":[3,12], "x":14.25, "y":3.25},
+ {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 6], "x": 7.25, "y": 4.25},
- {"matrix": [4, 7], "x": 8.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
- {"matrix": [4, 9], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 16.25, "y": 4.5},
- {"matrix": [4, 13], "x": 17.25, "y": 4.5},
- {"matrix": [4, 14], "x": 18.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
+ {"matrix":[4, 6], "x":7.25, "y":4.25},
+ {"matrix":[4, 7], "x":8.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
+ {"matrix":[4, 9], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":16.25, "y":4.5},
+ {"matrix":[4,13], "x":17.25, "y":4.5},
+ {"matrix":[4,14], "x":18.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/v8/iso/iso.c b/keyboards/keychron/v8/iso/iso.c
index f64d3c4c562d..6686ab22c151 100644
--- a/keyboards/keychron/v8/iso/iso.c
+++ b/keyboards/keychron/v8/iso/iso.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v8/iso/keymaps/default/keymap.c b/keyboards/keychron/v8/iso/keymaps/default/keymap.c
index b4739661784f..aa4601e52068 100644
--- a/keyboards/keychron/v8/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v8/iso/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v8/iso/keymaps/keychron/config.h b/keyboards/keychron/v8/iso/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v8/iso/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v8/iso/keymaps/keychron/keymap.c
index e45bd2469eb3..b284ef9ac712 100644
--- a/keyboards/keychron/v8/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v8/iso/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -64,11 +65,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v8/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v8/iso/keymaps/keychron/rules.mk
index 495e8907b48c..dac903490f12 100644
--- a/keyboards/keychron/v8/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v8/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v8/iso/keymaps/via/config.h b/keyboards/keychron/v8/iso/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v8/iso/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso/keymaps/via/keymap.c b/keyboards/keychron/v8/iso/keymaps/via/keymap.c
index b4739661784f..aa4601e52068 100644
--- a/keyboards/keychron/v8/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v8/iso/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v8/iso/rules.mk b/keyboards/keychron/v8/iso/rules.mk
index 8edab2465bd3..4bc1e23a57a0 100644
--- a/keyboards/keychron/v8/iso/rules.mk
+++ b/keyboards/keychron/v8/iso/rules.mk
@@ -1,18 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = no # Enable Encoder
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v8/iso_encoder/info.json b/keyboards/keychron/v8/iso_encoder/info.json
index e13261a2d65c..10728aa76062 100644
--- a/keyboards/keychron/v8/iso_encoder/info.json
+++ b/keyboards/keychron/v8/iso_encoder/info.json
@@ -6,10 +6,21 @@
"usb": {
"vid": "0x3434",
"pid": "0x0383",
- "device_version": "1.0.0"
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
},
"rgb_matrix": {
- "driver": "ckled2001"
+ "driver": "CKLED2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -18,7 +29,7 @@
"diode_direction": "ROW2COL",
"encoder": {
"rotary": [
- {"pin_a": "A10", "pin_b": "B5"}
+ {"pin_a": "B5", "pin_b": "A10"}
]
},
"processor": "STM32L432",
@@ -26,80 +37,80 @@
"layouts": {
"LAYOUT_iso_70": {
"layout": [
- {"matrix": [0, 0], "x": 0.75, "y": 0.25},
- {"matrix": [0, 1], "x": 1.75, "y": 0.25},
- {"matrix": [0, 2], "x": 2.75, "y": 0},
- {"matrix": [0, 3], "x": 3.75, "y": 0.25},
- {"matrix": [0, 4], "x": 4.75, "y": 0.25},
- {"matrix": [0, 5], "x": 5.75, "y": 0.25},
- {"matrix": [0, 6], "x": 6.75, "y": 0.25},
- {"matrix": [0, 7], "x": 9.5, "y": 0.25},
- {"matrix": [0, 8], "x": 10.5, "y": 0.25},
- {"matrix": [0, 9], "x": 11.5, "y": 0.25},
- {"matrix": [0, 10], "x": 12.5, "y": 0.25},
- {"matrix": [0, 11], "x": 13.5, "y": 0},
- {"matrix": [0, 12], "x": 14.5, "y": 0.25},
- {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
- {"matrix": [0, 14], "x": 18, "y": 0.25},
+ {"matrix":[0, 0], "x":0.75, "y":0.25},
+ {"matrix":[0, 1], "x":1.75, "y":0.25},
+ {"matrix":[0, 2], "x":2.75, "y":0},
+ {"matrix":[0, 3], "x":3.75, "y":0.25},
+ {"matrix":[0, 4], "x":4.75, "y":0.25},
+ {"matrix":[0, 5], "x":5.75, "y":0.25},
+ {"matrix":[0, 6], "x":6.75, "y":0.25},
+ {"matrix":[0, 7], "x":9.5, "y":0.25},
+ {"matrix":[0, 8], "x":10.5, "y":0.25},
+ {"matrix":[0, 9], "x":11.5, "y":0.25},
+ {"matrix":[0,10], "x":12.5, "y":0.25},
+ {"matrix":[0,11], "x":13.5, "y":0},
+ {"matrix":[0,12], "x":14.5, "y":0.25},
+ {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
+ {"matrix":[0,14], "x":18, "y":0.25},
- {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
- {"matrix": [1, 1], "x": 2, "y": 1.25},
- {"matrix": [1, 2], "x": 3.25, "y": 1.25},
- {"matrix": [1, 3], "x": 4.25, "y": 1.25},
- {"matrix": [1, 4], "x": 5.25, "y": 1.25},
- {"matrix": [1, 5], "x": 6.25, "y": 1.25},
- {"matrix": [1, 6], "x": 9, "y": 1.25},
- {"matrix": [1, 7], "x": 10, "y": 1.25},
- {"matrix": [1, 8], "x": 11, "y": 1.25},
- {"matrix": [1, 9], "x": 12, "y": 1.25},
- {"matrix": [1, 10], "x": 13.25, "y": 1.25},
- {"matrix": [1, 11], "x": 14.25, "y": 1.25},
- {"matrix": [1, 12], "x": 15.25, "y": 1.25},
- {"matrix": [1, 14], "x": 18.25, "y": 1.5},
+ {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
+ {"matrix":[1, 1], "x":2, "y":1.25},
+ {"matrix":[1, 2], "x":3.25, "y":1.25},
+ {"matrix":[1, 3], "x":4.25, "y":1.25},
+ {"matrix":[1, 4], "x":5.25, "y":1.25},
+ {"matrix":[1, 5], "x":6.25, "y":1.25},
+ {"matrix":[1, 6], "x":9, "y":1.25},
+ {"matrix":[1, 7], "x":10, "y":1.25},
+ {"matrix":[1, 8], "x":11, "y":1.25},
+ {"matrix":[1, 9], "x":12, "y":1.25},
+ {"matrix":[1,10], "x":13.25, "y":1.25},
+ {"matrix":[1,11], "x":14.25, "y":1.25},
+ {"matrix":[1,12], "x":15.25, "y":1.25},
+ {"matrix":[1,14], "x":18.25, "y":1.5},
- {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
- {"matrix": [2, 1], "x": 2, "y": 2.25},
- {"matrix": [2, 2], "x": 3.5, "y": 2.25},
- {"matrix": [2, 3], "x": 4.5, "y": 2.25},
- {"matrix": [2, 4], "x": 5.5, "y": 2.25},
- {"matrix": [2, 5], "x": 6.5, "y": 2.25},
- {"matrix": [2, 6], "x": 9.25, "y": 2.25},
- {"matrix": [2, 7], "x": 10.25, "y": 2.25},
- {"matrix": [2, 8], "x": 11.25, "y": 2.25},
- {"matrix": [2, 9], "x": 12.25, "y": 2.25},
- {"matrix": [2, 10], "x": 13.5, "y": 2.25},
- {"matrix": [2, 11], "x": 14.5, "y": 2.25},
- {"matrix": [2, 13], "x": 15.5, "y": 2.25},
- {"matrix": [1, 13], "x": 16.5, "y": 1.25, "w": 1.25, "h": 2},
- {"matrix": [2, 14], "x": 18.5, "y": 2.5},
+ {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
+ {"matrix":[2, 1], "x":2, "y":2.25},
+ {"matrix":[2, 2], "x":3.5, "y":2.25},
+ {"matrix":[2, 3], "x":4.5, "y":2.25},
+ {"matrix":[2, 4], "x":5.5, "y":2.25},
+ {"matrix":[2, 5], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":9.25, "y":2.25},
+ {"matrix":[2, 8], "x":10.25, "y":2.25},
+ {"matrix":[2, 9], "x":11.25, "y":2.25},
+ {"matrix":[2,10], "x":12.25, "y":2.25},
+ {"matrix":[2,11], "x":13.5, "y":2.25},
+ {"matrix":[2,12], "x":14.5, "y":2.25},
+ {"matrix":[2,13], "x":15.5, "y":2.25},
+ {"matrix":[1,13], "x":16.5, "y":1.25, "w":1.25, "h":2},
+ {"matrix":[2,14], "x":18.5, "y":2.5},
- {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
- {"matrix": [3, 1], "x": 1.25, "y": 3.25},
- {"matrix": [3, 2], "x": 2.25, "y": 3.25},
- {"matrix": [3, 3], "x": 3.75, "y": 3.25},
- {"matrix": [3, 4], "x": 4.75, "y": 3.25},
- {"matrix": [3, 5], "x": 5.75, "y": 3.25},
- {"matrix": [3, 6], "x": 6.75, "y": 3.25},
- {"matrix": [3, 7], "x": 8.5, "y": 3.25},
- {"matrix": [3, 8], "x": 9.5, "y": 3.25},
- {"matrix": [3, 9], "x": 10.5, "y": 3.25},
- {"matrix": [3, 10], "x": 11.5, "y": 3.25},
- {"matrix": [3, 11], "x": 12.5, "y": 3.25},
- {"matrix": [3, 12], "x": 14.25, "y": 3.25},
- {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
- {"matrix": [3, 14], "x": 17.25, "y": 3.5},
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
+ {"matrix":[3, 1], "x":1.25, "y":3.25},
+ {"matrix":[3, 2], "x":2.25, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":8.5, "y":3.25},
+ {"matrix":[3, 8], "x":9.5, "y":3.25},
+ {"matrix":[3, 9], "x":10.5, "y":3.25},
+ {"matrix":[3,10], "x":11.5, "y":3.25},
+ {"matrix":[3,11], "x":12.5, "y":3.25},
+ {"matrix":[3,12], "x":14.25, "y":3.25},
+ {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
+ {"matrix":[3,14], "x":17.25, "y":3.5},
- {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
- {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
- {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
- {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
- {"matrix": [4, 6], "x": 7.25, "y": 4.25},
- {"matrix": [4, 7], "x": 8.75, "y": 4.25},
- {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
- {"matrix": [4, 9], "x": 12.5, "y": 4.25},
- {"matrix": [4, 12], "x": 16.25, "y": 4.5},
- {"matrix": [4, 13], "x": 17.25, "y": 4.5},
- {"matrix": [4, 14], "x": 18.25, "y": 4.5}
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+ {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+ {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
+ {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
+ {"matrix":[4, 6], "x":7.25, "y":4.25},
+ {"matrix":[4, 7], "x":8.75, "y":4.25},
+ {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
+ {"matrix":[4, 9], "x":12.5, "y":4.25},
+ {"matrix":[4,12], "x":16.25, "y":4.5},
+ {"matrix":[4,13], "x":17.25, "y":4.5},
+ {"matrix":[4,14], "x":18.25, "y":4.5}
]
}
}
diff --git a/keyboards/keychron/v8/iso_encoder/iso_encoder.c b/keyboards/keychron/v8/iso_encoder/iso_encoder.c
index f64d3c4c562d..6686ab22c151 100644
--- a/keyboards/keychron/v8/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v8/iso_encoder/iso_encoder.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED manual for these locations
+/* Refer to CKLED2001 manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
}
};
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v8/iso_encoder/keymaps/default/keymap.c
index 8d5e493e6af8..eaeb32052251 100644
--- a/keyboards/keychron/v8/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/keymap.c
index fd392965362d..e0182fde1766 100644
--- a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/keymap.c
@@ -16,15 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
+ [MAC_FN1] = LAYOUT_iso_70(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [WIN_FN1] = LAYOUT_iso_70(
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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -65,20 +66,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
-// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+
return true;
}
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..88c27a468a8b 100644
--- a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/via/config.h b/keyboards/keychron/v8/iso_encoder/keymaps/via/config.h
new file mode 100644
index 000000000000..54bbaf673fed
--- /dev/null
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/via/config.h
@@ -0,0 +1,17 @@
+/* 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 .
+ */
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v8/iso_encoder/keymaps/via/keymap.c
index 7c6e4bb8a966..ad73d3618eef 100644
--- a/keyboards/keychron/v8/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- _FN1,
- _FN2,
- _FN3
+ MAC_FN1,
+ WIN_FN1,
+ _FN2
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [_FN1] = LAYOUT_iso_70(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ [MAC_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
- 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,
+ [WIN_FN1] = LAYOUT_iso_70(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN3] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [_FN3] = {ENCODER_CCW_CW(_______, _______)}
+ [MAC_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v8/iso_encoder/rules.mk b/keyboards/keychron/v8/iso_encoder/rules.mk
index e3b0d8f03f18..4bc1e23a57a0 100644
--- a/keyboards/keychron/v8/iso_encoder/rules.mk
+++ b/keyboards/keychron/v8/iso_encoder/rules.mk
@@ -1,19 +1,8 @@
# Build Options
-# change yes to no to disable
+# 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
-ENCODER_ENABLE = yes # Enable Encoder
-ENCODER_MAP_ENABLE = no
-DIP_SWITCH_ENABLE = yes
-RGB_MATRIX_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
diff --git a/keyboards/keychron/v8/readme.md b/keyboards/keychron/v8/readme.md
index 9d37ba16161a..591a825d43a5 100644
--- a/keyboards/keychron/v8/readme.md
+++ b/keyboards/keychron/v8/readme.md
@@ -1,18 +1,26 @@
# Keychron V8
+![Keychron V8](https://i.imgur.com/mi33yKA.jpg)
+
A customizable 65% and ergonomic keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V8
-* Hardware Availability: [Keychron](https://www.keychron.com)
+* Hardware Availability: [Keychron V8 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v8-alice-layout-qmk-custom-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/v8/ansi:default
+ make keychron/v8/ansi_encoder:default
+ make keychron/v8/iso:default
+ make keychron/v8/iso_encoder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/v8/ansi:default:flash
+ make keychron/v8/ansi_encoder:default:flash
+ make keychron/v8/iso:default:flash
+ make keychron/v8/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v8/v8.c b/keyboards/keychron/v8/v8.c
index 38d3cada17af..1c2f36f19941 100644
--- a/keyboards/keychron/v8/v8.c
+++ b/keyboards/keychron/v8/v8.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -25,7 +25,6 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -33,49 +32,4 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-
-#endif // DIP_SWITCH_ENABLE
-
-#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) {
-#ifdef RGB_MATRIX_ENABLE
- 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;
#endif
- }
- 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 // CAPS_LOCK_LED_INDEX
From b1fd589403dd427c4d6d10ac4ef304972b75326f Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Fri, 13 Oct 2023 12:59:49 +0800
Subject: [PATCH 02/27] Add Lemokey X3
---
keyboards/keychron/c1/ansi/rgb/config.h | 93 -----
keyboards/keychron/c1/ansi/rgb/info.json | 130 ------
.../c1/ansi/rgb/keymaps/keychron/rules.mk | 4 -
keyboards/keychron/c1/ansi/rgb/rules.mk | 8 -
keyboards/keychron/c1/ansi/white/config.h | 72 ----
keyboards/keychron/c1/ansi/white/info.json | 130 ------
.../c1/ansi/white/keymaps/keychron/rules.mk | 4 -
keyboards/keychron/c1/ansi/white/rules.mk | 8 -
.../{c1/c1.c => c1_pro/ansi_v1/ansi_v1.c} | 90 ++---
.../keychron/{c1 => c1_pro/ansi_v1}/config.h | 11 +-
.../keychron/{c1 => c1_pro/ansi_v1}/halconf.h | 0
keyboards/keychron/c1_pro/ansi_v1/info.json | 12 +
.../keychron/{c1 => c1_pro/ansi_v1}/mcuconf.h | 0
.../keychron/c1_pro/ansi_v1/rgb/config.h | 47 +++
.../keychron/c1_pro/ansi_v1/rgb/info.json | 229 +++++++++++
.../ansi_v1}/rgb/keymaps/default/keymap.c | 23 +-
.../ansi_v1}/rgb/keymaps/keychron/keymap.c | 18 +-
.../ansi_v1/rgb/keymaps/keychron/rules.mk | 3 +
.../ansi_v1}/rgb/keymaps/via/keymap.c | 24 +-
.../ansi_v1}/rgb/keymaps/via/rules.mk | 0
.../{c1/ansi => c1_pro/ansi_v1}/rgb/rgb.c | 44 +-
.../keychron/c1_pro/ansi_v1/rgb/rules.mk | 1 +
.../keychron/c1_pro/ansi_v1/white/config.h | 48 +++
.../keychron/c1_pro/ansi_v1/white/info.json | 226 +++++++++++
.../ansi_v1/white/keymaps/default}/keymap.c | 23 +-
.../ansi_v1}/white/keymaps/keychron/keymap.c | 18 +-
.../ansi_v1/white/keymaps/keychron/rules.mk | 3 +
.../c1_pro/ansi_v1/white/keymaps/via/keymap.c | 62 +++
.../ansi_v1}/white/keymaps/via/rules.mk | 0
.../keychron/c1_pro/ansi_v1/white/rules.mk | 1 +
.../{c1/ansi => c1_pro/ansi_v1}/white/white.c | 45 +--
keyboards/keychron/c1_pro/ansi_v2/ansi_v2.c | 44 ++
keyboards/keychron/c1_pro/ansi_v2/config.h | 36 ++
.../keychron/{c2 => c1_pro/ansi_v2}/halconf.h | 0
keyboards/keychron/c1_pro/ansi_v2/info.json | 113 ++++++
keyboards/keychron/c1_pro/ansi_v2/mcuconf.h | 34 ++
.../c1_pro/ansi_v2/non_light/info.json | 6 +
.../non_light/keymaps/default/keymap.c | 62 +++
.../non_light/keymaps/keychron/keymap.c | 73 ++++
.../non_light/keymaps/keychron/rules.mk | 6 +
.../ansi_v2/non_light/keymaps/via/keymap.c | 62 +++
.../ansi_v2/non_light}/keymaps/via/rules.mk | 0
.../c1_pro/ansi_v2/non_light/non_light.c | 43 ++
.../c1_pro/ansi_v2/non_light/rules.mk | 1 +
.../keychron/c1_pro/ansi_v2/rgb/config.h | 41 ++
.../keychron/c1_pro/ansi_v2/rgb/info.json | 129 ++++++
.../ansi_v2/rgb/keymaps/default/keymap.c | 62 +++
.../ansi_v2/rgb/keymaps/keychron/keymap.c | 78 ++++
.../ansi_v2/rgb/keymaps/keychron/rules.mk | 3 +
.../c1_pro/ansi_v2/rgb/keymaps/via/keymap.c | 62 +++
.../ansi_v2/rgb}/keymaps/via/rules.mk | 0
keyboards/keychron/c1_pro/ansi_v2/rgb/rgb.c | 134 +++++++
.../keychron/c1_pro/ansi_v2/rgb/rules.mk | 1 +
.../keychron/c1_pro/ansi_v2/white/config.h | 41 ++
.../keychron/c1_pro/ansi_v2/white/info.json | 124 ++++++
.../ansi_v2}/white/keymaps/default/keymap.c | 17 +-
.../ansi_v2/white/keymaps/keychron/keymap.c | 78 ++++
.../ansi_v2/white/keymaps/keychron/rules.mk | 3 +
.../c1_pro/ansi_v2/white/keymaps/via/keymap.c | 62 +++
.../c1_pro/ansi_v2/white/keymaps/via/rules.mk | 1 +
.../keychron/c1_pro/ansi_v2/white/rules.mk | 1 +
.../keychron/c1_pro/ansi_v2/white/white.c | 132 ++++++
keyboards/keychron/c1_pro/config.h | 25 ++
keyboards/keychron/c1_pro/info.json | 18 +
keyboards/keychron/c1_pro/readme.md | 34 ++
.../c1_pro/via_json/c1_pro_ansi_v1_rgb.json | 285 +++++++++++++
.../c1_pro/via_json/c1_pro_ansi_v1_white.json | 224 +++++++++++
.../via_json/c1_pro_ansi_v2_non_light.json | 223 +++++++++++
.../c1_pro/via_json/c1_pro_ansi_v2_rgb.json | 285 +++++++++++++
.../c1_pro/via_json/c1_pro_ansi_v2_white.json | 224 +++++++++++
keyboards/keychron/c2/ansi/rgb/config.h | 93 -----
keyboards/keychron/c2/ansi/rgb/info.json | 147 -------
.../c2/ansi/rgb/keymaps/keychron/rules.mk | 3 -
keyboards/keychron/c2/ansi/rgb/rules.mk | 14 -
keyboards/keychron/c2/ansi/white/config.h | 70 ----
keyboards/keychron/c2/ansi/white/info.json | 147 -------
.../c2/ansi/white/keymaps/keychron/rules.mk | 3 -
keyboards/keychron/c2/ansi/white/rules.mk | 14 -
.../{c2/c2.c => c2_pro/ansi_v1/ansi_v1.c} | 39 +-
.../keychron/{c2 => c2_pro/ansi_v1}/config.h | 20 +-
keyboards/keychron/c2_pro/ansi_v1/halconf.h | 21 +
keyboards/keychron/c2_pro/ansi_v1/info.json | 11 +
.../keychron/{c2 => c2_pro/ansi_v1}/mcuconf.h | 0
.../keychron/c2_pro/ansi_v1/rgb/config.h | 40 ++
.../keychron/c2_pro/ansi_v1/rgb/info.json | 266 +++++++++++++
.../ansi_v1}/rgb/keymaps/default/keymap.c | 24 +-
.../ansi_v1}/rgb/keymaps/keychron/keymap.c | 25 +-
.../ansi_v1/rgb/keymaps/keychron/rules.mk | 3 +
.../ansi_v1}/rgb/keymaps/via/keymap.c | 18 +-
.../c2_pro/ansi_v1/rgb/keymaps/via/rules.mk | 1 +
.../{c2/ansi => c2_pro/ansi_v1}/rgb/rgb.c | 39 +-
.../keychron/c2_pro/ansi_v1/rgb/rules.mk | 1 +
keyboards/keychron/c2_pro/ansi_v1/rules.mk | 2 +
.../keychron/c2_pro/ansi_v1/white/config.h | 43 ++
.../keychron/c2_pro/ansi_v1/white/info.json | 261 ++++++++++++
.../ansi_v1/white/keymaps/default}/keymap.c | 20 +-
.../ansi_v1}/white/keymaps/keychron/keymap.c | 24 +-
.../ansi_v1/white/keymaps/keychron/rules.mk | 3 +
.../ansi_v1/white/keymaps/via}/keymap.c | 22 +-
.../c2_pro/ansi_v1/white/keymaps/via/rules.mk | 1 +
.../keychron/c2_pro/ansi_v1/white/rules.mk | 1 +
.../{c2/ansi => c2_pro/ansi_v1}/white/white.c | 40 +-
keyboards/keychron/c2_pro/ansi_v2/ansi_v2.c | 55 +++
keyboards/keychron/c2_pro/ansi_v2/config.h | 36 ++
keyboards/keychron/c2_pro/ansi_v2/halconf.h | 21 +
keyboards/keychron/c2_pro/ansi_v2/info.json | 128 ++++++
keyboards/keychron/c2_pro/ansi_v2/mcuconf.h | 34 ++
.../keychron/c2_pro/ansi_v2/rgb/config.h | 42 ++
.../keychron/c2_pro/ansi_v2/rgb/info.json | 146 +++++++
.../ansi_v2/rgb/keymaps/default/keymap.c | 62 +++
.../ansi_v2/rgb/keymaps/keychron/keymap.c | 77 ++++
.../ansi_v2/rgb/keymaps/keychron/rules.mk | 3 +
.../c2_pro/ansi_v2/rgb/keymaps/via/keymap.c | 62 +++
.../c2_pro/ansi_v2/rgb/keymaps/via/rules.mk | 1 +
keyboards/keychron/c2_pro/ansi_v2/rgb/rgb.c | 137 +++++++
.../keychron/c2_pro/ansi_v2/rgb/rules.mk | 1 +
.../keychron/c2_pro/ansi_v2/white/config.h | 44 ++
.../keychron/c2_pro/ansi_v2/white/info.json | 141 +++++++
.../ansi_v2/white/keymaps/default/keymap.c | 62 +++
.../ansi_v2/white/keymaps/keychron/keymap.c | 77 ++++
.../ansi_v2/white/keymaps/keychron/rules.mk | 3 +
.../c2_pro/ansi_v2/white/keymaps/via/keymap.c | 62 +++
.../c2_pro/ansi_v2/white/keymaps/via/rules.mk | 1 +
.../keychron/c2_pro/ansi_v2/white/rules.mk | 1 +
.../keychron/c2_pro/ansi_v2/white/white.c | 136 +++++++
keyboards/keychron/c2_pro/config.h | 25 ++
keyboards/keychron/c2_pro/info.json | 18 +
keyboards/keychron/c2_pro/readme.md | 34 ++
.../c2_pro/via_json/c2_pro_ansi_v1_rgb.json | 375 ++++++++++++++++++
.../c2_pro/via_json/c2_pro_ansi_v1_white.json | 270 +++++++++++++
.../c2_pro/via_json/c2_pro_ansi_v2_rgb.json | 331 ++++++++++++++++
.../c2_pro/via_json/c2_pro_ansi_v2_white.json | 270 +++++++++++++
keyboards/keychron/c3_pro/ansi/red/config.h | 39 ++
keyboards/keychron/c3_pro/ansi/red/info.json | 137 +++++++
.../c3_pro/ansi/red/keymaps/default/keymap.c | 62 +++
.../c3_pro/ansi/red/keymaps/keychron/keymap.c | 77 ++++
.../c3_pro/ansi/red/keymaps/keychron/rules.mk | 3 +
.../c3_pro/ansi/red/keymaps/via/keymap.c | 62 +++
.../c3_pro/ansi/red/keymaps/via/rules.mk | 1 +
keyboards/keychron/c3_pro/ansi/red/red.c | 132 ++++++
keyboards/keychron/c3_pro/ansi/red/rules.mk | 1 +
keyboards/keychron/c3_pro/c3_pro.c | 107 +++++
keyboards/keychron/c3_pro/c3_pro.h | 28 ++
keyboards/keychron/c3_pro/config.h | 36 ++
keyboards/keychron/c3_pro/halconf.h | 21 +
keyboards/keychron/c3_pro/info.json | 128 ++++++
keyboards/keychron/c3_pro/mcuconf.h | 34 ++
keyboards/keychron/c3_pro/readme.md | 26 ++
.../c3_pro/via_json/c3_pro_ansi_red.json | 225 +++++++++++
keyboards/keychron/common/common.mk | 6 +
keyboards/keychron/common/keychron_common.c | 106 +----
keyboards/keychron/common/keychron_common.h | 11 +-
.../keychron_ft_c1_pro_ansi_v2_non_light.c | 216 ++++++++++
.../keychron_ft_c1_pro_ansi_v2_non_light.h | 20 +
.../keychron/common/keychron_ft_common.c | 55 ++-
.../keychron/common/keychron_ft_common.h | 19 +-
keyboards/keychron/common/keychron_ft_q0.c | 93 +++++
keyboards/keychron/common/matrix.c | 136 ++++---
keyboards/keychron/common/via_indicator.c | 237 +++++++++++
keyboards/keychron/x1/ansi/red/config.h | 41 ++
keyboards/keychron/x1/ansi/red/info.json | 124 ++++++
.../x1/ansi/red/keymaps/default/keymap.c | 61 +++
.../x1/ansi/red/keymaps/keychron/keymap.c | 77 ++++
.../x1/ansi/red/keymaps/keychron/rules.mk | 3 +
.../keychron/x1/ansi/red/keymaps/via/keymap.c | 61 +++
.../keychron/x1/ansi/red/keymaps/via/rules.mk | 1 +
keyboards/keychron/x1/ansi/red/red.c | 119 ++++++
keyboards/keychron/x1/ansi/red/rules.mk | 1 +
keyboards/keychron/x1/config.h | 36 ++
keyboards/keychron/x1/halconf.h | 21 +
keyboards/keychron/x1/info.json | 129 ++++++
keyboards/keychron/x1/mcuconf.h | 34 ++
keyboards/keychron/{c1 => x1}/readme.md | 21 +-
.../keychron/x1/via_json/x1_pro_ansi_red.json | 224 +++++++++++
keyboards/keychron/x1/x1.c | 83 ++++
keyboards/keychron/x3/ansi/red/config.h | 41 ++
keyboards/keychron/x3/ansi/red/info.json | 136 +++++++
.../x3/ansi/red/keymaps/default/keymap.c | 61 +++
.../x3/ansi/red/keymaps/keychron/keymap.c | 77 ++++
.../x3/ansi/red/keymaps/keychron/rules.mk | 3 +
.../keychron/x3/ansi/red/keymaps/via/keymap.c | 61 +++
.../keychron/x3/ansi/red/keymaps/via/rules.mk | 1 +
keyboards/keychron/x3/ansi/red/red.c | 136 +++++++
keyboards/keychron/x3/ansi/red/rules.mk | 1 +
keyboards/keychron/x3/config.h | 38 ++
keyboards/keychron/x3/halconf.h | 21 +
keyboards/keychron/x3/info.json | 139 +++++++
keyboards/keychron/x3/mcuconf.h | 34 ++
keyboards/keychron/{c2 => x3}/readme.md | 21 +-
.../keychron/x3/via_json/x3_ansi_red.json | 271 +++++++++++++
keyboards/keychron/x3/x3.c | 83 ++++
191 files changed, 10847 insertions(+), 1546 deletions(-)
delete mode 100644 keyboards/keychron/c1/ansi/rgb/config.h
delete mode 100644 keyboards/keychron/c1/ansi/rgb/info.json
delete mode 100644 keyboards/keychron/c1/ansi/rgb/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/c1/ansi/rgb/rules.mk
delete mode 100644 keyboards/keychron/c1/ansi/white/config.h
delete mode 100644 keyboards/keychron/c1/ansi/white/info.json
delete mode 100644 keyboards/keychron/c1/ansi/white/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/c1/ansi/white/rules.mk
rename keyboards/keychron/{c1/c1.c => c1_pro/ansi_v1/ansi_v1.c} (68%)
mode change 100644 => 100755
rename keyboards/keychron/{c1 => c1_pro/ansi_v1}/config.h (77%)
mode change 100644 => 100755
rename keyboards/keychron/{c1 => c1_pro/ansi_v1}/halconf.h (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/info.json
rename keyboards/keychron/{c1 => c1_pro/ansi_v1}/mcuconf.h (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/rgb/config.h
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/rgb/info.json
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v1}/rgb/keymaps/default/keymap.c (93%)
mode change 100644 => 100755
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v1}/rgb/keymaps/keychron/keymap.c (94%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/keychron/rules.mk
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v1}/rgb/keymaps/via/keymap.c (93%)
mode change 100644 => 100755
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v1}/rgb/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v1}/rgb/rgb.c (63%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/rgb/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/white/config.h
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/white/info.json
rename keyboards/keychron/{c1/ansi/white/keymaps/via => c1_pro/ansi_v1/white/keymaps/default}/keymap.c (93%)
mode change 100644 => 100755
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v1}/white/keymaps/keychron/keymap.c (94%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/white/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/white/keymaps/via/keymap.c
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v1}/white/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v1/white/rules.mk
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v1}/white/white.c (59%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/ansi_v2.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/config.h
rename keyboards/keychron/{c2 => c1_pro/ansi_v2}/halconf.h (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/info.json
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/mcuconf.h
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/non_light/info.json
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/via/keymap.c
rename keyboards/keychron/{c2/ansi/rgb => c1_pro/ansi_v2/non_light}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/non_light/non_light.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/non_light/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/rgb/config.h
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/rgb/info.json
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/via/keymap.c
rename keyboards/keychron/{c2/ansi/white => c1_pro/ansi_v2/rgb}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/rgb/rgb.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/rgb/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/white/config.h
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/white/info.json
rename keyboards/keychron/{c1/ansi => c1_pro/ansi_v2}/white/keymaps/default/keymap.c (93%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/white/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/white/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/white/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/white/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/white/rules.mk
create mode 100755 keyboards/keychron/c1_pro/ansi_v2/white/white.c
create mode 100755 keyboards/keychron/c1_pro/config.h
create mode 100755 keyboards/keychron/c1_pro/info.json
create mode 100755 keyboards/keychron/c1_pro/readme.md
create mode 100755 keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v1_rgb.json
create mode 100755 keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v1_white.json
create mode 100755 keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_non_light.json
create mode 100755 keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_rgb.json
create mode 100755 keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_white.json
delete mode 100644 keyboards/keychron/c2/ansi/rgb/config.h
delete mode 100644 keyboards/keychron/c2/ansi/rgb/info.json
delete mode 100644 keyboards/keychron/c2/ansi/rgb/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/c2/ansi/rgb/rules.mk
delete mode 100644 keyboards/keychron/c2/ansi/white/config.h
delete mode 100644 keyboards/keychron/c2/ansi/white/info.json
delete mode 100644 keyboards/keychron/c2/ansi/white/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/c2/ansi/white/rules.mk
rename keyboards/keychron/{c2/c2.c => c2_pro/ansi_v1/ansi_v1.c} (78%)
mode change 100644 => 100755
rename keyboards/keychron/{c2 => c2_pro/ansi_v1}/config.h (76%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/halconf.h
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/info.json
rename keyboards/keychron/{c2 => c2_pro/ansi_v1}/mcuconf.h (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/rgb/config.h
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/rgb/info.json
rename keyboards/keychron/{c2/ansi => c2_pro/ansi_v1}/rgb/keymaps/default/keymap.c (93%)
mode change 100644 => 100755
rename keyboards/keychron/{c2/ansi => c2_pro/ansi_v1}/rgb/keymaps/keychron/keymap.c (94%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/keychron/rules.mk
rename keyboards/keychron/{c2/ansi => c2_pro/ansi_v1}/rgb/keymaps/via/keymap.c (94%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/via/rules.mk
rename keyboards/keychron/{c2/ansi => c2_pro/ansi_v1}/rgb/rgb.c (63%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/rgb/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/white/config.h
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/white/info.json
rename keyboards/keychron/{c2/ansi/white/keymaps/via => c2_pro/ansi_v1/white/keymaps/default}/keymap.c (93%)
mode change 100644 => 100755
rename keyboards/keychron/{c2/ansi => c2_pro/ansi_v1}/white/keymaps/keychron/keymap.c (94%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/white/keymaps/keychron/rules.mk
rename keyboards/keychron/{c2/ansi/white/keymaps/default => c2_pro/ansi_v1/white/keymaps/via}/keymap.c (93%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/white/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v1/white/rules.mk
rename keyboards/keychron/{c2/ansi => c2_pro/ansi_v1}/white/white.c (50%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/ansi_v2.c
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/config.h
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/halconf.h
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/info.json
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/mcuconf.h
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/config.h
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/info.json
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/rgb.c
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/rgb/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/config.h
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/info.json
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/rules.mk
create mode 100755 keyboards/keychron/c2_pro/ansi_v2/white/white.c
create mode 100755 keyboards/keychron/c2_pro/config.h
create mode 100755 keyboards/keychron/c2_pro/info.json
create mode 100755 keyboards/keychron/c2_pro/readme.md
create mode 100755 keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v1_rgb.json
create mode 100755 keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v1_white.json
create mode 100755 keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v2_rgb.json
create mode 100755 keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v2_white.json
create mode 100755 keyboards/keychron/c3_pro/ansi/red/config.h
create mode 100755 keyboards/keychron/c3_pro/ansi/red/info.json
create mode 100755 keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/c3_pro/ansi/red/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/c3_pro/ansi/red/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/c3_pro/ansi/red/red.c
create mode 100755 keyboards/keychron/c3_pro/ansi/red/rules.mk
create mode 100755 keyboards/keychron/c3_pro/c3_pro.c
create mode 100755 keyboards/keychron/c3_pro/c3_pro.h
create mode 100755 keyboards/keychron/c3_pro/config.h
create mode 100755 keyboards/keychron/c3_pro/halconf.h
create mode 100755 keyboards/keychron/c3_pro/info.json
create mode 100755 keyboards/keychron/c3_pro/mcuconf.h
create mode 100755 keyboards/keychron/c3_pro/readme.md
create mode 100755 keyboards/keychron/c3_pro/via_json/c3_pro_ansi_red.json
create mode 100644 keyboards/keychron/common/common.mk
create mode 100755 keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c
create mode 100755 keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.h
create mode 100755 keyboards/keychron/common/keychron_ft_q0.c
create mode 100755 keyboards/keychron/common/via_indicator.c
create mode 100755 keyboards/keychron/x1/ansi/red/config.h
create mode 100755 keyboards/keychron/x1/ansi/red/info.json
create mode 100755 keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/x1/ansi/red/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/x1/ansi/red/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/x1/ansi/red/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/x1/ansi/red/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/x1/ansi/red/red.c
create mode 100755 keyboards/keychron/x1/ansi/red/rules.mk
create mode 100755 keyboards/keychron/x1/config.h
create mode 100755 keyboards/keychron/x1/halconf.h
create mode 100755 keyboards/keychron/x1/info.json
create mode 100755 keyboards/keychron/x1/mcuconf.h
rename keyboards/keychron/{c1 => x1}/readme.md (54%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/x1/via_json/x1_pro_ansi_red.json
create mode 100755 keyboards/keychron/x1/x1.c
create mode 100755 keyboards/keychron/x3/ansi/red/config.h
create mode 100755 keyboards/keychron/x3/ansi/red/info.json
create mode 100755 keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/x3/ansi/red/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/x3/ansi/red/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/x3/ansi/red/red.c
create mode 100755 keyboards/keychron/x3/ansi/red/rules.mk
create mode 100755 keyboards/keychron/x3/config.h
create mode 100755 keyboards/keychron/x3/halconf.h
create mode 100755 keyboards/keychron/x3/info.json
create mode 100755 keyboards/keychron/x3/mcuconf.h
rename keyboards/keychron/{c2 => x3}/readme.md (54%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/x3/via_json/x3_ansi_red.json
create mode 100755 keyboards/keychron/x3/x3.c
diff --git a/keyboards/keychron/c1/ansi/rgb/config.h b/keyboards/keychron/c1/ansi/rgb/config.h
deleted file mode 100644
index b87b4221e128..000000000000
--- a/keyboards/keychron/c1/ansi/rgb/config.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110111
-#define DRIVER_ADDR_2 0b1110100
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 49
-#define DRIVER_2_LED_TOTAL 39
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-#define CKLED2001_CURRENT_TUNE \
- { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
-
-/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-#define CAPS_MAC_WIN_LOCK_LED_INDEX 87
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/keychron/c1/ansi/rgb/info.json b/keyboards/keychron/c1/ansi/rgb/info.json
deleted file mode 100644
index f1748d09d5ba..000000000000
--- a/keyboards/keychron/c1/ansi/rgb/info.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "keyboard_name": "Keychron C1 Pro",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0510",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_ansi_87": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/rules.mk
deleted file mode 100644
index dac903490f12..000000000000
--- a/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/c1/ansi/rgb/rules.mk b/keyboards/keychron/c1/ansi/rgb/rules.mk
deleted file mode 100644
index 4bc1e23a57a0..000000000000
--- a/keyboards/keychron/c1/ansi/rgb/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
diff --git a/keyboards/keychron/c1/ansi/white/config.h b/keyboards/keychron/c1/ansi/white/config.h
deleted file mode 100644
index 95d5645d593c..000000000000
--- a/keyboards/keychron/c1/ansi/white/config.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 1
-#define DRIVER_ADDR_1 0b1110100
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 90
-#define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-#define CKLED2001_CURRENT_TUNE \
- { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
-
-/* turn off effects when suspended */
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
-#define CAPS_LOCK_LED_INDEX 87
-#define MAC_LOCK_LED_INDEX 88
-#define WIN_LOCK_LED_INDEX 89
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-#define ENABLE_LED_MATRIX_NONE
-#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
-// #define ENABLE_LED_MATRIX_ALPHAS_MODS // Static dual val, speed is val for LEDs marked as modifiers
-#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
-// #define ENABLE_LED_MATRIX_BAND // Band fading brightness scrolling left to right
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
-#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
-#define LED_MATRIX_KEYPRESSES
-#define LED_MATRIX_KEYRELEASES
-
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
-// #endif
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
-#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
-// #define ENABLE_LED_MATRIX_EFFECT_MAX
diff --git a/keyboards/keychron/c1/ansi/white/info.json b/keyboards/keychron/c1/ansi/white/info.json
deleted file mode 100644
index 01d4bcabda40..000000000000
--- a/keyboards/keychron/c1/ansi/white/info.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "keyboard_name": "Keychron C1 Pro",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0513",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "led_matrix": true
- },
- "led_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_ansi_87": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,13], "x":17.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,12], "x":17.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,14], "x":17.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[3,15], "x":17.25, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/c1/ansi/white/keymaps/keychron/rules.mk b/keyboards/keychron/c1/ansi/white/keymaps/keychron/rules.mk
deleted file mode 100644
index dac903490f12..000000000000
--- a/keyboards/keychron/c1/ansi/white/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/c1/ansi/white/rules.mk b/keyboards/keychron/c1/ansi/white/rules.mk
deleted file mode 100644
index 4bc1e23a57a0..000000000000
--- a/keyboards/keychron/c1/ansi/white/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
diff --git a/keyboards/keychron/c1/c1.c b/keyboards/keychron/c1_pro/ansi_v1/ansi_v1.c
old mode 100644
new mode 100755
similarity index 68%
rename from keyboards/keychron/c1/c1.c
rename to keyboards/keychron/c1_pro/ansi_v1/ansi_v1.c
index 88c4b350e40f..038689a23dee
--- a/keyboards/keychron/c1/c1.c
+++ b/keyboards/keychron/c1_pro/ansi_v1/ansi_v1.c
@@ -17,7 +17,6 @@
#include "quantum.h"
// clang-format off
-
const matrix_row_t matrix_mask[] = {
0b1111111111111111,
0b1111111111111111,
@@ -28,9 +27,7 @@ const matrix_row_t matrix_mask[] = {
};
// clang-format on
-
#ifdef DIP_SWITCH_ENABLE
-
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -40,10 +37,9 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
+#endif
-#endif // DIP_SWITCH_ENABLE
-
-#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_MAC_WIN_LOCK_LED_INDEX)
+#if defined(RGB_MATRIX_ENABLE)
extern void rgb_matrix_update_pwm_buffers(void);
@@ -52,13 +48,13 @@ bool rgb_matrix_indicators_kb(void) {
return false;
}
if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 255, 255);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 0, 255, 255);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 0, 255);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 0, 0, 255);
} else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 255, 0);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 255, 255, 0);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 0, 0);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 255, 0, 0);
}
return true;
}
@@ -86,15 +82,15 @@ bool led_update_kb(led_t led_state) {
}
if (res) {
-# if defined(CAPS_MAC_WIN_LOCK_LED_INDEX)
+# if defined(CAPS_MAC_WIN_IND_LED_INDEX)
if ((led_state.caps_lock) && (default_layer_state == (1 << 0))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 255, 255);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 0, 255, 255);
} else if ((!led_state.caps_lock) && (default_layer_state == (1 << 0))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 0, 255);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 0, 0, 255);
} else if ((led_state.caps_lock) && (default_layer_state == (1 << 2))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 255, 0);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 255, 255, 0);
} else if ((!led_state.caps_lock) && (default_layer_state == (1 << 2))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 0, 0);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 255, 0, 0);
}
# endif
rgb_matrix_update_pwm_buffers();
@@ -104,16 +100,16 @@ bool led_update_kb(led_t led_state) {
}
void housekeeping_task_kb(void) {
-# if defined(RGB_MATRIX_ENABLE) && defined(CAPS_MAC_WIN_LOCK_LED_INDEX)
+# if defined(RGB_MATRIX_ENABLE) && defined(CAPS_MAC_WIN_IND_LED_INDEX)
if (!rgb_matrix_is_enabled()) {
if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 255, 255);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 0, 255, 255);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 0, 0, 255);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 0, 0, 255);
} else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 255, 0);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 255, 255, 0);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
- rgb_matrix_set_color(CAPS_MAC_WIN_LOCK_LED_INDEX, 255, 0, 0);
+ rgb_matrix_set_color(CAPS_MAC_WIN_IND_LED_INDEX, 255, 0, 0);
}
rgb_matrix_update_pwm_buffers();
}
@@ -122,7 +118,7 @@ void housekeeping_task_kb(void) {
#endif
-#if defined(LED_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) && defined(MAC_LOCK_LED_INDEX) && defined(WIN_LOCK_LED_INDEX)
+#if defined(LED_MATRIX_ENABLE)
extern void led_matrix_update_pwm_buffers(void);
@@ -132,20 +128,20 @@ bool led_matrix_indicators_kb(void) {
}
if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 255);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 0);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 255);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 0);
} else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 0);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 255);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 0);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 255);
}
return true;
}
@@ -159,23 +155,23 @@ bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if (res) {
-# if defined(CAPS_LOCK_LED_INDEX) && defined(MAC_LOCK_LED_INDEX) && defined(WIN_LOCK_LED_INDEX)
+# if defined(CAPS_LOCK_LED_INDEX) && defined(MAC_OS_LED_INDEX) && defined(WIN_OS_LED_INDEX)
if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 255);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 0);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 255);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 0);
} else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 0);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 255);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 0);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 255);
}
led_matrix_update_pwm_buffers();
# endif
@@ -185,24 +181,24 @@ bool led_update_kb(led_t led_state) {
}
void housekeeping_task_kb(void) {
-# if defined(LED_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) && defined(MAC_LOCK_LED_INDEX) && defined(WIN_LOCK_LED_INDEX)
+# if defined(LED_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) && defined(MAC_OS_LED_INDEX) && defined(WIN_OS_LED_INDEX)
if (!led_matrix_is_enabled()) {
if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 255);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 0);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 0))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 255);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 0);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 255);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 0);
} else if ((host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 0);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 255);
} else if ((!host_keyboard_led_state().caps_lock) && (default_layer_state == (1 << 2))) {
led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
- led_matrix_set_value(MAC_LOCK_LED_INDEX, 0);
- led_matrix_set_value(WIN_LOCK_LED_INDEX, 255);
+ led_matrix_set_value(MAC_OS_LED_INDEX, 0);
+ led_matrix_set_value(WIN_OS_LED_INDEX, 255);
}
led_matrix_update_pwm_buffers();
}
diff --git a/keyboards/keychron/c1/config.h b/keyboards/keychron/c1_pro/ansi_v1/config.h
old mode 100644
new mode 100755
similarity index 77%
rename from keyboards/keychron/c1/config.h
rename to keyboards/keychron/c1_pro/ansi_v1/config.h
index 1ee14465720c..dcdb95e25273
--- a/keyboards/keychron/c1/config.h
+++ b/keyboards/keychron/c1_pro/ansi_v1/config.h
@@ -17,23 +17,14 @@
#pragma once
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {5, 4}, }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
-/* EEPROM Driver Configuration */
-#define WEAR_LEVELING_LOGICAL_SIZE 2048
-#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-
/* 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
-
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/c1/halconf.h b/keyboards/keychron/c1_pro/ansi_v1/halconf.h
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/c1/halconf.h
rename to keyboards/keychron/c1_pro/ansi_v1/halconf.h
diff --git a/keyboards/keychron/c1_pro/ansi_v1/info.json b/keyboards/keychron/c1_pro/ansi_v1/info.json
new file mode 100755
index 000000000000..f3003487096b
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/info.json
@@ -0,0 +1,12 @@
+{
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "community_layouts": [
+ "tkl_ansi"
+ ]
+}
diff --git a/keyboards/keychron/c1/mcuconf.h b/keyboards/keychron/c1_pro/ansi_v1/mcuconf.h
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/c1/mcuconf.h
rename to keyboards/keychron/c1_pro/ansi_v1/mcuconf.h
diff --git a/keyboards/keychron/c1_pro/ansi_v1/rgb/config.h b/keyboards/keychron/c1_pro/ansi_v1/rgb/config.h
new file mode 100755
index 000000000000..be22bbb493a0
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/rgb/config.h
@@ -0,0 +1,47 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
+#ifdef RGB_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 2
+# define DRIVER_ADDR_1 0b1110111
+# define DRIVER_ADDR_2 0b1110100
+
+/* RGB Matrix Configuration */
+# define RGB_MATRIX_LED_COUNT 88
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_9CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
+
+/* turn off effects when suspended */
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* Indication led index */
+# define CAPS_MAC_WIN_IND_LED_INDEX 87
+
+// 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
+#endif
diff --git a/keyboards/keychron/c1_pro/ansi_v1/rgb/info.json b/keyboards/keychron/c1_pro/ansi_v1/rgb/info.json
new file mode 100755
index 000000000000..9f72f3ce56fe
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/rgb/info.json
@@ -0,0 +1,229 @@
+{
+ "usb": {
+ "pid": "0x0510",
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "rgb_matrix": true
+ },
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[3,14], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,15], "x":17.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,12], "x":17.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[4,14], "x":17.25, "y":5.25}
+ ]
+ }
+ },
+ "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
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":27},
+ {"matrix":[2, 13], "flags":4, "x":179, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":27},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":39},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":39},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":39},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":39},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":39},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":39},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":39},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":39},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":39},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":39},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":39},
+ {"matrix":[3, 11], "flags":4, "x":153, "y":39},
+ {"matrix":[3, 13], "flags":1, "x":174, "y":39},
+
+ {"matrix":[4, 12], "flags":8, "x":211, "y":39},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":82, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":95, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":108, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":121, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":134, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":147, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":132, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":4, "x":165, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":181, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c1/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/c1/ansi/rgb/keymaps/default/keymap.c
rename to keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/default/keymap.c
index 9f046461af8c..905ceb16dce2
--- a/keyboards/keychron/c1/ansi/rgb/keymaps/default/keymap.c
+++ b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/default/keymap.c
@@ -16,28 +16,27 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_ansi_87(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, _______, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 94%
rename from keyboards/keychron/c1/ansi/rgb/keymaps/keychron/keymap.c
rename to keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/keychron/keymap.c
index b202555dfd78..62941adb13ac
--- a/keyboards/keychron/c1/ansi/rgb/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/keychron/keymap.c
@@ -18,25 +18,24 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_87(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -52,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -75,6 +74,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c1/ansi/rgb/keymaps/via/keymap.c b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/via/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/c1/ansi/rgb/keymaps/via/keymap.c
rename to keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/via/keymap.c
index b01357703b5b..91249241763c
--- a/keyboards/keychron/c1/ansi/rgb/keymaps/via/keymap.c
+++ b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/via/keymap.c
@@ -1,5 +1,4 @@
/* 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
@@ -16,28 +15,27 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_ansi_87(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c1/ansi/rgb/keymaps/via/rules.mk b/keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/c1/ansi/rgb/keymaps/via/rules.mk
rename to keyboards/keychron/c1_pro/ansi_v1/rgb/keymaps/via/rules.mk
diff --git a/keyboards/keychron/c1/ansi/rgb/rgb.c b/keyboards/keychron/c1_pro/ansi_v1/rgb/rgb.c
old mode 100644
new mode 100755
similarity index 63%
rename from keyboards/keychron/c1/ansi/rgb/rgb.c
rename to keyboards/keychron/c1_pro/ansi_v1/rgb/rgb.c
index a866576a8f33..205e3642ae13
--- a/keyboards/keychron/c1/ansi/rgb/rgb.c
+++ b/keyboards/keychron/c1_pro/ansi_v1/rgb/rgb.c
@@ -1,5 +1,4 @@
/* 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
@@ -16,10 +15,8 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
// clang-format off
-
+#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -94,6 +91,8 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_12, G_12, H_12},
{1, I_14, G_14, H_14},
+ {0, I_14, G_14, H_14}, // Indication led
+
{1, C_1, A_1, B_1},
{1, C_3, A_3, B_3},
{1, C_4, A_4, B_4},
@@ -119,40 +118,5 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16},
{1, C_15, A_15, B_15},
-
- {0, I_14, G_14, H_14},
};
-
-#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, 11, 12, 87, 13, 14 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
- { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 },
- { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, 62, 15, 32 },
- { 63, __, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 86, 75 },
- { 76, 77, 78, __, __, __, 79, __, __, __, 80, 81, 82, 83, 84, 85 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {26,0}, {39,0}, {52,0}, {65,0}, {85,0}, {98,0}, {111,0}, {124,0}, {143,0}, {156,0}, {169,0}, {182,0}, {198,0}, {211,0}, {224,0},
- {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
- {3,27}, {20,27}, {33,27}, {46,27}, {59,27}, {72,27}, {85,27}, {98,27}, {111,27}, {124,27}, {137,27}, {150,27}, {163,27}, {179,27}, {198,27}, {211,27}, {224,27},
- {5,39}, {23,39}, {36,39}, {49,39}, {62,39}, {75,39}, {88,39}, {101,39}, {114,39}, {127,39}, {140,39}, {153,39}, {174,39}, {221,39},
- {8,52}, {29,52}, {42,52}, {55,52}, {68,52}, {82,52}, {95,52}, {108,52}, {121,52}, {134,52}, {147,52}, {171,52}, {211,52},
- {2,64}, {18,64}, {34,64}, {83,64}, {132,64}, {148,64}, {165,64}, {181,64}, {198,64}, {211,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif // RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/c1_pro/ansi_v1/rgb/rules.mk b/keyboards/keychron/c1_pro/ansi_v1/rgb/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/rgb/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c1_pro/ansi_v1/white/config.h b/keyboards/keychron/c1_pro/ansi_v1/white/config.h
new file mode 100755
index 000000000000..c18ec8f8c447
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/white/config.h
@@ -0,0 +1,48 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 90
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_9CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+# define CAPS_LOCK_LED_INDEX 87
+# define MAC_OS_LED_INDEX 88
+# define WIN_OS_LED_INDEX 89
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/c1_pro/ansi_v1/white/info.json b/keyboards/keychron/c1_pro/ansi_v1/white/info.json
new file mode 100755
index 000000000000..7ca474fe8088
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/white/info.json
@@ -0,0 +1,226 @@
+{
+ "usb": {
+ "pid": "0x0513",
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,13], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[3,12], "x":17.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[3,14], "x":17.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[3,15], "x":17.25, "y":5.25}
+ ]
+ }
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":27},
+ {"matrix":[2, 13], "flags":4, "x":179, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":27},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":39},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":39},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":39},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":39},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":39},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":39},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":39},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":39},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":39},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":39},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":39},
+ {"matrix":[3, 11], "flags":4, "x":153, "y":39},
+ {"matrix":[3, 13], "flags":1, "x":174, "y":39},
+
+ {"matrix":[4, 12], "flags":8, "x":198, "y":39},
+ {"matrix":[4, 12], "flags":8, "x":211, "y":39},
+ {"matrix":[4, 12], "flags":8, "x":224, "y":39},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":82, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":95, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":108, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":121, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":134, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":147, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":132, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":4, "x":165, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":181, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c1/ansi/white/keymaps/via/keymap.c b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/c1/ansi/white/keymaps/via/keymap.c
rename to keyboards/keychron/c1_pro/ansi_v1/white/keymaps/default/keymap.c
index d2c71315ac3d..e01ac37fb6dd
--- a/keyboards/keychron/c1/ansi/white/keymaps/via/keymap.c
+++ b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/default/keymap.c
@@ -16,28 +16,27 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
+// clang-format off
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_87(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, _______, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c1/ansi/white/keymaps/keychron/keymap.c b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 94%
rename from keyboards/keychron/c1/ansi/white/keymaps/keychron/keymap.c
rename to keyboards/keychron/c1_pro/ansi_v1/white/keymaps/keychron/keymap.c
index 8b1e0a183de6..8dc5b1cf9dc3
--- a/keyboards/keychron/c1/ansi/white/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/keychron/keymap.c
@@ -18,25 +18,24 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_87(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP,
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_CRTA, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -52,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -75,6 +74,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/keychron/rules.mk b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/via/keymap.c b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/via/keymap.c
new file mode 100755
index 000000000000..69661bab2383
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/via/keymap.c
@@ -0,0 +1,62 @@
+/* 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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, _______, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/c1/ansi/white/keymaps/via/rules.mk b/keyboards/keychron/c1_pro/ansi_v1/white/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/c1/ansi/white/keymaps/via/rules.mk
rename to keyboards/keychron/c1_pro/ansi_v1/white/keymaps/via/rules.mk
diff --git a/keyboards/keychron/c1_pro/ansi_v1/white/rules.mk b/keyboards/keychron/c1_pro/ansi_v1/white/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v1/white/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c1/ansi/white/white.c b/keyboards/keychron/c1_pro/ansi_v1/white/white.c
old mode 100644
new mode 100755
similarity index 59%
rename from keyboards/keychron/c1/ansi/white/white.c
rename to keyboards/keychron/c1_pro/ansi_v1/white/white.c
index 944d279f25fc..23005fb900e0
--- a/keyboards/keychron/c1/ansi/white/white.c
+++ b/keyboards/keychron/c1_pro/ansi_v1/white/white.c
@@ -16,10 +16,8 @@
#include "quantum.h"
-#ifdef LED_MATRIX_ENABLE
-
// clang-format off
-
+#ifdef LED_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -92,6 +90,10 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, D_5}, // '"
{0, D_3}, // enter
+ {0, H_7}, // CPAS
+ {0, H_8}, // MAC
+ {0, H_9}, // WIN
+
{0, E_16}, // left shift
{0, E_14}, // z
{0, E_13}, // x
@@ -117,42 +119,5 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, F_2}, // left
{0, F_1}, // down
{0, G_13}, // right
-
- {0, H_7}, // CPAS
- {0, H_8}, // MAC
- {0, H_9}, // WIN
};
-
-#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, 11, 12, 87, 13, 14 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
- { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 },
- { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 32, 62, 49, 86 },
- { 63, __, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 87, 74, 88, 75 },
- { 76, 77, 78, __, __, __, 79, 89, __, __, 80, 81, 82, 83, 84, 85 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {26,0}, {39,0}, {52,0}, {65,0}, {85,0}, {98,0}, {111,0}, {124,0}, {143,0}, {156,0}, {169,0}, {182,0}, {198,0}, {211,0}, {224,0},
- {0,15}, {26,15}, {13,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
- {3,27}, {20,27}, {46,27}, {59,27}, {33,27}, {72,27}, {85,27}, {98,27}, {111,27}, {124,27}, {137,27}, {150,27}, {163,27}, {179,27}, {198,27}, {211,27}, {224,27},
- {5,39}, {23,39}, {36,39}, {49,39}, {62,39}, {75,39}, {88,39}, {101,39}, {114,39}, {127,39}, {140,39}, {153,39}, {174,39}, {198,39}, {211, 39},{224,39},
- {8,52}, {29,52}, {42,52}, {55,52}, {68,52}, {82,52}, {95,52}, {108,52}, {121,52}, {134,52}, {147,52}, {171,52}, {211,52},
- {2,64}, {18,64}, {34,64}, {83,64}, {132,64}, {149,64}, {181,64}, {165,64}, {198,64}, {211,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 8, 8,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/c1_pro/ansi_v2/ansi_v2.c b/keyboards/keychron/c1_pro/ansi_v2/ansi_v2.c
new file mode 100755
index 000000000000..19b39614f867
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/ansi_v2.c
@@ -0,0 +1,44 @@
+/* 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 "quantum.h"
+
+#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 ? 0 : 2));
+ }
+ return true;
+}
+#endif
+
+void keyboard_post_init_kb(void) {
+ setPinOutputPushPull(LED_MAC_OS_PIN);
+ setPinOutputPushPull(LED_WIN_OS_PIN);
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+
+ keyboard_post_init_user();
+}
+
+void suspend_power_down_kb(void) {
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ suspend_power_down_user();
+}
diff --git a/keyboards/keychron/c1_pro/ansi_v2/config.h b/keyboards/keychron/c1_pro/ansi_v2/config.h
new file mode 100755
index 000000000000..ceccf1212c63
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/config.h
@@ -0,0 +1,36 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* DIP switch */
+#define DIP_SWITCH_PINS { D2 }
+
+/* Increase I2C speed to 1000 KHz */
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* System indication led */
+#define LED_MAC_OS_PIN C10
+#define LED_WIN_OS_PIN C11
+#define LED_OS_PIN_ON_STATE 1
+
+/* The SPI Driver Configuration */
+// #define SPI_DRIVER SPID1
+// #define SPI_SCK_PIN A5
+// #define SPI_MOSI_PIN A7
+// #define SPI_MISO_PIN A6
+// #define CKLED2001_SPI_DIVISOR 21
diff --git a/keyboards/keychron/c2/halconf.h b/keyboards/keychron/c1_pro/ansi_v2/halconf.h
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/c2/halconf.h
rename to keyboards/keychron/c1_pro/ansi_v2/halconf.h
diff --git a/keyboards/keychron/c1_pro/ansi_v2/info.json b/keyboards/keychron/c1_pro/ansi_v2/info.json
new file mode 100755
index 000000000000..555db67c2bee
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/info.json
@@ -0,0 +1,113 @@
+{
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "matrix_pins": {
+ "cols": ["A0", "A1", "A2", "A3", "C0", "C1", "C2", "C3", "A8", "C12", "B9", "C6", "C7", "C4", "C5", "A15", "B10"],
+ "rows": ["B0", "B1", "B8", "B3", "B4", "B5"]
+ },
+ "diode_direction": "COL2ROW",
+ "indicators": {
+ "caps_lock": "C9"
+ },
+ "community_layouts": [
+ "tkl_ansi"
+ ],
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,1], "x":2, "y":0},
+ {"matrix":[0,2], "x":3, "y":0},
+ {"matrix":[0,3], "x":4, "y":0},
+ {"matrix":[0,4], "x":5, "y":0},
+ {"matrix":[0,5], "x":6.5, "y":0},
+ {"matrix":[0,6], "x":7.5, "y":0},
+ {"matrix":[0,7], "x":8.5, "y":0},
+ {"matrix":[0,8], "x":9.5, "y":0},
+ {"matrix":[0,9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/c1_pro/ansi_v2/mcuconf.h b/keyboards/keychron/c1_pro/ansi_v2/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/c1_pro/ansi_v2/non_light/info.json b/keyboards/keychron/c1_pro/ansi_v2/non_light/info.json
new file mode 100755
index 000000000000..f5e6d54ff396
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/non_light/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x051C",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/default/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/default/keymap.c
new file mode 100755
index 000000000000..dd38d7a611e5
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/default/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_SLEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_NO, KC_SLEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/keychron/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..55d35b47aaaf
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/keychron/keymap.c
@@ -0,0 +1,73 @@
+/* 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"
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, KC_SLEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_CRTA, KC_SLEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+// 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/c1_pro/ansi_v2/non_light/keymaps/keychron/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..ae08d15e5100
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/keychron/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += \
+ keychron_common.c \
+ keychron_ft_c1_pro_ansi_v2_non_light.c
diff --git a/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/via/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/via/keymap.c
new file mode 100755
index 000000000000..2afe6640785b
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/via/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_SLEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_NO, KC_SLEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/c2/ansi/rgb/keymaps/via/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/c2/ansi/rgb/keymaps/via/rules.mk
rename to keyboards/keychron/c1_pro/ansi_v2/non_light/keymaps/via/rules.mk
diff --git a/keyboards/keychron/c1_pro/ansi_v2/non_light/non_light.c b/keyboards/keychron/c1_pro/ansi_v2/non_light/non_light.c
new file mode 100755
index 000000000000..4e257bb6509e
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/non_light/non_light.c
@@ -0,0 +1,43 @@
+/* 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 "quantum.h"
+#include "keychron_ft_c1_pro_ansi_v2_non_light.h"
+
+void housekeeping_task_kb(void) {
+ if (!factory_reset_flag) {
+ if (default_layer_state == (1 << 0)) {
+ writePin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ }
+ if (default_layer_state == (1 << 2)) {
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE);
+ }
+ }
+ factory_reset_task();
+ factory_reset_ind_task();
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if (res && (!factory_reset_flag)) {
+#ifdef LED_CAPS_LOCK_PIN
+ writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock);
+#endif
+ }
+ return res;
+}
diff --git a/keyboards/keychron/c1_pro/ansi_v2/non_light/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/non_light/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/non_light/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c1_pro/ansi_v2/rgb/config.h b/keyboards/keychron/c1_pro/ansi_v2/rgb/config.h
new file mode 100755
index 000000000000..ba4f2216a9b4
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/rgb/config.h
@@ -0,0 +1,41 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef RGB_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 2
+# define DRIVER_ADDR_1 0b1110111
+# define DRIVER_ADDR_2 0b1110100
+
+/* RGB Matrix Configuration */
+# define RGB_MATRIX_LED_COUNT 87
+
+/* turn off effects when suspended */
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* Set LED driver current */
+# define CKLED2001_CURRENT_TUNE \
+ { 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 }
+
+/* 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_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#endif
diff --git a/keyboards/keychron/c1_pro/ansi_v2/rgb/info.json b/keyboards/keychron/c1_pro/ansi_v2/rgb/info.json
new file mode 100755
index 000000000000..07ae68bd5cfe
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/rgb/info.json
@@ -0,0 +1,129 @@
+{
+ "usb": {
+ "pid": "0x0516",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "rgb_matrix": true
+ },
+ "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
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":27},
+ {"matrix":[2, 13], "flags":1, "x":179, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":224, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":39},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":39},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":39},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":39},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":39},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":39},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":39},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":39},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":39},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":39},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":39},
+ {"matrix":[3, 11], "flags":4, "x":153, "y":39},
+ {"matrix":[3, 13], "flags":1, "x":174, "y":39},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":82, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":95, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":108, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":121, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":134, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":147, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":132, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":165, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":181, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/default/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/default/keymap.c
new file mode 100755
index 000000000000..5337215bc6e6
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/default/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, _______, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..b914ea2b6931
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/keychron/keymap.c
@@ -0,0 +1,78 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/via/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/via/keymap.c
new file mode 100755
index 000000000000..b0312e1137e7
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/via/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/c2/ansi/white/keymaps/via/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/c2/ansi/white/keymaps/via/rules.mk
rename to keyboards/keychron/c1_pro/ansi_v2/rgb/keymaps/via/rules.mk
diff --git a/keyboards/keychron/c1_pro/ansi_v2/rgb/rgb.c b/keyboards/keychron/c1_pro/ansi_v2/rgb/rgb.c
new file mode 100755
index 000000000000..da824ef11828
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/rgb/rgb.c
@@ -0,0 +1,134 @@
+/* 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 .
+ */
+
+#include "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+// clang-format off
+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, I_1, G_1, H_1},
+ {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, 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, I_10, G_10, H_10},
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_15, G_15, H_15},
+ {0, I_16, G_16, H_16},
+ {0, L_5, J_5, K_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, 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, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_15, A_15, B_15},
+ {0, C_16, A_16, B_16},
+ {0, L_9, J_9, K_9},
+
+ {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, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_15, D_15, E_15},
+ {0, F_16, D_16, E_16},
+ {0, L_14, J_14, K_14},
+
+ {1, C_16, A_16, B_16},
+ {1, C_15, A_15, B_15},
+ {1, C_14, A_14, B_14},
+ {1, C_13, A_13, B_13},
+ {1, C_12, A_12, B_12},
+ {1, C_11, A_11, B_11},
+ {1, C_10, A_10, B_10},
+ {1, C_9, A_9, B_9},
+ {1, C_8, A_8, B_8},
+ {1, C_7, A_7, B_7},
+ {1, C_6, A_6, B_6},
+ {1, C_5, A_5, B_5},
+ {1, C_3, A_3, B_3},
+
+ {1, I_16, G_16, H_16},
+ {1, I_14, G_14, H_14},
+ {1, I_13, G_13, H_13},
+ {1, I_12, G_12, H_12},
+ {1, I_11, G_11, H_11},
+ {1, I_10, G_10, H_10},
+ {1, I_9, G_9, H_9},
+ {1, I_8, G_8, H_8},
+ {1, I_7, G_7, H_7},
+ {1, I_6, G_6, H_6},
+ {1, I_5, G_5, H_5},
+ {1, I_3, G_3, H_3},
+ {1, I_1, G_1, H_1},
+
+ {1, F_16, D_16, E_16},
+ {1, F_15, D_15, E_15},
+ {1, F_14, D_14, E_14},
+ {1, F_10, D_10, E_10},
+ {1, F_6, D_6, E_6},
+ {1, F_5, D_5, E_5},
+ {1, F_4, D_4, E_4},
+ {1, F_3, D_3, E_3},
+ {1, F_2, D_2, E_2},
+ {1, F_1, D_1, E_1},
+ {1, L_10, J_10, K_10},
+};
+#endif // RGB_MATRIX_ENABLE
+
+// clang-format on
+void housekeeping_task_kb(void) {
+ if (default_layer_state == (1 << 0)) {
+ writePin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ }
+ if (default_layer_state == (1 << 2)) {
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE);
+ }
+}
diff --git a/keyboards/keychron/c1_pro/ansi_v2/rgb/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/rgb/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/rgb/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c1_pro/ansi_v2/white/config.h b/keyboards/keychron/c1_pro/ansi_v2/white/config.h
new file mode 100755
index 000000000000..4d2b19e7fcc0
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/config.h
@@ -0,0 +1,41 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 87
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_9CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/c1_pro/ansi_v2/white/info.json b/keyboards/keychron/c1_pro/ansi_v2/white/info.json
new file mode 100755
index 000000000000..e87577387266
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/info.json
@@ -0,0 +1,124 @@
+{
+ "usb": {
+ "pid": "0x0519",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":27},
+ {"matrix":[2, 13], "flags":1, "x":179, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":224, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":39},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":39},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":39},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":39},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":39},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":39},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":39},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":39},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":39},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":39},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":39},
+ {"matrix":[3, 11], "flags":4, "x":153, "y":39},
+ {"matrix":[3, 13], "flags":1, "x":174, "y":39},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":82, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":95, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":108, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":121, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":134, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":147, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":132, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":165, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":181, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c1/ansi/white/keymaps/default/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/c1/ansi/white/keymaps/default/keymap.c
rename to keyboards/keychron/c1_pro/ansi_v2/white/keymaps/default/keymap.c
index d2c71315ac3d..6430412635b2
--- a/keyboards/keychron/c1/ansi/white/keymaps/default/keymap.c
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 202 @ 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
@@ -16,28 +16,27 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_87(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, _______, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/keychron/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..851d51d2f12e
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/keychron/keymap.c
@@ -0,0 +1,78 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_CRTA, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/keychron/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/via/keymap.c b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/via/keymap.c
new file mode 100755
index 000000000000..d90c149768a6
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/via/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, _______, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/via/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/c1_pro/ansi_v2/white/rules.mk b/keyboards/keychron/c1_pro/ansi_v2/white/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c1_pro/ansi_v2/white/white.c b/keyboards/keychron/c1_pro/ansi_v2/white/white.c
new file mode 100755
index 000000000000..9243b5278f66
--- /dev/null
+++ b/keyboards/keychron/c1_pro/ansi_v2/white/white.c
@@ -0,0 +1,132 @@
+/* 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 "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, A_16},
+ {0, A_15},
+ {0, A_14},
+ {0, A_13},
+ {0, A_12},
+ {0, A_11},
+ {0, A_10},
+ {0, A_9 },
+ {0, A_8 },
+ {0, A_7 },
+ {0, A_6 },
+ {0, A_5 },
+ {0, A_4 },
+ {0, A_2 },
+ {0, A_1 },
+ {0, G_1 },
+
+ {0, B_16},
+ {0, B_15},
+ {0, B_14},
+ {0, B_13},
+ {0, B_12},
+ {0, B_11},
+ {0, B_10},
+ {0, B_9 },
+ {0, B_8 },
+ {0, B_7 },
+ {0, B_6 },
+ {0, B_5 },
+ {0, B_4 },
+ {0, B_3 },
+ {0, B_2 },
+ {0, B_1 },
+ {0, H_1 },
+
+ {0, C_16},
+ {0, C_15},
+ {0, C_14},
+ {0, C_13},
+ {0, C_12},
+ {0, C_11},
+ {0, C_10},
+ {0, C_9 },
+ {0, C_8 },
+ {0, C_7 },
+ {0, C_6 },
+ {0, C_5 },
+ {0, C_4 },
+ {0, C_3 },
+ {0, C_2 },
+ {0, C_1 },
+ {0, G_6 },
+
+ {0, D_16},
+ {0, D_15},
+ {0, D_14},
+ {0, D_13},
+ {0, D_12},
+ {0, D_11},
+ {0, D_10},
+ {0, D_9 },
+ {0, D_8 },
+ {0, D_7 },
+ {0, D_6 },
+ {0, D_5 },
+ {0, D_3 },
+
+ {0, E_16},
+ {0, E_14},
+ {0, E_13},
+ {0, E_12},
+ {0, E_11},
+ {0, E_10},
+ {0, E_9 },
+ {0, E_8 },
+ {0, E_7 },
+ {0, E_6 },
+ {0, E_5 },
+ {0, E_3 },
+ {0, E_1 },
+
+ {0, F_16},
+ {0, F_15},
+ {0, F_14},
+ {0, F_10},
+ {0, F_6 },
+ {0, F_5 },
+ {0, F_4 },
+ {0, F_3 },
+ {0, F_2 },
+ {0, F_1 },
+ {0, G_13},
+};
+#endif
+
+// clang-format on
+void housekeeping_task_kb(void) {
+ if (default_layer_state == (1 << 0)) {
+ writePin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ }
+ if (default_layer_state == (1 << 2)) {
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE);
+ }
+}
+
diff --git a/keyboards/keychron/c1_pro/config.h b/keyboards/keychron/c1_pro/config.h
new file mode 100755
index 000000000000..473da47b3ef0
--- /dev/null
+++ b/keyboards/keychron/c1_pro/config.h
@@ -0,0 +1,25 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/c1_pro/info.json b/keyboards/keychron/c1_pro/info.json
new file mode 100755
index 000000000000..87967a5c3056
--- /dev/null
+++ b/keyboards/keychron/c1_pro/info.json
@@ -0,0 +1,18 @@
+{
+ "keyboard_name": "Keychron C1 Pro",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ }
+}
diff --git a/keyboards/keychron/c1_pro/readme.md b/keyboards/keychron/c1_pro/readme.md
new file mode 100755
index 000000000000..163ede264f5d
--- /dev/null
+++ b/keyboards/keychron/c1_pro/readme.md
@@ -0,0 +1,34 @@
+# Keychron C1 Pro
+
+![Keychron C1 Pro](https://i.imgur.com/Svdm4lph.jpg)
+
+A customizable 80% TKL keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Keychron C1 Pro
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/c1/ansi_v1/rgb:default
+ make keychron/c1/ansi_v1/white:default
+ make keychron/c1/ansi_v2/rgb:default
+ make keychron/c1/ansi_v2/white:default
+ make keychron/c1/ansi_v2/non_light:default
+
+Flashing example for this keyboard:
+
+ make keychron/c1/ansi_v1/rgb:default:flash
+ make keychron/c1/ansi_v1/white:default:flash
+ make keychron/c1/ansi_v2/rgb:default:flash
+ make keychron/c1/ansi_v2/white:default:flash
+ make keychron/c1/ansi_v2/non_light:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v1_rgb.json b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v1_rgb.json
new file mode 100755
index 000000000000..3d0bcb7f7d61
--- /dev/null
+++ b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v1_rgb.json
@@ -0,0 +1,285 @@
+{
+ "name": "Keychron C1 Pro ANSI RGB",
+ "vendorId": "0x3434",
+ "productId": "0x0510",
+ "keycodes": ["qmk_lighting"],
+ "menus": [
+ {
+ "label": "Lighting",
+ "content": [
+ {
+ "label": "Backlight",
+ "content": [
+ {
+ "label": "Brightness",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
+ },
+ {
+ "label": "Effect",
+ "type": "dropdown",
+ "content": ["id_qmk_rgb_matrix_effect", 3, 2],
+ "options": [
+ ["00. None", 0],
+ ["01. SOLID_COLOR", 1],
+ ["02. BREATHING", 2],
+ ["03. BAND_SPIRAL_VAL", 3],
+ ["04. CYCLE_ALL", 4],
+ ["05. CYCLE_LEFT_RIGHT", 5],
+ ["06. CYCLE_UP_DOWN", 6],
+ ["07. RAINBOW_MOVING_CHEVRON", 7],
+ ["08. CYCLE_OUT_IN", 8],
+ ["09. CYCLE_OUT_IN_DUAL", 9],
+ ["10. CYCLE_PINWHEEL", 10],
+ ["11. CYCLE_SPIRAL", 11],
+ ["12. DUAL_BEACON", 12],
+ ["13. RAINBOW_BEACON", 13],
+ ["14. JELLYBEAN_RAINDROPS", 14],
+ ["15. PIXEL_RAIN", 15],
+ ["16. TYPING_HEATMAP", 16],
+ ["17. DIGITAL_RAIN", 17],
+ ["18. REACTIVE_SIMPLE", 18],
+ ["19. REACTIVE_MULTIWIDE", 19],
+ ["20. REACTIVE_MULTINEXUS", 20],
+ ["21. SPLASH", 21],
+ ["22. SOLID_SPLASH", 22]
+ ]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} > 1",
+ "label": "Effect Speed",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0",
+ "label": "Color",
+ "type": "color",
+ "content": ["id_qmk_rgb_matrix_color", 3, 4]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "matrix": {"rows": 6, "cols": 16},
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "3,14"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "3,15"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "w": 1.5,
+ "c": "#aaaaaa"
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "3,12"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "4,14"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v1_white.json b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v1_white.json
new file mode 100755
index 000000000000..ba0789c97a20
--- /dev/null
+++ b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v1_white.json
@@ -0,0 +1,224 @@
+{
+ "name": "Keychron C1 Pro ANSI White",
+ "vendorId": "0x3434",
+ "productId": "0x0513",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 16},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,13"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "3,12"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "3,14"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "3,15"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_non_light.json b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_non_light.json
new file mode 100755
index 000000000000..80c8bdf9a15a
--- /dev/null
+++ b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_non_light.json
@@ -0,0 +1,223 @@
+{
+ "name": "Keychron C1 Pro V2 ANSI Non Light",
+ "vendorId": "0x3434",
+ "productId": "0x051C",
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 17},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_rgb.json b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_rgb.json
new file mode 100755
index 000000000000..4114ce78f29e
--- /dev/null
+++ b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_rgb.json
@@ -0,0 +1,285 @@
+{
+ "name": "Keychron C1 Pro V2 ANSI RGB",
+ "vendorId": "0x3434",
+ "productId": "0x0516",
+ "keycodes": ["qmk_lighting"],
+ "menus": [
+ {
+ "label": "Lighting",
+ "content": [
+ {
+ "label": "Backlight",
+ "content": [
+ {
+ "label": "Brightness",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
+ },
+ {
+ "label": "Effect",
+ "type": "dropdown",
+ "content": ["id_qmk_rgb_matrix_effect", 3, 2],
+ "options": [
+ ["00. None", 0],
+ ["01. SOLID_COLOR", 1],
+ ["02. BREATHING", 2],
+ ["03. BAND_SPIRAL_VAL", 3],
+ ["04. CYCLE_ALL", 4],
+ ["05. CYCLE_LEFT_RIGHT", 5],
+ ["06. CYCLE_UP_DOWN", 6],
+ ["07. RAINBOW_MOVING_CHEVRON", 7],
+ ["08. CYCLE_OUT_IN", 8],
+ ["09. CYCLE_OUT_IN_DUAL", 9],
+ ["10. CYCLE_PINWHEEL", 10],
+ ["11. CYCLE_SPIRAL", 11],
+ ["12. DUAL_BEACON", 12],
+ ["13. RAINBOW_BEACON", 13],
+ ["14. JELLYBEAN_RAINDROPS", 14],
+ ["15. PIXEL_RAIN", 15],
+ ["16. TYPING_HEATMAP", 16],
+ ["17. DIGITAL_RAIN", 17],
+ ["18. REACTIVE_SIMPLE", 18],
+ ["19. REACTIVE_MULTIWIDE", 19],
+ ["20. REACTIVE_MULTINEXUS", 20],
+ ["21. SPLASH", 21],
+ ["22. SOLID_SPLASH", 22]
+ ]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} > 1",
+ "label": "Effect Speed",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0",
+ "label": "Color",
+ "type": "color",
+ "content": ["id_qmk_rgb_matrix_color", 3, 4]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "customKeycodes": [
+ {"name": "Mission Control", "title": "Mission Control in macOS", "shortName": "MCtrl"},
+ {"name": "Launch Pad", "title": "Launch Pad in macOS", "shortName": "LPad"},
+ {"name": "Left Option", "title": "Left Option in macOS", "shortName": "LOpt"},
+ {"name": "Right Option", "title": "Right Option in macOS", "shortName": "ROpt"},
+ {"name": "Left Cmd", "title": "Left Command in macOS", "shortName": "LCmd"},
+ {"name": "Right Cmd", "title": "Right Command in macOS", "shortName": "RCmd"},
+ {"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
+ {"name": "Task View", "title": "Task View in windows", "shortName": "Task"},
+ {"name": "File Explorer", "title": "File Explorer in windows", "shortName": "File"},
+ {"name": "Screen Shot", "title": "Screenshot in macOS", "shortName": "SShot"},
+ {"name": "Cortana", "title": "Cortana in windows", "shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 17},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_white.json b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_white.json
new file mode 100755
index 000000000000..e1e8dbb12320
--- /dev/null
+++ b/keyboards/keychron/c1_pro/via_json/c1_pro_ansi_v2_white.json
@@ -0,0 +1,224 @@
+{
+ "name": "Keychron C1 Pro V2 ANSI White",
+ "vendorId": "0x3434",
+ "productId": "0x0519",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 17},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c2/ansi/rgb/config.h b/keyboards/keychron/c2/ansi/rgb/config.h
deleted file mode 100644
index c4c596a69031..000000000000
--- a/keyboards/keychron/c2/ansi/rgb/config.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110111
-#define DRIVER_ADDR_2 0b1110100
-
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56 }
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 60
-#define DRIVER_2_LED_TOTAL 48
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Enable indicator LED*/
-#define NUM_LOCK_INDEX 16
-#define CAPS_LOCK_INDEX 17
-#define MAC_OS_LED_INDEX 18
-#define WIN_OS_LED_INDEX 19
-
-/* turn off effects when suspended */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/keychron/c2/ansi/rgb/info.json b/keyboards/keychron/c2/ansi/rgb/info.json
deleted file mode 100644
index 5b40fa62448f..000000000000
--- a/keyboards/keychron/c2/ansi/rgb/info.json
+++ /dev/null
@@ -1,147 +0,0 @@
-{
- "keyboard_name": "Keychron C2 Pro",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0520",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_ansi_104": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/rules.mk
deleted file mode 100644
index 65df6fb72655..000000000000
--- a/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-VIA_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/c2/ansi/rgb/rules.mk b/keyboards/keychron/c2/ansi/rgb/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/c2/ansi/rgb/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/c2/ansi/white/config.h b/keyboards/keychron/c2/ansi/white/config.h
deleted file mode 100644
index 284b94744ac5..000000000000
--- a/keyboards/keychron/c2/ansi/white/config.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 1
-#define DRIVER_ADDR_1 0b1110100
-
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0 }
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 108
-#define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-
-/* Enable indicator LED*/
-#define NUM_LOCK_INDEX 16
-#define CAPS_LOCK_INDEX 17
-#define MAC_OS_LED_INDEX 18
-#define WIN_OS_LED_INDEX 19
-
-/* turn off effects when suspended */
-#define LED_DISABLE_WHEN_USB_SUSPENDED
-
-// LED Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
-#define ENABLE_LED_MATRIX_NONE
-#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
-// #define ENABLE_LED_MATRIX_ALPHAS_MODS // Static dual val, speed is val for LEDs marked as modifiers
-#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
-// #define ENABLE_LED_MATRIX_BAND // Band fading brightness scrolling left to right
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
-#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
-// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
-#define LED_MATRIX_KEYPRESSES
-#define LED_MATRIX_KEYRELEASES
-
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out
-// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
-// #endif
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
-#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
-// #define ENABLE_LED_MATRIX_EFFECT_MAX
diff --git a/keyboards/keychron/c2/ansi/white/info.json b/keyboards/keychron/c2/ansi/white/info.json
deleted file mode 100644
index f6219cd6c2bc..000000000000
--- a/keyboards/keychron/c2/ansi/white/info.json
+++ /dev/null
@@ -1,147 +0,0 @@
-{
- "keyboard_name": "Keychron C2 Pro",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0523",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "led_matrix": true
- },
- "led_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_ansi_104": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[1,19], "x":20.5, "y":1.25},
- {"matrix":[0,17], "x":21.5, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[2,19], "x":20.5, "y":2.25},
- {"matrix":[0,18], "x":21.5, "y":2.25, "h":2},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,19], "x":20.5, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,19], "x":20.5, "y":4.25},
- {"matrix":[0,19], "x":21.5, "y":4.25, "h":2},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,19], "x":20.5, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/c2/ansi/white/keymaps/keychron/rules.mk b/keyboards/keychron/c2/ansi/white/keymaps/keychron/rules.mk
deleted file mode 100644
index 65df6fb72655..000000000000
--- a/keyboards/keychron/c2/ansi/white/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-VIA_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/c2/ansi/white/rules.mk b/keyboards/keychron/c2/ansi/white/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/c2/ansi/white/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/c2/c2.c b/keyboards/keychron/c2_pro/ansi_v1/ansi_v1.c
old mode 100644
new mode 100755
similarity index 78%
rename from keyboards/keychron/c2/c2.c
rename to keyboards/keychron/c2_pro/ansi_v1/ansi_v1.c
index 5488b06ee4bc..554b7ac67123
--- a/keyboards/keychron/c2/c2.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/ansi_v1.c
@@ -15,6 +15,7 @@
*/
#include "quantum.h"
+
// clang-format off
const matrix_row_t matrix_mask[] = {
0b11111111111111111111,
@@ -24,7 +25,9 @@ const matrix_row_t matrix_mask[] = {
0b11111111111111111111,
0b11111111111111101111,
};
+
// clang-format on
+
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {
@@ -39,7 +42,7 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
#endif // DIP_SWITCH_ENABLE
-#if (defined(RGB_MATRIX_ENABLE) || defined(LED_MATRIX_ENABLE)) && defined(NUM_LOCK_INDEX) && defined(CAPS_LOCK_INDEX) && defined(MAC_OS_LED_INDEX) && defined(WIN_OS_LED_INDEX)
+#if (defined(RGB_MATRIX_ENABLE) || defined(LED_MATRIX_ENABLE))
# ifdef RGB_MATRIX_ENABLE
# define LED_MATRIX_INDICATORS_KB rgb_matrix_indicators_kb
@@ -69,34 +72,26 @@ bool LED_MATRIX_INDICATORS_KB(void) {
if (!LED_MATRIX_INDICATORS_USER()) {
return false;
}
-# if defined(CAPS_LOCK_INDEX)
if (host_keyboard_led_state().caps_lock) {
- LED_MATRIX_SET_COLOR(CAPS_LOCK_INDEX, COLOR_WHITE);
+ LED_MATRIX_SET_COLOR(CAPS_LOCK_LED_INDEX, COLOR_WHITE);
} else {
- LED_MATRIX_SET_COLOR(CAPS_LOCK_INDEX, COLOR_BLACK);
+ LED_MATRIX_SET_COLOR(CAPS_LOCK_LED_INDEX, COLOR_BLACK);
}
-# endif // CAPS_LOCK_INDEX
-# if defined(NUM_LOCK_INDEX)
if (host_keyboard_led_state().num_lock) {
- LED_MATRIX_SET_COLOR(NUM_LOCK_INDEX, COLOR_WHITE);
+ LED_MATRIX_SET_COLOR(NUM_LOCK_LED_INDEX, COLOR_WHITE);
} else {
- LED_MATRIX_SET_COLOR(NUM_LOCK_INDEX, COLOR_BLACK);
+ LED_MATRIX_SET_COLOR(NUM_LOCK_LED_INDEX, COLOR_BLACK);
}
-# endif // NUM_LOCK_INDEX
-# if defined(MAC_OS_LED_INDEX)
if (default_layer_state == (1 << 0)) {
LED_MATRIX_SET_COLOR(MAC_OS_LED_INDEX, COLOR_WHITE);
} else {
LED_MATRIX_SET_COLOR(MAC_OS_LED_INDEX, COLOR_BLACK);
}
-# endif // MAC_OS_LED_INDEX
-# if defined(WIN_OS_LED_INDEX)
if (default_layer_state == (1 << 2)) {
LED_MATRIX_SET_COLOR(WIN_OS_LED_INDEX, COLOR_WHITE);
} else {
LED_MATRIX_SET_COLOR(WIN_OS_LED_INDEX, COLOR_BLACK);
}
-# endif // WIN_OS_LED_INDEX
return true;
}
@@ -125,43 +120,33 @@ bool led_update_kb(led_t led_state) {
}
if (res) {
-# if defined(NUM_LOCK_INDEX)
if (led_state.num_lock) {
- LED_MATRIX_SET_COLOR(NUM_LOCK_INDEX, COLOR_WHITE);
+ LED_MATRIX_SET_COLOR(NUM_LOCK_LED_INDEX, COLOR_WHITE);
} else {
- LED_MATRIX_SET_COLOR(NUM_LOCK_INDEX, COLOR_BLACK);
+ LED_MATRIX_SET_COLOR(NUM_LOCK_LED_INDEX, COLOR_BLACK);
}
-# endif // NUM_LOCK_INDEX
-# if defined(CAPS_LOCK_INDEX)
if (led_state.caps_lock) {
- LED_MATRIX_SET_COLOR(CAPS_LOCK_INDEX, COLOR_WHITE);
+ LED_MATRIX_SET_COLOR(CAPS_LOCK_LED_INDEX, COLOR_WHITE);
} else {
- LED_MATRIX_SET_COLOR(CAPS_LOCK_INDEX, COLOR_BLACK);
+ LED_MATRIX_SET_COLOR(CAPS_LOCK_LED_INDEX, COLOR_BLACK);
}
-# endif // CAPS_LOCK_INDEX
-
LED_MATRIX_UPDATE_PWN_BUFFERS();
}
-
return res;
}
void housekeeping_task_kb(void) {
if (!LED_MATRIX_IS_ENABLED()) {
-# if defined(MAC_OS_LED_INDEX)
if (default_layer_state == (1 << 0)) {
LED_MATRIX_SET_COLOR(MAC_OS_LED_INDEX, COLOR_WHITE);
} else {
LED_MATRIX_SET_COLOR(MAC_OS_LED_INDEX, COLOR_BLACK);
}
-# endif // MAC_OS_LED_INDEX
-# if defined(WIN_OS_LED_INDEX)
if (default_layer_state == (1 << 2)) {
LED_MATRIX_SET_COLOR(WIN_OS_LED_INDEX, COLOR_WHITE);
} else {
LED_MATRIX_SET_COLOR(WIN_OS_LED_INDEX, COLOR_BLACK);
}
-# endif // WIN_OS_LED_INDEX
LED_MATRIX_UPDATE_PWN_BUFFERS();
}
}
diff --git a/keyboards/keychron/c2/config.h b/keyboards/keychron/c2_pro/ansi_v1/config.h
old mode 100644
new mode 100755
similarity index 76%
rename from keyboards/keychron/c2/config.h
rename to keyboards/keychron/c2_pro/ansi_v1/config.h
index 4ab73090a83f..0353982f6dc2
--- a/keyboards/keychron/c2/config.h
+++ b/keyboards/keychron/c2_pro/ansi_v1/config.h
@@ -17,16 +17,11 @@
#pragma once
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {5, 4}, }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
-/* EEPROM Driver Configuration */
-#define WEAR_LEVELING_LOGICAL_SIZE 2048
-#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-
/* Increase I2C speed to 1000 KHz */
#define I2C1_TIMINGR_PRESC 0U
#define I2C1_TIMINGR_SCLDEL 3U
@@ -34,12 +29,15 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
+/* Enable indicator LED*/
+#define NUM_LOCK_LED_INDEX 16
+#define CAPS_LOCK_LED_INDEX 17
+#define MAC_OS_LED_INDEX 18
+#define WIN_OS_LED_INDEX 19
+/* HC595 driver definition */
#define HC595_STCP A0
#define HC595_SHCP A1
#define HC595_DS C15
-#define SHIFT_COL_START 11
-#define SHIFT_COL_END 19
+#define HC595_START_INDEX 11
+#define HC595_END_INDEX 19
diff --git a/keyboards/keychron/c2_pro/ansi_v1/halconf.h b/keyboards/keychron/c2_pro/ansi_v1/halconf.h
new file mode 100755
index 000000000000..41bddcb2799b
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/halconf.h
@@ -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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/keychron/c2_pro/ansi_v1/info.json b/keyboards/keychron/c2_pro/ansi_v1/info.json
new file mode 100755
index 000000000000..dbbac17193ba
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/info.json
@@ -0,0 +1,11 @@
+{
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
+ "diode_direction": "ROW2COL"
+}
diff --git a/keyboards/keychron/c2/mcuconf.h b/keyboards/keychron/c2_pro/ansi_v1/mcuconf.h
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/c2/mcuconf.h
rename to keyboards/keychron/c2_pro/ansi_v1/mcuconf.h
diff --git a/keyboards/keychron/c2_pro/ansi_v1/rgb/config.h b/keyboards/keychron/c2_pro/ansi_v1/rgb/config.h
new file mode 100755
index 000000000000..92ebb2880249
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/config.h
@@ -0,0 +1,40 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef RGB_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 2
+# define DRIVER_ADDR_1 0b1110111
+# define DRIVER_ADDR_2 0b1110100
+
+/* RGB Matrix Configuration */
+# define RGB_MATRIX_LED_COUNT 108
+
+/* turn off effects when suspended */
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* Set LED driver current */
+# define CKLED2001_CURRENT_TUNE \
+ { 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0x56 }
+
+// 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
+#endif
diff --git a/keyboards/keychron/c2_pro/ansi_v1/rgb/info.json b/keyboards/keychron/c2_pro/ansi_v1/rgb/info.json
new file mode 100755
index 000000000000..5630dfc13b43
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/info.json
@@ -0,0 +1,266 @@
+{
+ "usb": {
+ "pid": "0x0520",
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "rgb_matrix": true
+ },
+ "layouts": {
+ "LAYOUT_104_ansi": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[0,17], "x":20.5, "y":1.25},
+ {"matrix":[0,18], "x":21.5, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[3,14], "x":20.5, "y":2.25},
+ {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,16], "x":20.5, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,14], "x":20.5, "y":4.25},
+ {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
+ ]
+ }
+ },
+ "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
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":21, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":68, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":89, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":99, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":136, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":146, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":159, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":180, "y":0},
+
+ {"matrix":[0, 13], "flags":8, "x":193, "y":0},
+ {"matrix":[0, 13], "flags":8, "x":203, "y":0},
+ {"matrix":[0, 13], "flags":8, "x":214, "y":0},
+ {"matrix":[0, 13], "flags":8, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":4, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":21, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":42, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":63, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":83, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":94, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":115, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":141, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":159, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":169, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":180, "y":15},
+ {"matrix":[1, 17], "flags":8, "x":193, "y":15},
+ {"matrix":[1, 18], "flags":4, "x":203, "y":15},
+ {"matrix":[0, 17], "flags":4, "x":214, "y":15},
+ {"matrix":[0, 18], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 13], "flags":4, "x":143, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":159, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":169, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":180, "y":27},
+ {"matrix":[2, 17], "flags":4, "x":193, "y":27},
+ {"matrix":[2, 18], "flags":4, "x":203, "y":27},
+ {"matrix":[3, 14], "flags":4, "x":214, "y":27},
+ {"matrix":[3, 15], "flags":4, "x":224, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":4, "x":139, "y":40},
+ {"matrix":[3, 17], "flags":4, "x":193, "y":40},
+ {"matrix":[3, 18], "flags":4, "x":203, "y":40},
+ {"matrix":[3, 16], "flags":4, "x":214, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":169, "y":52},
+ {"matrix":[4, 17], "flags":4, "x":193, "y":52},
+ {"matrix":[4, 18], "flags":4, "x":203, "y":52},
+ {"matrix":[4, 14], "flags":4, "x":214, "y":52},
+ {"matrix":[4, 16], "flags":4, "x":224, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":66, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":105, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":118, "y":64},
+ {"matrix":[5, 12], "flags":4, "x":131, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":145, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":159, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":169, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":198, "y":64},
+ {"matrix":[5, 18], "flags":4, "x":214, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c2/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/c2/ansi/rgb/keymaps/default/keymap.c
rename to keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/default/keymap.c
index cae05ab83db4..b4aefb385d73
--- a/keyboards/keychron/c2/ansi/rgb/keymaps/default/keymap.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/default/keymap.c
@@ -16,48 +16,46 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_104(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [MAC_FN] = LAYOUT_ansi_104(
+ [MAC_FN] = LAYOUT_104_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_ansi_104(
+ [WIN_BASE] = LAYOUT_104_ansi(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
-
- [WIN_FN] = LAYOUT_ansi_104(
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
diff --git a/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 94%
rename from keyboards/keychron/c2/ansi/rgb/keymaps/keychron/keymap.c
rename to keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/keychron/keymap.c
index b62df5395839..648de119f454
--- a/keyboards/keychron/c2/ansi/rgb/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/keychron/keymap.c
@@ -18,51 +18,47 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_104(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
+ [MAC_BASE] = LAYOUT_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [MAC_FN] = LAYOUT_ansi_104(
+ [MAC_FN] = LAYOUT_104_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_ansi_104(
+ [WIN_BASE] = LAYOUT_104_ansi(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [WIN_FN] = LAYOUT_ansi_104(
+ [WIN_FN] = LAYOUT_104_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -75,6 +71,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c2/ansi/rgb/keymaps/via/keymap.c b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/via/keymap.c
old mode 100644
new mode 100755
similarity index 94%
rename from keyboards/keychron/c2/ansi/rgb/keymaps/via/keymap.c
rename to keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/via/keymap.c
index c7e4823ebca6..bf28c679f3a8
--- a/keyboards/keychron/c2/ansi/rgb/keymaps/via/keymap.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/via/keymap.c
@@ -20,30 +20,30 @@ enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_104(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [MAC_FN] = LAYOUT_ansi_104(
+ [MAC_FN] = LAYOUT_104_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_ansi_104(
+ [WIN_BASE] = LAYOUT_104_ansi(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
@@ -51,11 +51,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT_ansi_104(
+ [WIN_FN] = LAYOUT_104_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
diff --git a/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/via/rules.mk b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/c2/ansi/rgb/rgb.c b/keyboards/keychron/c2_pro/ansi_v1/rgb/rgb.c
old mode 100644
new mode 100755
similarity index 63%
rename from keyboards/keychron/c2/ansi/rgb/rgb.c
rename to keyboards/keychron/c2_pro/ansi_v1/rgb/rgb.c
index 91885d892bbe..23f014121058
--- a/keyboards/keychron/c2/ansi/rgb/rgb.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/rgb.c
@@ -16,10 +16,8 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
// clang-format off
-
+#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -142,37 +140,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
};
-
-#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, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
- },
- {
- // LED Index to Physical Position
- {0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
- {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif //RGB_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/c2_pro/ansi_v1/rgb/rules.mk b/keyboards/keychron/c2_pro/ansi_v1/rgb/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/rgb/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c2_pro/ansi_v1/rules.mk b/keyboards/keychron/c2_pro/ansi_v1/rules.mk
new file mode 100755
index 000000000000..2f2902b17297
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/rules.mk
@@ -0,0 +1,2 @@
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/c2_pro/ansi_v1/white/config.h b/keyboards/keychron/c2_pro/ansi_v1/white/config.h
new file mode 100755
index 000000000000..7f81dc885a34
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/config.h
@@ -0,0 +1,43 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* LED Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 108
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+/* Use the first 8 channels of led driver */
+# define PHASE_CHANNEL MSKPHASE_8CHANNEL
+
+/* Set LED driver current */
+# define CKLED2001_CURRENT_TUNE \
+ { 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0 }
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/c2_pro/ansi_v1/white/info.json b/keyboards/keychron/c2_pro/ansi_v1/white/info.json
new file mode 100755
index 000000000000..81b9c08f08d2
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/info.json
@@ -0,0 +1,261 @@
+{
+ "usb": {
+ "pid": "0x0523",
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "layouts": {
+ "LAYOUT_104_ansi": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 1], "x":2, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[1,19], "x":20.5, "y":1.25},
+ {"matrix":[0,17], "x":21.5, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[2,19], "x":20.5, "y":2.25},
+ {"matrix":[0,18], "x":21.5, "y":2.25, "h":2},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,19], "x":20.5, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,19], "x":20.5, "y":4.25},
+ {"matrix":[0,19], "x":21.5, "y":4.25, "h":2},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,19], "x":20.5, "y":5.25}
+ ]
+ }
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":21, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":68, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":89, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":99, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":136, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":146, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":159, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":180, "y":0},
+
+ {"matrix":[0, 13], "flags":8, "x":193, "y":0},
+ {"matrix":[0, 13], "flags":8, "x":203, "y":0},
+ {"matrix":[0, 13], "flags":8, "x":214, "y":0},
+ {"matrix":[0, 13], "flags":8, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":4, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":21, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":42, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":63, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":83, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":94, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":115, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":141, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":159, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":169, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":180, "y":15},
+ {"matrix":[1, 17], "flags":8, "x":193, "y":15},
+ {"matrix":[1, 18], "flags":4, "x":203, "y":15},
+ {"matrix":[1, 19], "flags":4, "x":214, "y":15},
+ {"matrix":[0, 17], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 13], "flags":4, "x":143, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":159, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":169, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":180, "y":27},
+ {"matrix":[2, 17], "flags":4, "x":193, "y":27},
+ {"matrix":[2, 18], "flags":4, "x":203, "y":27},
+ {"matrix":[2, 19], "flags":4, "x":214, "y":27},
+ {"matrix":[0, 18], "flags":4, "x":224, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":4, "x":139, "y":40},
+ {"matrix":[3, 17], "flags":4, "x":193, "y":40},
+ {"matrix":[3, 18], "flags":4, "x":203, "y":40},
+ {"matrix":[3, 19], "flags":4, "x":214, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":169, "y":52},
+ {"matrix":[4, 17], "flags":4, "x":193, "y":52},
+ {"matrix":[4, 18], "flags":4, "x":203, "y":52},
+ {"matrix":[4, 19], "flags":4, "x":214, "y":52},
+ {"matrix":[0, 19], "flags":4, "x":224, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":66, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":105, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":118, "y":64},
+ {"matrix":[5, 12], "flags":4, "x":131, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":145, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":159, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":169, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":198, "y":64},
+ {"matrix":[5, 19], "flags":4, "x":214, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c2/ansi/white/keymaps/via/keymap.c b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/c2/ansi/white/keymaps/via/keymap.c
rename to keyboards/keychron/c2_pro/ansi_v1/white/keymaps/default/keymap.c
index 582ee744a7a3..7bcfe7750639
--- a/keyboards/keychron/c2/ansi/white/keymaps/via/keymap.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/default/keymap.c
@@ -20,42 +20,42 @@ enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_104(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ [MAC_BASE] = LAYOUT_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [MAC_FN] = LAYOUT_ansi_104(
+ [MAC_FN] = LAYOUT_104_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_BASE] = LAYOUT_ansi_104(
+ [WIN_BASE] = LAYOUT_104_ansi(
KC_ESC, 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_PSCR, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [WIN_FN] = LAYOUT_ansi_104(
+ [WIN_FN] = LAYOUT_104_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
diff --git a/keyboards/keychron/c2/ansi/white/keymaps/keychron/keymap.c b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 94%
rename from keyboards/keychron/c2/ansi/white/keymaps/keychron/keymap.c
rename to keyboards/keychron/c2_pro/ansi_v1/white/keymaps/keychron/keymap.c
index 2a99ea852ea1..d2c3d2e6a43e
--- a/keyboards/keychron/c2/ansi/white/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/keychron/keymap.c
@@ -18,51 +18,47 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_104(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP,
+ [MAC_BASE] = LAYOUT_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [MAC_FN] = LAYOUT_ansi_104(
+ [MAC_FN] = LAYOUT_104_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_BASE] = LAYOUT_ansi_104(
+ [WIN_BASE] = LAYOUT_104_ansi(
KC_ESC, 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_PSCR, KC_CRTA, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [WIN_FN] = LAYOUT_ansi_104(
+ [WIN_FN] = LAYOUT_104_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
diff --git a/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/keychron/rules.mk b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c2/ansi/white/keymaps/default/keymap.c b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/via/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/c2/ansi/white/keymaps/default/keymap.c
rename to keyboards/keychron/c2_pro/ansi_v1/white/keymaps/via/keymap.c
index 59ecca8bff02..7bcfe7750639
--- a/keyboards/keychron/c2/ansi/white/keymaps/default/keymap.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/via/keymap.c
@@ -16,48 +16,46 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_104(
- KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ [MAC_BASE] = LAYOUT_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [MAC_FN] = LAYOUT_ansi_104(
+ [MAC_FN] = LAYOUT_104_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_BASE] = LAYOUT_ansi_104(
+ [WIN_BASE] = LAYOUT_104_ansi(
KC_ESC, 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_PSCR, KC_NO, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [WIN_FN] = LAYOUT_ansi_104(
+ [WIN_FN] = LAYOUT_104_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
diff --git a/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/via/rules.mk b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/c2_pro/ansi_v1/white/rules.mk b/keyboards/keychron/c2_pro/ansi_v1/white/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c2/ansi/white/white.c b/keyboards/keychron/c2_pro/ansi_v1/white/white.c
old mode 100644
new mode 100755
similarity index 50%
rename from keyboards/keychron/c2/ansi/white/white.c
rename to keyboards/keychron/c2_pro/ansi_v1/white/white.c
index f7c894bc4620..9b0f380d5526
--- a/keyboards/keychron/c2/ansi/white/white.c
+++ b/keyboards/keychron/c2_pro/ansi_v1/white/white.c
@@ -17,9 +17,6 @@
#include "quantum.h"
#ifdef LED_MATRIX_ENABLE
-
-// clang-format off
-
const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -42,7 +39,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, A_1 },
{0, G_1 },
- {0, G_2 },
+ {0, G_2 }, // CapsLock
{0, G_3 }, // NumLock
{0, G_4 }, // Mac
{0, G_5 }, // Win
@@ -140,37 +137,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, G_11},
{0, G_12},
};
-
-#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, 11, 12, __, 13, 14, 15, 40, 61, 94 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 },
- { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 16, 74, 17, 18, 19, 75, 76, 77 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, __, 90, __, 91, 92, 93 },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, __, 107 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
- {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif //LED_MATRIX_ENABLE
+#endif
diff --git a/keyboards/keychron/c2_pro/ansi_v2/ansi_v2.c b/keyboards/keychron/c2_pro/ansi_v2/ansi_v2.c
new file mode 100755
index 000000000000..e362b6e9650b
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/ansi_v2.c
@@ -0,0 +1,55 @@
+/* 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 "quantum.h"
+
+#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 ? 0 : 2));
+ }
+ return true;
+}
+#endif
+
+void keyboard_post_init_kb(void) {
+ setPinOutputPushPull(LED_MAC_OS_PIN);
+ setPinOutputPushPull(LED_WIN_OS_PIN);
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+
+ keyboard_post_init_user();
+}
+
+void housekeeping_task_kb(void) {
+ if (default_layer_state == (1 << 0)) {
+ writePin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ }
+ if (default_layer_state == (1 << 2)) {
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE);
+ }
+}
+
+void suspend_power_down_kb(void) {
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ suspend_power_down_user();
+}
diff --git a/keyboards/keychron/c2_pro/ansi_v2/config.h b/keyboards/keychron/c2_pro/ansi_v2/config.h
new file mode 100755
index 000000000000..22953ea16f9b
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/config.h
@@ -0,0 +1,36 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* DIP switch */
+#define DIP_SWITCH_PINS { D2 }
+
+/* Indication led */
+#define LED_MAC_OS_PIN C10
+#define LED_WIN_OS_PIN C11
+#define LED_OS_PIN_ON_STATE 1
+
+/* The I2C Driver Configuration */
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* The SPI Driver Configuration */
+// #define SPI_DRIVER SPID1
+// #define SPI_SCK_PIN A5
+// #define SPI_MOSI_PIN A7
+// #define SPI_MISO_PIN A6
+// #define CKLED2001_SPI_DIVISOR 21
diff --git a/keyboards/keychron/c2_pro/ansi_v2/halconf.h b/keyboards/keychron/c2_pro/ansi_v2/halconf.h
new file mode 100755
index 000000000000..41bddcb2799b
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/halconf.h
@@ -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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/keychron/c2_pro/ansi_v2/info.json b/keyboards/keychron/c2_pro/ansi_v2/info.json
new file mode 100755
index 000000000000..4f2312a42318
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/info.json
@@ -0,0 +1,128 @@
+{
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "matrix_pins": {
+ "cols": ["A0", "A1", "A2", "A3", "C0", "C1", "C2", "C3", "A8", "C12", "B9", "C6", "C7", "C4", "C5","A15", "B10", "B12", "B13", "B14", "B15"],
+ "rows": ["B0", "B1", "B8", "B3", "B4", "B5"]
+ },
+ "diode_direction": "COL2ROW",
+ "indicators": {
+ "caps_lock": "C9",
+ "num_lock": "C8"
+ },
+ "layouts": {
+ "LAYOUT_104_ansi": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,1], "x":2, "y":0},
+ {"matrix":[0,2], "x":3, "y":0},
+ {"matrix":[0,3], "x":4, "y":0},
+ {"matrix":[0,4], "x":5, "y":0},
+ {"matrix":[0,5], "x":6.5, "y":0},
+ {"matrix":[0,6], "x":7.5, "y":0},
+ {"matrix":[0,7], "x":8.5, "y":0},
+ {"matrix":[0,8], "x":9.5, "y":0},
+ {"matrix":[0,9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[1,19], "x":20.5, "y":1.25},
+ {"matrix":[1,20], "x":21.5, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[2,19], "x":20.5, "y":2.25},
+ {"matrix":[2,20], "x":21.5, "y":2.25, "h":2},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,19], "x":20.5, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,19], "x":20.5, "y":4.25},
+ {"matrix":[4,20], "x":21.5, "y":4.25, "h":2},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/c2_pro/ansi_v2/mcuconf.h b/keyboards/keychron/c2_pro/ansi_v2/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/config.h b/keyboards/keychron/c2_pro/ansi_v2/rgb/config.h
new file mode 100755
index 000000000000..b6609fcebe4e
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/config.h
@@ -0,0 +1,42 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef RGB_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+// # define DRIVER_CS_PINS { A4, C14 }
+# define DRIVER_COUNT 2
+# define DRIVER_ADDR_1 0b1110111
+# define DRIVER_ADDR_2 0b1110100
+
+/* RGB Matrix Configuration */
+# define RGB_MATRIX_LED_COUNT 104
+
+/* turn off effects when suspended */
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* Set LED driver current */
+# define CKLED2001_CURRENT_TUNE \
+ { 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 }
+
+/* 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_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#endif
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/info.json b/keyboards/keychron/c2_pro/ansi_v2/rgb/info.json
new file mode 100755
index 000000000000..50d4da60582c
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/info.json
@@ -0,0 +1,146 @@
+{
+ "usb": {
+ "pid": "0x0526",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "rgb_matrix": true
+ },
+ "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
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":21, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":68, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":89, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":99, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":136, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":146, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":159, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":180, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":21, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":42, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":63, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":83, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":94, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":115, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":141, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":159, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":169, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":180, "y":15},
+ {"matrix":[1, 17], "flags":4, "x":193, "y":15},
+ {"matrix":[1, 18], "flags":4, "x":203, "y":15},
+ {"matrix":[1, 19], "flags":4, "x":214, "y":15},
+ {"matrix":[1, 20], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 13], "flags":1, "x":143, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":159, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":169, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":180, "y":27},
+ {"matrix":[2, 17], "flags":4, "x":193, "y":27},
+ {"matrix":[2, 18], "flags":4, "x":203, "y":27},
+ {"matrix":[2, 19], "flags":4, "x":214, "y":27},
+ {"matrix":[2, 20], "flags":4, "x":224, "y":34},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":139, "y":40},
+ {"matrix":[3, 17], "flags":4, "x":193, "y":40},
+ {"matrix":[3, 18], "flags":4, "x":203, "y":40},
+ {"matrix":[3, 19], "flags":4, "x":214, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":169, "y":52},
+ {"matrix":[4, 17], "flags":4, "x":193, "y":52},
+ {"matrix":[4, 18], "flags":4, "x":203, "y":52},
+ {"matrix":[4, 19], "flags":4, "x":214, "y":52},
+ {"matrix":[4, 20], "flags":4, "x":224, "y":58},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":66, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":105, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":118, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":145, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":159, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":169, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":198, "y":64},
+ {"matrix":[5, 18], "flags":4, "x":214, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/default/keymap.c b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/default/keymap.c
new file mode 100755
index 000000000000..70bd40b6bd44
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/default/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [MAC_FN] = LAYOUT_104_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..e62da9e50465
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [MAC_FN] = LAYOUT_104_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
+
+// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/via/keymap.c b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/via/keymap.c
new file mode 100755
index 000000000000..70bd40b6bd44
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/via/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [MAC_FN] = LAYOUT_104_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/via/rules.mk b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/rgb.c b/keyboards/keychron/c2_pro/ansi_v2/rgb/rgb.c
new file mode 100755
index 000000000000..68ed0ce5a1b8
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/rgb.c
@@ -0,0 +1,137 @@
+/* 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 "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, I_1, G_1, H_1},
+ {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, 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, I_10, G_10, H_10},
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_15, G_15, H_15},
+ {0, I_16, G_16, H_16},
+ {0, L_5, J_5, K_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, 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, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_15, A_15, B_15},
+ {0, C_16, A_16, B_16},
+ {0, L_9, J_9, K_9},
+ {0, L_10, J_10, K_10},
+ {0, L_11, J_11, K_11},
+ {0, L_12, J_12, K_12},
+ {0, L_13, J_13, K_13},
+
+ {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, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_15, D_15, E_15},
+ {0, F_16, D_16, E_16},
+ {0, L_14, J_14, K_14},
+ {0, L_15, J_15, K_15},
+ {0, L_16, J_16, K_16},
+ {1, L_1, J_1, K_1},
+ {1, L_2, J_2, K_2},
+
+ {1, C_16, A_16, B_16},
+ {1, C_15, A_15, B_15},
+ {1, C_14, A_14, B_14},
+ {1, C_13, A_13, B_13},
+ {1, C_12, A_12, B_12},
+ {1, C_11, A_11, B_11},
+ {1, C_10, A_10, B_10},
+ {1, C_9, A_9, B_9},
+ {1, C_8, A_8, B_8},
+ {1, C_7, A_7, B_7},
+ {1, C_6, A_6, B_6},
+ {1, C_5, A_5, B_5},
+ {1, C_3, A_3, B_3},
+ {1, L_3, J_3, K_3},
+ {1, L_4, J_4, K_4},
+ {1, L_5, J_5, K_5},
+
+ {1, I_16, G_16, H_16},
+ {1, I_14, G_14, H_14},
+ {1, I_13, G_13, H_13},
+ {1, I_12, G_12, H_12},
+ {1, I_11, G_11, H_11},
+ {1, I_10, G_10, H_10},
+ {1, I_9, G_9, H_9},
+ {1, I_8, G_8, H_8},
+ {1, I_7, G_7, H_7},
+ {1, I_6, G_6, H_6},
+ {1, I_5, G_5, H_5},
+ {1, I_3, G_3, H_3},
+ {1, I_1, G_1, H_1},
+ {1, L_6, J_6, K_6},
+ {1, L_7, J_7, K_7},
+ {1, L_8, J_8, K_8},
+ {1, L_9, J_9, K_9},
+
+ {1, F_16, D_16, E_16},
+ {1, F_15, D_15, E_15},
+ {1, F_14, D_14, E_14},
+ {1, F_10, D_10, E_10},
+ {1, F_6, D_6, E_6},
+ {1, F_5, D_5, E_5},
+ {1, F_4, D_4, E_4},
+ {1, F_3, D_3, E_3},
+ {1, F_2, D_2, E_2},
+ {1, F_1, D_1, E_1},
+ {1, L_10, J_10, K_10},
+ {1, L_11, J_11, K_11},
+ {1, L_12, J_12, K_12},
+};
+#endif
diff --git a/keyboards/keychron/c2_pro/ansi_v2/rgb/rules.mk b/keyboards/keychron/c2_pro/ansi_v2/rgb/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/rgb/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/config.h b/keyboards/keychron/c2_pro/ansi_v2/white/config.h
new file mode 100755
index 000000000000..de8e6f6b1cec
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/config.h
@@ -0,0 +1,44 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* LED Matrix Driver Configuration */
+// # define DRIVER_CS_PINS { C14 }
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* LED Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 104
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+/* Use the first 8 channels of led driver */
+# define PHASE_CHANNEL MSKPHASE_8CHANNEL
+
+/* Set LED driver current */
+# define CKLED2001_CURRENT_TUNE \
+ { 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50 }
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/info.json b/keyboards/keychron/c2_pro/ansi_v2/white/info.json
new file mode 100755
index 000000000000..4e77a9bc8960
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/info.json
@@ -0,0 +1,141 @@
+{
+ "usb": {
+ "pid": "0x0529",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":21, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":68, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":89, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":99, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":136, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":146, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":159, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":180, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":21, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":42, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":63, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":83, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":94, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":115, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":141, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":159, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":169, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":180, "y":15},
+ {"matrix":[1, 17], "flags":4, "x":193, "y":15},
+ {"matrix":[1, 18], "flags":4, "x":203, "y":15},
+ {"matrix":[1, 19], "flags":4, "x":214, "y":15},
+ {"matrix":[1, 20], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 13], "flags":1, "x":143, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":159, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":169, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":180, "y":27},
+ {"matrix":[2, 17], "flags":4, "x":193, "y":27},
+ {"matrix":[2, 18], "flags":4, "x":203, "y":27},
+ {"matrix":[2, 19], "flags":4, "x":214, "y":27},
+ {"matrix":[2, 20], "flags":4, "x":224, "y":34},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":139, "y":40},
+ {"matrix":[3, 17], "flags":4, "x":193, "y":40},
+ {"matrix":[3, 18], "flags":4, "x":203, "y":40},
+ {"matrix":[3, 19], "flags":4, "x":214, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":169, "y":52},
+ {"matrix":[4, 17], "flags":4, "x":193, "y":52},
+ {"matrix":[4, 18], "flags":4, "x":203, "y":52},
+ {"matrix":[4, 19], "flags":4, "x":214, "y":52},
+ {"matrix":[4, 20], "flags":4, "x":224, "y":58},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":66, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":105, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":118, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":145, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":159, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":169, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":198, "y":64},
+ {"matrix":[5, 18], "flags":4, "x":214, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/default/keymap.c b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/default/keymap.c
new file mode 100755
index 000000000000..4c12c63c4e10
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/default/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [MAC_FN] = LAYOUT_104_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_NO, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/keychron/keymap.c b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..c391c297cd1d
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [MAC_FN] = LAYOUT_104_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_CRTA, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
+
+// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/keychron/rules.mk b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/via/keymap.c b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/via/keymap.c
new file mode 100755
index 000000000000..4c12c63c4e10
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/via/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_104_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [MAC_FN] = LAYOUT_104_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_NO, BL_STEP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/via/rules.mk b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/rules.mk b/keyboards/keychron/c2_pro/ansi_v2/white/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c2_pro/ansi_v2/white/white.c b/keyboards/keychron/c2_pro/ansi_v2/white/white.c
new file mode 100755
index 000000000000..4588a3cdcfb0
--- /dev/null
+++ b/keyboards/keychron/c2_pro/ansi_v2/white/white.c
@@ -0,0 +1,136 @@
+/* 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 "quantum.h"
+
+// clang-format off
+#ifdef LED_MATRIX_ENABLE
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, A_16},
+ {0, A_15},
+ {0, A_14},
+ {0, A_13},
+ {0, A_12},
+ {0, A_11},
+ {0, A_10},
+ {0, A_9 },
+ {0, A_8 },
+ {0, A_7 },
+ {0, A_6 },
+ {0, A_5 },
+ {0, A_4 },
+ {0, A_2 },
+ {0, A_1 },
+ {0, G_1 },
+
+ {0, B_16},
+ {0, B_15},
+ {0, B_14},
+ {0, B_13},
+ {0, B_12},
+ {0, B_11},
+ {0, B_10},
+ {0, B_9 },
+ {0, B_8 },
+ {0, B_7 },
+ {0, B_6 },
+ {0, B_5 },
+ {0, B_4 },
+ {0, B_3 },
+ {0, B_2 },
+ {0, B_1 },
+ {0, H_1 },
+ {0, H_2 },
+ {0, H_3 },
+ {0, H_4 },
+ {0, H_5 },
+
+ {0, C_16},
+ {0, C_15},
+ {0, C_14},
+ {0, C_13},
+ {0, C_12},
+ {0, C_11},
+ {0, C_10},
+ {0, C_9 },
+ {0, C_8 },
+ {0, C_7 },
+ {0, C_6 },
+ {0, C_5 },
+ {0, C_4 },
+ {0, C_3 },
+ {0, C_2 },
+ {0, C_1 },
+ {0, G_6 },
+ {0, G_7 },
+ {0, G_8 },
+ {0, G_9 },
+ {0, G_10},
+
+ {0, D_16},
+ {0, D_15},
+ {0, D_14},
+ {0, D_13},
+ {0, D_12},
+ {0, D_11},
+ {0, D_10},
+ {0, D_9 },
+ {0, D_8 },
+ {0, D_7 },
+ {0, D_6 },
+ {0, D_5 },
+ {0, D_3 },
+ {0, H_7 },
+ {0, H_8 },
+ {0, H_9 },
+
+ {0, E_16},
+ {0, E_14},
+ {0, E_13},
+ {0, E_12},
+ {0, E_11},
+ {0, E_10},
+ {0, E_9 },
+ {0, E_8 },
+ {0, E_7 },
+ {0, E_6 },
+ {0, E_5 },
+ {0, E_3 },
+ {0, E_1 },
+ {0, H_6 },
+ {0, H_11},
+ {0, H_12},
+ {0, H_10},
+
+ {0, F_16},
+ {0, F_15},
+ {0, F_14},
+ {0, F_10},
+ {0, F_6 },
+ {0, F_5 },
+ {0, F_4 },
+ {0, F_3 },
+ {0, F_2 },
+ {0, F_1 },
+ {0, G_13},
+ {0, G_11},
+ {0, G_12},
+};
+#endif
diff --git a/keyboards/keychron/c2_pro/config.h b/keyboards/keychron/c2_pro/config.h
new file mode 100755
index 000000000000..69d9ff4e7c45
--- /dev/null
+++ b/keyboards/keychron/c2_pro/config.h
@@ -0,0 +1,25 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Factory Reset Key Definition */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/c2_pro/info.json b/keyboards/keychron/c2_pro/info.json
new file mode 100755
index 000000000000..e433e8ded2bf
--- /dev/null
+++ b/keyboards/keychron/c2_pro/info.json
@@ -0,0 +1,18 @@
+{
+ "keyboard_name": "Keychron C2 Pro",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ }
+}
diff --git a/keyboards/keychron/c2_pro/readme.md b/keyboards/keychron/c2_pro/readme.md
new file mode 100755
index 000000000000..129814fff9b1
--- /dev/null
+++ b/keyboards/keychron/c2_pro/readme.md
@@ -0,0 +1,34 @@
+# Keychron C2 Pro
+
+![Keychron C2 Pro](https://i.imgur.com/BQE1tFO.jpg)
+
+A customizable 100% keyboard.
+
+Rev1 is based on STM32L432 and rev2 is based on STM32F402.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Keychron C2 Pro
+* Hardware Availability: [Keychron C2 Pro QMK/VIA Wired Mechanical Keyboard](https://www.keychron.com/products/keychron-c2-pro-qmk-via-wired-mechanical-keyboard)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/c2_pro/ansi_v1/rgb:default
+ make keychron/c2_pro/ansi_v1/white:default
+ make keychron/c2_pro/ansi_v2/rgb:default
+ make keychron/c2_pro/ansi_v2/white:default
+
+Flashing example for this keyboard:
+
+ make keychron/c2_pro/ansi_v1/rgb:default:flash
+ make keychron/c2_pro/ansi_v1/white:default:flash
+ make keychron/c2_pro/ansi_v2/rgb:default:flash
+ make keychron/c2_pro/ansi_V2/white:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v1_rgb.json b/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v1_rgb.json
new file mode 100755
index 000000000000..190ee5c34b4b
--- /dev/null
+++ b/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v1_rgb.json
@@ -0,0 +1,375 @@
+{
+ "name": "Keychron C2 Pro ANSI RGB",
+ "vendorId": "0x3434",
+ "productId": "0x0520",
+ "keycodes": ["qmk_lighting"],
+ "menus": [
+ {
+ "label": "Lighting",
+ "content": [
+ {
+ "label": "Backlight",
+ "content": [
+ {
+ "label": "Brightness",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
+ },
+ {
+ "label": "Effect",
+ "type": "dropdown",
+ "content": ["id_qmk_rgb_matrix_effect", 3, 2],
+ "options": [
+ ["00. None", 0],
+ ["01. SOLID_COLOR", 1],
+ ["02. BREATHING", 2],
+ ["03. BAND_SPIRAL_VAL", 3],
+ ["04. CYCLE_ALL", 4],
+ ["05. CYCLE_LEFT_RIGHT", 5],
+ ["06. CYCLE_UP_DOWN", 6],
+ ["07. RAINBOW_MOVING_CHEVRON", 7],
+ ["08. CYCLE_OUT_IN", 8],
+ ["09. CYCLE_OUT_IN_DUAL", 9],
+ ["10. CYCLE_PINWHEEL", 10],
+ ["11. CYCLE_SPIRAL", 11],
+ ["12. DUAL_BEACON", 12],
+ ["13. RAINBOW_BEACON", 13],
+ ["14. JELLYBEAN_RAINDROPS", 14],
+ ["15. PIXEL_RAIN", 15],
+ ["16. TYPING_HEATMAP", 16],
+ ["17. DIGITAL_RAIN", 17],
+ ["18. REACTIVE_SIMPLE", 18],
+ ["19. REACTIVE_MULTIWIDE", 19],
+ ["20. REACTIVE_MULTINEXUS", 20],
+ ["21. SPLASH", 21],
+ ["22. SOLID_SPLASH", 22]
+ ]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} > 1",
+ "label": "Effect Speed",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0",
+ "label": "Color",
+ "type": "color",
+ "content": ["id_qmk_rgb_matrix_color", 3, 4]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "matrix": {"rows": 6, "cols": 20},
+ "customKeycodes": [
+ {
+ "name": "Mission Control",
+ "title": "Mission Control in macOS",
+ "shortName": "MCtrl"
+ },
+ {
+ "name": "Launch Pad",
+ "title": "Launch Pad in macOS",
+ "shortName": "LPad"
+ },
+ {
+ "name": "Left Option",
+ "title": "Left Option in macOS",
+ "shortName": "LOpt"
+ },
+ {
+ "name": "Right Option",
+ "title": "Right Option in macOS",
+ "shortName": "ROpt"
+ },
+ {
+ "name": "Left Cmd",
+ "title": "Left Command in macOS",
+ "shortName": "LCmd"
+ },
+ {
+ "name": "Right Cmd",
+ "title": "Right Command in macOS",
+ "shortName": "RCmd"
+ },
+ {
+ "name": "Siri",
+ "title": "Siri in macOS",
+ "shortName": "Siri"
+ },
+ {
+ "name": "Task View",
+ "title": "Task View in windows",
+ "shortName": "Task"
+ },
+ {
+ "name": "File Explorer",
+ "title": "File Explorer in windows",
+ "shortName": "File"
+ },
+ {
+ "name": "Screen Shot",
+ "title": "Screenshot in macOS",
+ "shortName": "SShot"
+ },
+ {
+ "name": "Cortana",
+ "title": "Cortana in windows",
+ "shortName": "Cortana"
+ }
+ ],
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,17",
+ "1,18",
+ "0,17",
+ "0,18"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "w": 1.5,
+ "c": "#aaaaaa"
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,17",
+ "2,18",
+ "3,14",
+ {
+ "h": 2
+ },
+ "3,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 3.5,
+ "c": "#cccccc"
+ },
+ "3,17",
+ "3,18",
+ "3,16"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,17",
+ "4,18",
+ "4,14",
+ {
+ "h": 2
+ },
+ "4,16"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "5,17",
+ "5,18"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v1_white.json b/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v1_white.json
new file mode 100755
index 000000000000..121d3b2e4696
--- /dev/null
+++ b/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v1_white.json
@@ -0,0 +1,270 @@
+{
+ "name": "Keychron C2 Pro ANSI White",
+ "vendorId": "0x3434",
+ "productId": "0x0523",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 20},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,17",
+ "1,18",
+ "1,19",
+ "0,17"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,17",
+ "2,18",
+ "2,19",
+ {
+ "h": 2
+ },
+ "0,18"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 3.5,
+ "c": "#cccccc"
+ },
+ "3,17",
+ "3,18",
+ "3,19"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,17",
+ "4,18",
+ "4,19",
+ {
+ "h": 2
+ },
+ "0,19"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "5,17",
+ "5,19"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v2_rgb.json b/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v2_rgb.json
new file mode 100755
index 000000000000..66424c4341c6
--- /dev/null
+++ b/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v2_rgb.json
@@ -0,0 +1,331 @@
+{
+ "name": "Keychron C2 Pro V2 ANSI RGB",
+ "vendorId": "0x3434",
+ "productId": "0x0526",
+ "keycodes": ["qmk_lighting"],
+ "menus": [
+ {
+ "label": "Lighting",
+ "content": [
+ {
+ "label": "Backlight",
+ "content": [
+ {
+ "label": "Brightness",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
+ },
+ {
+ "label": "Effect",
+ "type": "dropdown",
+ "content": ["id_qmk_rgb_matrix_effect", 3, 2],
+ "options": [
+ ["00. None", 0],
+ ["01. SOLID_COLOR", 1],
+ ["02. BREATHING", 2],
+ ["03. BAND_SPIRAL_VAL", 3],
+ ["04. CYCLE_ALL", 4],
+ ["05. CYCLE_LEFT_RIGHT", 5],
+ ["06. CYCLE_UP_DOWN", 6],
+ ["07. RAINBOW_MOVING_CHEVRON", 7],
+ ["08. CYCLE_OUT_IN", 8],
+ ["09. CYCLE_OUT_IN_DUAL", 9],
+ ["10. CYCLE_PINWHEEL", 10],
+ ["11. CYCLE_SPIRAL", 11],
+ ["12. DUAL_BEACON", 12],
+ ["13. RAINBOW_BEACON", 13],
+ ["14. JELLYBEAN_RAINDROPS", 14],
+ ["15. PIXEL_RAIN", 15],
+ ["16. TYPING_HEATMAP", 16],
+ ["17. DIGITAL_RAIN", 17],
+ ["18. REACTIVE_SIMPLE", 18],
+ ["19. REACTIVE_MULTIWIDE", 19],
+ ["20. REACTIVE_MULTINEXUS", 20],
+ ["21. SPLASH", 21],
+ ["22. SOLID_SPLASH", 22]
+ ]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} > 1",
+ "label": "Effect Speed",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0",
+ "label": "Color",
+ "type": "color",
+ "content": ["id_qmk_rgb_matrix_color", 3, 4]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "customKeycodes": [
+ {"name": "Mission Control", "title": "Mission Control in macOS", "shortName": "MCtrl"},
+ {"name": "Launch Pad", "title": "Launch Pad in macOS", "shortName": "LPad"},
+ {"name": "Left Option", "title": "Left Option in macOS", "shortName": "LOpt"},
+ {"name": "Right Option", "title": "Right Option in macOS", "shortName": "ROpt"},
+ {"name": "Left Cmd", "title": "Left Command in macOS", "shortName": "LCmd"},
+ {"name": "Right Cmd", "title": "Right Command in macOS", "shortName": "RCmd"},
+ {"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
+ {"name": "Task View", "title": "Task View in windows", "shortName": "Task"},
+ {"name": "File Explorer", "title": "File Explorer in windows", "shortName": "File"},
+ {"name": "Screen Shot", "title": "Screenshot in macOS", "shortName": "SShot"},
+ {"name": "Cortana", "title": "Cortana in windows", "shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 21},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,17",
+ "1,18",
+ "1,19",
+ "1,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,17",
+ "2,18",
+ "2,19",
+ {
+ "h": 2
+ },
+ "2,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 3.5,
+ "c": "#cccccc"
+ },
+ "3,17",
+ "3,18",
+ "3,19"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,17",
+ "4,18",
+ "4,19",
+ {
+ "h": 2
+ },
+ "4,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "5,17",
+ "5,18"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v2_white.json b/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v2_white.json
new file mode 100755
index 000000000000..992bddbc8e18
--- /dev/null
+++ b/keyboards/keychron/c2_pro/via_json/c2_pro_ansi_v2_white.json
@@ -0,0 +1,270 @@
+{
+ "name": "Keychron C2 Pro V2 ANSI White",
+ "vendorId": "0x3434",
+ "productId": "0x0529",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control", "title": "Mission Control in macOS", "shortName": "MCtrl"},
+ {"name": "Launch Pad", "title": "Launch Pad in macOS", "shortName": "LPad"},
+ {"name": "Left Option", "title": "Left Option in macOS", "shortName": "LOpt"},
+ {"name": "Right Option", "title": "Right Option in macOS", "shortName": "ROpt"},
+ {"name": "Left Cmd", "title": "Left Command in macOS", "shortName": "LCmd"},
+ {"name": "Right Cmd", "title": "Right Command in macOS", "shortName": "RCmd"},
+ {"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
+ {"name": "Task View", "title": "Task View in windows", "shortName": "Task"},
+ {"name": "File Explorer", "title": "File Explorer in windows", "shortName": "File"},
+ {"name": "Screen Shot", "title": "Screenshot in macOS", "shortName": "SShot"},
+ {"name": "Cortana", "title": "Cortana in windows", "shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 21},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,17",
+ "1,18",
+ "1,19",
+ "1,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,17",
+ "2,18",
+ "2,19",
+ {
+ "h": 2
+ },
+ "2,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 3.5,
+ "c": "#cccccc"
+ },
+ "3,17",
+ "3,18",
+ "3,19"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,17",
+ "4,18",
+ "4,19",
+ {
+ "h": 2
+ },
+ "4,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "5,17",
+ "5,18"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/c3_pro/ansi/red/config.h b/keyboards/keychron/c3_pro/ansi/red/config.h
new file mode 100755
index 000000000000..ce76a0715fee
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/config.h
@@ -0,0 +1,39 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT (87 + 12)
+
+/* Use first 7 channels of LED driver */
+# define PHASE_CHANNEL MSKPHASE_7CHANNEL
+
+/* Set LED driver current */
+# define CKLED2001_CURRENT_TUNE \
+ { 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+/* Enable Reactive Animation */
+# define LED_MATRIX_KEYPRESSES
+#endif
diff --git a/keyboards/keychron/c3_pro/ansi/red/info.json b/keyboards/keychron/c3_pro/ansi/red/info.json
new file mode 100755
index 000000000000..7275386b2187
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/info.json
@@ -0,0 +1,137 @@
+{
+ "usb": {
+ "pid": "0x0430",
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":84, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":97, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":123, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":16},
+ {"matrix":[1, 1], "flags":4, "x":13, "y":16},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":16},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":16},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":16},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":16},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":16},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":16},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":16},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":16},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":16},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":16},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":16},
+ {"matrix":[1, 13], "flags":1, "x":175, "y":16},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":16},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":16},
+ {"matrix":[1, 16], "flags":1, "x":224, "y":16},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":19, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":32, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":45, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":58, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":71, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":84, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":97, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":110, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":123, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":136, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":149, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":162, "y":28},
+ {"matrix":[2, 13], "flags":1, "x":178, "y":28},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":28},
+ {"matrix":[2, 16], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":126, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":139, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":152, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":173, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":81, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":94, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":120, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":133, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":146, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":170, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":164, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":224, "y":64},
+
+ {"matrix":[0, 1], "flags":1, "x":0, "y":0},
+ {"matrix":[4, 1], "flags":1, "x":0, "y":16},
+ {"matrix":[3, 12], "flags":1, "x":0, "y":28},
+ {"matrix":[3, 14], "flags":1, "x":0, "y":40},
+ {"matrix":[3, 15], "flags":1, "x":0, "y":52},
+ {"matrix":[4, 12], "flags":1, "x":0, "y":64},
+ {"matrix":[5, 3], "flags":1, "x":224, "y":0},
+ {"matrix":[5, 4], "flags":1, "x":224, "y":16},
+ {"matrix":[5, 5], "flags":1, "x":224, "y":28},
+ {"matrix":[5, 7], "flags":1, "x":224, "y":40},
+ {"matrix":[5, 8], "flags":1, "x":224, "y":52},
+ {"matrix":[5, 9], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c
new file mode 100755
index 000000000000..9fad9ffda121
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_TRNS, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..599735908005
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_TRNS, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMMD, MO(MAC_FN),KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, 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_SIRI, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_OSSW, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_CRTA, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_OSSW, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..cff90cc05af3
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
\ No newline at end of file
diff --git a/keyboards/keychron/c3_pro/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/c3_pro/ansi/red/keymaps/via/keymap.c
new file mode 100755
index 000000000000..c55443cecde7
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/keymaps/via/keymap.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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_87_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_TRNS, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_87_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_87_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_87_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/c3_pro/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/c3_pro/ansi/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/c3_pro/ansi/red/red.c b/keyboards/keychron/c3_pro/ansi/red/red.c
new file mode 100755
index 000000000000..3f1cfcc37730
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/red.c
@@ -0,0 +1,132 @@
+/* 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 "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, F_1},
+ {0, F_3},
+ {0, F_4},
+ {0, F_5},
+ {0, F_6},
+ {0, F_7},
+ {0, F_8},
+ {0, F_9},
+ {0, F_10},
+ {0, F_11},
+ {0, F_12},
+ {0, F_13},
+ {0, F_14},
+ {0, F_15},
+ {0, F_16},
+ {0, C_13},
+
+ {0, E_1},
+ {0, E_2},
+ {0, E_3},
+ {0, E_4},
+ {0, E_5},
+ {0, E_6},
+ {0, E_7},
+ {0, E_8},
+ {0, E_9},
+ {0, E_10},
+ {0, E_11},
+ {0, E_12},
+ {0, E_13},
+ {0, E_14},
+ {0, E_15},
+ {0, E_16},
+ {0, C_15},
+
+ {0, D_1},
+ {0, D_2},
+ {0, D_3},
+ {0, D_4},
+ {0, D_5},
+ {0, D_6},
+ {0, D_7},
+ {0, D_8},
+ {0, D_9},
+ {0, D_10},
+ {0, D_11},
+ {0, D_12},
+ {0, D_13},
+ {0, D_14},
+ {0, D_15},
+ {0, D_16},
+ {0, C_16},
+
+ {0, C_1},
+ {0, C_2},
+ {0, C_3},
+ {0, C_4},
+ {0, C_5},
+ {0, C_6},
+ {0, C_7},
+ {0, C_8},
+ {0, C_9},
+ {0, C_10},
+ {0, C_11},
+ {0, C_12},
+ {0, C_14},
+
+ {0, B_1},
+ {0, B_3},
+ {0, B_4},
+ {0, B_5},
+ {0, B_6},
+ {0, B_7},
+ {0, B_8},
+ {0, B_9},
+ {0, B_10},
+ {0, B_11},
+ {0, B_12},
+ {0, B_14},
+ {0, B_16},
+
+ {0, A_1},
+ {0, A_2},
+ {0, A_3},
+ {0, A_7},
+ {0, A_11},
+ {0, A_12},
+ {0, A_13},
+ {0, A_14},
+ {0, A_15},
+ {0, A_16},
+ {0, B_15},
+
+ {0, G_1},
+ {0, G_2},
+ {0, G_3},
+ {0, G_4},
+ {0, G_5},
+ {0, G_6},
+ {0, G_12},
+ {0, G_11},
+ {0, G_10},
+ {0, G_9},
+ {0, G_8},
+ {0, G_7},
+};
+#endif
diff --git a/keyboards/keychron/c3_pro/ansi/red/rules.mk b/keyboards/keychron/c3_pro/ansi/red/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/red/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/c3_pro/c3_pro.c b/keyboards/keychron/c3_pro/c3_pro.c
new file mode 100755
index 000000000000..61e6884eabc7
--- /dev/null
+++ b/keyboards/keychron/c3_pro/c3_pro.c
@@ -0,0 +1,107 @@
+/* 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 "c3_pro.h"
+
+static uint32_t os_switch_timer_buffer = 0;
+static uint8_t os_switch_indicate_count = 0;
+
+void keyboard_post_init_kb(void) {
+ setPinOutputPushPull(LED_MAC_OS_PIN);
+ setPinOutputPushPull(LED_WIN_OS_PIN);
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+
+ layer_state_t last_layer = eeconfig_read_default_layer();
+ if (last_layer) {
+ default_layer_set(last_layer);
+ } else {
+ default_layer_set(1U << 2);
+ }
+
+ keyboard_post_init_user();
+}
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ eeconfig_init_user();
+}
+
+void housekeeping_task_kb(void) {
+ if (default_layer_state == (1U << 0)) {
+ writePin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ }
+ if (default_layer_state == (1U << 2)) {
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE);
+ }
+
+ if (os_switch_timer_buffer && timer_elapsed32(os_switch_timer_buffer) > 300) {
+ if (os_switch_indicate_count++ > 5) {
+ os_switch_indicate_count = 0;
+ os_switch_timer_buffer = 0;
+ } else {
+ os_switch_timer_buffer = timer_read32();
+ }
+ }
+
+ housekeeping_task_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+
+ switch (keycode) {
+ case KC_OSSW:
+ if (record->event.pressed) {
+ default_layer_xor(1U << 0);
+ default_layer_xor(1U << 2);
+ eeconfig_update_default_layer(default_layer_state);
+ os_switch_timer_buffer = timer_read32();
+ }
+ return false;
+ default:
+ return true;
+ }
+}
+
+bool led_matrix_indicators_kb(void) {
+ if (!led_matrix_indicators_user()) {
+ return false;
+ }
+
+ if (os_switch_indicate_count) {
+ led_matrix_set_value_all(os_switch_indicate_count % 2 ? 0 : UINT8_MAX);
+ }
+
+ return true;
+}
+
+void suspend_power_down_kb(void) {
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ suspend_power_down_user();
+}
diff --git a/keyboards/keychron/c3_pro/c3_pro.h b/keyboards/keychron/c3_pro/c3_pro.h
new file mode 100755
index 000000000000..7c999cc8bff3
--- /dev/null
+++ b/keyboards/keychron/c3_pro/c3_pro.h
@@ -0,0 +1,28 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define KC_MICT QK_KB_0
+#define KC_LAPA QK_KB_1
+
+enum my_keycodes {
+ KC_OS_SWITCH = QK_KB_11,
+};
+
+#define KC_OSSW KC_OS_SWITCH
diff --git a/keyboards/keychron/c3_pro/config.h b/keyboards/keychron/c3_pro/config.h
new file mode 100755
index 000000000000..c07971566d5c
--- /dev/null
+++ b/keyboards/keychron/c3_pro/config.h
@@ -0,0 +1,36 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Indication led */
+#define LED_MAC_OS_PIN A4
+#define LED_WIN_OS_PIN A5
+#define LED_OS_PIN_ON_STATE 1
+
+/* I2C driver Configuration */
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/c3_pro/halconf.h b/keyboards/keychron/c3_pro/halconf.h
new file mode 100755
index 000000000000..41bddcb2799b
--- /dev/null
+++ b/keyboards/keychron/c3_pro/halconf.h
@@ -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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/keychron/c3_pro/info.json b/keyboards/keychron/c3_pro/info.json
new file mode 100755
index 000000000000..8f951352b9e1
--- /dev/null
+++ b/keyboards/keychron/c3_pro/info.json
@@ -0,0 +1,128 @@
+{
+ "keyboard_name": "Keychron C3 Pro",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "indicators": {
+ "caps_lock": "A3"
+ },
+ "matrix_pins": {
+ "cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0","A1", "A2"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "ROW2COL",
+ "community_layouts": [
+ "tkl_ansi"
+ ],
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,2], "x":2, "y":0},
+ {"matrix":[0,3], "x":3, "y":0},
+ {"matrix":[0,4], "x":4, "y":0},
+ {"matrix":[0,5], "x":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":11, "y":0},
+ {"matrix":[0,11], "x":12, "y":0},
+ {"matrix":[0,12], "x":13, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/c3_pro/mcuconf.h b/keyboards/keychron/c3_pro/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/c3_pro/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/c3_pro/readme.md b/keyboards/keychron/c3_pro/readme.md
new file mode 100755
index 000000000000..84772e23a6b0
--- /dev/null
+++ b/keyboards/keychron/c3_pro/readme.md
@@ -0,0 +1,26 @@
+# Keychron C3
+
+![Keychron C3](https://i.imgur.com/b4FTJsf.jpg)
+
+A customizable 87% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Keychron C3 Pro
+* Hardware Availability: [Keychron](https://www.keychron.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/c3/ansi/white:default
+
+Flashing example for this keyboard:
+
+ make keychron/c3/ansi/white:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/c3_pro/via_json/c3_pro_ansi_red.json b/keyboards/keychron/c3_pro/via_json/c3_pro_ansi_red.json
new file mode 100755
index 000000000000..0409658a26bd
--- /dev/null
+++ b/keyboards/keychron/c3_pro/via_json/c3_pro_ansi_red.json
@@ -0,0 +1,225 @@
+{
+ "name": "Keychron C3 Pro ANSI Red",
+ "vendorId": "0x3434",
+ "productId": "0x0430",
+ "keycodes" : ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control", "title": "Mission Control in macOS", "shortName": "MCtrl"},
+ {"name": "Launch Pad", "title": "Launch Pad in macOS", "shortName": "LPad"},
+ {"name": "Left Option", "title": "Left Option in macOS", "shortName": "LOpt"},
+ {"name": "Right Option", "title": "Right Option in macOS", "shortName": "ROpt"},
+ {"name": "Left Cmd", "title": "Left Command in macOS", "shortName": "LCmd"},
+ {"name": "Right Cmd", "title": "Right Command in macOS", "shortName": "RCmd"},
+ {"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
+ {"name": "Task View", "title": "Task View in windows", "shortName": "Task"},
+ {"name": "File Explorer", "title": "File Explorer in windows", "shortName": "File"},
+ {"name": "Screen Shot", "title": "Screenshot in macOS", "shortName": "SShot"},
+ {"name": "Cortana", "title": "Cortana in windows", "shortName": "Cortana"},
+ {"name": "OS Switch", "title": "Switch between windows and macOS", "shortName": "OSSW"}
+ ],
+ "matrix": {"rows": 6, "cols": 17},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/common/common.mk b/keyboards/keychron/common/common.mk
new file mode 100644
index 000000000000..29264842d900
--- /dev/null
+++ b/keyboards/keychron/common/common.mk
@@ -0,0 +1,6 @@
+COMMON_DIR = common
+SRC += \
+ $(COMMON_DIR)/keychron_common.c \
+ $(COMMON_DIR)/keychron_ft_common.c
+
+VPATH ?= $(TOP_DIR)/keyboards/keychron/$(COMMON_DIR)
diff --git a/keyboards/keychron/common/keychron_common.c b/keyboards/keychron/common/keychron_common.c
index e9cff630110e..52248c6335f3 100644
--- a/keyboards/keychron/common/keychron_common.c
+++ b/keyboards/keychron/common/keychron_common.c
@@ -14,24 +14,23 @@
* along with this program. If not, see .
*/
-#include QMK_KEYBOARD_H
#include "keychron_common.h"
bool is_siri_active = false;
uint32_t siri_timer = 0;
-// clang-format off
+
key_combination_t key_comb_list[4] = {
{2, {KC_LWIN, KC_TAB}},
{2, {KC_LWIN, KC_E}},
{3, {KC_LSFT, KC_LCMD, KC_4}},
- {2, {KC_LWIN, KC_C}}
+ {2, {KC_LWIN, KC_C}},
};
static uint8_t mac_keycode[4] = {KC_LOPT, KC_ROPT, KC_LCMD, KC_RCMD};
-// clang-format on
+
void housekeeping_task_keychron(void) {
if (is_siri_active) {
- if (sync_timer_elapsed32(siri_timer) >= 500) {
+ if (timer_elapsed32(siri_timer) >= 500) {
unregister_code(KC_LCMD);
unregister_code(KC_SPACE);
is_siri_active = false;
@@ -72,7 +71,7 @@ bool process_record_keychron(uint16_t keycode, keyrecord_t *record) {
register_code(KC_LCMD);
register_code(KC_SPACE);
}
- siri_timer = sync_timer_read32();
+ siri_timer = timer_read32();
} else {
// Do something else when release
}
@@ -96,102 +95,9 @@ bool process_record_keychron(uint16_t keycode, keyrecord_t *record) {
}
}
-#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_LOCK_LED_INDEX))
-
-# define CAPS_NUM_LOCK_MAX_BRIGHTNESS 0xFF
-# ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
-# undef CAPS_NUM_LOCK_MAX_BRIGHTNESS
-# define CAPS_NUM_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
-# endif
-
-# define CAPS_NUM_LOCK_VAL_STEP 8
-# ifdef RGB_MATRIX_VAL_STEP
-# undef CAPS_NUM_LOCK_VAL_STEP
-# define CAPS_NUM_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
-# endif
-
-extern void rgb_matrix_update_pwm_buffers(void);
-
-static uint8_t light_brightness_get(void) {
- uint8_t value = rgb_matrix_get_val();
- if (value < CAPS_NUM_LOCK_VAL_STEP) {
- value = CAPS_NUM_LOCK_VAL_STEP;
- } else if (value < (CAPS_NUM_LOCK_MAX_BRIGHTNESS - CAPS_NUM_LOCK_VAL_STEP)) {
- value += CAPS_NUM_LOCK_VAL_STEP; // one step more than current brightness
- } else {
- value = CAPS_NUM_LOCK_MAX_BRIGHTNESS;
- }
- return value;
-}
-
-bool rgb_matrix_indicators_kb(void) {
- if (!rgb_matrix_indicators_user()) {
- return false;
- }
-# if defined(CAPS_LOCK_LED_INDEX)
- if (host_keyboard_led_state().caps_lock) {
- uint8_t v = light_brightness_get();
- rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, v, v, v); // white, with the adjusted brightness
- }
-# endif
-# if defined(NUM_LOCK_LED_INDEX)
- if (host_keyboard_led_state().num_lock) {
- uint8_t v = light_brightness_get();
- rgb_matrix_set_color(NUM_LOCK_LED_INDEX, v, v, v); // white, with the adjusted brightness
- }
-# endif
- return true;
-}
-
-void rgb_matrix_indicators_none_kb(void) {
- rgb_matrix_indicators_kb();
- rgb_matrix_update_pwm_buffers();
-}
-
-bool led_update_kb(led_t led_state) {
- bool res = led_update_user(led_state);
-
- if (rgb_matrix_is_enabled()
-# if defined(ENABLE_RGB_MATRIX_RAINDROPS)
- && (rgb_matrix_get_mode() != RGB_MATRIX_RAINDROPS)
-# endif
-# if defined(ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS)
- && (rgb_matrix_get_mode() != RGB_MATRIX_JELLYBEAN_RAINDROPS)
-# endif
-# if defined(ENABLE_RGB_MATRIX_PIXEL_RAIN)
- && (rgb_matrix_get_mode() != RGB_MATRIX_PIXEL_RAIN)
-# endif
- ) {
- return res;
- }
-
- if (res) {
-# if defined(CAPS_LOCK_LED_INDEX)
- if (led_state.caps_lock) {
- uint8_t v = light_brightness_get();
- rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, v, v, v);
- } else {
- rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, 0, 0, 0);
- }
-# endif
-# if defined(NUM_LOCK_LED_INDEX)
- if (led_state.num_lock) {
- uint8_t v = light_brightness_get();
- rgb_matrix_set_color(NUM_LOCK_LED_INDEX, v, v, v);
- } else {
- rgb_matrix_set_color(NUM_LOCK_LED_INDEX, 0, 0, 0);
- }
-# endif
- rgb_matrix_update_pwm_buffers();
- }
- return res;
-}
-
-#endif
-
#if defined(ENCODER_ENABLE) && defined(PAL_USE_CALLBACKS)
static void encoder_pad_cb(void *param) {
- encoder_inerrupt_read((uint32_t)param & 0XFF);
+ encoder_interrupt_read((uint32_t)param & 0XFF);
}
__attribute__((weak)) void keyboard_post_init_kb(void) {
diff --git a/keyboards/keychron/common/keychron_common.h b/keyboards/keychron/common/keychron_common.h
index 26594b398736..a4df8b290330 100644
--- a/keyboards/keychron/common/keychron_common.h
+++ b/keyboards/keychron/common/keychron_common.h
@@ -14,15 +14,19 @@
* along with this program. If not, see .
*/
-#pragma once
+#include "quantum.h"
-#include "stdint.h"
#ifdef VIA_ENABLE
# include "via.h"
#endif
+#define KC_MICT QK_KB_0
+#define KC_LAPA QK_KB_1
+
+#include "quantum_keycodes.h"
+
enum custom_keycodes {
- KC_LOPTN = QK_KB_2,
+ KC_LOPTN = QK_KB_2, // TECH DEBT: Starts at QK_KB_2 to maintain ordering with VIA definitions. See #19884. Revert to QK_KB_0 when VIA catches up with QMK.
KC_ROPTN,
KC_LCMMD,
KC_RCMMD,
@@ -45,4 +49,3 @@ typedef struct PACKED {
void housekeeping_task_keychron(void);
bool process_record_keychron(uint16_t keycode, keyrecord_t *record);
-void keyboard_post_init_keychron(void);
diff --git a/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c b/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c
new file mode 100755
index 000000000000..81f40fe0c75b
--- /dev/null
+++ b/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c
@@ -0,0 +1,216 @@
+/* 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 "quantum.h"
+#include "raw_hid.h"
+
+#define KEY_PRESS_FN (0x1 << 0)
+#define KEY_PRESS_J (0x1 << 1)
+#define KEY_PRESS_Z (0x1 << 2)
+#define KEY_PRESS_FACTORY_RESET (KEY_PRESS_FN | KEY_PRESS_J | KEY_PRESS_Z)
+
+#ifndef NKRO
+# include
+# define RAW_EPSIZE 32
+#endif
+
+#ifndef F_RESET_KEY1
+# define F_RESET_KEY1 KC_J
+#endif
+
+#ifndef F_RESET_KEY2
+# define F_RESET_KEY2 KC_Z
+#endif
+
+enum {
+ OS_SWITCH = 0x01,
+};
+
+enum {
+ FACTORY_TEST_CMD_OS_SWITCH = 0x02,
+ FACTORY_TEST_CMD_JUMP_TO_BL,
+ FACTORY_TEST_CMD_EEPROM_CLEAR,
+};
+
+uint16_t key_press_status = 0;
+uint32_t timer_3s_buffer = 0;
+uint32_t timer_300ms_buffer = 0;
+uint8_t factory_reset_count = 0;
+bool factory_reset_flag = false;
+bool report_os_sw_state = false;
+extern matrix_row_t matrix[MATRIX_ROWS];
+
+#ifdef SPLIT_KEYBOARD
+# ifdef RGB_MATRIX_ENABLE
+uint8_t led_state = 0;
+uint8_t light_test_state = 0;
+HSV hsv;
+# endif
+#endif
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+#if defined(FN_KEY1) || defined(FN_KEY2)
+# ifdef FN_KEY1
+ case FN_KEY1: /* fall through */
+# endif
+# ifdef FN_KEY2
+ case FN_KEY2:
+# endif
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_FN;
+ } else {
+ key_press_status &= ~KEY_PRESS_FN;
+ timer_3s_buffer = 0;
+ }
+ return true;
+#endif
+ case F_RESET_KEY1:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_J;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_J;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case F_RESET_KEY2:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_Z;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_Z;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ default:
+ return process_record_user(keycode, record);
+ }
+}
+
+static void factory_reset(void) {
+ timer_300ms_buffer = timer_read32();
+ layer_state_t default_layer = default_layer_state;
+ eeconfig_init();
+ default_layer_set(default_layer);
+ factory_reset_count++;
+}
+
+void factory_reset_task(void) {
+ if (timer_3s_buffer && (timer_elapsed32(timer_3s_buffer) > 3000)) {
+ timer_3s_buffer = 0;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ factory_reset_flag = true;
+ factory_reset();
+ }
+ key_press_status = 0;
+ }
+}
+
+void factory_reset_ind_task(void) {
+ if (timer_300ms_buffer && (timer_elapsed32(timer_300ms_buffer) > 300)) {
+ if (factory_reset_count++ > 7) {
+ timer_300ms_buffer = 0;
+ factory_reset_count = 0;
+ factory_reset_flag = false;
+ if (host_keyboard_led_state().caps_lock) {
+ writePin(LED_CAPS_LOCK_PIN, LED_OS_PIN_ON_STATE);
+ }
+ } else {
+ timer_300ms_buffer = timer_read32();
+ if (factory_reset_count % 2 == 0) {
+ writePin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE);
+ writePin(LED_CAPS_LOCK_PIN, LED_OS_PIN_ON_STATE);
+ } else {
+ writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
+ writePin(LED_CAPS_LOCK_PIN, !LED_OS_PIN_ON_STATE);
+ }
+ }
+ }
+}
+
+static void system_switch_state_report(uint8_t index, bool active) {
+ uint16_t checksum = 0;
+ uint8_t data[RAW_EPSIZE] = {0};
+ uint8_t payload[3] = {0};
+
+ if (report_os_sw_state) {
+ payload[0] = FACTORY_TEST_CMD_OS_SWITCH;
+ payload[1] = OS_SWITCH;
+#if defined(OS_SWITCH_REVERSE)
+ payload[2] = !active;
+#else
+ payload[2] = active;
+#endif
+ data[0] = 0xAB;
+ memcpy(&data[1], payload, 3);
+ for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
+ checksum += data[i];
+ }
+ data[RAW_EPSIZE - 2] = checksum & 0xFF;
+ data[RAW_EPSIZE - 1] = (checksum >> 8) & 0xFF;
+ raw_hid_send(data, RAW_EPSIZE);
+ }
+}
+
+bool dip_switch_update_user(uint8_t index, bool active) {
+ /* Send default layer state to host */
+ system_switch_state_report(index, active);
+ return true;
+}
+
+bool via_command_kb(uint8_t *data, uint8_t length) {
+ if (data[0] == 0xAB) {
+ uint16_t checksum = 0;
+ for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
+ checksum += data[i];
+ }
+ /* Verify checksum */
+ if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) {
+ return true;
+ }
+ switch (data[1]) {
+#if defined(DIP_SWITCH_ENABLE)
+ case FACTORY_TEST_CMD_OS_SWITCH:
+ report_os_sw_state = data[2];
+ if (report_os_sw_state) {
+ dip_switch_read(true);
+ }
+ break;
+#endif
+ case FACTORY_TEST_CMD_JUMP_TO_BL:
+ if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
+ if (memcmp(&data[2], "JumpToBootloader", strlen("JumpToBootloader")) == 0) bootloader_jump();
+ }
+ break;
+ case FACTORY_TEST_CMD_EEPROM_CLEAR:
+ if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
+ if (data[2]) {
+ factory_reset();
+ }
+ }
+ break;
+ }
+ return true;
+ }
+ return false;
+}
diff --git a/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.h b/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.h
new file mode 100755
index 000000000000..b446d00ac383
--- /dev/null
+++ b/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.h
@@ -0,0 +1,20 @@
+/* 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 .
+ */
+
+extern bool factory_reset_flag;
+
+void factory_reset_task(void);
+void factory_reset_ind_task(void);
diff --git a/keyboards/keychron/common/keychron_ft_common.c b/keyboards/keychron/common/keychron_ft_common.c
index b4c36889ea15..8ac29f8c16e9 100644
--- a/keyboards/keychron/common/keychron_ft_common.c
+++ b/keyboards/keychron/common/keychron_ft_common.c
@@ -30,7 +30,14 @@
# define BL_TEST_KEY2 KC_HOME
#endif
-// clang-format off
+#ifndef F_RESET_KEY1
+# define F_RESET_KEY1 KC_J
+#endif
+
+#ifndef F_RESET_KEY2
+# define F_RESET_KEY2 KC_Z
+#endif
+
enum {
OS_SWITCH = 0x01,
};
@@ -39,7 +46,7 @@ enum {
FACTORY_TEST_CMD_BACKLIGHT = 0x01,
FACTORY_TEST_CMD_OS_SWITCH,
FACTORY_TEST_CMD_JUMP_TO_BL,
- FACTORY_TEST_CMD_EEPROM_CLEAR
+ FACTORY_TEST_CMD_EEPROM_CLEAR,
};
// clang-format on
@@ -68,60 +75,60 @@ __attribute__((weak)) bool process_record_keychron_ft(uint16_t keycode, keyrecor
case FN_KEY2:
# endif
if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_0;
+ key_press_status |= KEY_PRESS_FN;
} else {
- key_press_status &= ~KEY_PRESS_STEP_0;
+ key_press_status &= ~KEY_PRESS_FN;
timer_3s_buffer = 0;
}
return true;
#endif
- case KC_J:
+ case F_RESET_KEY1:
if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_1;
+ key_press_status |= KEY_PRESS_J;
if (key_press_status == KEY_PRESS_FACTORY_RESET) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ timer_3s_buffer = timer_read32();
}
} else {
- key_press_status &= ~KEY_PRESS_STEP_1;
+ key_press_status &= ~KEY_PRESS_J;
timer_3s_buffer = 0;
}
return true;
- case KC_Z:
+ case F_RESET_KEY2:
if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_2;
+ key_press_status |= KEY_PRESS_Z;
if (key_press_status == KEY_PRESS_FACTORY_RESET) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ timer_3s_buffer = timer_read32();
}
} else {
- key_press_status &= ~KEY_PRESS_STEP_2;
+ key_press_status &= ~KEY_PRESS_Z;
timer_3s_buffer = 0;
}
return true;
case BL_TEST_KEY1:
if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_3;
+ key_press_status |= KEY_PRESS_HOME;
if (led_test_mode) {
if (++led_test_mode >= LED_TEST_MODE_MAX) {
led_test_mode = LED_TEST_MODE_WHITE;
}
} else if (key_press_status == KEY_PRESS_LED_TEST) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ timer_3s_buffer = timer_read32();
}
} else {
- key_press_status &= ~KEY_PRESS_STEP_3;
+ key_press_status &= ~KEY_PRESS_HOME;
timer_3s_buffer = 0;
}
return true;
case BL_TEST_KEY2:
if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_4;
+ key_press_status |= KEY_PRESS_RIGHT;
if (led_test_mode) {
led_test_mode = LED_TEST_MODE_OFF;
} else if (key_press_status == KEY_PRESS_LED_TEST) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ timer_3s_buffer = timer_read32();
}
} else {
- key_press_status &= ~KEY_PRESS_STEP_4;
+ key_press_status &= ~KEY_PRESS_RIGHT;
timer_3s_buffer = 0;
}
return true;
@@ -131,9 +138,13 @@ __attribute__((weak)) bool process_record_keychron_ft(uint16_t keycode, keyrecor
}
static void factory_reset(void) {
- timer_300ms_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ timer_300ms_buffer = timer_read32();
factory_reset_count++;
+#ifdef KEYBOARD_keychron_c3_pro_ansi_white
+ layer_state_t default_layer = 1 << 2;
+#else
layer_state_t default_layer = default_layer_state;
+#endif
eeconfig_init();
default_layer_set(default_layer);
led_test_mode = LED_TEST_MODE_OFF;
@@ -157,7 +168,7 @@ static void factory_reset(void) {
}
static void timer_3s_task(void) {
- if (sync_timer_elapsed32(timer_3s_buffer) > 3000) {
+ if (timer_elapsed32(timer_3s_buffer) > 3000) {
timer_3s_buffer = 0;
if (key_press_status == KEY_PRESS_FACTORY_RESET) {
factory_reset();
@@ -182,7 +193,7 @@ static void timer_3s_task(void) {
}
static void timer_300ms_task(void) {
- if (sync_timer_elapsed32(timer_300ms_buffer) > 300) {
+ if (timer_elapsed32(timer_300ms_buffer) > 300) {
if (factory_reset_count++ > 6) {
timer_300ms_buffer = 0;
factory_reset_count = 0;
@@ -191,7 +202,7 @@ static void timer_300ms_task(void) {
rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
#endif
} else {
- timer_300ms_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
+ timer_300ms_buffer = timer_read32();
}
}
}
diff --git a/keyboards/keychron/common/keychron_ft_common.h b/keyboards/keychron/common/keychron_ft_common.h
index 3bb25d47128d..1d61d5d64c6c 100644
--- a/keyboards/keychron/common/keychron_ft_common.h
+++ b/keyboards/keychron/common/keychron_ft_common.h
@@ -16,23 +16,22 @@
#include "quantum.h"
-#define KEY_PRESS_STEP_0 (0x1 << 0)
-#define KEY_PRESS_STEP_1 (0x1 << 1)
-#define KEY_PRESS_STEP_2 (0x1 << 2)
-#define KEY_PRESS_STEP_3 (0x1 << 3)
-#define KEY_PRESS_STEP_4 (0x1 << 4)
-#define KEY_PRESS_FACTORY_RESET (KEY_PRESS_STEP_0 | KEY_PRESS_STEP_1 | KEY_PRESS_STEP_2)
-#define KEY_PRESS_LED_TEST (KEY_PRESS_STEP_0 | KEY_PRESS_STEP_3 | KEY_PRESS_STEP_4)
-// clang-format off
+#define KEY_PRESS_FN (0x1 << 0)
+#define KEY_PRESS_J (0x1 << 1)
+#define KEY_PRESS_Z (0x1 << 2)
+#define KEY_PRESS_HOME (0x1 << 3)
+#define KEY_PRESS_RIGHT (0x1 << 4)
+#define KEY_PRESS_FACTORY_RESET (KEY_PRESS_FN | KEY_PRESS_J | KEY_PRESS_Z)
+#define KEY_PRESS_LED_TEST (KEY_PRESS_FN | KEY_PRESS_HOME | KEY_PRESS_RIGHT)
+
enum {
LED_TEST_MODE_OFF,
LED_TEST_MODE_WHITE,
LED_TEST_MODE_RED,
LED_TEST_MODE_GREEN,
LED_TEST_MODE_BLUE,
- LED_TEST_MODE_MAX
+ LED_TEST_MODE_MAX,
} led_test_mode;
-// clang-format on
extern uint16_t key_press_status;
extern uint32_t timer_3s_buffer;
diff --git a/keyboards/keychron/common/keychron_ft_q0.c b/keyboards/keychron/common/keychron_ft_q0.c
new file mode 100755
index 000000000000..a9fd1292fe2c
--- /dev/null
+++ b/keyboards/keychron/common/keychron_ft_q0.c
@@ -0,0 +1,93 @@
+/* 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 "keychron_ft_common.h"
+
+bool process_record_keychron_ft(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+#if defined(FN_KEY1) || defined(FN_KEY2)
+# ifdef FN_KEY1
+ case FN_KEY1: /* fall through */
+# endif
+# ifdef FN_KEY2
+ case FN_KEY2:
+# endif
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_FN;
+ } else {
+ key_press_status &= ~KEY_PRESS_FN;
+ timer_3s_buffer = 0;
+ }
+ return true;
+#endif
+ case RGB_SAD:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_J;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = timer_read32();
+ } else {
+ }
+ } else {
+ rgb_matrix_decrease_sat_noeeprom();
+ key_press_status &= ~KEY_PRESS_J;
+ timer_3s_buffer = 0;
+ }
+ return false; // Skip all further processing of this key
+ case RGB_HUD:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_Z;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ timer_3s_buffer = timer_read32();
+ } else {
+ }
+ } else {
+ rgb_matrix_decrease_hue_noeeprom();
+ key_press_status &= ~KEY_PRESS_Z;
+ timer_3s_buffer = 0;
+ }
+ return false; // Skip all further processing of this key
+ case KC_MPLY:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_HOME;
+ if (led_test_mode) {
+ if (++led_test_mode >= LED_TEST_MODE_MAX) {
+ led_test_mode = LED_TEST_MODE_WHITE;
+ }
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+ timer_3s_buffer = timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_HOME;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ case KC_DEL:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_RIGHT;
+ if (led_test_mode) {
+ led_test_mode = LED_TEST_MODE_OFF;
+ } else if (key_press_status == KEY_PRESS_LED_TEST) {
+ timer_3s_buffer = timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_RIGHT;
+ timer_3s_buffer = 0;
+ }
+ return true;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/keychron/common/matrix.c b/keyboards/keychron/common/matrix.c
index af7514c5adb8..e99edbf43c38 100644
--- a/keyboards/keychron/common/matrix.c
+++ b/keyboards/keychron/common/matrix.c
@@ -16,49 +16,45 @@
#include "quantum.h"
-#ifndef SHIFT_COL_START
-# define SHIFT_COL_START 8
+#ifndef HC595_STCP
+# define HC595_STCP B0
#endif
-#ifndef SHIFT_COL_END
-# define SHIFT_COL_END 15
+#ifndef HC595_SHCP
+# define HC595_SHCP A1
+#endif
+#ifndef HC595_DS
+# define HC595_DS A7
+#endif
+
+#ifndef HC595_START_INDEX
+# define HC595_START_INDEX 0
+#endif
+#ifndef HC595_END_INDEX
+# define HC595_END_INDEX 15
+#endif
+#ifndef HC595_START_OFFSET
+# define HC595_START_OFFSET -1
#endif
-#if defined(SHIFT_COL_START) && defined(SHIFT_COL_END)
-# if ((SHIFT_COL_END - SHIFT_COL_START) > 16)
+#if defined(HC595_START_INDEX) && defined(HC595_END_INDEX)
+# if ((HC595_END_INDEX - HC595_START_INDEX + 1) > 16)
# define SIZE_T uint32_t
# define UNSELECT_ALL_COL 0xFFFFFFFF
-# elif ((SHIFT_COL_END - SHIFT_COL_START) > 8)
+# define SELECT_ALL_COL 0x00000000
+# elif ((HC595_END_INDEX - HC595_START_INDEX + 1) > 8)
# define SIZE_T uint16_t
# define UNSELECT_ALL_COL 0xFFFF
+# define SELECT_ALL_COL 0x0000
# else
# define SIZE_T uint8_t
# define UNSELECT_ALL_COL 0xFF
+# define SELECT_ALL_COL 0x00
# endif
#endif
pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInput_high(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
static inline uint8_t readMatrixPin(pin_t pin) {
if (pin != NO_PIN) {
return readPin(pin);
@@ -67,17 +63,27 @@ static inline uint8_t readMatrixPin(pin_t pin) {
}
}
-static inline void HC595_delay(uint8_t n) {
+static inline void setPinOutput_writeLow(pin_t pin) {
+ setPinOutput(pin);
+ writePinLow(pin);
+}
+
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ setPinOutput(pin);
+ writePinHigh(pin);
+}
+
+static inline void HC595_delay(uint16_t n) {
while (n-- > 0) {
asm volatile("nop" ::: "memory");
}
}
-static void HC595_output(SIZE_T data, uint8_t bit) {
+static void HC595_output(SIZE_T data, bool bit_flag) {
uint8_t n = 1;
ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < (SHIFT_COL_END - SHIFT_COL_START + 1); i++) {
+ for (uint8_t i = 0; i < (HC595_END_INDEX - HC595_START_INDEX + 1); i++) {
if (data & 0x1) {
writePinHigh(HC595_DS);
} else {
@@ -87,7 +93,7 @@ static void HC595_output(SIZE_T data, uint8_t bit) {
HC595_delay(n);
writePinLow(HC595_SHCP);
HC595_delay(n);
- if (bit) {
+ if (bit_flag) {
break;
} else {
data = data >> 1;
@@ -100,59 +106,59 @@ static void HC595_output(SIZE_T data, uint8_t bit) {
}
}
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (col < SHIFT_COL_START || col > SHIFT_COL_END) {
- setPinOutput_writeLow(pin);
- return true;
+static void select_col(uint8_t col) {
+ if (col < HC595_START_INDEX || col > HC595_END_INDEX) {
+ setPinOutput_writeLow(col_pins[col]);
} else {
- if (col == SHIFT_COL_START) {
- HC595_output(0x00, 1);
+ if (col == HC595_START_INDEX) {
+ HC595_output(0x00, true);
+ if (col <= HC595_START_OFFSET) HC595_output(0x01, true);
}
- return true;
}
- return false;
}
static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (col < SHIFT_COL_START || col > SHIFT_COL_END) {
+ if (col < HC595_START_INDEX || col > HC595_END_INDEX) {
#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
+ setPinOutput_writeHigh(col_pins[col]);
#else
- setPinInput_high(pin);
+ setPinInputHigh(col_pins[col]);
#endif
} else {
- HC595_output(0x01, 1);
+ HC595_output(0x01, true);
}
}
static void unselect_cols(void) {
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (x < SHIFT_COL_START || x > SHIFT_COL_END) {
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ if (col < HC595_START_INDEX || col > HC595_END_INDEX) {
#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
+ setPinOutput_writeHigh(col_pins[col]);
#else
- setPinInput_high(pin);
+ setPinInputHigh(col_pins[col]);
#endif
} else {
- if (x == SHIFT_COL_START) HC595_output(UNSELECT_ALL_COL, 0);
+ if (col == HC595_START_INDEX) HC595_output(UNSELECT_ALL_COL, false);
+ break;
}
}
}
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
+void select_all_cols(void) {
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ if (col < HC595_START_INDEX || col > HC595_END_INDEX) {
+ setPinOutput_writeLow(col_pins[col]);
+ } else {
+ if (col == HC595_START_INDEX) HC595_output(SELECT_ALL_COL, false);
+ break;
+ }
}
+}
- matrix_output_select_delay();
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ // Select col
+ select_col(current_col); // select col
+ HC595_delay(200);
// For each row...
for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
@@ -160,7 +166,6 @@ static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t curre
if (readMatrixPin(row_pins[row_index]) == 0) {
// Pin LO, set col bit
current_matrix[row_index] |= row_shifter;
- key_pressed = true;
} else {
// Pin HI, clear col bit
current_matrix[row_index] &= ~row_shifter;
@@ -169,7 +174,7 @@ static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t curre
// Unselect col
unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
+ HC595_delay(200); // wait for all Row signals to go HIGH
}
void matrix_init_custom(void) {
@@ -179,7 +184,7 @@ void matrix_init_custom(void) {
for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
if (row_pins[x] != NO_PIN) {
- setPinInput_high(row_pins[x]);
+ setPinInputHigh(row_pins[x]);
}
}
@@ -200,3 +205,8 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
return changed;
}
+
+void suspend_wakeup_init_kb(void) {
+ // code will run on keyboard wakeup
+ clear_keyboard();
+}
diff --git a/keyboards/keychron/common/via_indicator.c b/keyboards/keychron/common/via_indicator.c
new file mode 100755
index 000000000000..256f2ff0d20b
--- /dev/null
+++ b/keyboards/keychron/common/via_indicator.c
@@ -0,0 +1,237 @@
+/* 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 "quantum.h"
+
+#if defined(RGB_MATRIX_ENABLE)
+# if defined(CAPS_LOCK_INDEX) || defined(NUM_LOCK_INDEX)
+
+enum via_capslock_value {
+ id_capslock_brightness = 1,
+ id_capslock_status = 2,
+ id_capslock_color = 3,
+ id_numlock_brightness = 4,
+ id_numlock_status = 5,
+ id_numlock_color = 6,
+};
+
+typedef struct {
+ HSV hsv;
+ bool status;
+} g_capslock_control;
+typedef struct {
+ HSV hsv;
+ bool status;
+} g_numlock_control;
+struct {
+ g_capslock_control caps;
+ g_numlock_control num;
+} g_indicator_control;
+
+void keyboard_post_init_user() {
+ eeconfig_read_user_datablock(&g_indicator_control);
+}
+
+void eeconfig_init_kb(void) {
+# if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+# endif
+ g_indicator_control.caps.hsv.h = 255;
+ g_indicator_control.caps.hsv.s = 0;
+ g_indicator_control.caps.hsv.v = 255;
+ g_indicator_control.caps.status = true;
+ g_indicator_control.num.hsv.h = 255;
+ g_indicator_control.num.hsv.s = 0;
+ g_indicator_control.num.hsv.v = 255;
+ g_indicator_control.num.status = true;
+ eeconfig_update_user_datablock(&g_indicator_control);
+
+ eeconfig_init_user();
+}
+
+bool rgb_matrix_indicators_kb(void) {
+# if defined(CAPS_LOCK_INDEX)
+ if (host_keyboard_led_state().caps_lock && g_indicator_control.caps.status) {
+ RGB rgb = hsv_to_rgb(g_indicator_control.caps.hsv);
+# if defined(DIM_CAPS_LOCK)
+ rgb_matrix_set_color(CAPS_LOCK_INDEX, 0, 0, 0);
+# else
+ rgb_matrix_set_color(CAPS_LOCK_INDEX, rgb.r, rgb.g, rgb.b);
+# endif
+ }
+# endif
+# if defined(NUM_LOCK_INDEX)
+ if (host_keyboard_led_state().num_lock && g_indicator_control.num.status) {
+ RGB rgb = hsv_to_rgb(g_indicator_control.num.hsv);
+ rgb_matrix_set_color(NUM_LOCK_INDEX, rgb.r, rgb.g, rgb.b);
+ }
+# endif
+ return true;
+}
+
+void rgb_matrix_none_indicators_kb(void) {
+ rgb_matrix_indicators_kb();
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+
+ if (rgb_matrix_is_enabled()
+# if defined(ENABLE_RGB_MATRIX_RAINDROPS)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_RAINDROPS)
+# endif
+# if defined(ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_JELLYBEAN_RAINDROPS)
+# endif
+# if defined(ENABLE_RGB_MATRIX_PIXEL_RAIN)
+ && (rgb_matrix_get_mode() != RGB_MATRIX_PIXEL_RAIN)
+# endif
+ ) {
+ return res;
+ }
+
+ if (res) {
+# if defined(CAPS_LOCK_INDEX)
+ if (led_state.caps_lock) {
+ RGB rgb = hsv_to_rgb(g_indicator_control.caps.hsv);
+ rgb_matrix_set_color(CAPS_LOCK_INDEX, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(CAPS_LOCK_INDEX, 0, 0, 0);
+ }
+# endif
+# if defined(NUM_LOCK_INDEX)
+ if (led_state.num_lock) {
+ RGB rgb = hsv_to_rgb(g_indicator_control.caps.hsv);
+ rgb_matrix_set_color(NUM_LOCK_INDEX, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(NUM_LOCK_INDEX, 0, 0, 0);
+ }
+# endif
+ rgb_matrix_driver.flush();
+ }
+ return res;
+}
+
+void indicator_config_set_value(uint8_t *data) {
+ uint8_t *value_id = &(data[0]);
+ uint8_t *value_data = &(data[1]);
+
+ switch (*value_id) {
+ case id_capslock_brightness: {
+ g_indicator_control.caps.hsv.v = *value_data;
+ break;
+ }
+ case id_capslock_status: {
+ g_indicator_control.caps.status = *value_data;
+ break;
+ }
+ case id_capslock_color: {
+ g_indicator_control.caps.hsv.h = value_data[0];
+ g_indicator_control.caps.hsv.s = value_data[1];
+ break;
+ }
+ case id_numlock_brightness: {
+ g_indicator_control.num.hsv.v = *value_data;
+ break;
+ }
+ case id_numlock_status: {
+ g_indicator_control.num.status = *value_data;
+ break;
+ }
+ case id_numlock_color: {
+ g_indicator_control.num.hsv.h = value_data[0];
+ g_indicator_control.num.hsv.s = value_data[1];
+ break;
+ }
+ }
+}
+
+void indicator_config_get_value(uint8_t *data) {
+ uint8_t *value_id = &(data[0]);
+ uint8_t *value_data = &(data[1]);
+
+ switch (*value_id) {
+ case id_capslock_brightness: {
+ *value_data = g_indicator_control.caps.hsv.v;
+ break;
+ }
+ case id_capslock_status: {
+ *value_data = g_indicator_control.caps.status;
+ break;
+ }
+ case id_capslock_color: {
+ value_data[0] = g_indicator_control.caps.hsv.h;
+ value_data[1] = g_indicator_control.caps.hsv.s;
+ break;
+ }
+ case id_numlock_brightness: {
+ *value_data = g_indicator_control.num.hsv.v;
+ break;
+ }
+ case id_numlock_status: {
+ *value_data = g_indicator_control.num.status;
+ break;
+ }
+ case id_numlock_color: {
+ value_data[0] = g_indicator_control.num.hsv.h;
+ value_data[1] = g_indicator_control.num.hsv.s;
+ break;
+ }
+ }
+}
+
+void indicator_config_save(void) {
+ eeconfig_update_user_datablock(&g_indicator_control);
+}
+
+void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
+ // data = [ command_id, channel_id, value_id, value_data ]
+ uint8_t *command_id = &(data[0]);
+ uint8_t *channel_id = &(data[1]);
+ uint8_t *value_id_and_data = &(data[2]);
+
+ if (*channel_id == id_custom_channel) {
+ switch (*command_id) {
+ case id_custom_set_value: {
+ indicator_config_set_value(value_id_and_data);
+ break;
+ }
+ case id_custom_get_value: {
+ indicator_config_get_value(value_id_and_data);
+ break;
+ }
+ case id_custom_save: {
+ indicator_config_save();
+ break;
+ }
+ default: {
+ // Unhandled message.
+ *command_id = id_unhandled;
+ break;
+ }
+ }
+ return;
+ }
+
+ // Return the unhandled state
+ *command_id = id_unhandled;
+
+ // DO NOT call raw_hid_send(data,length) here, let caller do this
+}
+
+# endif
+#endif
diff --git a/keyboards/keychron/x1/ansi/red/config.h b/keyboards/keychron/x1/ansi/red/config.h
new file mode 100755
index 000000000000..10b68a44cf46
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/config.h
@@ -0,0 +1,41 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 87
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_9CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/x1/ansi/red/info.json b/keyboards/keychron/x1/ansi/red/info.json
new file mode 100755
index 000000000000..aaedd779db25
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/info.json
@@ -0,0 +1,124 @@
+{
+ "usb": {
+ "pid": "0x0210",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":27},
+ {"matrix":[2, 13], "flags":1, "x":179, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":224, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":39},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":39},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":39},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":39},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":39},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":39},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":39},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":39},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":39},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":39},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":39},
+ {"matrix":[3, 11], "flags":4, "x":153, "y":39},
+ {"matrix":[3, 13], "flags":1, "x":174, "y":39},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":82, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":95, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":108, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":121, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":134, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":147, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":132, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":165, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":181, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c
new file mode 100755
index 000000000000..1c6c3a8b95e2
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 202 @ 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
+
+enum layers{
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/x1/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x1/ansi/red/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..b6f9bef78fea
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CRTA, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/x1/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x1/ansi/red/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x1/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x1/ansi/red/keymaps/via/keymap.c
new file mode 100755
index 000000000000..ff90375c5a10
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* 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
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
\ No newline at end of file
diff --git a/keyboards/keychron/x1/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x1/ansi/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/x1/ansi/red/red.c b/keyboards/keychron/x1/ansi/red/red.c
new file mode 100755
index 000000000000..1c0ef4fadedd
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/red.c
@@ -0,0 +1,119 @@
+/* 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 "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, A_16},
+ {0, A_15},
+ {0, A_14},
+ {0, A_13},
+ {0, A_12},
+ {0, A_11},
+ {0, A_10},
+ {0, A_9 },
+ {0, A_8 },
+ {0, A_7 },
+ {0, A_6 },
+ {0, A_5 },
+ {0, A_4 },
+ {0, A_2 },
+ {0, A_1 },
+ {0, G_1 },
+
+ {0, B_16},
+ {0, B_15},
+ {0, B_14},
+ {0, B_13},
+ {0, B_12},
+ {0, B_11},
+ {0, B_10},
+ {0, B_9 },
+ {0, B_8 },
+ {0, B_7 },
+ {0, B_6 },
+ {0, B_5 },
+ {0, B_4 },
+ {0, B_3 },
+ {0, B_2 },
+ {0, B_1 },
+ {0, H_1 },
+
+ {0, C_16},
+ {0, C_15},
+ {0, C_14},
+ {0, C_13},
+ {0, C_12},
+ {0, C_11},
+ {0, C_10},
+ {0, C_9 },
+ {0, C_8 },
+ {0, C_7 },
+ {0, C_6 },
+ {0, C_5 },
+ {0, C_4 },
+ {0, C_3 },
+ {0, C_2 },
+ {0, C_1 },
+ {0, G_6 },
+
+ {0, D_16},
+ {0, D_15},
+ {0, D_14},
+ {0, D_13},
+ {0, D_12},
+ {0, D_11},
+ {0, D_10},
+ {0, D_9 },
+ {0, D_8 },
+ {0, D_7 },
+ {0, D_6 },
+ {0, D_5 },
+ {0, D_3 },
+
+ {0, E_16},
+ {0, E_14},
+ {0, E_13},
+ {0, E_12},
+ {0, E_11},
+ {0, E_10},
+ {0, E_9 },
+ {0, E_8 },
+ {0, E_7 },
+ {0, E_6 },
+ {0, E_5 },
+ {0, E_3 },
+ {0, E_1 },
+
+ {0, F_16},
+ {0, F_15},
+ {0, F_14},
+ {0, F_10},
+ {0, F_6 },
+ {0, F_5 },
+ {0, F_4 },
+ {0, F_3 },
+ {0, F_2 },
+ {0, F_1 },
+ {0, G_13},
+};
+#endif
diff --git a/keyboards/keychron/x1/ansi/red/rules.mk b/keyboards/keychron/x1/ansi/red/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/x1/ansi/red/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/x1/config.h b/keyboards/keychron/x1/config.h
new file mode 100755
index 000000000000..27084a651e15
--- /dev/null
+++ b/keyboards/keychron/x1/config.h
@@ -0,0 +1,36 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* I2C Driver Configuration */
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Winlock indicator */
+#define LED_WIN_LOCK_PIN C10
+#define LED_PIN_ON_STATE 1
+
+/* User used eeprom */
+#define EECONFIG_USER_DATA_SIZE 1
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/x1/halconf.h b/keyboards/keychron/x1/halconf.h
new file mode 100755
index 000000000000..41bddcb2799b
--- /dev/null
+++ b/keyboards/keychron/x1/halconf.h
@@ -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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/keychron/x1/info.json b/keyboards/keychron/x1/info.json
new file mode 100755
index 000000000000..0c409830956d
--- /dev/null
+++ b/keyboards/keychron/x1/info.json
@@ -0,0 +1,129 @@
+{
+ "keyboard_name": "Lemokey X1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x362D"
+ },
+ "matrix_pins": {
+ "cols": ["A0", "A1", "A2", "A3", "C0", "C1", "C2", "C3", "A8", "C12", "B9", "C6", "C7", "C4", "C5", "A15", "B10"],
+ "rows": ["B0", "B1", "B8", "B3", "B4", "B5"]
+ },
+ "diode_direction": "COL2ROW",
+ "indicators": {
+ "caps_lock": "C9",
+ "scroll_lock": "C11"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "community_layouts": [
+ "tkl_ansi"
+ ],
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,1], "x":2, "y":0},
+ {"matrix":[0,2], "x":3, "y":0},
+ {"matrix":[0,3], "x":4, "y":0},
+ {"matrix":[0,4], "x":5, "y":0},
+ {"matrix":[0,5], "x":6.5, "y":0},
+ {"matrix":[0,6], "x":7.5, "y":0},
+ {"matrix":[0,7], "x":8.5, "y":0},
+ {"matrix":[0,8], "x":9.5, "y":0},
+ {"matrix":[0,9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/x1/mcuconf.h b/keyboards/keychron/x1/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/x1/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/c1/readme.md b/keyboards/keychron/x1/readme.md
old mode 100644
new mode 100755
similarity index 54%
rename from keyboards/keychron/c1/readme.md
rename to keyboards/keychron/x1/readme.md
index 6640f2b069ab..2dc1ce1c5627
--- a/keyboards/keychron/c1/readme.md
+++ b/keyboards/keychron/x1/readme.md
@@ -1,23 +1,26 @@
-# Keychron C1 Pro
+# Lemokey X1
-![Keychron C1 Pro](https://i.imgur.com/Svdm4lp.jpg)
+![Lemokey X1]()
-A customizable 100% keyboard.
+A customizable 80% TKL keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
-* Hardware Supported: Keychron C1 Pro
+* Hardware Supported: Lemokey X1
* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
- make keychron/c1/ansi/rgb:default
- make keychron/c1/ansi/white:default
+ make keychron/x1/ansi/red:default
Flashing example for this keyboard:
- make keychron/c1/ansi/rgb:default:flash
- make keychron/c1/ansi/rbg:default:flash
+ make keychron/x1/ansi/red:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
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).
diff --git a/keyboards/keychron/x1/via_json/x1_pro_ansi_red.json b/keyboards/keychron/x1/via_json/x1_pro_ansi_red.json
new file mode 100755
index 000000000000..13b3d7bf7711
--- /dev/null
+++ b/keyboards/keychron/x1/via_json/x1_pro_ansi_red.json
@@ -0,0 +1,224 @@
+{
+ "name": "Lemokey X1 ANSI Red",
+ "vendorId": "0x362D",
+ "productId": "0x0210",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 17},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/x1/x1.c b/keyboards/keychron/x1/x1.c
new file mode 100755
index 000000000000..80edadabe0f4
--- /dev/null
+++ b/keyboards/keychron/x1/x1.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 "quantum.h"
+
+static uint8_t win_lock_state = 0;
+
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE)
+
+static void set_led_win_lock_state(void) {
+ if (win_lock_state) {
+ SET_LED_WIN_LOCK_ON;
+ } else {
+ SET_LED_WIN_LOCK_OFF;
+ }
+}
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ win_lock_state = 0;
+ eeconfig_update_user_datablock(&win_lock_state);
+
+ eeconfig_init_user();
+}
+
+void keyboard_post_init_kb(void) {
+ setPinOutputPushPull(LED_WIN_LOCK_PIN);
+ eeconfig_read_user_datablock(&win_lock_state);
+
+ keyboard_post_init_user();
+}
+
+void housekeeping_task_kb() {
+ set_led_win_lock_state();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+ case GU_TOGG:
+ if (record->event.pressed) {
+ win_lock_state = !win_lock_state;
+ eeconfig_update_user_datablock(&win_lock_state);
+ if (win_lock_state) {
+ writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE);
+ } else {
+ writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE);
+ }
+ }
+ return true;
+ default:
+ return true;
+ }
+}
+
+void suspend_power_down_kb(void) {
+ SET_LED_WIN_LOCK_OFF;
+
+ suspend_power_down_user();
+}
diff --git a/keyboards/keychron/x3/ansi/red/config.h b/keyboards/keychron/x3/ansi/red/config.h
new file mode 100755
index 000000000000..acc49e001a17
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/config.h
@@ -0,0 +1,41 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 104
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_9CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/x3/ansi/red/info.json b/keyboards/keychron/x3/ansi/red/info.json
new file mode 100755
index 000000000000..bdd0d149ebe5
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/info.json
@@ -0,0 +1,136 @@
+{
+ "usb": {
+ "pid": "0x0230",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0,0], "flags":1, "x":0, "y":0},
+ {"matrix":[0,1], "flags":1, "x":21, "y":0},
+ {"matrix":[0,2], "flags":1, "x":31, "y":0},
+ {"matrix":[0,3], "flags":1, "x":42, "y":0},
+ {"matrix":[0,4], "flags":1, "x":52, "y":0},
+ {"matrix":[0,5], "flags":1, "x":68, "y":0},
+ {"matrix":[0,6], "flags":1, "x":78, "y":0},
+ {"matrix":[0,7], "flags":1, "x":88, "y":0},
+ {"matrix":[0,8], "flags":1, "x":99, "y":0},
+ {"matrix":[0,9], "flags":1, "x":114, "y":0},
+ {"matrix":[0,10], "flags":1, "x":125, "y":0},
+ {"matrix":[0,11], "flags":1, "x":135, "y":0},
+ {"matrix":[0,12], "flags":1, "x":146, "y":0},
+ {"matrix":[0,14], "flags":1, "x":159, "y":0},
+ {"matrix":[0,15], "flags":1, "x":169, "y":0},
+ {"matrix":[0,16], "flags":1, "x":180, "y":0},
+ {"matrix":[1,0], "flags":1, "x":0, "y":16},
+ {"matrix":[1,1], "flags":4, "x":10, "y":16},
+ {"matrix":[1,2], "flags":4, "x":21, "y":16},
+ {"matrix":[1,3], "flags":4, "x":31, "y":16},
+ {"matrix":[1,4], "flags":4, "x":42, "y":16},
+ {"matrix":[1,5], "flags":4, "x":52, "y":16},
+ {"matrix":[1,6], "flags":4, "x":62, "y":16},
+ {"matrix":[1,7], "flags":4, "x":73, "y":16},
+ {"matrix":[1,8], "flags":4, "x":83, "y":16},
+ {"matrix":[1,9], "flags":4, "x":94, "y":16},
+ {"matrix":[1,10], "flags":4, "x":104, "y":16},
+ {"matrix":[1,11], "flags":4, "x":114, "y":16},
+ {"matrix":[1,12], "flags":4, "x":125, "y":16},
+ {"matrix":[1,13], "flags":1, "x":140, "y":16},
+ {"matrix":[1,14], "flags":1, "x":159, "y":16},
+ {"matrix":[1,15], "flags":1, "x":169, "y":16},
+ {"matrix":[1,16], "flags":1, "x":180, "y":16},
+ {"matrix":[1,17], "flags":4, "x":193, "y":16},
+ {"matrix":[1,18], "flags":4, "x":203, "y":16},
+ {"matrix":[1,19], "flags":4, "x":214, "y":16},
+ {"matrix":[1,20], "flags":4, "x":224, "y":16},
+ {"matrix":[2,0], "flags":1, "x":3, "y":28},
+ {"matrix":[2,1], "flags":4, "x":16, "y":28},
+ {"matrix":[2,2], "flags":4, "x":26, "y":28},
+ {"matrix":[2,3], "flags":4, "x":36, "y":28},
+ {"matrix":[2,4], "flags":4, "x":47, "y":28},
+ {"matrix":[2,5], "flags":4, "x":57, "y":28},
+ {"matrix":[2,6], "flags":4, "x":68, "y":28},
+ {"matrix":[2,7], "flags":4, "x":78, "y":28},
+ {"matrix":[2,8], "flags":4, "x":88, "y":28},
+ {"matrix":[2,9], "flags":4, "x":98, "y":28},
+ {"matrix":[2,10], "flags":4, "x":109, "y":28},
+ {"matrix":[2,11], "flags":4, "x":120, "y":28},
+ {"matrix":[2,12], "flags":4, "x":130, "y":28},
+ {"matrix":[2,13], "flags":1, "x":143, "y":28},
+ {"matrix":[2,14], "flags":1, "x":159, "y":28},
+ {"matrix":[2,15], "flags":1, "x":169, "y":28},
+ {"matrix":[2,16], "flags":1, "x":180, "y":28},
+ {"matrix":[2,17], "flags":4, "x":193, "y":28},
+ {"matrix":[2,18], "flags":4, "x":203, "y":28},
+ {"matrix":[2,19], "flags":4, "x":214, "y":28},
+ {"matrix":[2,20], "flags":4, "x":224, "y":34},
+ {"matrix":[3,0], "flags":1, "x":4, "y":40},
+ {"matrix":[3,1], "flags":4, "x":18, "y":40},
+ {"matrix":[3,2], "flags":4, "x":29, "y":40},
+ {"matrix":[3,3], "flags":4, "x":39, "y":40},
+ {"matrix":[3,4], "flags":4, "x":49, "y":40},
+ {"matrix":[3,5], "flags":4, "x":60, "y":40},
+ {"matrix":[3,6], "flags":4, "x":70, "y":40},
+ {"matrix":[3,7], "flags":4, "x":81, "y":40},
+ {"matrix":[3,8], "flags":4, "x":91, "y":40},
+ {"matrix":[3,9], "flags":4, "x":101, "y":40},
+ {"matrix":[3,10], "flags":4, "x":112, "y":40},
+ {"matrix":[3,11], "flags":4, "x":122, "y":40},
+ {"matrix":[3,13], "flags":1, "x":139, "y":40},
+ {"matrix":[3,17], "flags":4, "x":193, "y":40},
+ {"matrix":[3,18], "flags":4, "x":203, "y":40},
+ {"matrix":[3,19], "flags":4, "x":214, "y":40},
+ {"matrix":[4,0], "flags":1, "x":7, "y":52},
+ {"matrix":[4,2], "flags":4, "x":23, "y":52},
+ {"matrix":[4,3], "flags":4, "x":34, "y":52},
+ {"matrix":[4,4], "flags":4, "x":44, "y":52},
+ {"matrix":[4,5], "flags":4, "x":55, "y":52},
+ {"matrix":[4,6], "flags":4, "x":65, "y":52},
+ {"matrix":[4,7], "flags":4, "x":75, "y":52},
+ {"matrix":[4,8], "flags":4, "x":86, "y":52},
+ {"matrix":[4,9], "flags":4, "x":96, "y":52},
+ {"matrix":[4,10], "flags":4, "x":107, "y":52},
+ {"matrix":[4,11], "flags":4, "x":117, "y":52},
+ {"matrix":[4,13], "flags":1, "x":137, "y":52},
+ {"matrix":[4,15], "flags":1, "x":169, "y":52},
+ {"matrix":[4,17], "flags":4, "x":193, "y":52},
+ {"matrix":[4,18], "flags":4, "x":203, "y":52},
+ {"matrix":[4,19], "flags":4, "x":214, "y":52},
+ {"matrix":[4,20], "flags":4, "x":224, "y":58},
+ {"matrix":[5,0], "flags":1, "x":1, "y":64},
+ {"matrix":[5,1], "flags":1, "x":14, "y":64},
+ {"matrix":[5,2], "flags":1, "x":27, "y":64},
+ {"matrix":[5,6], "flags":4, "x":66, "y":64},
+ {"matrix":[5,10], "flags":1, "x":105, "y":64},
+ {"matrix":[5,11], "flags":1, "x":118, "y":64},
+ {"matrix":[5,12], "flags":1, "x":131, "y":64},
+ {"matrix":[5,13], "flags":1, "x":144, "y":64},
+ {"matrix":[5,14], "flags":1, "x":159, "y":64},
+ {"matrix":[5,15], "flags":1, "x":169, "y":64},
+ {"matrix":[5,16], "flags":1, "x":180, "y":64},
+ {"matrix":[5,17], "flags":4, "x":198, "y":64},
+ {"matrix":[5,18], "flags":4, "x":214, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c
new file mode 100755
index 000000000000..cf7d70a1fa55
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 202 @ 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
+
+enum layers{
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..8d3cd1aaedef
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/x3/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x3/ansi/red/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c
new file mode 100755
index 000000000000..01e9a4d6ff2c
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* 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
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/x3/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x3/ansi/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/x3/ansi/red/red.c b/keyboards/keychron/x3/ansi/red/red.c
new file mode 100755
index 000000000000..4c3123feaad6
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/red.c
@@ -0,0 +1,136 @@
+/* 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 "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, F_1 },
+ {0, F_2 },
+ {0, F_3 },
+ {0, F_4 },
+ {0, F_5 },
+ {0, F_6 },
+ {0, F_7 },
+ {0, F_8 },
+ {0, F_9 },
+ {0, F_10},
+ {0, F_11},
+ {0, F_12},
+ {0, F_13},
+ {0, F_15},
+ {0, F_16},
+ {0, G_1 },
+
+ {0, E_1 },
+ {0, E_2 },
+ {0, E_3 },
+ {0, E_4 },
+ {0, E_5 },
+ {0, E_6 },
+ {0, E_7 },
+ {0, E_8 },
+ {0, E_9 },
+ {0, E_10},
+ {0, E_11},
+ {0, E_12},
+ {0, E_13},
+ {0, E_14},
+ {0, E_15},
+ {0, E_16},
+ {0, H_1 },
+ {0, H_2 },
+ {0, H_3 },
+ {0, H_4 },
+ {0, H_5 },
+
+ {0, D_1 },
+ {0, D_2 },
+ {0, D_3 },
+ {0, D_4 },
+ {0, D_5 },
+ {0, D_6 },
+ {0, D_7 },
+ {0, D_8 },
+ {0, D_9 },
+ {0, D_10},
+ {0, D_11},
+ {0, D_12},
+ {0, D_13},
+ {0, D_14},
+ {0, D_15},
+ {0, D_16},
+ {0, G_6 },
+ {0, G_7 },
+ {0, G_8 },
+ {0, G_9 },
+ {0, G_10},
+
+ {0, C_1 },
+ {0, C_2 },
+ {0, C_3 },
+ {0, C_4 },
+ {0, C_5 },
+ {0, C_6 },
+ {0, C_7 },
+ {0, C_8 },
+ {0, C_9 },
+ {0, C_10},
+ {0, C_11},
+ {0, C_12},
+ {0, C_14},
+ {0, H_7 },
+ {0, H_8 },
+ {0, H_9 },
+
+ {0, B_1 },
+ {0, B_3 },
+ {0, B_4 },
+ {0, B_5 },
+ {0, B_6 },
+ {0, B_7 },
+ {0, B_8 },
+ {0, B_9 },
+ {0, B_10},
+ {0, B_11},
+ {0, B_12},
+ {0, B_14},
+ {0, B_16},
+ {0, H_6 },
+ {0, H_11},
+ {0, H_12},
+ {0, H_10},
+
+ {0, A_1 },
+ {0, A_2 },
+ {0, A_3 },
+ {0, A_7 },
+ {0, A_11},
+ {0, A_12},
+ {0, A_13},
+ {0, A_14},
+ {0, A_15},
+ {0, A_16},
+ {0, G_13},
+ {0, G_11},
+ {0, G_12},
+};
+#endif
diff --git a/keyboards/keychron/x3/ansi/red/rules.mk b/keyboards/keychron/x3/ansi/red/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/x3/ansi/red/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/x3/config.h b/keyboards/keychron/x3/config.h
new file mode 100755
index 000000000000..418de6724564
--- /dev/null
+++ b/keyboards/keychron/x3/config.h
@@ -0,0 +1,38 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* I2C Driver Configuration */
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Winlock indicator */
+#define LED_WIN_LOCK_PIN A3
+#define LED_PIN_ON_STATE 1
+
+/* User used eeprom */
+#define EECONFIG_USER_DATA_SIZE 1
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/x3/halconf.h b/keyboards/keychron/x3/halconf.h
new file mode 100755
index 000000000000..41bddcb2799b
--- /dev/null
+++ b/keyboards/keychron/x3/halconf.h
@@ -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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/keychron/x3/info.json b/keyboards/keychron/x3/info.json
new file mode 100755
index 000000000000..3d6e7a18011d
--- /dev/null
+++ b/keyboards/keychron/x3/info.json
@@ -0,0 +1,139 @@
+{
+ "keyboard_name": "Lemokey X3",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x362D"
+ },
+ "matrix_pins": {
+ "cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0", "A1", "A2", "B12", "B10", "B13", "B14"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "COL2ROW",
+ "indicators": {
+ "caps_lock": "A4",
+ "scroll_lock": "A5",
+ "num_lock": "A6"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "layouts": {
+ "LAYOUT_104_ansi": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,1], "x":2, "y":0},
+ {"matrix":[0,2], "x":3, "y":0},
+ {"matrix":[0,3], "x":4, "y":0},
+ {"matrix":[0,4], "x":5, "y":0},
+ {"matrix":[0,5], "x":6.5, "y":0},
+ {"matrix":[0,6], "x":7.5, "y":0},
+ {"matrix":[0,7], "x":8.5, "y":0},
+ {"matrix":[0,8], "x":9.5, "y":0},
+ {"matrix":[0,9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[1,19], "x":20.5, "y":1.25},
+ {"matrix":[1,20], "x":21.5, "y":1.25},
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[2,19], "x":20.5, "y":2.25},
+ {"matrix":[2,20], "x":21.5, "y":2.25, "h":2},
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,19], "x":20.5, "y":3.25},
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,19], "x":20.5, "y":4.25},
+ {"matrix":[4,20], "x":21.5, "y":4.25, "h":2},
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/x3/mcuconf.h b/keyboards/keychron/x3/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/x3/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/c2/readme.md b/keyboards/keychron/x3/readme.md
old mode 100644
new mode 100755
similarity index 54%
rename from keyboards/keychron/c2/readme.md
rename to keyboards/keychron/x3/readme.md
index cef903876e11..c61e790c41f5
--- a/keyboards/keychron/c2/readme.md
+++ b/keyboards/keychron/x3/readme.md
@@ -1,23 +1,26 @@
-# Keychron C2 Pro
+# Lemokey X3
-![Keychron C2 Pro](https://i.imgur.com/BQE1tFO.jpg)
+![Lemokey X3]()
-A customizable 100% keyboard.
+A customizable 80% TKL keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
-* Hardware Supported: Keychron C2 Pro
+* Hardware Supported: Lemokey X3
* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
- make keychron/c2/ansi/rgb:default
- make keychron/c2/ansi/white:default
+ make keychron/x1/ansi/red:default
Flashing example for this keyboard:
- make keychron/c2/ansi/rgb:default:flash
- make keychron/c2/ansi/white:default:flash
+ make keychron/x3/ansi/red:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
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).
diff --git a/keyboards/keychron/x3/via_json/x3_ansi_red.json b/keyboards/keychron/x3/via_json/x3_ansi_red.json
new file mode 100755
index 000000000000..31e044b399f0
--- /dev/null
+++ b/keyboards/keychron/x3/via_json/x3_ansi_red.json
@@ -0,0 +1,271 @@
+{
+ "name": "Lemokey X3 ANSI Red",
+ "vendorId": "0x362D",
+ "productId": "0x0230",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 21},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,17",
+ "1,18",
+ "1,19",
+ "1,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,17",
+ "2,18",
+ "2,19",
+ {
+ "h": 2
+ },
+ "2,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 3.5,
+ "c": "#cccccc"
+ },
+ "3,17",
+ "3,18",
+ "3,19"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,17",
+ "4,18",
+ "4,19",
+ {
+ "c": "#777777",
+ "h": 2
+ },
+ "4,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "5,17",
+ "5,18"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/x3/x3.c b/keyboards/keychron/x3/x3.c
new file mode 100755
index 000000000000..80edadabe0f4
--- /dev/null
+++ b/keyboards/keychron/x3/x3.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 "quantum.h"
+
+static uint8_t win_lock_state = 0;
+
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE)
+
+static void set_led_win_lock_state(void) {
+ if (win_lock_state) {
+ SET_LED_WIN_LOCK_ON;
+ } else {
+ SET_LED_WIN_LOCK_OFF;
+ }
+}
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ win_lock_state = 0;
+ eeconfig_update_user_datablock(&win_lock_state);
+
+ eeconfig_init_user();
+}
+
+void keyboard_post_init_kb(void) {
+ setPinOutputPushPull(LED_WIN_LOCK_PIN);
+ eeconfig_read_user_datablock(&win_lock_state);
+
+ keyboard_post_init_user();
+}
+
+void housekeeping_task_kb() {
+ set_led_win_lock_state();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+ case GU_TOGG:
+ if (record->event.pressed) {
+ win_lock_state = !win_lock_state;
+ eeconfig_update_user_datablock(&win_lock_state);
+ if (win_lock_state) {
+ writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE);
+ } else {
+ writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE);
+ }
+ }
+ return true;
+ default:
+ return true;
+ }
+}
+
+void suspend_power_down_kb(void) {
+ SET_LED_WIN_LOCK_OFF;
+
+ suspend_power_down_user();
+}
From c0294096b8a4b3c2ac9fc691b5d4232631a922a7 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Fri, 13 Oct 2023 13:19:23 +0800
Subject: [PATCH 03/27] Update keychron all keyboards
---
keyboards/keychron/q0/config.h | 51 +--
keyboards/keychron/q0/factory.c | 93 -----
keyboards/keychron/q0/halconf.h | 4 +-
keyboards/keychron/q0/info.json | 48 +++
keyboards/keychron/q0/readme.md | 9 +-
keyboards/keychron/q0/rev_0130/config.h | 3 +-
keyboards/keychron/q0/rev_0130/info.json | 99 ++---
.../q0/rev_0130/keymaps/default/keymap.c | 23 +-
.../q0/rev_0130/keymaps/keychron/keymap.c | 55 ++-
.../q0/rev_0130/keymaps/keychron/rules.mk | 5 +-
.../keychron/q0/rev_0130/keymaps/via/keymap.c | 55 +--
keyboards/keychron/q0/rev_0130/readme.md | 1 +
keyboards/keychron/q0/rev_0130/rev_0130.c | 39 +-
keyboards/keychron/q0/rev_0130/rules.mk | 11 +-
keyboards/keychron/q0/rev_0131/config.h | 9 +-
keyboards/keychron/q0/rev_0131/info.json | 115 +++---
.../q0/rev_0131/keymaps/default/keymap.c | 23 +-
.../q0/rev_0131/keymaps/keychron/keymap.c | 29 +-
.../q0/rev_0131/keymaps/keychron/rules.mk | 3 +-
.../keychron/q0/rev_0131/keymaps/via/keymap.c | 31 +-
keyboards/keychron/q0/rev_0131/readme.md | 16 +-
keyboards/keychron/q0/rev_0131/rev_0131.c | 39 +-
keyboards/keychron/q0/rev_0131/rules.mk | 11 +-
.../keychron/q1/ansi_atmega32u4/config.h | 34 --
.../keychron/q1/ansi_atmega32u4/info.json | 126 ------
.../ansi_atmega32u4/keymaps/keychron/rules.mk | 4 -
.../ansi_atmega32u4_encoder.c | 177 ---------
.../q1/ansi_atmega32u4_encoder/info.json | 131 -------
.../keymaps/keychron/rules.mk | 5 -
keyboards/keychron/q1/ansi_stm32l432/config.h | 51 ---
.../keychron/q1/ansi_stm32l432/info.json | 125 ------
.../ansi_stm32l432/keymaps/keychron/rules.mk | 3 -
keyboards/keychron/q1/ansi_stm32l432/rules.mk | 14 -
.../q1/ansi_stm32l432_encoder/info.json | 130 ------
.../keymaps/default/rules.mk | 1 -
.../keymaps/keychron/rules.mk | 4 -
.../keymaps/via/rules.mk | 1 -
.../q1/ansi_stm32l432_encoder/rules.mk | 14 -
keyboards/keychron/q1/config.h | 84 ----
keyboards/keychron/q1/iso_atmega32u4/config.h | 34 --
.../keychron/q1/iso_atmega32u4/info.json | 127 ------
.../iso_atmega32u4/keymaps/keychron/rules.mk | 4 -
.../q1/iso_atmega32u4_encoder/info.json | 132 -------
.../keymaps/default/rules.mk | 1 -
.../keymaps/keychron/rules.mk | 5 -
keyboards/keychron/q1/iso_stm32l432/config.h | 51 ---
keyboards/keychron/q1/iso_stm32l432/info.json | 126 ------
.../iso_stm32l432/keymaps/keychron/rules.mk | 3 -
keyboards/keychron/q1/iso_stm32l432/rules.mk | 14 -
.../q1/iso_stm32l432_encoder/config.h | 54 ---
.../q1/iso_stm32l432_encoder/info.json | 131 -------
.../keymaps/default/keymap.c | 72 ----
.../keymaps/default/rules.mk | 1 -
.../keymaps/keychron/keymap.c | 92 -----
.../keymaps/keychron/rules.mk | 4 -
.../keymaps/via/keymap.c | 72 ----
.../q1/iso_stm32l432_encoder/rules.mk | 14 -
keyboards/keychron/q1/jis_stm32l432/config.h | 50 ---
keyboards/keychron/q1/jis_stm32l432/info.json | 129 ------
.../jis_stm32l432/keymaps/keychron/rules.mk | 3 -
keyboards/keychron/q1/jis_stm32l432/rules.mk | 14 -
.../q1/jis_stm32l432_encoder/config.h | 54 ---
.../q1/jis_stm32l432_encoder/info.json | 134 -------
.../keymaps/default/rules.mk | 1 -
.../keymaps/keychron/rules.mk | 4 -
.../q1/jis_stm32l432_encoder/rules.mk | 14 -
keyboards/keychron/q1/readme.md | 39 --
.../keychron/q10/ansi_encoder/ansi_encoder.c | 14 +-
keyboards/keychron/q10/ansi_encoder/info.json | 198 +++++-----
.../q10/ansi_encoder/keymaps/default/keymap.c | 4 +-
.../ansi_encoder/keymaps/keychron/keymap.c | 9 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q10/ansi_encoder/keymaps/via/keymap.c | 4 +-
keyboards/keychron/q10/ansi_encoder/readme.md | 5 +
keyboards/keychron/q10/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/q10/config.h | 30 +-
keyboards/keychron/q10/halconf.h | 3 -
keyboards/keychron/q10/iso_encoder/info.json | 200 +++++-----
.../keychron/q10/iso_encoder/iso_encoder.c | 6 +-
.../q10/iso_encoder/keymaps/default/keymap.c | 4 +-
.../q10/iso_encoder/keymaps/keychron/keymap.c | 9 +-
.../q10/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../q10/iso_encoder/keymaps/via/keymap.c | 4 +-
keyboards/keychron/q10/iso_encoder/readme.md | 5 +
keyboards/keychron/q10/iso_encoder/rules.mk | 18 +-
keyboards/keychron/q10/matrix.c | 208 ++++++++++
keyboards/keychron/q10/q10.c | 51 ++-
keyboards/keychron/q10/readme.md | 6 +-
.../keychron/q11/ansi_encoder/ansi_encoder.c | 63 +--
keyboards/keychron/q11/ansi_encoder/config.h | 5 +-
keyboards/keychron/q11/ansi_encoder/info.json | 247 +++++-------
.../q11/ansi_encoder/keymaps/default/keymap.c | 16 +-
.../ansi_encoder/keymaps/keychron/keymap.c | 34 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q11/ansi_encoder/keymaps/via/keymap.c | 14 +-
keyboards/keychron/q11/ansi_encoder/rules.mk | 5 +-
keyboards/keychron/q11/config.h | 70 +---
keyboards/keychron/q11/factory.c | 130 ------
keyboards/keychron/q11/halconf.h | 3 -
keyboards/keychron/q11/info.json | 290 ++++++++++++++
keyboards/keychron/q11/iso_encoder/config.h | 3 +
keyboards/keychron/q11/iso_encoder/info.json | 249 +++++-------
.../keychron/q11/iso_encoder/iso_encoder.c | 54 ---
.../q11/iso_encoder/keymaps/default/keymap.c | 14 +-
.../q11/iso_encoder/keymaps/keychron/keymap.c | 22 +-
.../q11/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q11/iso_encoder/keymaps/via/keymap.c | 16 +-
keyboards/keychron/q11/iso_encoder/rules.mk | 7 +-
keyboards/keychron/q11/q11.c | 83 +++-
keyboards/keychron/q11/readme.md | 4 +-
.../keychron/q12/ansi_encoder/ansi_encoder.c | 216 +++++-----
keyboards/keychron/q12/ansi_encoder/config.h | 1 -
keyboards/keychron/q12/ansi_encoder/info.json | 224 +++++------
.../q12/ansi_encoder/keymaps/default/keymap.c | 4 +-
.../ansi_encoder/keymaps/keychron/keymap.c | 9 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q12/ansi_encoder/keymaps/via/keymap.c | 4 +-
keyboards/keychron/q12/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/q12/config.h | 31 +-
keyboards/keychron/q12/halconf.h | 4 +-
keyboards/keychron/q12/iso_encoder/config.h | 1 -
keyboards/keychron/q12/iso_encoder/info.json | 226 +++++------
.../q12/iso_encoder/keymaps/default/keymap.c | 4 +-
.../q12/iso_encoder/keymaps/keychron/keymap.c | 9 +-
.../q12/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../q12/iso_encoder/keymaps/via/keymap.c | 4 +-
keyboards/keychron/q12/iso_encoder/rules.mk | 17 +-
keyboards/keychron/q12/matrix.c | 208 ++++++++++
keyboards/keychron/q12/q12.c | 54 +++
keyboards/keychron/q12/readme.md | 10 +-
.../ansi/ansi.c} | 68 +---
keyboards/keychron/q1v1/ansi/config.h | 24 ++
keyboards/keychron/q1v1/ansi/info.json | 190 +++++++++
.../ansi/keymaps/default}/keymap.c | 3 +-
.../ansi}/keymaps/keychron/keymap.c | 61 ++-
.../q1v1/ansi/keymaps/keychron/rules.mk | 3 +
.../ansi/keymaps/via}/keymap.c | 9 +-
.../ansi}/keymaps/via/rules.mk | 0
.../ansi_atmega32u4 => q1v1/ansi}/rules.mk | 0
.../ansi_encoder/ansi_encoder.c} | 47 +--
keyboards/keychron/q1v1/ansi_encoder/config.h | 28 ++
.../keychron/q1v1/ansi_encoder/info.json | 198 ++++++++++
.../ansi_encoder}/keymaps/default/keymap.c | 72 ++--
.../ansi_encoder/keymaps/default/rules.mk | 1 +
.../ansi_encoder}/keymaps/keychron/keymap.c | 73 ++--
.../ansi_encoder/keymaps/keychron/rules.mk | 4 +
.../ansi_encoder}/keymaps/via/keymap.c | 72 ++--
.../ansi_encoder}/keymaps/via/rules.mk | 0
.../ansi_encoder}/rules.mk | 0
.../ansi_atmega32u4_encoder => q1v1}/config.h | 31 +-
keyboards/keychron/q1v1/info.json | 54 +++
.../keymaps/via => q1v1/iso}/config.h | 10 +-
keyboards/keychron/q1v1/iso/info.json | 192 +++++++++
keyboards/keychron/q1v1/iso/iso.c | 116 ++++++
.../via => q1v1/iso/keymaps/default}/keymap.c | 59 ++-
.../q1v1/iso/keymaps/keychron/keymap.c | 76 ++++
.../q1v1/iso/keymaps/keychron/rules.mk | 3 +
.../default => q1v1/iso/keymaps/via}/keymap.c | 57 ++-
.../iso}/keymaps/via/rules.mk | 0
.../{q1/iso_atmega32u4 => q1v1/iso}/rules.mk | 0
keyboards/keychron/q1v1/iso_encoder/config.h | 28 ++
keyboards/keychron/q1v1/iso_encoder/info.json | 200 ++++++++++
.../iso_encoder/iso_encoder.c} | 48 +--
.../iso_encoder/keymaps/default}/keymap.c | 28 +-
.../q1v1/iso_encoder/keymaps/default/rules.mk | 1 +
.../iso_encoder}/keymaps/keychron/keymap.c | 31 +-
.../iso_encoder/keymaps/keychron/rules.mk | 4 +
.../iso_encoder/keymaps/via}/keymap.c | 30 +-
.../q1v1/iso_encoder/keymaps/via/rules.mk | 2 +
.../iso_encoder}/rules.mk | 0
.../{v6/jis_encoder/config.h => q1v1/q1v1.c} | 34 +-
keyboards/keychron/q1v1/readme.md | 32 ++
.../ansi_stm32l432.c => q1v2/ansi/ansi.c} | 43 +-
.../keymaps/keychron => q1v2/ansi}/config.h | 8 +-
keyboards/keychron/q1v2/ansi/info.json | 190 +++++++++
.../ansi}/keymaps/default/keymap.c | 9 +-
.../ansi}/keymaps/keychron/keymap.c | 13 +-
.../q1v2/ansi/keymaps/keychron/rules.mk | 3 +
.../ansi}/keymaps/via/keymap.c | 9 +-
.../ansi}/keymaps/via/rules.mk | 0
keyboards/keychron/q1v2/ansi/rules.mk | 1 +
.../ansi_encoder/ansi_encoder.c} | 43 +-
keyboards/keychron/q1v2/ansi_encoder/config.h | 28 ++
.../keychron/q1v2/ansi_encoder/info.json | 199 ++++++++++
.../ansi_encoder}/keymaps/default/keymap.c | 11 +-
.../ansi_encoder/keymaps/default/rules.mk | 1 +
.../ansi_encoder}/keymaps/keychron/keymap.c | 15 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 9 +
.../ansi_encoder}/keymaps/via/keymap.c | 14 +-
.../ansi_encoder}/keymaps/via/rules.mk | 0
keyboards/keychron/q1v2/ansi_encoder/rules.mk | 1 +
.../ansi_stm32l432_encoder => q1v2}/config.h | 45 ++-
keyboards/keychron/{q1 => q1v2}/halconf.h | 0
keyboards/keychron/q1v2/info.json | 58 +++
.../keymaps/via => q1v2/iso}/config.h | 8 +-
keyboards/keychron/q1v2/iso/info.json | 192 +++++++++
.../iso/iso.c} | 43 +-
.../via => q1v2/iso/keymaps/default}/keymap.c | 7 +-
.../iso}/keymaps/keychron/keymap.c | 9 +-
.../q1v2/iso/keymaps/keychron/rules.mk | 3 +
.../default => q1v2/iso/keymaps/via}/keymap.c | 7 +-
.../iso}/keymaps/via/rules.mk | 0
keyboards/keychron/q1v2/iso/rules.mk | 1 +
keyboards/keychron/q1v2/iso_encoder/config.h | 28 ++
keyboards/keychron/q1v2/iso_encoder/info.json | 200 ++++++++++
.../iso_encoder/iso_encoder.c} | 43 +-
.../q1v2/iso_encoder/keymaps/default/keymap.c | 71 ++++
.../q1v2/iso_encoder/keymaps/default/rules.mk | 1 +
.../iso_encoder}/keymaps/keychron/keymap.c | 30 +-
.../iso_encoder/keymaps/keychron/rules.mk | 4 +
.../q1v2/iso_encoder/keymaps/via/keymap.c | 71 ++++
.../iso_encoder}/keymaps/via/rules.mk | 0
keyboards/keychron/q1v2/iso_encoder/rules.mk | 1 +
.../ansi/keymaps/via => q1v2/jis}/config.h | 10 +-
keyboards/keychron/q1v2/jis/info.json | 198 ++++++++++
.../jis_stm32l432.c => q1v2/jis/jis.c} | 43 +-
.../jis}/keymaps/default/keymap.c | 17 +-
.../jis}/keymaps/keychron/keymap.c | 21 +-
.../q1v2/jis/keymaps/keychron/rules.mk | 3 +
.../jis}/keymaps/via/keymap.c | 17 +-
.../jis}/keymaps/via/rules.mk | 0
keyboards/keychron/q1v2/jis/rules.mk | 1 +
keyboards/keychron/q1v2/jis_encoder/config.h | 28 ++
keyboards/keychron/q1v2/jis_encoder/info.json | 206 ++++++++++
.../jis_encoder/jis_encoder.c} | 43 +-
.../jis_encoder}/keymaps/default/keymap.c | 19 +-
.../q1v2/jis_encoder/keymaps/default/rules.mk | 1 +
.../jis_encoder}/keymaps/keychron/keymap.c | 25 +-
.../jis_encoder/keymaps/keychron/rules.mk | 4 +
.../jis_encoder}/keymaps/via/keymap.c | 19 +-
.../jis_encoder}/keymaps/via/rules.mk | 0
keyboards/keychron/q1v2/jis_encoder/rules.mk | 1 +
keyboards/keychron/{q1 => q1v2}/mcuconf.h | 0
keyboards/keychron/{q1/q1.c => q1v2/q1v2.c} | 11 +-
keyboards/keychron/q1v2/readme.md | 36 ++
keyboards/keychron/q1v2/rules.mk | 2 +
keyboards/keychron/q2/ansi/ansi.c | 37 +-
keyboards/keychron/q2/ansi/config.h | 6 +-
keyboards/keychron/q2/ansi/info.json | 237 ++++++-----
.../keychron/q2/ansi/keymaps/default/keymap.c | 69 ++--
.../q2/ansi/keymaps/keychron/keymap.c | 73 ++--
.../q2/ansi/keymaps/keychron/rules.mk | 3 +-
.../keychron/q2/ansi/keymaps/via/keymap.c | 69 ++--
keyboards/keychron/q2/ansi/readme.md | 1 +
keyboards/keychron/q2/ansi/rules.mk | 9 +-
.../keychron/q2/ansi_encoder/ansi_encoder.c | 37 +-
keyboards/keychron/q2/ansi_encoder/config.h | 14 +-
keyboards/keychron/q2/ansi_encoder/info.json | 236 ++++++-----
.../q2/ansi_encoder/keymaps/default/keymap.c | 83 ++--
.../q2/ansi_encoder/keymaps/default/rules.mk | 2 +-
.../q2/ansi_encoder/keymaps/keychron/keymap.c | 87 ++---
.../q2/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q2/ansi_encoder/keymaps/via/keymap.c | 83 ++--
.../q2/ansi_encoder/keymaps/via/rules.mk | 2 +-
keyboards/keychron/q2/ansi_encoder/readme.md | 5 +
keyboards/keychron/q2/ansi_encoder/rules.mk | 9 +-
keyboards/keychron/q2/config.h | 49 +--
keyboards/keychron/q2/info.json | 55 +++
keyboards/keychron/q2/iso/config.h | 6 +-
keyboards/keychron/q2/iso/info.json | 240 +++++++-----
keyboards/keychron/q2/iso/iso.c | 37 +-
.../keychron/q2/iso/keymaps/default/keymap.c | 69 ++--
.../keychron/q2/iso/keymaps/keychron/config.h | 17 -
.../keychron/q2/iso/keymaps/keychron/keymap.c | 71 ++--
.../keychron/q2/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/q2/iso/keymaps/via/config.h | 17 -
.../keychron/q2/iso/keymaps/via/keymap.c | 69 ++--
keyboards/keychron/q2/iso/readme.md | 1 +
keyboards/keychron/q2/iso/rules.mk | 9 +-
keyboards/keychron/q2/iso_encoder/config.h | 14 +-
keyboards/keychron/q2/iso_encoder/info.json | 239 +++++++-----
.../keychron/q2/iso_encoder/iso_encoder.c | 37 +-
.../q2/iso_encoder/keymaps/default/keymap.c | 83 ++--
.../q2/iso_encoder/keymaps/default/rules.mk | 2 +-
.../q2/iso_encoder/keymaps/keychron/config.h | 17 -
.../q2/iso_encoder/keymaps/keychron/keymap.c | 81 ++--
.../q2/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../q2/iso_encoder/keymaps/via/config.h | 17 -
.../q2/iso_encoder/keymaps/via/keymap.c | 81 ++--
keyboards/keychron/q2/iso_encoder/readme.md | 5 +
keyboards/keychron/q2/iso_encoder/rules.mk | 9 +-
keyboards/keychron/q2/jis/config.h | 6 +-
keyboards/keychron/q2/jis/info.json | 249 +++++++-----
keyboards/keychron/q2/jis/jis.c | 35 +-
.../keychron/q2/jis/keymaps/default/keymap.c | 23 +-
.../keychron/q2/jis/keymaps/keychron/config.h | 17 -
.../keychron/q2/jis/keymaps/keychron/keymap.c | 27 +-
.../keychron/q2/jis/keymaps/keychron/rules.mk | 3 +-
.../keychron/q2/jis/keymaps/via/config.h | 17 -
.../keychron/q2/jis/keymaps/via/keymap.c | 23 +-
keyboards/keychron/q2/jis/rules.mk | 9 +-
keyboards/keychron/q2/jis_encoder/config.h | 14 +-
keyboards/keychron/q2/jis_encoder/info.json | 250 +++++++-----
.../keychron/q2/jis_encoder/jis_encoder.c | 35 +-
.../q2/jis_encoder/keymaps/default/keymap.c | 31 +-
.../jis_encoder}/keymaps/default/rules.mk | 0
.../q2/jis_encoder/keymaps/keychron/config.h | 17 -
.../q2/jis_encoder/keymaps/keychron/keymap.c | 43 +-
.../q2/jis_encoder/keymaps/keychron/rules.mk | 4 +-
.../q2/jis_encoder/keymaps/via/config.h | 17 -
.../q2/jis_encoder/keymaps/via/keymap.c | 33 +-
.../q2/jis_encoder/keymaps/via/rules.mk | 1 +
keyboards/keychron/q2/jis_encoder/rules.mk | 9 +-
keyboards/keychron/q2/q2.c | 14 +-
keyboards/keychron/q2/readme.md | 11 +-
keyboards/keychron/q3/ansi/ansi.c | 38 +-
keyboards/keychron/q3/ansi/config.h | 7 +-
keyboards/keychron/q3/ansi/info.json | 294 ++++++++------
.../keychron/q3/ansi/keymaps/default/keymap.c | 9 +-
.../q3/ansi/keymaps/keychron/keymap.c | 11 +-
.../q3/ansi/keymaps/keychron/rules.mk | 3 +-
.../keychron/q3/ansi/keymaps/via/keymap.c | 7 +-
keyboards/keychron/q3/ansi/readme.md | 1 +
keyboards/keychron/q3/ansi/rules.mk | 9 +-
.../keychron/q3/ansi_encoder/ansi_encoder.c | 41 +-
keyboards/keychron/q3/ansi_encoder/config.h | 22 +-
keyboards/keychron/q3/ansi_encoder/info.json | 305 +++++++++------
.../q3/ansi_encoder/keymaps/default/keymap.c | 19 +-
.../q3/ansi_encoder/keymaps/keychron/keymap.c | 58 ++-
.../q3/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q3/ansi_encoder/keymaps/via/keymap.c | 15 +-
keyboards/keychron/q3/ansi_encoder/readme.md | 5 +
keyboards/keychron/q3/ansi_encoder/rules.mk | 14 +-
keyboards/keychron/q3/config.h | 59 +--
keyboards/keychron/q3/info.json | 48 +++
keyboards/keychron/q3/iso/config.h | 7 +-
keyboards/keychron/q3/iso/info.json | 297 ++++++++------
keyboards/keychron/q3/iso/iso.c | 38 +-
.../keychron/q3/iso/keymaps/default/keymap.c | 39 +-
.../keychron/q3/iso/keymaps/keychron/keymap.c | 6 +-
.../keychron/q3/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/q3/iso/keymaps/via/keymap.c | 39 +-
keyboards/keychron/q3/iso/readme.md | 1 +
keyboards/keychron/q3/iso/rules.mk | 9 +-
keyboards/keychron/q3/iso_encoder/config.h | 22 +-
keyboards/keychron/q3/iso_encoder/info.json | 308 +++++++++------
.../keychron/q3/iso_encoder/iso_encoder.c | 38 +-
.../q3/iso_encoder/keymaps/default/keymap.c | 20 +-
.../q3/iso_encoder/keymaps/keychron/keymap.c | 62 ++-
.../q3/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q3/iso_encoder/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q3/iso_encoder/readme.md | 5 +
keyboards/keychron/q3/iso_encoder/rules.mk | 14 +-
keyboards/keychron/q3/jis/config.h | 7 +-
keyboards/keychron/q3/jis/info.json | 306 +++++++++------
keyboards/keychron/q3/jis/jis.c | 226 +++++------
.../keychron/q3/jis/keymaps/default/keymap.c | 10 +-
.../keychron/q3/jis/keymaps/keychron/keymap.c | 8 +-
.../keychron/q3/jis/keymaps/keychron/rules.mk | 3 +-
.../keychron/q3/jis/keymaps/via/keymap.c | 8 +-
keyboards/keychron/q3/jis/readme.md | 1 +
keyboards/keychron/q3/jis/rules.mk | 9 +-
keyboards/keychron/q3/jis_encoder/config.h | 19 +-
keyboards/keychron/q3/jis_encoder/info.json | 318 +++++++++------
.../keychron/q3/jis_encoder/jis_encoder.c | 228 +++++------
.../q3/jis_encoder/keymaps/default/keymap.c | 16 +-
.../q3/jis_encoder/keymaps/keychron/keymap.c | 60 ++-
.../q3/jis_encoder/keymaps/keychron/rules.mk | 2 +-
.../q3/jis_encoder/keymaps/via/keymap.c | 16 +-
keyboards/keychron/q3/jis_encoder/readme.md | 5 +
keyboards/keychron/q3/jis_encoder/rules.mk | 14 +-
keyboards/keychron/q3/q3.c | 4 +-
keyboards/keychron/q3/readme.md | 9 +-
.../keymaps/keychron => q4/ansi}/config.h | 5 +-
keyboards/keychron/q4/ansi/info.json | 147 +++++++
.../via => ansi/keymaps/default}/keymap.c | 21 +-
.../keymaps/keychron/keymap.c | 25 +-
.../q4/ansi/keymaps/keychron/rules.mk | 3 +
.../default => ansi/keymaps/via}/keymap.c | 20 +-
.../keychron/q4/ansi/keymaps/via/rules.mk | 1 +
keyboards/keychron/q4/ansi/readme.md | 1 +
.../keychron/q4/{ansi_v1 => ansi/v1}/config.h | 7 +-
keyboards/keychron/q4/ansi/v1/rules.mk | 1 +
.../q4/{ansi_v1/ansi_v1.c => ansi/v1/v1.c} | 33 +-
.../keychron/q4/{ansi_v2 => ansi/v2}/config.h | 7 +-
keyboards/keychron/q4/ansi/v2/rules.mk | 1 +
.../q4/{ansi_v2/ansi_v2.c => ansi/v2/v2.c} | 33 +-
keyboards/keychron/q4/ansi_v1/info.json | 103 -----
.../q4/ansi_v1/keymaps/keychron/keymap.c | 85 ----
.../q4/ansi_v1/keymaps/keychron/rules.mk | 4 -
keyboards/keychron/q4/ansi_v1/rules.mk | 8 -
keyboards/keychron/q4/ansi_v2/info.json | 103 -----
.../q4/ansi_v2/keymaps/default/keymap.c | 67 ----
.../q4/ansi_v2/keymaps/keychron/rules.mk | 4 -
.../keychron/q4/ansi_v2/keymaps/via/keymap.c | 67 ----
keyboards/keychron/q4/ansi_v2/rules.mk | 8 -
keyboards/keychron/q4/config.h | 63 +--
keyboards/keychron/q4/info.json | 55 +++
keyboards/keychron/q4/iso/config.h | 6 +-
keyboards/keychron/q4/iso/info.json | 222 ++++++-----
keyboards/keychron/q4/iso/iso.c | 33 +-
.../keychron/q4/iso/keymaps/default/keymap.c | 21 +-
.../keychron/q4/iso/keymaps/keychron/keymap.c | 25 +-
.../keychron/q4/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/q4/iso/keymaps/via/keymap.c | 21 +-
.../keychron/q4/iso/keymaps/via/rules.mk | 2 +-
keyboards/keychron/q4/iso/readme.md | 1 +
keyboards/keychron/q4/iso/rules.mk | 9 +-
keyboards/keychron/q4/q4.c | 4 +-
keyboards/keychron/q4/readme.md | 14 +-
keyboards/keychron/q5/ansi/ansi.c | 44 +--
keyboards/keychron/q5/ansi/config.h | 6 +-
keyboards/keychron/q5/ansi/info.json | 337 ++++++++++------
.../keychron/q5/ansi/keymaps/default/keymap.c | 45 ++-
.../q5/ansi/keymaps/keychron/keymap.c | 51 ++-
.../q5/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q5/ansi/keymaps/via/keymap.c | 45 ++-
keyboards/keychron/q5/ansi/readme.md | 1 +
keyboards/keychron/q5/ansi/rules.mk | 15 +-
.../keychron/q5/ansi_encoder/ansi_encoder.c | 44 +--
keyboards/keychron/q5/ansi_encoder/config.h | 12 +-
keyboards/keychron/q5/ansi_encoder/info.json | 330 ++++++++++------
.../q5/ansi_encoder/keymaps/default/keymap.c | 57 ++-
.../q5/ansi_encoder/keymaps/keychron/keymap.c | 71 ++--
.../q5/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q5/ansi_encoder/keymaps/via/keymap.c | 57 ++-
keyboards/keychron/q5/ansi_encoder/readme.md | 5 +
keyboards/keychron/q5/ansi_encoder/rules.mk | 15 +-
keyboards/keychron/q5/config.h | 68 +---
keyboards/keychron/q5/info.json | 53 +++
keyboards/keychron/q5/iso/config.h | 6 +-
keyboards/keychron/q5/iso/info.json | 340 ++++++++++------
keyboards/keychron/q5/iso/iso.c | 44 +--
.../keychron/q5/iso/keymaps/default/keymap.c | 44 +--
.../keychron/q5/iso/keymaps/keychron/keymap.c | 51 ++-
.../keychron/q5/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q5/iso/keymaps/via/keymap.c | 44 +--
keyboards/keychron/q5/iso/readme.md | 1 +
keyboards/keychron/q5/iso/rules.mk | 15 +-
keyboards/keychron/q5/iso_encoder/config.h | 12 +-
keyboards/keychron/q5/iso_encoder/info.json | 333 ++++++++++------
.../keychron/q5/iso_encoder/iso_encoder.c | 44 +--
.../q5/iso_encoder/keymaps/default/keymap.c | 57 ++-
.../q5/iso_encoder/keymaps/keychron/keymap.c | 56 ++-
.../q5/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q5/iso_encoder/keymaps/via/keymap.c | 73 ++--
keyboards/keychron/q5/iso_encoder/readme.md | 5 +
keyboards/keychron/q5/iso_encoder/rules.mk | 15 +-
keyboards/keychron/q5/q5.c | 4 +-
keyboards/keychron/q5/readme.md | 23 +-
keyboards/keychron/q5/rules.mk | 2 +
keyboards/keychron/q6/ansi/ansi.c | 43 +-
keyboards/keychron/q6/ansi/config.h | 11 +-
keyboards/keychron/q6/ansi/info.json | 361 ++++++++++-------
.../keychron/q6/ansi/keymaps/default/keymap.c | 37 +-
.../q6/ansi/keymaps/keychron/keymap.c | 43 +-
.../q6/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q6/ansi/keymaps/via/keymap.c | 45 ++-
keyboards/keychron/q6/ansi/readme.md | 1 +
keyboards/keychron/q6/ansi/rules.mk | 15 +-
.../keychron/q6/ansi_encoder/ansi_encoder.c | 43 +-
keyboards/keychron/q6/ansi_encoder/config.h | 11 +-
keyboards/keychron/q6/ansi_encoder/info.json | 232 +++++++----
.../q6/ansi_encoder/keymaps/default/keymap.c | 41 +-
.../q6/ansi_encoder/keymaps/keychron/keymap.c | 49 ++-
.../q6/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q6/ansi_encoder/keymaps/via/keymap.c | 57 ++-
.../q6/ansi_encoder/keymaps/via/rules.mk | 2 +-
keyboards/keychron/q6/ansi_encoder/readme.md | 5 +
keyboards/keychron/q6/ansi_encoder/rules.mk | 15 +-
keyboards/keychron/q6/config.h | 66 +---
keyboards/keychron/q6/info.json | 47 +++
keyboards/keychron/q6/iso/config.h | 11 +-
keyboards/keychron/q6/iso/info.json | 225 ++++++++---
keyboards/keychron/q6/iso/iso.c | 43 +-
.../keychron/q6/iso/keymaps/default/keymap.c | 37 +-
.../keychron/q6/iso/keymaps/keychron/keymap.c | 43 +-
.../keychron/q6/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q6/iso/keymaps/via/keymap.c | 45 ++-
keyboards/keychron/q6/iso/readme.md | 1 +
keyboards/keychron/q6/iso/rules.mk | 15 +-
keyboards/keychron/q6/iso_encoder/config.h | 11 +-
keyboards/keychron/q6/iso_encoder/info.json | 369 +++++++++++-------
.../keychron/q6/iso_encoder/iso_encoder.c | 43 +-
.../q6/iso_encoder/keymaps/default/keymap.c | 47 ++-
.../q6/iso_encoder/keymaps/keychron/keymap.c | 69 ++--
.../q6/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q6/iso_encoder/keymaps/via/keymap.c | 63 ++-
keyboards/keychron/q6/iso_encoder/readme.md | 5 +
keyboards/keychron/q6/iso_encoder/rules.mk | 15 +-
keyboards/keychron/q6/q6.c | 4 +-
keyboards/keychron/q6/readme.md | 15 +-
keyboards/keychron/q6/rules.mk | 2 +
keyboards/keychron/q60/ansi/ansi.c | 4 +-
keyboards/keychron/q60/ansi/config.h | 3 +-
keyboards/keychron/q60/ansi/info.json | 135 +++----
.../q60/ansi/keymaps/default/keymap.c | 32 +-
.../q60/ansi/keymaps/keychron/config.h | 17 -
.../q60/ansi/keymaps/keychron/keymap.c | 17 +-
.../q60/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q60/ansi/keymaps/via/config.h | 17 -
.../keychron/q60/ansi/keymaps/via/keymap.c | 6 +-
keyboards/keychron/q60/ansi/rules.mk | 13 +-
keyboards/keychron/q60/config.h | 18 +-
keyboards/keychron/q60/q60.c | 4 +-
keyboards/keychron/q60/readme.md | 4 +-
.../keychron/q65/ansi_encoder/ansi_encoder.c | 12 +-
keyboards/keychron/q65/ansi_encoder/info.json | 166 ++++----
.../q65/ansi_encoder/keymaps/default/keymap.c | 26 +-
.../ansi_encoder/keymaps/keychron/config.h | 17 -
.../ansi_encoder/keymaps/keychron/keymap.c | 38 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../q65/ansi_encoder/keymaps/via/config.h | 17 -
.../q65/ansi_encoder/keymaps/via/keymap.c | 24 +-
keyboards/keychron/q65/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/q65/config.h | 32 +-
keyboards/keychron/q65/halconf.h | 3 -
keyboards/keychron/q65/matrix.c | 231 +++++++++++
keyboards/keychron/q65/q65.c | 47 +++
keyboards/keychron/q65/readme.md | 4 +-
keyboards/keychron/q7/ansi/ansi.c | 8 +-
keyboards/keychron/q7/ansi/config.h | 2 +-
keyboards/keychron/q7/ansi/info.json | 159 ++++----
.../keychron/q7/ansi/keymaps/default/keymap.c | 20 +-
.../q7/ansi/keymaps/keychron/config.h | 17 -
.../q7/ansi/keymaps/keychron/keymap.c | 29 +-
.../q7/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q7/ansi/keymaps/via/config.h | 17 -
.../keychron/q7/ansi/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q7/ansi/rules.mk | 15 +-
keyboards/keychron/q7/config.h | 16 +-
keyboards/keychron/q7/iso/config.h | 2 +-
keyboards/keychron/q7/iso/info.json | 161 ++++----
keyboards/keychron/q7/iso/iso.c | 6 +-
.../keychron/q7/iso/keymaps/default/keymap.c | 20 +-
.../keychron/q7/iso/keymaps/keychron/config.h | 17 -
.../keychron/q7/iso/keymaps/keychron/keymap.c | 29 +-
.../keychron/q7/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q7/iso/keymaps/via/config.h | 17 -
.../keychron/q7/iso/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q7/iso/rules.mk | 15 +-
keyboards/keychron/q7/q7.c | 48 ++-
keyboards/keychron/q7/readme.md | 6 +-
keyboards/keychron/q8/ansi/ansi.c | 8 +-
keyboards/keychron/q8/ansi/config.h | 2 +-
keyboards/keychron/q8/ansi/info.json | 153 ++++----
.../keychron/q8/ansi/keymaps/default/keymap.c | 20 +-
.../q8/ansi/keymaps/keychron/config.h | 17 -
.../q8/ansi/keymaps/keychron/keymap.c | 25 +-
.../q8/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q8/ansi/keymaps/via/config.h | 17 -
.../keychron/q8/ansi/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q8/ansi/readme.md | 1 +
keyboards/keychron/q8/ansi/rules.mk | 15 +-
.../keychron/q8/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/q8/ansi_encoder/info.json | 153 ++++----
.../q8/ansi_encoder/keymaps/default/keymap.c | 28 +-
.../q8/ansi_encoder/keymaps/keychron/config.h | 17 -
.../q8/ansi_encoder/keymaps/keychron/keymap.c | 33 +-
.../q8/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q8/ansi_encoder/keymaps/via/config.h | 17 -
.../q8/ansi_encoder/keymaps/via/keymap.c | 28 +-
keyboards/keychron/q8/ansi_encoder/readme.md | 5 +
keyboards/keychron/q8/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/q8/config.h | 16 +-
keyboards/keychron/q8/halconf.h | 3 -
keyboards/keychron/q8/iso/config.h | 2 +-
keyboards/keychron/q8/iso/info.json | 155 ++++----
keyboards/keychron/q8/iso/iso.c | 8 +-
.../keychron/q8/iso/keymaps/default/keymap.c | 20 +-
.../keychron/q8/iso/keymaps/keychron/config.h | 17 -
.../keychron/q8/iso/keymaps/keychron/keymap.c | 25 +-
.../keychron/q8/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q8/iso/keymaps/via/config.h | 17 -
.../keychron/q8/iso/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q8/iso/readme.md | 1 +
keyboards/keychron/q8/iso/rules.mk | 15 +-
keyboards/keychron/q8/iso_encoder/config.h | 2 +-
keyboards/keychron/q8/iso_encoder/info.json | 155 ++++----
.../keychron/q8/iso_encoder/iso_encoder.c | 8 +-
.../q8/iso_encoder/keymaps/default/keymap.c | 28 +-
.../q8/iso_encoder/keymaps/keychron/config.h | 17 -
.../q8/iso_encoder/keymaps/keychron/keymap.c | 35 +-
.../q8/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q8/iso_encoder/keymaps/via/config.h | 17 -
.../q8/iso_encoder/keymaps/via/keymap.c | 30 +-
keyboards/keychron/q8/iso_encoder/readme.md | 5 +
keyboards/keychron/q8/iso_encoder/rules.mk | 16 +-
keyboards/keychron/q8/q8.c | 51 ++-
keyboards/keychron/q8/readme.md | 10 +-
keyboards/keychron/q9/ansi/ansi.c | 8 +-
keyboards/keychron/q9/ansi/config.h | 2 +-
keyboards/keychron/q9/ansi/info.json | 119 +++---
.../keychron/q9/ansi/keymaps/default/keymap.c | 20 +-
.../q9/ansi/keymaps/keychron/config.h | 17 -
.../q9/ansi/keymaps/keychron/keymap.c | 29 +-
.../q9/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/q9/ansi/keymaps/via/config.h | 17 -
.../keychron/q9/ansi/keymaps/via/keymap.c | 20 +-
keyboards/keychron/q9/ansi/readme.md | 1 +
keyboards/keychron/q9/ansi/rules.mk | 15 +-
.../keychron/q9/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/q9/ansi_encoder/config.h | 2 +-
keyboards/keychron/q9/ansi_encoder/info.json | 119 +++---
.../q9/ansi_encoder/keymaps/default/keymap.c | 30 +-
.../q9/ansi_encoder/keymaps/keychron/config.h | 17 -
.../q9/ansi_encoder/keymaps/keychron/keymap.c | 35 +-
.../q9/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q9/ansi_encoder/keymaps/via/config.h | 17 -
.../q9/ansi_encoder/keymaps/via/keymap.c | 30 +-
keyboards/keychron/q9/ansi_encoder/readme.md | 5 +
keyboards/keychron/q9/ansi_encoder/rules.mk | 17 +-
keyboards/keychron/q9/config.h | 14 +-
keyboards/keychron/q9/halconf.h | 3 -
keyboards/keychron/q9/iso/config.h | 2 +-
keyboards/keychron/q9/iso/info.json | 121 +++---
keyboards/keychron/q9/iso/iso.c | 12 +-
.../keychron/q9/iso/keymaps/default/keymap.c | 16 +-
.../keychron/q9/iso/keymaps/keychron/config.h | 17 -
.../keychron/q9/iso/keymaps/keychron/keymap.c | 27 +-
.../keychron/q9/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/q9/iso/keymaps/via/config.h | 17 -
.../keychron/q9/iso/keymaps/via/keymap.c | 16 +-
keyboards/keychron/q9/iso/readme.md | 1 +
keyboards/keychron/q9/iso/rules.mk | 15 +-
keyboards/keychron/q9/iso_encoder/config.h | 2 +-
keyboards/keychron/q9/iso_encoder/info.json | 121 +++---
.../keychron/q9/iso_encoder/iso_encoder.c | 14 +-
.../q9/iso_encoder/keymaps/default/keymap.c | 30 +-
.../q9/iso_encoder/keymaps/keychron/config.h | 17 -
.../q9/iso_encoder/keymaps/keychron/keymap.c | 35 +-
.../q9/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../q9/iso_encoder/keymaps/via/config.h | 17 -
.../q9/iso_encoder/keymaps/via/keymap.c | 28 +-
keyboards/keychron/q9/iso_encoder/readme.md | 5 +
keyboards/keychron/q9/iso_encoder/rules.mk | 17 +-
keyboards/keychron/q9/q9.c | 48 ++-
keyboards/keychron/q9/readme.md | 12 +-
.../q9_plus/ansi_encoder/ansi_encoder.c | 29 +-
.../keychron/q9_plus/ansi_encoder/config.h | 3 +-
.../keychron/q9_plus/ansi_encoder/info.json | 144 +++----
.../ansi_encoder/keymaps/default/keymap.c | 21 +-
.../ansi_encoder/keymaps/default/rules.mk | 1 +
.../ansi_encoder/keymaps/keychron/keymap.c | 28 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../q9_plus/ansi_encoder/keymaps/via/keymap.c | 21 +-
.../q9_plus/ansi_encoder/keymaps/via/rules.mk | 0
.../keychron/q9_plus/ansi_encoder/rules.mk | 8 -
keyboards/keychron/q9_plus/config.h | 54 +--
keyboards/keychron/q9_plus/halconf.h | 3 -
keyboards/keychron/q9_plus/info.json | 124 ++++++
keyboards/keychron/q9_plus/mcuconf.h | 0
keyboards/keychron/q9_plus/q9_plus.c | 49 ++-
keyboards/keychron/q9_plus/readme.md | 10 +-
keyboards/keychron/s1/ansi/rgb/config.h | 8 +-
keyboards/keychron/s1/ansi/rgb/info.json | 187 +++++----
.../s1/ansi/rgb/keymaps/default/keymap.c | 2 +-
.../s1/ansi/rgb/keymaps/keychron/keymap.c | 13 +-
.../s1/ansi/rgb/keymaps/keychron/rules.mk | 2 +-
.../keychron/s1/ansi/rgb/keymaps/via/keymap.c | 2 +-
keyboards/keychron/s1/ansi/rgb/rgb.c | 10 +-
keyboards/keychron/s1/ansi/rgb/rules.mk | 15 +-
keyboards/keychron/s1/ansi/white/config.h | 36 +-
keyboards/keychron/s1/ansi/white/info.json | 189 +++++----
.../s1/ansi/white/keymaps/default/keymap.c | 2 +-
.../s1/ansi/white/keymaps/keychron/keymap.c | 11 -
.../s1/ansi/white/keymaps/keychron/rules.mk | 2 +-
.../s1/ansi/white/keymaps/via/keymap.c | 2 +-
keyboards/keychron/s1/ansi/white/rules.mk | 15 +-
keyboards/keychron/s1/ansi/white/white.c | 11 +-
keyboards/keychron/s1/config.h | 7 +-
keyboards/keychron/s1/readme.md | 30 +-
keyboards/keychron/s1/s1.c | 96 ++++-
.../config.h | 34 +-
.../{q0/q0.c => switch_pad/halconf.h} | 8 +-
keyboards/keychron/switch_pad/info.json | 263 +++++++++++++
.../switch_pad/keymaps/default/keymap.c | 76 ++++
.../switch_pad/keymaps/keychron/keymap.c | 99 +++++
.../switch_pad/keymaps/keychron/rules.mk | 3 +
.../keychron/switch_pad/keymaps/via/keymap.c | 76 ++++
.../keymaps/via/rules.mk | 0
.../config.h => switch_pad/mcuconf.h} | 9 +-
keyboards/keychron/switch_pad/readme.md | 21 +
keyboards/keychron/switch_pad/rules.mk | 2 +
keyboards/keychron/switch_pad/switch_pad.c | 294 ++++++++++++++
keyboards/keychron/v1/ansi/ansi.c | 8 +-
keyboards/keychron/v1/ansi/config.h | 5 +-
keyboards/keychron/v1/ansi/info.json | 184 ++++-----
.../keychron/v1/ansi/keymaps/default/keymap.c | 4 +-
.../v1/ansi/keymaps/keychron/keymap.c | 9 +-
.../v1/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v1/ansi/keymaps/via/keymap.c | 4 +-
.../keychron/v1/ansi/keymaps/vnmm/keymap.c | 54 +++
.../keychron/v1/ansi/keymaps/vnmm/readme.md | 10 +
.../via => v1/ansi/keymaps/vnmm}/rules.mk | 0
keyboards/keychron/v1/ansi/rules.mk | 17 +-
.../keychron/v1/ansi_encoder/ansi_encoder.c | 10 +-
keyboards/keychron/v1/ansi_encoder/config.h | 5 +-
keyboards/keychron/v1/ansi_encoder/info.json | 184 ++++-----
.../v1/ansi_encoder/keymaps/default/keymap.c | 10 +-
.../v1/ansi_encoder/keymaps/keychron/keymap.c | 15 +-
.../v1/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v1/ansi_encoder/keymaps/via/keymap.c | 6 +-
.../v1/ansi_encoder/keymaps/via/rules.mk | 1 +
keyboards/keychron/v1/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/v1/config.h | 30 +-
keyboards/keychron/v1/halconf.h | 3 -
keyboards/keychron/v1/iso/config.h | 5 +-
keyboards/keychron/v1/iso/info.json | 186 ++++-----
keyboards/keychron/v1/iso/iso.c | 8 +-
.../keychron/v1/iso/keymaps/default/keymap.c | 4 +-
.../keychron/v1/iso/keymaps/keychron/keymap.c | 13 +-
.../keychron/v1/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/v1/iso/keymaps/via/keymap.c | 4 +-
keyboards/keychron/v1/iso/rules.mk | 17 +-
keyboards/keychron/v1/iso_encoder/config.h | 5 +-
keyboards/keychron/v1/iso_encoder/info.json | 186 ++++-----
.../keychron/v1/iso_encoder/iso_encoder.c | 10 +-
.../v1/iso_encoder/keymaps/default/keymap.c | 52 +--
.../v1/iso_encoder/keymaps/keychron/keymap.c | 61 ++-
.../v1/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v1/iso_encoder/keymaps/via/keymap.c | 52 +--
keyboards/keychron/v1/iso_encoder/rules.mk | 18 +-
keyboards/keychron/v1/jis/config.h | 5 +-
keyboards/keychron/v1/jis/info.json | 192 +++++----
keyboards/keychron/v1/jis/jis.c | 10 +-
.../keychron/v1/jis/keymaps/default/keymap.c | 50 +--
.../keychron/v1/jis/keymaps/keychron/keymap.c | 61 ++-
.../keychron/v1/jis/keymaps/keychron/rules.mk | 3 +-
.../keychron/v1/jis/keymaps/via/keymap.c | 50 +--
keyboards/keychron/v1/jis/rules.mk | 17 +-
keyboards/keychron/v1/jis_encoder/config.h | 5 +-
keyboards/keychron/v1/jis_encoder/info.json | 192 +++++----
.../keychron/v1/jis_encoder/jis_encoder.c | 10 +-
.../v1/jis_encoder/keymaps/default/keymap.c | 52 +--
.../v1/jis_encoder/keymaps/keychron/keymap.c | 63 ++-
.../v1/jis_encoder/keymaps/keychron/rules.mk | 3 +-
.../v1/jis_encoder/keymaps/via/keymap.c | 52 +--
keyboards/keychron/v1/jis_encoder/rules.mk | 18 +-
keyboards/keychron/v1/matrix.c | 222 +++++++++++
keyboards/keychron/v1/readme.md | 14 +-
keyboards/keychron/v1/v1.c | 48 ++-
.../keychron/v10/ansi_encoder/ansi_encoder.c | 10 +-
keyboards/keychron/v10/ansi_encoder/config.h | 2 +-
keyboards/keychron/v10/ansi_encoder/info.json | 200 +++++-----
.../v10/ansi_encoder/keymaps/default/keymap.c | 6 +-
.../ansi_encoder/keymaps/keychron/keymap.c | 39 +-
.../ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v10/ansi_encoder/keymaps/via/keymap.c | 32 +-
keyboards/keychron/v10/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/v10/config.h | 36 +-
keyboards/keychron/v10/halconf.h | 4 +-
keyboards/keychron/v10/iso_encoder/info.json | 198 +++++-----
.../keychron/v10/iso_encoder/iso_encoder.c | 8 +-
.../v10/iso_encoder/keymaps/default/keymap.c | 6 +-
.../v10/iso_encoder/keymaps/keychron/keymap.c | 41 +-
.../v10/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v10/iso_encoder/keymaps/via/keymap.c | 32 +-
keyboards/keychron/v10/iso_encoder/rules.mk | 18 +-
keyboards/keychron/{q5 => v10}/matrix.c | 83 ++--
keyboards/keychron/v10/readme.md | 4 +-
keyboards/keychron/v10/v10.c | 52 ++-
keyboards/keychron/v2/ansi/ansi.c | 12 +-
keyboards/keychron/v2/ansi/config.h | 5 +-
keyboards/keychron/v2/ansi/info.json | 149 ++++---
.../keychron/v2/ansi/keymaps/default/keymap.c | 20 +-
.../v2/ansi/keymaps/keychron/config.h | 17 -
.../v2/ansi/keymaps/keychron/keymap.c | 29 +-
.../v2/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v2/ansi/keymaps/via/config.h | 17 -
.../keychron/v2/ansi/keymaps/via/keymap.c | 20 +-
.../keychron/v2/ansi/keymaps/vnmm/keymap.c | 57 +++
.../keychron/v2/ansi/keymaps/vnmm/readme.md | 10 +
.../keychron/v2/ansi/keymaps/vnmm/rules.mk | 1 +
keyboards/keychron/v2/ansi/rules.mk | 15 +-
.../keychron/v2/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/v2/ansi_encoder/config.h | 2 +-
keyboards/keychron/v2/ansi_encoder/info.json | 151 ++++---
.../v2/ansi_encoder/keymaps/default/keymap.c | 30 +-
.../v2/ansi_encoder/keymaps/keychron/config.h | 17 -
.../v2/ansi_encoder/keymaps/keychron/keymap.c | 37 +-
.../v2/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../v2/ansi_encoder/keymaps/via/config.h | 17 -
.../v2/ansi_encoder/keymaps/via/keymap.c | 30 +-
keyboards/keychron/v2/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/v2/config.h | 19 +-
keyboards/keychron/v2/halconf.h | 3 -
keyboards/keychron/v2/iso/config.h | 2 +-
keyboards/keychron/v2/iso/info.json | 151 ++++---
keyboards/keychron/v2/iso/iso.c | 6 +-
.../keychron/v2/iso/keymaps/default/keymap.c | 20 +-
.../keychron/v2/iso/keymaps/keychron/config.h | 17 -
.../keychron/v2/iso/keymaps/keychron/keymap.c | 29 +-
.../keychron/v2/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v2/iso/keymaps/via/config.h | 17 -
.../keychron/v2/iso/keymaps/via/keymap.c | 20 +-
keyboards/keychron/v2/iso/rules.mk | 15 +-
keyboards/keychron/v2/iso_encoder/config.h | 2 +-
keyboards/keychron/v2/iso_encoder/info.json | 154 ++++----
.../keychron/v2/iso_encoder/iso_encoder.c | 8 +-
.../v2/iso_encoder/keymaps/default/keymap.c | 30 +-
.../v2/iso_encoder/keymaps/keychron/config.h | 17 -
.../v2/iso_encoder/keymaps/keychron/keymap.c | 37 +-
.../v2/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../v2/iso_encoder/keymaps/via/config.h | 17 -
.../v2/iso_encoder/keymaps/via/keymap.c | 30 +-
keyboards/keychron/v2/iso_encoder/rules.mk | 16 +-
keyboards/keychron/v2/jis/config.h | 5 +-
keyboards/keychron/v2/jis/info.json | 157 ++++----
keyboards/keychron/v2/jis/jis.c | 6 +-
.../keychron/v2/jis/keymaps/default/keymap.c | 20 +-
.../keychron/v2/jis/keymaps/keychron/config.h | 17 -
.../keychron/v2/jis/keymaps/keychron/keymap.c | 29 +-
.../keychron/v2/jis/keymaps/keychron/rules.mk | 2 +-
.../keychron/v2/jis/keymaps/via/config.h | 17 -
.../keychron/v2/jis/keymaps/via/keymap.c | 20 +-
keyboards/keychron/v2/jis/rules.mk | 15 +-
keyboards/keychron/v2/jis_encoder/config.h | 5 +-
keyboards/keychron/v2/jis_encoder/info.json | 157 ++++----
.../keychron/v2/jis_encoder/jis_encoder.c | 8 +-
.../v2/jis_encoder/keymaps/default/keymap.c | 28 +-
.../v2/jis_encoder/keymaps/keychron/config.h | 17 -
.../v2/jis_encoder/keymaps/keychron/keymap.c | 37 +-
.../v2/jis_encoder/keymaps/keychron/rules.mk | 2 +-
.../v2/jis_encoder/keymaps/via/config.h | 17 -
.../v2/jis_encoder/keymaps/via/keymap.c | 26 +-
keyboards/keychron/v2/jis_encoder/rules.mk | 16 +-
keyboards/keychron/v2/readme.md | 14 +-
keyboards/keychron/v2/v2.c | 47 ++-
keyboards/keychron/v3/ansi/ansi.c | 6 +-
keyboards/keychron/v3/ansi/config.h | 14 +-
keyboards/keychron/v3/ansi/info.json | 196 +++++-----
.../keychron/v3/ansi/keymaps/default/keymap.c | 12 +-
.../v3/ansi/keymaps/keychron/keymap.c | 17 +-
.../v3/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v3/ansi/keymaps/via/keymap.c | 12 +-
keyboards/keychron/v3/ansi/rules.mk | 15 +-
.../keychron/v3/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/v3/ansi_encoder/config.h | 8 +-
keyboards/keychron/v3/ansi_encoder/info.json | 198 +++++-----
.../v3/ansi_encoder/keymaps/default/keymap.c | 14 +-
.../v3/ansi_encoder/keymaps/keychron/keymap.c | 19 +-
.../v3/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v3/ansi_encoder/keymaps/via/keymap.c | 14 +-
.../v3/ansi_encoder/keymaps/vnmm/keymap.c | 77 ++++
.../ansi_encoder/keymaps/vnmm}/rules.mk | 0
keyboards/keychron/v3/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/v3/config.h | 24 +-
keyboards/keychron/v3/halconf.h | 5 +-
keyboards/keychron/v3/iso/config.h | 11 +-
keyboards/keychron/v3/iso/info.json | 198 +++++-----
keyboards/keychron/v3/iso/iso.c | 6 +-
.../keychron/v3/iso/keymaps/default/keymap.c | 12 +-
.../keychron/v3/iso/keymaps/keychron/keymap.c | 18 +-
.../keychron/v3/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v3/iso/keymaps/via/keymap.c | 12 +-
keyboards/keychron/v3/iso/rules.mk | 17 +-
keyboards/keychron/v3/iso_encoder/config.h | 8 +-
keyboards/keychron/v3/iso_encoder/info.json | 200 +++++-----
.../keychron/v3/iso_encoder/iso_encoder.c | 8 +-
.../v3/iso_encoder/keymaps/default/keymap.c | 14 +-
.../v3/iso_encoder/keymaps/keychron/keymap.c | 19 +-
.../v3/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v3/iso_encoder/keymaps/via/keymap.c | 14 +-
keyboards/keychron/v3/iso_encoder/rules.mk | 18 +-
keyboards/keychron/v3/jis/config.h | 15 +-
keyboards/keychron/v3/jis/info.json | 202 +++++-----
keyboards/keychron/v3/jis/jis.c | 110 +++---
.../keychron/v3/jis/keymaps/default/keymap.c | 4 +-
.../keychron/v3/jis/keymaps/keychron/keymap.c | 9 +-
.../keychron/v3/jis/keymaps/keychron/rules.mk | 2 +-
.../keychron/v3/jis/keymaps/via/keymap.c | 4 +-
keyboards/keychron/v3/jis/rules.mk | 17 +-
keyboards/keychron/v3/jis_encoder/config.h | 11 +-
keyboards/keychron/v3/jis_encoder/info.json | 204 +++++-----
.../keychron/v3/jis_encoder/jis_encoder.c | 112 +++---
.../v3/jis_encoder/keymaps/default/keymap.c | 10 +-
.../v3/jis_encoder/keymaps/keychron/keymap.c | 11 +-
.../v3/jis_encoder/keymaps/keychron/rules.mk | 3 +-
.../v3/jis_encoder/keymaps/via/keymap.c | 10 +-
keyboards/keychron/v3/jis_encoder/rules.mk | 18 +-
keyboards/keychron/v3/matrix.c | 222 +++++++++++
keyboards/keychron/v3/readme.md | 14 +-
keyboards/keychron/v3/v3.c | 52 ++-
keyboards/keychron/v4/ansi/ansi.c | 6 +-
keyboards/keychron/v4/ansi/config.h | 2 +-
keyboards/keychron/v4/ansi/info.json | 143 ++++---
.../keychron/v4/ansi/keymaps/default/keymap.c | 24 +-
.../v4/ansi/keymaps/keychron/config.h | 17 -
.../v4/ansi/keymaps/keychron/keymap.c | 33 +-
.../v4/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v4/ansi/keymaps/via/config.h | 17 -
.../keychron/v4/ansi/keymaps/via/keymap.c | 24 +-
keyboards/keychron/v4/ansi/rules.mk | 13 +-
keyboards/keychron/v4/config.h | 19 +-
keyboards/keychron/v4/iso/config.h | 2 +-
keyboards/keychron/v4/iso/info.json | 145 ++++---
keyboards/keychron/v4/iso/iso.c | 6 +-
.../keychron/v4/iso/keymaps/default/keymap.c | 24 +-
.../keychron/v4/iso/keymaps/keychron/config.h | 17 -
.../keychron/v4/iso/keymaps/keychron/keymap.c | 33 +-
.../keychron/v4/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v4/iso/keymaps/via/config.h | 17 -
.../keychron/v4/iso/keymaps/via/keymap.c | 24 +-
keyboards/keychron/v4/iso/rules.mk | 13 +-
keyboards/keychron/v4/readme.md | 4 +-
keyboards/keychron/v4/v4.c | 48 ++-
keyboards/keychron/v5/ansi/ansi.c | 38 +-
keyboards/keychron/v5/ansi/config.h | 10 +-
keyboards/keychron/v5/ansi/info.json | 337 ++++++++++------
.../keychron/v5/ansi/keymaps/default/keymap.c | 36 +-
.../v5/ansi/keymaps/keychron/keymap.c | 27 +-
.../v5/ansi/keymaps/keychron/rules.mk | 2 -
.../keychron/v5/ansi/keymaps/via/keymap.c | 36 +-
keyboards/keychron/v5/ansi/rules.mk | 15 +-
.../keychron/v5/ansi_encoder/ansi_encoder.c | 34 +-
keyboards/keychron/v5/ansi_encoder/config.h | 7 +-
keyboards/keychron/v5/ansi_encoder/info.json | 216 +++++-----
.../v5/ansi_encoder/keymaps/default/keymap.c | 42 +-
.../v5/ansi_encoder/keymaps/keychron/keymap.c | 47 +--
.../v5/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v5/ansi_encoder/keymaps/via/keymap.c | 42 +-
keyboards/keychron/v5/ansi_encoder/rules.mk | 18 +-
keyboards/keychron/v5/config.h | 72 +---
keyboards/keychron/v5/halconf.h | 3 -
keyboards/keychron/v5/info.json | 54 +++
keyboards/keychron/v5/iso/config.h | 7 +-
keyboards/keychron/v5/iso/info.json | 222 +++++------
keyboards/keychron/v5/iso/iso.c | 40 +-
.../keychron/v5/iso/keymaps/default/keymap.c | 36 +-
.../keychron/v5/iso/keymaps/keychron/keymap.c | 45 +--
.../keychron/v5/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/v5/iso/keymaps/via/keymap.c | 36 +-
keyboards/keychron/v5/iso/rules.mk | 17 +-
keyboards/keychron/v5/iso_encoder/config.h | 7 +-
keyboards/keychron/v5/iso_encoder/info.json | 218 +++++------
.../keychron/v5/iso_encoder/iso_encoder.c | 34 +-
.../v5/iso_encoder/keymaps/default/keymap.c | 42 +-
.../v5/iso_encoder/keymaps/keychron/keymap.c | 47 +--
.../v5/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v5/iso_encoder/keymaps/via/keymap.c | 42 +-
keyboards/keychron/v5/iso_encoder/rules.mk | 18 +-
keyboards/keychron/v5/matrix.c | 222 +++++++++++
keyboards/keychron/v5/readme.md | 10 +-
keyboards/keychron/v5/rules.mk | 1 +
keyboards/keychron/v5/v5.c | 4 +-
keyboards/keychron/v6/ansi/ansi.c | 43 +-
keyboards/keychron/v6/ansi/config.h | 22 +-
keyboards/keychron/v6/ansi/info.json | 236 ++++++-----
.../keychron/v6/ansi/keymaps/default/keymap.c | 37 +-
.../v6/ansi/keymaps/keychron/keymap.c | 49 +--
.../v6/ansi/keymaps/keychron/rules.mk | 3 +-
.../keychron/v6/ansi/keymaps/via/keymap.c | 36 +-
keyboards/keychron/v6/ansi/rules.mk | 15 +-
.../keychron/v6/ansi_encoder/ansi_encoder.c | 42 +-
keyboards/keychron/v6/ansi_encoder/config.h | 24 +-
keyboards/keychron/v6/ansi_encoder/info.json | 238 ++++++-----
.../v6/ansi_encoder/keymaps/default/keymap.c | 40 +-
.../v6/ansi_encoder/keymaps/keychron/keymap.c | 51 ++-
.../v6/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
.../v6/ansi_encoder/keymaps/via/keymap.c | 40 +-
keyboards/keychron/v6/ansi_encoder/rules.mk | 16 +-
keyboards/keychron/v6/config.h | 23 +-
keyboards/keychron/v6/halconf.h | 4 +-
keyboards/keychron/v6/iso/config.h | 22 +-
keyboards/keychron/v6/iso/info.json | 238 ++++++-----
keyboards/keychron/v6/iso/iso.c | 40 +-
.../keychron/v6/iso/keymaps/default/keymap.c | 38 +-
.../keychron/v6/iso/keymaps/keychron/keymap.c | 49 +--
.../keychron/v6/iso/keymaps/keychron/rules.mk | 3 +-
.../keychron/v6/iso/keymaps/via/keymap.c | 38 +-
keyboards/keychron/v6/iso/rules.mk | 15 +-
keyboards/keychron/v6/iso_encoder/config.h | 24 +-
keyboards/keychron/v6/iso_encoder/info.json | 240 ++++++------
.../keychron/v6/iso_encoder/iso_encoder.c | 42 +-
.../v6/iso_encoder/keymaps/default/keymap.c | 38 +-
.../v6/iso_encoder/keymaps/keychron/keymap.c | 67 ++--
.../v6/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../v6/iso_encoder/keymaps/via/keymap.c | 38 +-
keyboards/keychron/v6/iso_encoder/rules.mk | 17 +-
keyboards/keychron/v6/jis_encoder/info.json | 161 --------
.../keychron/v6/jis_encoder/jis_encoder.c | 178 ---------
.../v6/jis_encoder/keymaps/default/keymap.c | 69 ----
.../v6/jis_encoder/keymaps/default/rules.mk | 1 -
.../v6/jis_encoder/keymaps/keychron/keymap.c | 87 -----
.../v6/jis_encoder/keymaps/keychron/rules.mk | 4 -
.../v6/jis_encoder/keymaps/via/keymap.c | 69 ----
keyboards/keychron/v6/jis_encoder/rules.mk | 14 -
keyboards/keychron/v6/matrix.c | 215 ++++++++++
keyboards/keychron/v6/readme.md | 14 +-
keyboards/keychron/v6/v6.c | 67 +++-
keyboards/keychron/v7/ansi/ansi.c | 4 +-
keyboards/keychron/v7/ansi/info.json | 159 ++++----
.../keychron/v7/ansi/keymaps/default/keymap.c | 18 +-
.../v7/ansi/keymaps/keychron/config.h | 17 -
.../v7/ansi/keymaps/keychron/keymap.c | 27 +-
.../v7/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v7/ansi/keymaps/via/config.h | 17 -
.../keychron/v7/ansi/keymaps/via/keymap.c | 16 +-
keyboards/keychron/v7/ansi/rules.mk | 13 +-
keyboards/keychron/v7/config.h | 18 +-
keyboards/keychron/v7/iso/info.json | 163 ++++----
keyboards/keychron/v7/iso/iso.c | 2 +-
.../keychron/v7/iso/keymaps/default/keymap.c | 18 +-
.../keychron/v7/iso/keymaps/keychron/config.h | 17 -
.../keychron/v7/iso/keymaps/keychron/keymap.c | 27 +-
.../keychron/v7/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v7/iso/keymaps/via/config.h | 17 -
.../keychron/v7/iso/keymaps/via/keymap.c | 18 +-
keyboards/keychron/v7/iso/rules.mk | 13 +-
keyboards/keychron/v7/readme.md | 6 +-
keyboards/keychron/v7/v7.c | 46 +++
keyboards/keychron/v8/ansi/ansi.c | 10 +-
keyboards/keychron/v8/ansi/info.json | 153 ++++----
.../keychron/v8/ansi/keymaps/default/keymap.c | 18 +-
.../v8/ansi/keymaps/keychron/config.h | 17 -
.../v8/ansi/keymaps/keychron/keymap.c | 27 +-
.../v8/ansi/keymaps/keychron/rules.mk | 2 +-
.../keychron/v8/ansi/keymaps/via/config.h | 17 -
.../keychron/v8/ansi/keymaps/via/keymap.c | 18 +-
keyboards/keychron/v8/ansi/rules.mk | 17 +-
.../keychron/v8/ansi_encoder/ansi_encoder.c | 8 +-
keyboards/keychron/v8/ansi_encoder/info.json | 155 ++++----
.../v8/ansi_encoder/keymaps/default/keymap.c | 26 +-
.../v8/ansi_encoder/keymaps/keychron/config.h | 17 -
.../v8/ansi_encoder/keymaps/keychron/keymap.c | 35 +-
.../v8/ansi_encoder/keymaps/keychron/rules.mk | 2 +-
.../v8/ansi_encoder/keymaps/via/config.h | 17 -
.../v8/ansi_encoder/keymaps/via/keymap.c | 26 +-
keyboards/keychron/v8/ansi_encoder/rules.mk | 17 +-
keyboards/keychron/v8/config.h | 18 +-
keyboards/keychron/v8/halconf.h | 3 -
keyboards/keychron/v8/iso/info.json | 156 ++++----
keyboards/keychron/v8/iso/iso.c | 6 +-
.../keychron/v8/iso/keymaps/default/keymap.c | 18 +-
.../keychron/v8/iso/keymaps/keychron/config.h | 17 -
.../keychron/v8/iso/keymaps/keychron/keymap.c | 29 +-
.../keychron/v8/iso/keymaps/keychron/rules.mk | 2 +-
.../keychron/v8/iso/keymaps/via/config.h | 17 -
.../keychron/v8/iso/keymaps/via/keymap.c | 18 +-
keyboards/keychron/v8/iso/rules.mk | 16 +-
keyboards/keychron/v8/iso_encoder/info.json | 157 ++++----
.../keychron/v8/iso_encoder/iso_encoder.c | 6 +-
.../v8/iso_encoder/keymaps/default/keymap.c | 26 +-
.../v8/iso_encoder/keymaps/keychron/config.h | 17 -
.../v8/iso_encoder/keymaps/keychron/keymap.c | 35 +-
.../v8/iso_encoder/keymaps/keychron/rules.mk | 2 +-
.../v8/iso_encoder/keymaps/via/config.h | 17 -
.../v8/iso_encoder/keymaps/via/keymap.c | 28 +-
keyboards/keychron/v8/iso_encoder/rules.mk | 17 +-
keyboards/keychron/v8/readme.md | 10 +-
keyboards/keychron/v8/v8.c | 48 ++-
1042 files changed, 22082 insertions(+), 20936 deletions(-)
delete mode 100644 keyboards/keychron/q0/factory.c
create mode 100644 keyboards/keychron/q0/info.json
create mode 100644 keyboards/keychron/q0/rev_0130/readme.md
delete mode 100644 keyboards/keychron/q1/ansi_atmega32u4/config.h
delete mode 100644 keyboards/keychron/q1/ansi_atmega32u4/info.json
delete mode 100644 keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_atmega32u4_encoder/ansi_atmega32u4_encoder.c
delete mode 100644 keyboards/keychron/q1/ansi_atmega32u4_encoder/info.json
delete mode 100644 keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432/config.h
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432/info.json
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/info.json
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/rules.mk
delete mode 100644 keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk
delete mode 100644 keyboards/keychron/q1/config.h
delete mode 100644 keyboards/keychron/q1/iso_atmega32u4/config.h
delete mode 100644 keyboards/keychron/q1/iso_atmega32u4/info.json
delete mode 100644 keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_atmega32u4_encoder/info.json
delete mode 100644 keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_stm32l432/config.h
delete mode 100644 keyboards/keychron/q1/iso_stm32l432/info.json
delete mode 100644 keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_stm32l432/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/config.h
delete mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/info.json
delete mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/keymap.c
delete mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/keymap.c
delete mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/keymap.c
delete mode 100644 keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk
delete mode 100644 keyboards/keychron/q1/jis_stm32l432/config.h
delete mode 100644 keyboards/keychron/q1/jis_stm32l432/info.json
delete mode 100644 keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/jis_stm32l432/rules.mk
delete mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/config.h
delete mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/info.json
delete mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk
delete mode 100644 keyboards/keychron/q1/readme.md
create mode 100644 keyboards/keychron/q10/ansi_encoder/readme.md
create mode 100644 keyboards/keychron/q10/iso_encoder/readme.md
create mode 100644 keyboards/keychron/q10/matrix.c
mode change 100755 => 100644 keyboards/keychron/q11/ansi_encoder/rules.mk
delete mode 100644 keyboards/keychron/q11/factory.c
create mode 100755 keyboards/keychron/q11/info.json
create mode 100644 keyboards/keychron/q12/matrix.c
rename keyboards/keychron/{q1/iso_atmega32u4_encoder/iso_atmega32u4_encoder.c => q1v1/ansi/ansi.c} (57%)
create mode 100644 keyboards/keychron/q1v1/ansi/config.h
create mode 100644 keyboards/keychron/q1v1/ansi/info.json
rename keyboards/keychron/{q1/ansi_atmega32u4/keymaps/via => q1v1/ansi/keymaps/default}/keymap.c (99%)
rename keyboards/keychron/{q1/ansi_atmega32u4 => q1v1/ansi}/keymaps/keychron/keymap.c (72%)
create mode 100644 keyboards/keychron/q1v1/ansi/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/ansi_atmega32u4/keymaps/default => q1v1/ansi/keymaps/via}/keymap.c (98%)
rename keyboards/keychron/{q1/ansi_atmega32u4 => q1v1/ansi}/keymaps/via/rules.mk (100%)
rename keyboards/keychron/{q1/ansi_atmega32u4 => q1v1/ansi}/rules.mk (100%)
rename keyboards/keychron/{q1/ansi_atmega32u4/ansi_atmega32u4.c => q1v1/ansi_encoder/ansi_encoder.c} (61%)
create mode 100644 keyboards/keychron/q1v1/ansi_encoder/config.h
create mode 100644 keyboards/keychron/q1v1/ansi_encoder/info.json
rename keyboards/keychron/{q1/ansi_atmega32u4_encoder => q1v1/ansi_encoder}/keymaps/default/keymap.c (68%)
create mode 100644 keyboards/keychron/q1v1/ansi_encoder/keymaps/default/rules.mk
rename keyboards/keychron/{q1/ansi_atmega32u4_encoder => q1v1/ansi_encoder}/keymaps/keychron/keymap.c (71%)
create mode 100644 keyboards/keychron/q1v1/ansi_encoder/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/ansi_atmega32u4_encoder => q1v1/ansi_encoder}/keymaps/via/keymap.c (68%)
rename keyboards/keychron/{q1/ansi_atmega32u4_encoder => q1v1/ansi_encoder}/keymaps/via/rules.mk (100%)
rename keyboards/keychron/{q1/ansi_atmega32u4_encoder => q1v1/ansi_encoder}/rules.mk (100%)
rename keyboards/keychron/{q1/ansi_atmega32u4_encoder => q1v1}/config.h (60%)
create mode 100644 keyboards/keychron/q1v1/info.json
rename keyboards/keychron/{q2/ansi_encoder/keymaps/via => q1v1/iso}/config.h (73%)
create mode 100644 keyboards/keychron/q1v1/iso/info.json
create mode 100644 keyboards/keychron/q1v1/iso/iso.c
rename keyboards/keychron/{q1/iso_atmega32u4/keymaps/via => q1v1/iso/keymaps/default}/keymap.c (77%)
create mode 100644 keyboards/keychron/q1v1/iso/keymaps/keychron/keymap.c
create mode 100644 keyboards/keychron/q1v1/iso/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/iso_atmega32u4/keymaps/default => q1v1/iso/keymaps/via}/keymap.c (77%)
rename keyboards/keychron/{q1/ansi_stm32l432 => q1v1/iso}/keymaps/via/rules.mk (100%)
rename keyboards/keychron/{q1/iso_atmega32u4 => q1v1/iso}/rules.mk (100%)
create mode 100644 keyboards/keychron/q1v1/iso_encoder/config.h
create mode 100644 keyboards/keychron/q1v1/iso_encoder/info.json
rename keyboards/keychron/{q1/iso_atmega32u4/iso_atmega32u4.c => q1v1/iso_encoder/iso_encoder.c} (61%)
rename keyboards/keychron/{q1/iso_atmega32u4_encoder/keymaps/via => q1v1/iso_encoder/keymaps/default}/keymap.c (87%)
create mode 100644 keyboards/keychron/q1v1/iso_encoder/keymaps/default/rules.mk
rename keyboards/keychron/{q1/iso_atmega32u4_encoder => q1v1/iso_encoder}/keymaps/keychron/keymap.c (89%)
create mode 100644 keyboards/keychron/q1v1/iso_encoder/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/iso_atmega32u4_encoder/keymaps/default => q1v1/iso_encoder/keymaps/via}/keymap.c (86%)
create mode 100644 keyboards/keychron/q1v1/iso_encoder/keymaps/via/rules.mk
rename keyboards/keychron/{q1/iso_atmega32u4_encoder => q1v1/iso_encoder}/rules.mk (100%)
rename keyboards/keychron/{v6/jis_encoder/config.h => q1v1/q1v1.c} (55%)
create mode 100644 keyboards/keychron/q1v1/readme.md
rename keyboards/keychron/{q1/ansi_stm32l432/ansi_stm32l432.c => q1v2/ansi/ansi.c} (61%)
mode change 100644 => 100755
rename keyboards/keychron/{q9_plus/ansi_encoder/keymaps/keychron => q1v2/ansi}/config.h (83%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/ansi/info.json
rename keyboards/keychron/{q1/ansi_stm32l432 => q1v2/ansi}/keymaps/default/keymap.c (98%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/ansi_stm32l432 => q1v2/ansi}/keymaps/keychron/keymap.c (97%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/ansi/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/ansi_stm32l432 => q1v2/ansi}/keymaps/via/keymap.c (98%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/iso_atmega32u4 => q1v2/ansi}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/ansi/rules.mk
rename keyboards/keychron/{q1/ansi_stm32l432_encoder/ansi_stm32l432_encoder.c => q1v2/ansi_encoder/ansi_encoder.c} (61%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/ansi_encoder/config.h
create mode 100755 keyboards/keychron/q1v2/ansi_encoder/info.json
rename keyboards/keychron/{q1/ansi_stm32l432_encoder => q1v2/ansi_encoder}/keymaps/default/keymap.c (97%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/ansi_encoder/keymaps/default/rules.mk
rename keyboards/keychron/{q1/ansi_stm32l432_encoder => q1v2/ansi_encoder}/keymaps/keychron/keymap.c (96%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/ansi_stm32l432_encoder => q1v2/ansi_encoder}/keymaps/via/keymap.c (93%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/iso_atmega32u4_encoder => q1v2/ansi_encoder}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/ansi_encoder/rules.mk
rename keyboards/keychron/{q1/ansi_stm32l432_encoder => q1v2}/config.h (69%)
mode change 100644 => 100755
rename keyboards/keychron/{q1 => q1v2}/halconf.h (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/info.json
rename keyboards/keychron/{q9_plus/ansi_encoder/keymaps/via => q1v2/iso}/config.h (83%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/iso/info.json
rename keyboards/keychron/{q1/iso_stm32l432_encoder/iso_stm32l432_encoder.c => q1v2/iso/iso.c} (61%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/iso_stm32l432/keymaps/via => q1v2/iso/keymaps/default}/keymap.c (98%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/iso_stm32l432 => q1v2/iso}/keymaps/keychron/keymap.c (98%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/iso/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/iso_stm32l432/keymaps/default => q1v2/iso/keymaps/via}/keymap.c (98%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/iso_stm32l432 => q1v2/iso}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/iso/rules.mk
create mode 100755 keyboards/keychron/q1v2/iso_encoder/config.h
create mode 100755 keyboards/keychron/q1v2/iso_encoder/info.json
rename keyboards/keychron/{q1/iso_stm32l432/iso_stm32l432.c => q1v2/iso_encoder/iso_encoder.c} (61%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/iso_encoder/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/q1v2/iso_encoder/keymaps/default/rules.mk
rename keyboards/keychron/{q1/iso_atmega32u4 => q1v2/iso_encoder}/keymaps/keychron/keymap.c (80%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/q1v2/iso_encoder/keymaps/via/keymap.c
rename keyboards/keychron/{q1/iso_stm32l432_encoder => q1v2/iso_encoder}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/iso_encoder/rules.mk
rename keyboards/keychron/{q2/ansi/keymaps/via => q1v2/jis}/config.h (77%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/jis/info.json
rename keyboards/keychron/{q1/jis_stm32l432/jis_stm32l432.c => q1v2/jis/jis.c} (61%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/jis_stm32l432 => q1v2/jis}/keymaps/default/keymap.c (95%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/jis_stm32l432 => q1v2/jis}/keymaps/keychron/keymap.c (93%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/jis/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/jis_stm32l432 => q1v2/jis}/keymaps/via/keymap.c (95%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/jis_stm32l432 => q1v2/jis}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/jis/rules.mk
create mode 100755 keyboards/keychron/q1v2/jis_encoder/config.h
create mode 100755 keyboards/keychron/q1v2/jis_encoder/info.json
rename keyboards/keychron/{q1/jis_stm32l432_encoder/jis_stm32l432_encoder.c => q1v2/jis_encoder/jis_encoder.c} (61%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/jis_stm32l432_encoder => q1v2/jis_encoder}/keymaps/default/keymap.c (95%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/jis_encoder/keymaps/default/rules.mk
rename keyboards/keychron/{q1/jis_stm32l432_encoder => q1v2/jis_encoder}/keymaps/keychron/keymap.c (92%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/rules.mk
rename keyboards/keychron/{q1/jis_stm32l432_encoder => q1v2/jis_encoder}/keymaps/via/keymap.c (95%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/jis_stm32l432_encoder => q1v2/jis_encoder}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/jis_encoder/rules.mk
rename keyboards/keychron/{q1 => q1v2}/mcuconf.h (100%)
mode change 100644 => 100755
rename keyboards/keychron/{q1/q1.c => q1v2/q1v2.c} (79%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/q1v2/readme.md
create mode 100755 keyboards/keychron/q1v2/rules.mk
create mode 100644 keyboards/keychron/q2/ansi/readme.md
create mode 100644 keyboards/keychron/q2/ansi_encoder/readme.md
create mode 100644 keyboards/keychron/q2/info.json
delete mode 100644 keyboards/keychron/q2/iso/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q2/iso/keymaps/via/config.h
create mode 100644 keyboards/keychron/q2/iso/readme.md
delete mode 100644 keyboards/keychron/q2/iso_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q2/iso_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/q2/iso_encoder/readme.md
delete mode 100644 keyboards/keychron/q2/jis/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q2/jis/keymaps/via/config.h
rename keyboards/keychron/{q1/ansi_atmega32u4_encoder => q2/jis_encoder}/keymaps/default/rules.mk (100%)
delete mode 100644 keyboards/keychron/q2/jis_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q2/jis_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/q3/ansi/readme.md
create mode 100644 keyboards/keychron/q3/ansi_encoder/readme.md
create mode 100644 keyboards/keychron/q3/info.json
create mode 100644 keyboards/keychron/q3/iso/readme.md
create mode 100644 keyboards/keychron/q3/iso_encoder/readme.md
create mode 100644 keyboards/keychron/q3/jis/readme.md
create mode 100644 keyboards/keychron/q3/jis_encoder/readme.md
rename keyboards/keychron/{q2/ansi_encoder/keymaps/keychron => q4/ansi}/config.h (91%)
create mode 100644 keyboards/keychron/q4/ansi/info.json
rename keyboards/keychron/q4/{ansi_v1/keymaps/via => ansi/keymaps/default}/keymap.c (91%)
rename keyboards/keychron/q4/{ansi_v2 => ansi}/keymaps/keychron/keymap.c (89%)
create mode 100644 keyboards/keychron/q4/ansi/keymaps/keychron/rules.mk
rename keyboards/keychron/q4/{ansi_v1/keymaps/default => ansi/keymaps/via}/keymap.c (91%)
create mode 100644 keyboards/keychron/q4/ansi/keymaps/via/rules.mk
create mode 100644 keyboards/keychron/q4/ansi/readme.md
rename keyboards/keychron/q4/{ansi_v1 => ansi/v1}/config.h (86%)
create mode 100644 keyboards/keychron/q4/ansi/v1/rules.mk
rename keyboards/keychron/q4/{ansi_v1/ansi_v1.c => ansi/v1/v1.c} (64%)
rename keyboards/keychron/q4/{ansi_v2 => ansi/v2}/config.h (85%)
create mode 100644 keyboards/keychron/q4/ansi/v2/rules.mk
rename keyboards/keychron/q4/{ansi_v2/ansi_v2.c => ansi/v2/v2.c} (64%)
delete mode 100644 keyboards/keychron/q4/ansi_v1/info.json
delete mode 100644 keyboards/keychron/q4/ansi_v1/keymaps/keychron/keymap.c
delete mode 100644 keyboards/keychron/q4/ansi_v1/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q4/ansi_v1/rules.mk
delete mode 100644 keyboards/keychron/q4/ansi_v2/info.json
delete mode 100644 keyboards/keychron/q4/ansi_v2/keymaps/default/keymap.c
delete mode 100644 keyboards/keychron/q4/ansi_v2/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/q4/ansi_v2/keymaps/via/keymap.c
delete mode 100644 keyboards/keychron/q4/ansi_v2/rules.mk
create mode 100644 keyboards/keychron/q4/info.json
create mode 100644 keyboards/keychron/q4/iso/readme.md
create mode 100644 keyboards/keychron/q5/ansi/readme.md
create mode 100644 keyboards/keychron/q5/ansi_encoder/readme.md
create mode 100644 keyboards/keychron/q5/info.json
create mode 100644 keyboards/keychron/q5/iso/readme.md
create mode 100644 keyboards/keychron/q5/iso_encoder/readme.md
create mode 100755 keyboards/keychron/q5/rules.mk
create mode 100644 keyboards/keychron/q6/ansi/readme.md
create mode 100644 keyboards/keychron/q6/ansi_encoder/readme.md
create mode 100644 keyboards/keychron/q6/info.json
create mode 100644 keyboards/keychron/q6/iso/readme.md
create mode 100644 keyboards/keychron/q6/iso_encoder/readme.md
create mode 100755 keyboards/keychron/q6/rules.mk
delete mode 100644 keyboards/keychron/q60/ansi/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q60/ansi/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q65/ansi_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q65/ansi_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/q65/matrix.c
delete mode 100644 keyboards/keychron/q7/ansi/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q7/ansi/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q7/iso/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q7/iso/keymaps/via/config.h
delete mode 100644 keyboards/keychron/q8/ansi/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q8/ansi/keymaps/via/config.h
create mode 100644 keyboards/keychron/q8/ansi/readme.md
delete mode 100644 keyboards/keychron/q8/ansi_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q8/ansi_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/q8/ansi_encoder/readme.md
delete mode 100644 keyboards/keychron/q8/iso/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q8/iso/keymaps/via/config.h
create mode 100644 keyboards/keychron/q8/iso/readme.md
delete mode 100644 keyboards/keychron/q8/iso_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q8/iso_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/q8/iso_encoder/readme.md
delete mode 100644 keyboards/keychron/q9/ansi/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q9/ansi/keymaps/via/config.h
create mode 100644 keyboards/keychron/q9/ansi/readme.md
delete mode 100644 keyboards/keychron/q9/ansi_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q9/ansi_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/q9/ansi_encoder/readme.md
delete mode 100644 keyboards/keychron/q9/iso/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q9/iso/keymaps/via/config.h
create mode 100644 keyboards/keychron/q9/iso/readme.md
delete mode 100644 keyboards/keychron/q9/iso_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/q9/iso_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/q9/iso_encoder/readme.md
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/config.h
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/info.json
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/rules.mk
mode change 100644 => 100755 keyboards/keychron/q9_plus/ansi_encoder/rules.mk
mode change 100644 => 100755 keyboards/keychron/q9_plus/config.h
mode change 100644 => 100755 keyboards/keychron/q9_plus/halconf.h
create mode 100755 keyboards/keychron/q9_plus/info.json
mode change 100644 => 100755 keyboards/keychron/q9_plus/mcuconf.h
mode change 100644 => 100755 keyboards/keychron/q9_plus/q9_plus.c
mode change 100644 => 100755 keyboards/keychron/q9_plus/readme.md
rename keyboards/keychron/{q1/iso_atmega32u4_encoder => switch_pad}/config.h (52%)
mode change 100644 => 100755
rename keyboards/keychron/{q0/q0.c => switch_pad/halconf.h} (88%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/switch_pad/info.json
create mode 100755 keyboards/keychron/switch_pad/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/switch_pad/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/switch_pad/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/switch_pad/keymaps/via/keymap.c
rename keyboards/keychron/{q4/ansi_v1 => switch_pad}/keymaps/via/rules.mk (100%)
mode change 100644 => 100755
rename keyboards/keychron/{q2/ansi/keymaps/keychron/config.h => switch_pad/mcuconf.h} (84%)
mode change 100644 => 100755
create mode 100755 keyboards/keychron/switch_pad/readme.md
create mode 100755 keyboards/keychron/switch_pad/rules.mk
create mode 100755 keyboards/keychron/switch_pad/switch_pad.c
create mode 100644 keyboards/keychron/v1/ansi/keymaps/vnmm/keymap.c
create mode 100644 keyboards/keychron/v1/ansi/keymaps/vnmm/readme.md
rename keyboards/keychron/{q4/ansi_v2/keymaps/via => v1/ansi/keymaps/vnmm}/rules.mk (100%)
create mode 100644 keyboards/keychron/v1/matrix.c
rename keyboards/keychron/{q5 => v10}/matrix.c (71%)
delete mode 100644 keyboards/keychron/v2/ansi/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v2/ansi/keymaps/via/config.h
create mode 100644 keyboards/keychron/v2/ansi/keymaps/vnmm/keymap.c
create mode 100644 keyboards/keychron/v2/ansi/keymaps/vnmm/readme.md
create mode 100644 keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk
delete mode 100644 keyboards/keychron/v2/ansi_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v2/ansi_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v2/iso/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v2/iso/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v2/iso_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v2/iso_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v2/jis/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v2/jis/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v2/jis_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v2/jis_encoder/keymaps/via/config.h
create mode 100644 keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/keymap.c
rename keyboards/keychron/{v6/jis_encoder/keymaps/via => v3/ansi_encoder/keymaps/vnmm}/rules.mk (100%)
create mode 100644 keyboards/keychron/v3/matrix.c
delete mode 100644 keyboards/keychron/v4/ansi/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v4/ansi/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v4/iso/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v4/iso/keymaps/via/config.h
create mode 100644 keyboards/keychron/v5/info.json
create mode 100644 keyboards/keychron/v5/matrix.c
create mode 100644 keyboards/keychron/v5/rules.mk
delete mode 100644 keyboards/keychron/v6/jis_encoder/info.json
delete mode 100644 keyboards/keychron/v6/jis_encoder/jis_encoder.c
delete mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/default/keymap.c
delete mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/default/rules.mk
delete mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/keychron/keymap.c
delete mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/keychron/rules.mk
delete mode 100644 keyboards/keychron/v6/jis_encoder/keymaps/via/keymap.c
delete mode 100644 keyboards/keychron/v6/jis_encoder/rules.mk
create mode 100644 keyboards/keychron/v6/matrix.c
delete mode 100644 keyboards/keychron/v7/ansi/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v7/ansi/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v7/iso/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v7/iso/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v8/ansi/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v8/ansi/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v8/ansi_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v8/ansi_encoder/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v8/iso/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v8/iso/keymaps/via/config.h
delete mode 100644 keyboards/keychron/v8/iso_encoder/keymaps/keychron/config.h
delete mode 100644 keyboards/keychron/v8/iso_encoder/keymaps/via/config.h
diff --git a/keyboards/keychron/q0/config.h b/keyboards/keychron/q0/config.h
index 840728a67ae6..a3a8728646d2 100644
--- a/keyboards/keychron/q0/config.h
+++ b/keyboards/keychron/q0/config.h
@@ -20,9 +20,6 @@
#define CKLED2001_CURRENT_TUNE \
{ 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70 }
-/* NKRO */
-#define FORCE_NKRO
-
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
@@ -33,55 +30,9 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
/* Factory test keys */
#define FN_KEY1 MO(1)
diff --git a/keyboards/keychron/q0/factory.c b/keyboards/keychron/q0/factory.c
deleted file mode 100644
index ed9b099e2339..000000000000
--- a/keyboards/keychron/q0/factory.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* 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 "keychron_ft_common.h"
-
-bool process_record_keychron_ft(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
-#if defined(FN_KEY1) || defined(FN_KEY2)
-# ifdef FN_KEY1
- case FN_KEY1: /* fall through */
-# endif
-# ifdef FN_KEY2
- case FN_KEY2:
-# endif
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_0;
- } else {
- key_press_status &= ~KEY_PRESS_STEP_0;
- timer_3s_buffer = 0;
- }
- return true;
-#endif
- case RGB_SAD:
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_1;
- if (key_press_status == KEY_PRESS_FACTORY_RESET) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
- } else {
- }
- } else {
- rgb_matrix_decrease_sat_noeeprom();
- key_press_status &= ~KEY_PRESS_STEP_1;
- timer_3s_buffer = 0;
- }
- return false; // Skip all further processing of this key
- case RGB_HUD:
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_2;
- if (key_press_status == KEY_PRESS_FACTORY_RESET) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
- } else {
- }
- } else {
- rgb_matrix_decrease_hue_noeeprom();
- key_press_status &= ~KEY_PRESS_STEP_2;
- timer_3s_buffer = 0;
- }
- return false; // Skip all further processing of this key
- case KC_MPLY:
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_3;
- if (led_test_mode) {
- if (++led_test_mode >= LED_TEST_MODE_MAX) {
- led_test_mode = LED_TEST_MODE_WHITE;
- }
- } else if (key_press_status == KEY_PRESS_LED_TEST) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
- }
- } else {
- key_press_status &= ~KEY_PRESS_STEP_3;
- timer_3s_buffer = 0;
- }
- return true;
- case KC_DEL:
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_4;
- if (led_test_mode) {
- led_test_mode = LED_TEST_MODE_OFF;
- } else if (key_press_status == KEY_PRESS_LED_TEST) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
- }
- } else {
- key_press_status &= ~KEY_PRESS_STEP_4;
- timer_3s_buffer = 0;
- }
- return true;
- default:
- return true;
- }
-}
diff --git a/keyboards/keychron/q0/halconf.h b/keyboards/keychron/q0/halconf.h
index 463d177eabc7..e490b49e005a 100644
--- a/keyboards/keychron/q0/halconf.h
+++ b/keyboards/keychron/q0/halconf.h
@@ -17,8 +17,6 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
+#define PAL_USE_CALLBACKS TRUE
#include_next
diff --git a/keyboards/keychron/q0/info.json b/keyboards/keychron/q0/info.json
new file mode 100644
index 000000000000..5aa75a85c225
--- /dev/null
+++ b/keyboards/keychron/q0/info.json
@@ -0,0 +1,48 @@
+{
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434",
+ "force_nkro": true
+ },
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": 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
+ }
+ }
+}
diff --git a/keyboards/keychron/q0/readme.md b/keyboards/keychron/q0/readme.md
index 24a6891046e4..2ad9c29ccf8c 100644
--- a/keyboards/keychron/q0/readme.md
+++ b/keyboards/keychron/q0/readme.md
@@ -6,7 +6,7 @@ A customizable number keypad.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q0
-* Hardware Availability: [Keychron Q0 QMK Custom Number Pad](https://www.keychron.com/products/keychron-q0-qmk-custom-number-pad)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
@@ -18,6 +18,11 @@ Flashing example for this keyboard:
make keychron/q0/rev_0130:default:flash
make keychron/q0/rev_0131:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button whitch is located directly below the key dot to the left side.
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).
diff --git a/keyboards/keychron/q0/rev_0130/config.h b/keyboards/keychron/q0/rev_0130/config.h
index 12ecfe135606..8a6efc8b1091 100644
--- a/keyboards/keychron/q0/rev_0130/config.h
+++ b/keyboards/keychron/q0/rev_0130/config.h
@@ -21,8 +21,7 @@
#define DRIVER_ADDR_1 0b1110100
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 21
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+#define RGB_MATRIX_LED_COUNT 21
/* 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
index 135dbd6cbc22..8ac3b96d569c 100644
--- a/keyboards/keychron/q0/rev_0130/info.json
+++ b/keyboards/keychron/q0/rev_0130/info.json
@@ -1,63 +1,74 @@
{
- "keyboard_name": "Keychron Q0",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
+ "keyboard_name": "Q0",
"usb": {
- "vid": "0x3434",
"pid": "0x0130",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "device_version": "1.0.2",
+ "force_nkro": true
},
"matrix_pins": {
"cols": ["A5", "A6", "A7", "B0"],
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
+ "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}
+ ]
+ },
"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": [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": [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": [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": [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": [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}
+ {"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/rev_0130/keymaps/default/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
index 87180ddc3d77..387ff2d6869b 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
+++ b/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
@@ -16,25 +16,22 @@
#include QMK_KEYBOARD_H
-enum layers {
- L0,
- L1
-};
+enum layers { _BASE, _FN1};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [L0] = LAYOUT_numpad_6x4(
- MO(L1), KC_ESC, KC_BSPC, KC_TAB,
+ [_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),
- [L1] = 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, _______)
+ [_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/keychron/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/keychron/keymap.c
index 5db4f6aa9fe2..4c257e909a2f 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q0/rev_0130/keymaps/keychron/keymap.c
@@ -18,45 +18,40 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-enum layers {
- L0,
- L1,
- L2,
- L3
-};
+enum layers { _BASE, _FN1, _RESERVED1, _RESERVED2 };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [L0] = LAYOUT_numpad_6x4(
- MO(L1), KC_ESC, KC_BSPC, KC_TAB,
+ [_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),
- [L1] = 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, _______),
+ [_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, _______),
- [L2] = LAYOUT_numpad_6x4(
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______),
+ [_RESERVED1] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______),
- [L3] = LAYOUT_numpad_6x4(
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______)
+ [_RESERVED2] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______)
};
void housekeeping_task_user(void) {
@@ -68,10 +63,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/keychron/rules.mk b/keyboards/keychron/q0/rev_0130/keymaps/keychron/rules.mk
index c7a537b5d6e0..f6b45fef46a0 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q0/rev_0130/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c factory.c
+include keyboards/keychron/common/common.mk
+SRC += keychron_ft_q0.c
+
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
index cd5b50d0ac8d..cf00b3656800 100644
--- a/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
+++ b/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
@@ -17,42 +17,43 @@
#include QMK_KEYBOARD_H
enum layers {
- L0,
- L1,
- L2,
- L3
+ _BASE,
+ _FN1,
+ _RESERVED1,
+ _RESERVED2,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [L0] = LAYOUT_numpad_6x4(
- MO(L1), KC_ESC, KC_BSPC, KC_TAB,
+ [_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),
- [L1] = 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, _______),
+ [_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, _______),
- [L2] = LAYOUT_numpad_6x4(
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______),
+ [_RESERVED1] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______),
- [L3] = LAYOUT_numpad_6x4(
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______,
- _______, _______, _______)
+ [_RESERVED2] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______)
};
diff --git a/keyboards/keychron/q0/rev_0130/readme.md b/keyboards/keychron/q0/rev_0130/readme.md
new file mode 100644
index 000000000000..a6db5bc015e7
--- /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
index 897f74ac2ce5..ffe82a6d8c7e 100644
--- a/keyboards/keychron/q0/rev_0130/rev_0130.c
+++ b/keyboards/keychron/q0/rev_0130/rev_0130.c
@@ -18,8 +18,10 @@
#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -52,37 +54,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{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,
- 8, 4, 4, 4,
- 4, 4, 4,
- 4, 4, 4, 4,
- 4, 4, 4,
- 4, 4, 4
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q0/rev_0130/rules.mk b/keyboards/keychron/q0/rev_0130/rules.mk
index 9077e5e2e345..6e7633bfe015 100644
--- a/keyboards/keychron/q0/rev_0130/rules.mk
+++ b/keyboards/keychron/q0/rev_0130/rules.mk
@@ -1,10 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-VPATH += keyboards/keychron/common
+# This file intentionally left blank
diff --git a/keyboards/keychron/q0/rev_0131/config.h b/keyboards/keychron/q0/rev_0131/config.h
index e4c5c2d3fc2a..982e5e1c4650 100644
--- a/keyboards/keychron/q0/rev_0131/config.h
+++ b/keyboards/keychron/q0/rev_0131/config.h
@@ -21,8 +21,7 @@
#define DRIVER_ADDR_1 0b1110111
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 26
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+#define RGB_MATRIX_LED_COUNT 26
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
@@ -30,5 +29,7 @@
/* Enable num-lock LED */
#define NUM_LOCK_LED_INDEX 5
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
diff --git a/keyboards/keychron/q0/rev_0131/info.json b/keyboards/keychron/q0/rev_0131/info.json
index d972fe04b688..b410f8b498b8 100644
--- a/keyboards/keychron/q0/rev_0131/info.json
+++ b/keyboards/keychron/q0/rev_0131/info.json
@@ -1,32 +1,16 @@
{
"keyboard_name": "Keychron Q0 Plus",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0131",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "device_version": "1.0.0"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2"],
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
- "diode_direction": "ROW2COL",
+ "features": {
+ "encoder": true
+ },
"encoder": {
"rotary": [
{"pin_a": "A3", "pin_b": "A4"}
@@ -35,43 +19,76 @@
"bootmagic": {
"matrix": [0, 1]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
+ "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}
+ ]
+ },
"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": [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": [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": [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": [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": [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}
+ {"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/rev_0131/keymaps/default/keymap.c b/keyboards/keychron/q0/rev_0131/keymaps/default/keymap.c
index ed9160d5ecd2..e28da8828a6d 100644
--- a/keyboards/keychron/q0/rev_0131/keymaps/default/keymap.c
+++ b/keyboards/keychron/q0/rev_0131/keymaps/default/keymap.c
@@ -16,34 +16,33 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers {
- L0,
- L1
+ BASE,
+ FUNC,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [L0] = LAYOUT_numpad_6x5(
- KC_MUTE, MO(L1), KC_ESC, KC_BSPC, KC_TAB,
+ [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 ),
+ _______, KC_P0, KC_PDOT),
- [L1] = LAYOUT_numpad_6x5(
+ [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 ),
+ _______, RGB_TOG, KC_MNXT),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [L0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [L1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+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/rev_0131/keymaps/keychron/keymap.c b/keyboards/keychron/q0/rev_0131/keymaps/keychron/keymap.c
index a34749676837..237d6b32d1fc 100644
--- a/keyboards/keychron/q0/rev_0131/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q0/rev_0131/keymaps/keychron/keymap.c
@@ -18,26 +18,25 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers {
- L0,
- L1,
+ BASE,
+ FUNC,
L2,
- L3
+ L3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [L0] = LAYOUT_numpad_6x5(
- KC_MUTE, MO(L1), KC_ESC, KC_BSPC, KC_TAB,
+ [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),
- [L1] = LAYOUT_numpad_6x5(
- RGB_TOG,_______, KC_MUTE, KC_VOLD, KC_VOLU,
+ [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,
@@ -50,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
- _______, _______, _______ ),
+ _______, _______, _______),
[L3] = LAYOUT_numpad_6x5(
_______, _______, _______, _______, _______,
@@ -58,13 +57,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
- _______, _______, _______ )
+ _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [L0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [L1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+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(_______, _______) }
};
@@ -81,10 +80,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/keychron/rules.mk b/keyboards/keychron/q0/rev_0131/keymaps/keychron/rules.mk
index c7a537b5d6e0..75d84e5f9ba2 100644
--- a/keyboards/keychron/q0/rev_0131/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q0/rev_0131/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c factory.c
+include keyboards/keychron/common/common.mk
+SRC += keychron_ft_q0.c
diff --git a/keyboards/keychron/q0/rev_0131/keymaps/via/keymap.c b/keyboards/keychron/q0/rev_0131/keymaps/via/keymap.c
index c5ab273f531f..f2678850597f 100644
--- a/keyboards/keychron/q0/rev_0131/keymaps/via/keymap.c
+++ b/keyboards/keychron/q0/rev_0131/keymaps/via/keymap.c
@@ -16,26 +16,25 @@
#include QMK_KEYBOARD_H
- // clang-format off
-
enum layers {
- L0,
- L1,
+ BASE,
+ FUNC,
L2,
- L3
+ L3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [L0] = LAYOUT_numpad_6x5(
- KC_MUTE, MO(L1), KC_ESC, KC_BSPC, KC_TAB,
+ [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),
- [L1] = LAYOUT_numpad_6x5(
- RGB_TOG,_______, KC_MUTE, KC_VOLD, KC_VOLU,
+ [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,
@@ -48,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
- _______, _______, _______ ),
+ _______, _______, _______),
[L3] = LAYOUT_numpad_6x5(
_______, _______, _______, _______, _______,
@@ -56,14 +55,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______, _______,
- _______, _______, _______ )
+ _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [L0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [L1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [L2] = { ENCODER_CCW_CW(_______, _______) },
- [L3] = { ENCODER_CCW_CW(_______, _______) }
+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/rev_0131/readme.md b/keyboards/keychron/q0/rev_0131/readme.md
index ad1e38c1968c..df07c40e49ae 100644
--- a/keyboards/keychron/q0/rev_0131/readme.md
+++ b/keyboards/keychron/q0/rev_0131/readme.md
@@ -1,12 +1,6 @@
-# Keychron Q0 Plus
+# The enhanced version with encoder of the Keychron Q0
-![Keychron Q0 Plus](https://i.imgur.com/EDbfVVO.jpg[/img])
-
-* 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. Enable EC11 rotary encoder
-3. Turn clockwise to increase volume and turn anti-clockwise to decrease volume
-4. Press the knob button to mute
+- The name of this keyboard is "Q0 Plus"
+- Enable 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/rev_0131/rev_0131.c b/keyboards/keychron/q0/rev_0131/rev_0131.c
index e4ecb4d87d06..282c511ce2ea 100644
--- a/keyboards/keychron/q0/rev_0131/rev_0131.c
+++ b/keyboards/keychron/q0/rev_0131/rev_0131.c
@@ -18,8 +18,10 @@
#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -57,37 +59,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_7, D_7, E_7},
{0, F_9, D_9, E_9},
};
-
-#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, 11, 12, 13 },
- { 14, 15, 16, 17, __ },
- { 18, 19, 20, 21, 22 },
- { 23, 24, __, 25, __ },
- },
- {
- // LED Index to Physical Position
- {56,0}, {112,0}, {168,0}, {224,0},
- {0,15}, {56,15}, {112,15}, {168,15}, {224,15},
- {0,27}, {56,27}, {112,27}, {168,27}, {224,34},
- {0,40}, {56,40}, {112,40}, {168,40},
- {0,52}, {56,52}, {112,52}, {168,52}, {224,58},
- {0,64}, {84,64}, {168,64},
- },
- {
- // LED Index to Flag
- 1, 1, 1, 1,
- 4, 8, 4, 4, 4,
- 4, 4, 4, 4, 4,
- 4, 4, 4, 4,
- 4, 4, 4, 4, 4,
- 4, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q0/rev_0131/rules.mk b/keyboards/keychron/q0/rev_0131/rules.mk
index 9077e5e2e345..6e7633bfe015 100644
--- a/keyboards/keychron/q0/rev_0131/rules.mk
+++ b/keyboards/keychron/q0/rev_0131/rules.mk
@@ -1,10 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-VPATH += keyboards/keychron/common
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/config.h b/keyboards/keychron/q1/ansi_atmega32u4/config.h
deleted file mode 100644
index ac1b3f7f0e11..000000000000
--- a/keyboards/keychron/q1/ansi_atmega32u4/config.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 0, 1 } }
-#define SCAN_COUNT_MAX 100
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1011111
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 59
-#define DRIVER_2_LED_TOTAL 23
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/info.json b/keyboards/keychron/q1/ansi_atmega32u4/info.json
deleted file mode 100644
index 4b32ad563ce9..000000000000
--- a/keyboards/keychron/q1/ansi_atmega32u4/info.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0100",
- "device_version": "1.1.0"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true,
- "lto": true
- },
- "rgb_matrix": {
- "driver": "IS31FL3733"
- },
- "matrix_pins": {
- "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
- "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
- },
- "diode_direction": "ROW2COL",
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_ansi_82": {
- "layout": [
- {"matrix":[0,0], "x":0, "y":0},
- {"matrix":[0,2], "x":1.25, "y":0},
- {"matrix":[0,3], "x":2.25, "y":0},
- {"matrix":[0,4], "x":3.25, "y":0},
- {"matrix":[0,5], "x":4.25, "y":0},
- {"matrix":[0,6], "x":5.5, "y":0},
- {"matrix":[0,7], "x":6.5, "y":0},
- {"matrix":[0,8], "x":7.5, "y":0},
- {"matrix":[0,9], "x":8.5, "y":0},
- {"matrix":[0,10], "x":9.75, "y":0},
- {"matrix":[0,11], "x":10.75, "y":0},
- {"matrix":[0,12], "x":11.75, "y":0},
- {"matrix":[0,13], "x":12.75, "y":0},
- {"matrix":[4,14], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
-
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
-
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
-
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,14], "x":15.25, "y":3.25},
-
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[3,12], "x":14.25, "y":4.5},
-
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[4,12], "x":14.25, "y":5.5},
- {"matrix":[5,14], "x":15.25, "y":5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/rules.mk
deleted file mode 100644
index dac903490f12..000000000000
--- a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/ansi_atmega32u4_encoder.c b/keyboards/keychron/q1/ansi_atmega32u4_encoder/ansi_atmega32u4_encoder.c
deleted file mode 100644
index dcc3eccb9afc..000000000000
--- a/keyboards/keychron/q1/ansi_atmega32u4_encoder/ansi_atmega32u4_encoder.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/* 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 .
- */
-
-#include "quantum.h"
-#include
-#include
-
-const matrix_row_t matrix_mask[] = {
- 0b111111111111101,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
-};
-
-#ifdef RGB_MATRIX_ENABLE
-
-const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to IS31 manual for these locations
- * driver
- * | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, C_1, A_1, B_1},
- {0, C_3, A_3, B_3},
- {0, C_4, A_4, B_4},
- {0, C_5, A_5, B_5},
- {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, C_11, A_11, B_11},
- {0, C_12, A_12, B_12},
- {0, C_13, A_13, B_13},
- {0, C_14, A_14, B_14},
- {0, C_15, A_15, B_15},
- {0, C_16, A_16, B_16},
-
- {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, F_6, D_6, E_6},
- {0, F_7, D_7, E_7},
- {0, F_8, D_8, E_8},
- {0, F_9, D_9, E_9},
- {0, F_10, D_10, E_10},
- {0, F_11, D_11, E_11},
- {0, F_12, D_12, E_12},
- {0, F_13, D_13, E_13},
- {0, F_14, D_14, E_14},
- {0, F_16, D_16, E_16},
-
- {0, I_1, G_1, H_1},
- {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, 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, I_10, G_10, H_10},
- {0, I_11, G_11, H_11},
- {0, I_12, G_12, H_12},
- {0, I_13, G_13, H_13},
- {0, I_14, G_14, H_14},
- {0, I_16, G_16, H_16},
-
- {0, L_1, J_1, K_1},
- {0, L_2, J_2, K_2},
- {0, L_3, J_3, K_3},
- {0, L_4, J_4, K_4},
- {0, L_5, J_5, K_5},
- {0, L_6, J_6, K_6},
- {0, L_7, J_7, K_7},
- {0, L_8, J_8, K_8},
- {0, L_9, J_9, K_9},
- {0, L_10, J_10, K_10},
- {0, L_11, J_11, K_11},
- {0, L_12, J_12, K_12},
- {0, L_14, J_14, K_14},
- {0, L_16, J_16, K_16},
-
- {1, C_1, A_1, B_1},
- {1, C_3, A_3, B_3},
- {1, C_4, A_4, B_4},
- {1, C_5, A_5, B_5},
- {1, C_6, A_6, B_6},
- {1, C_7, A_7, B_7},
- {1, C_8, A_8, B_8},
- {1, C_9, A_9, B_9},
- {1, C_10, A_10, B_10},
- {1, C_11, A_11, B_11},
- {1, C_12, A_12, B_12},
- {1, C_14, A_14, B_14},
- {1, C_15, A_15, B_15},
-
- {1, F_1, D_1, E_1},
- {1, F_2, D_2, E_2},
- {1, F_3, D_3, E_3},
- {1, F_7, D_7, E_7},
- {1, F_11, D_11, E_11},
- {1, F_12, D_12, E_12},
- {1, F_13, D_13, E_13},
- {1, F_14, D_14, E_14},
- {1, F_15, D_15, E_15},
- {1, F_16, D_16, E_16}
-};
-
-#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, 11, 12, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
- { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
- { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 81 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
- {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
- {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
- {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
- {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
- {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif
-
-#ifdef ENCODER_ENABLE
-
-void keyboard_post_init_kb(void) {
- PCMSK0 |= (1 << 7);
- PCICR |= (1 << PCIE0);
- sei();
-
- // allow user keymaps to do custom post_init
- keyboard_post_init_user();
-}
-
-ISR(PCINT0_vect) {
- encoder_inerrupt_read(0);
-}
-
-#endif
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/info.json b/keyboards/keychron/q1/ansi_atmega32u4_encoder/info.json
deleted file mode 100644
index 905c1aa03be7..000000000000
--- a/keyboards/keychron/q1/ansi_atmega32u4_encoder/info.json
+++ /dev/null
@@ -1,131 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0101",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": false,
- "nkro": true,
- "rgb_matrix": true,
- "lto": true
- },
- "rgb_matrix": {
- "driver": "IS31FL3733"
- },
- "matrix_pins": {
- "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
- "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "E6", "pin_b": "B7"}
- ]
- },
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_ansi_82": {
- "layout": [
- {"matrix":[0,0], "x":0, "y":0},
- {"matrix":[0,2], "x":1.25, "y":0},
- {"matrix":[0,3], "x":2.25, "y":0},
- {"matrix":[0,4], "x":3.25, "y":0},
- {"matrix":[0,5], "x":4.25, "y":0},
- {"matrix":[0,6], "x":5.5, "y":0},
- {"matrix":[0,7], "x":6.5, "y":0},
- {"matrix":[0,8], "x":7.5, "y":0},
- {"matrix":[0,9], "x":8.5, "y":0},
- {"matrix":[0,10], "x":9.75, "y":0},
- {"matrix":[0,11], "x":10.75, "y":0},
- {"matrix":[0,12], "x":11.75, "y":0},
- {"matrix":[0,13], "x":12.75, "y":0},
- {"matrix":[4,14], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
-
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
-
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
-
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,14], "x":15.25, "y":3.25},
-
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[3,12], "x":14.25, "y":4.5},
-
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[4,12], "x":14.25, "y":5.5},
- {"matrix":[5,14], "x":15.25, "y":5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 88c27a468a8b..000000000000
--- a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/ansi_stm32l432/config.h b/keyboards/keychron/q1/ansi_stm32l432/config.h
deleted file mode 100644
index 7e74bb9c00b3..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432/config.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110111
-#define DRIVER_ADDR_2 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
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 37
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-
-/* EEPROM Driver Configuration */
-#define WEAR_LEVELING_LOGICAL_SIZE 2048
-#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/ansi_stm32l432/info.json b/keyboards/keychron/q1/ansi_stm32l432/info.json
deleted file mode 100644
index 35bdb5da018b..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432/info.json
+++ /dev/null
@@ -1,125 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0106",
- "device_version": "2.0.5"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_ansi_82": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/rules.mk
deleted file mode 100644
index 65df6fb72655..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-VIA_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/ansi_stm32l432/rules.mk b/keyboards/keychron/q1/ansi_stm32l432/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/info.json b/keyboards/keychron/q1/ansi_stm32l432_encoder/info.json
deleted file mode 100644
index 24e988646694..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/info.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0107",
- "device_version": "2.0.6"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "A10", "pin_b": "A8"}
- ]
- },
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_ansi_82": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/rules.mk
deleted file mode 100644
index ee325681483f..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 340c028b389c..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/rules.mk
deleted file mode 100644
index ee325681483f..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk b/keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/q1/config.h b/keyboards/keychron/q1/config.h
deleted file mode 100644
index b421be6902d6..000000000000
--- a/keyboards/keychron/q1/config.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* Disable DIP switch in matrix data */
-#define MATRIX_MASKED
-
-/* Disable RGB lighting when PC is in suspend */
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-
-// RGB Matrix Animation modes. Explicitly enabled
-// For full list of effects, see:
-// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
-
-#define HC595_STCP B0
-#define HC595_SHCP B1
-#define HC595_DS A7
diff --git a/keyboards/keychron/q1/iso_atmega32u4/config.h b/keyboards/keychron/q1/iso_atmega32u4/config.h
deleted file mode 100644
index 805e63cc2f68..000000000000
--- a/keyboards/keychron/q1/iso_atmega32u4/config.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 0, 1 } }
-#define SCAN_COUNT_MAX 100
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1011111
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 59
-#define DRIVER_2_LED_TOTAL 24
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/q1/iso_atmega32u4/info.json b/keyboards/keychron/q1/iso_atmega32u4/info.json
deleted file mode 100644
index 7c87b4997fea..000000000000
--- a/keyboards/keychron/q1/iso_atmega32u4/info.json
+++ /dev/null
@@ -1,127 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0102",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true,
- "lto": true
- },
- "rgb_matrix": {
- "driver": "IS31FL3733"
- },
- "matrix_pins": {
- "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
- "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
- },
- "diode_direction": "ROW2COL",
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_iso_83": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 2], "x":1.25, "y":0},
- {"matrix":[0, 3], "x":2.25, "y":0},
- {"matrix":[0, 4], "x":3.25, "y":0},
- {"matrix":[0, 5], "x":4.25, "y":0},
- {"matrix":[0, 6], "x":5.5, "y":0},
- {"matrix":[0, 7], "x":6.5, "y":0},
- {"matrix":[0, 8], "x":7.5, "y":0},
- {"matrix":[0, 9], "x":8.5, "y":0},
- {"matrix":[0,10], "x":9.75, "y":0},
- {"matrix":[0,11], "x":10.75, "y":0},
- {"matrix":[0,12], "x":11.75, "y":0},
- {"matrix":[0,13], "x":12.75, "y":0},
- {"matrix":[4,14], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,14], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[3,12], "x":14.25, "y":4.5},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[4,12], "x":14.25, "y":5.5},
- {"matrix":[5,14], "x":15.25, "y":5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/rules.mk
deleted file mode 100644
index dac903490f12..000000000000
--- a/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/info.json b/keyboards/keychron/q1/iso_atmega32u4_encoder/info.json
deleted file mode 100644
index 6d4a103c9666..000000000000
--- a/keyboards/keychron/q1/iso_atmega32u4_encoder/info.json
+++ /dev/null
@@ -1,132 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0103",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": false,
- "nkro": true,
- "rgb_matrix": true,
- "lto": true
- },
- "rgb_matrix": {
- "driver": "IS31FL3733"
- },
- "matrix_pins": {
- "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
- "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "E6", "pin_b": "B7"}
- ]
- },
- "processor": "atmega32u4",
- "bootloader": "atmel-dfu",
- "layouts": {
- "LAYOUT_iso_83": {
- "layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 2], "x":1.25, "y":0},
- {"matrix":[0, 3], "x":2.25, "y":0},
- {"matrix":[0, 4], "x":3.25, "y":0},
- {"matrix":[0, 5], "x":4.25, "y":0},
- {"matrix":[0, 6], "x":5.5, "y":0},
- {"matrix":[0, 7], "x":6.5, "y":0},
- {"matrix":[0, 8], "x":7.5, "y":0},
- {"matrix":[0, 9], "x":8.5, "y":0},
- {"matrix":[0,10], "x":9.75, "y":0},
- {"matrix":[0,11], "x":10.75, "y":0},
- {"matrix":[0,12], "x":11.75, "y":0},
- {"matrix":[0,13], "x":12.75, "y":0},
- {"matrix":[4,14], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,14], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[3,12], "x":14.25, "y":4.5},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[4,12], "x":14.25, "y":5.5},
- {"matrix":[5,14], "x":15.25, "y":5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/rules.mk
deleted file mode 100644
index ee325681483f..000000000000
--- a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 88c27a468a8b..000000000000
--- a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/iso_stm32l432/config.h b/keyboards/keychron/q1/iso_stm32l432/config.h
deleted file mode 100644
index b2840fd96754..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432/config.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110111
-#define DRIVER_ADDR_2 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
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 38
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-
-/* EEPROM Driver Configuration */
-#define WEAR_LEVELING_LOGICAL_SIZE 2048
-#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/q1/iso_stm32l432/info.json b/keyboards/keychron/q1/iso_stm32l432/info.json
deleted file mode 100644
index 20c589210a7f..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432/info.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0108",
- "device_version": "2.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_iso_83": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/rules.mk
deleted file mode 100644
index 65df6fb72655..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-VIA_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/iso_stm32l432/rules.mk b/keyboards/keychron/q1/iso_stm32l432/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/config.h b/keyboards/keychron/q1/iso_stm32l432_encoder/config.h
deleted file mode 100644
index 9207c9c09598..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/config.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110111
-#define DRIVER_ADDR_2 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
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 38
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
-
-/* EEPROM Driver Configuration */
-#define WEAR_LEVELING_LOGICAL_SIZE 2048
-#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/info.json b/keyboards/keychron/q1/iso_stm32l432_encoder/info.json
deleted file mode 100644
index 032de13df9a7..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/info.json
+++ /dev/null
@@ -1,131 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0109",
- "device_version": "2.0.5"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "A10", "pin_b": "A8"}
- ]
- },
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_iso_83": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/keymap.c
deleted file mode 100644
index f18150d42dbe..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/keymap.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
-};
-#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/rules.mk
deleted file mode 100644
index ee325681483f..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/keymap.c
deleted file mode 100644
index e35c81d5a512..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/keymap.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-#include "keychron_common.h"
-#include "keychron_ft_common.h"
-
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-// clang-format on
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
-};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
-
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (!process_record_keychron(keycode, record)) {
- return false;
- }
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
- return true;
-}
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 340c028b389c..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/keymap.c
deleted file mode 100644
index f18150d42dbe..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/keymap.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
-
- [WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
-};
-#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk b/keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/q1/jis_stm32l432/config.h b/keyboards/keychron/q1/jis_stm32l432/config.h
deleted file mode 100644
index 36c3bd7f2847..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432/config.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110111
-#define DRIVER_ADDR_2 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 30U
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 46
-#define DRIVER_2_LED_TOTAL 40
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE { 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D }
-
-/* EEPROM Driver Configuration */
-#define WEAR_LEVELING_LOGICAL_SIZE 2048
-#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/jis_stm32l432/info.json b/keyboards/keychron/q1/jis_stm32l432/info.json
deleted file mode 100644
index 1cdec1c13335..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432/info.json
+++ /dev/null
@@ -1,129 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x010A",
- "device_version": "2.0.4"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_jis_86": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.251},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[1,14], "x":14, "y":1.25},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[4,14], "x":14.25, "y":4.25},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25},
- {"matrix":[5,11], "x":11.25, "y":5.25},
- {"matrix":[5,12], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.25},
- {"matrix":[5,14], "x":14.25, "y":5.25},
- {"matrix":[5,15], "x":15.25, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/rules.mk b/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/rules.mk
deleted file mode 100644
index 65df6fb72655..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-VIA_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/jis_stm32l432/rules.mk b/keyboards/keychron/q1/jis_stm32l432/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/config.h b/keyboards/keychron/q1/jis_stm32l432_encoder/config.h
deleted file mode 100644
index 8b142a8f64a2..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/config.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* 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 .
- */
-
-#pragma once
-
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
-
-/* RGB Matrix Driver Configuration */
-#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1110111
-#define DRIVER_ADDR_2 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
-
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 46
-#define DRIVER_2_LED_TOTAL 40
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D }
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
-
-/* EEPROM Driver Configuration */
-#define WEAR_LEVELING_LOGICAL_SIZE 2048
-#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/info.json b/keyboards/keychron/q1/jis_stm32l432_encoder/info.json
deleted file mode 100644
index b5a1c3ece5ee..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/info.json
+++ /dev/null
@@ -1,134 +0,0 @@
-{
- "keyboard_name": "Keychron Q1",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x010B",
- "device_version": "2.0.4"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null , null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "A10", "pin_b": "A8"}
- ]
- },
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_jis_86": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
-
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.251},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[1,14], "x":14, "y":1.25},
- {"matrix":[1,15], "x":15.25, "y":1.25},
-
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
-
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[4,14], "x":14.25, "y":4.25},
-
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25},
- {"matrix":[5,11], "x":11.25, "y":5.25},
- {"matrix":[5,12], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.25},
- {"matrix":[5,14], "x":14.25, "y":5.25},
- {"matrix":[5,15], "x":15.25, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/rules.mk
deleted file mode 100644
index ee325681483f..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 340c028b389c..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk b/keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/q1/readme.md b/keyboards/keychron/q1/readme.md
deleted file mode 100644
index 0e0b1404eb9d..000000000000
--- a/keyboards/keychron/q1/readme.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# Keychron Q1
-
-![Keychron Q1](https://i.imgur.com/BbJNGLY.jpg)
-
-A customizable 75% keyboard.
-
-* Keyboard Maintainer: [Keychron](https://github.com/keychron)
-* Hardware Supported: Keychron Q1
-* Hardware Availability: [Keychron Q1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q1)
-
-Make example for this keyboard (after setting up your build environment):
-
- make keychron/q1/ansi_atmega32u4:default
- make keychron/q1/ansi_atmega32u4_encoder:default
- make keychron/q1/ansi_stm32l432:default
- make keychron/q1/ansi_stm32l432_encoder:default
- make keychron/q1/iso_atmega32u4:default
- make keychron/q1/iso_atmega32u4_encoder:default
- make keychron/q1/iso_stm32l432:default
- make keychron/q1/iso_stm32l432_encoder:default
- make keychron/q1/jis_stm32l432:default
- make keychron/q1/jis_stm32l432_encoder:default
-
-Flashing example for this keyboard:
-
- make keychron/q1/ansi_atmega32u4:default:flash
- make keychron/q1/ansi_atmega32u4_encoder:default:flash
- make keychron/q1/ansi_stm32l432:default:flash
- make keychron/q1/ansi_stm32l432_encoder:default:flash
- make keychron/q1/iso_atmega32u4:default:flash
- make keychron/q1/iso_atmega32u4_encoder:default:flash
- make keychron/q1/iso_stm32l432:default:flash
- make keychron/q1/iso_stm32l432_encoder:default:flash
- make keychron/q1/jis_stm32l432:default:flash
- make keychron/q1/jis_stm32l432_encoder:default:flash
-
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* 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).
diff --git a/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
index 10871ea92c0e..c5abcb4f6ee0 100644
--- a/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q10/ansi_encoder/ansi_encoder.c
@@ -21,12 +21,12 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, C_2, A_2, B_2}, // ESC
{0, C_3, A_3, B_3}, // F1
{0, C_4, A_4, B_4}, // F2
@@ -146,12 +146,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q10/ansi_encoder/info.json b/keyboards/keychron/q10/ansi_encoder/info.json
index d2b837767a7c..8a8a624154ac 100644
--- a/keyboards/keychron/q10/ansi_encoder/info.json
+++ b/keyboards/keychron/q10/ansi_encoder/info.json
@@ -5,28 +5,12 @@
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
- "pid": "0x03A1",
+ "pid": "0x01A1",
"device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -40,100 +24,100 @@
"layouts": {
"LAYOUT_ansi_89": {
"layout": [
- {"matrix":[0, 0], "x":0.25, "y":0},
- {"matrix":[0, 1], "x":1.75, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6, "y":0},
- {"matrix":[0, 6], "x":7.25, "y":0},
- {"matrix":[0, 7], "x":8.25, "y":0},
- {"matrix":[0, 8], "x":11, "y":0},
- {"matrix":[0, 9], "x":12, "y":0},
- {"matrix":[0,10], "x":13.25, "y":0},
- {"matrix":[0,11], "x":14.25, "y":0},
- {"matrix":[0,12], "x":15.25, "y":0},
- {"matrix":[0,13], "x":16.25, "y":0},
- {"matrix":[0,14], "x":17.5, "y":0},
- {"matrix":[0,15], "x":18.75, "y":0},
+ {"matrix": [0, 0], "x": 0.25, "y": 0},
+ {"matrix": [0, 1], "x": 1.75, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6, "y": 0},
+ {"matrix": [0, 6], "x": 7.25, "y": 0},
+ {"matrix": [0, 7], "x": 8.25, "y": 0},
+ {"matrix": [0, 8], "x": 11, "y": 0},
+ {"matrix": [0, 9], "x": 12, "y": 0},
+ {"matrix": [0, 10], "x": 13.25, "y": 0},
+ {"matrix": [0, 11], "x": 14.25, "y": 0},
+ {"matrix": [0, 12], "x": 15.25, "y": 0},
+ {"matrix": [0, 13], "x": 16.25, "y": 0},
+ {"matrix": [0, 14], "x": 17.5, "y": 0},
+ {"matrix": [0, 15], "x": 18.75, "y": 0},
- {"matrix":[1, 0], "x":0.75, "y":1.25},
- {"matrix":[1, 1], "x":2.25, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":7.25, "y":1.25},
- {"matrix":[1, 7], "x":8.25, "y":1.25},
- {"matrix":[1, 8], "x":10.5, "y":1.25},
- {"matrix":[1, 9], "x":11.5, "y":1.25},
- {"matrix":[1,10], "x":12.5, "y":1.25},
- {"matrix":[1,11], "x":13.5, "y":1.25},
- {"matrix":[1,12], "x":14.5, "y":1.25},
- {"matrix":[1,13], "x":15.5, "y":1.25},
- {"matrix":[1,14], "x":16.5, "y":1.25, "w":2},
- {"matrix":[1,15], "x":19, "y":1.25},
+ {"matrix": [1, 0], "x": 0.75, "y": 1.25},
+ {"matrix": [1, 1], "x": 2.25, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 7.25, "y": 1.25},
+ {"matrix": [1, 7], "x": 8.25, "y": 1.25},
+ {"matrix": [1, 8], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 13.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 14.5, "y": 1.25},
+ {"matrix": [1, 13], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 16.5, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 19, "y": 1.25},
- {"matrix":[2, 0], "x":0.5, "y":2.25},
- {"matrix":[2, 1], "x":1.75, "y":2.25, "w":1.5},
- {"matrix":[2, 2], "x":3.25, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 6], "x":7.5, "y":2.25},
- {"matrix":[2, 7], "x":10, "y":2.25},
- {"matrix":[2, 8], "x":11, "y":2.25},
- {"matrix":[2, 9], "x":12, "y":2.25},
- {"matrix":[2,10], "x":13, "y":2.25},
- {"matrix":[2,11], "x":14, "y":2.25},
- {"matrix":[2,12], "x":15.25, "y":2.25},
- {"matrix":[2,13], "x":16.25, "y":2.25},
- {"matrix":[2,14], "x":17.25, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":19.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0.5, "y": 2.25},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 2], "x": 3.25, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 10, "y": 2.25},
+ {"matrix": [2, 8], "x": 11, "y": 2.25},
+ {"matrix": [2, 9], "x": 12, "y": 2.25},
+ {"matrix": [2, 10], "x": 13, "y": 2.25},
+ {"matrix": [2, 11], "x": 14, "y": 2.25},
+ {"matrix": [2, 12], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 13], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 14], "x": 17.25, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 15], "x": 19.25, "y": 2.25},
- {"matrix":[3, 0], "x":0.25, "y":3.25},
- {"matrix":[3, 1], "x":1.5, "y":3.25, "w":1.75},
- {"matrix":[3, 2], "x":3.25, "y":3.25},
- {"matrix":[3, 3], "x":4.5, "y":3.25},
- {"matrix":[3, 4], "x":5.5, "y":3.25},
- {"matrix":[3, 5], "x":6.5, "y":3.25},
- {"matrix":[3, 6], "x":7.5, "y":3.25},
- {"matrix":[3, 8], "x":10.25, "y":3.25},
- {"matrix":[3, 9], "x":11.25, "y":3.25},
- {"matrix":[3,10], "x":12.25, "y":3.25},
- {"matrix":[3,11], "x":13.25, "y":3.25},
- {"matrix":[3,12], "x":14.75, "y":3.25},
- {"matrix":[3,13], "x":15.75, "y":3.25},
- {"matrix":[3,14], "x":16.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":19.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0.25, "y": 3.25},
+ {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 2], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 4.5, "y": 3.25},
+ {"matrix": [3, 4], "x": 5.5, "y": 3.25},
+ {"matrix": [3, 5], "x": 6.5, "y": 3.25},
+ {"matrix": [3, 6], "x": 7.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 13.25, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.75, "y": 3.25},
+ {"matrix": [3, 14], "x": 16.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 15], "x": 19.5, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25},
- {"matrix":[4, 1], "x":1.5, "y":4.25, "w":2.25},
- {"matrix":[4, 3], "x":3.5, "y":4.25},
- {"matrix":[4, 4], "x":4.75, "y":4.25},
- {"matrix":[4, 5], "x":5.75, "y":4.25},
- {"matrix":[4, 6], "x":6.75, "y":4.25},
- {"matrix":[4, 7], "x":7.75, "y":4.25},
- {"matrix":[4, 8], "x":9.5, "y":4.25},
- {"matrix":[4, 9], "x":10.5, "y":4.25},
- {"matrix":[4,10], "x":11.5, "y":4.25},
- {"matrix":[4,11], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":13.5, "y":4.25},
- {"matrix":[4,13], "x":15.25, "y":4.25},
- {"matrix":[4,14], "x":16.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":18.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25},
+ {"matrix": [4, 1], "x": 1.5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 4], "x": 4.75, "y": 4.25},
+ {"matrix": [4, 5], "x": 5.75, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.75, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.5, "y": 4.25},
+ {"matrix": [4, 9], "x": 10.5, "y": 4.25},
+ {"matrix": [4, 10], "x": 11.5, "y": 4.25},
+ {"matrix": [4, 11], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 13.5, "y": 4.25},
+ {"matrix": [4, 13], "x": 15.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 16.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 15], "x": 18.25, "y": 4.5},
- {"matrix":[5, 0], "x":0, "y":5.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":4.75, "y":5.25, "w":1.25},
- {"matrix":[5, 4], "x":6, "y":5.25, "w":2.25},
- {"matrix":[5, 7], "x":8.25, "y":5.25},
- {"matrix":[5, 8], "x":9.5, "y":5.25, "w":2.75},
- {"matrix":[5, 9], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":17.25, "y":5.5},
- {"matrix":[5,14], "x":18.25, "y":5.5},
- {"matrix":[5,15], "x":19.25, "y":5.5}
+ {"matrix": [5, 0], "x": 0, "y": 5.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 4.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 4], "x": 6, "y": 5.25, "w": 2.25},
+ {"matrix": [5, 7], "x": 8.25, "y": 5.25},
+ {"matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 2.75},
+ {"matrix": [5, 9], "x": 12.25, "y": 5.25},
+ {"matrix": [5, 13], "x": 17.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 18.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 19.25, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/q10/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q10/ansi_encoder/keymaps/default/keymap.c
index 67ead4fb653a..915ad3aa2a77 100644
--- a/keyboards/keychron/q10/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q10/ansi_encoder/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
_______, 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,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/keymap.c
index 5720b7a7f8b1..78ef658d2d4e 100644
--- a/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -62,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -74,17 +73,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q10/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q10/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q10/ansi_encoder/keymaps/via/keymap.c
index e89cf00f6707..c0927dcb1352 100644
--- a/keyboards/keychron/q10/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q10/ansi_encoder/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q10/ansi_encoder/readme.md b/keyboards/keychron/q10/ansi_encoder/readme.md
new file mode 100644
index 000000000000..6f7f579659a8
--- /dev/null
+++ b/keyboards/keychron/q10/ansi_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ANSI variant of the Keychron Q10
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top left key pushbutton to mute.
diff --git a/keyboards/keychron/q10/ansi_encoder/rules.mk b/keyboards/keychron/q10/ansi_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/q10/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q10/ansi_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q10/config.h b/keyboards/keychron/q10/config.h
index 1895c52910dd..0ef4edf245b8 100644
--- a/keyboards/keychron/q10/config.h
+++ b/keyboards/keychron/q10/config.h
@@ -16,6 +16,19 @@
#pragma once
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -30,13 +43,11 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 5 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {5,5} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -80,13 +91,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -101,10 +108,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
-
-#define HC595_STCP B0
-#define HC595_SHCP B1
-#define HC595_DS A7
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/q10/halconf.h b/keyboards/keychron/q10/halconf.h
index 463d177eabc7..41bddcb2799b 100644
--- a/keyboards/keychron/q10/halconf.h
+++ b/keyboards/keychron/q10/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/q10/iso_encoder/info.json b/keyboards/keychron/q10/iso_encoder/info.json
index 58de1af032b6..d7e1bf288539 100644
--- a/keyboards/keychron/q10/iso_encoder/info.json
+++ b/keyboards/keychron/q10/iso_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x01A3",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -40,101 +24,101 @@
"layouts": {
"LAYOUT_iso_90": {
"layout": [
- {"matrix":[0, 0], "x":0.25, "y":0},
- {"matrix":[0, 1], "x":1.75, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6, "y":0},
- {"matrix":[0, 6], "x":7.25, "y":0},
- {"matrix":[0, 7], "x":8.25, "y":0},
- {"matrix":[0, 8], "x":11, "y":0},
- {"matrix":[0, 9], "x":12, "y":0},
- {"matrix":[0,10], "x":13.25, "y":0},
- {"matrix":[0,11], "x":14.25, "y":0},
- {"matrix":[0,12], "x":15.25, "y":0},
- {"matrix":[0,13], "x":16.25, "y":0},
- {"matrix":[0,14], "x":17.5, "y":0},
- {"matrix":[0,15], "x":18.75, "y":0},
+ {"matrix": [0, 0], "x": 0.25, "y": 0},
+ {"matrix": [0, 1], "x": 1.75, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6, "y": 0},
+ {"matrix": [0, 6], "x": 7.25, "y": 0},
+ {"matrix": [0, 7], "x": 8.25, "y": 0},
+ {"matrix": [0, 8], "x": 11, "y": 0},
+ {"matrix": [0, 9], "x": 12, "y": 0},
+ {"matrix": [0, 10], "x": 13.25, "y": 0},
+ {"matrix": [0, 11], "x": 14.25, "y": 0},
+ {"matrix": [0, 12], "x": 15.25, "y": 0},
+ {"matrix": [0, 13], "x": 16.25, "y": 0},
+ {"matrix": [0, 14], "x": 17.5, "y": 0},
+ {"matrix": [0, 15], "x": 18.75, "y": 0},
- {"matrix":[1, 0], "x":0.75, "y":1.25},
- {"matrix":[1, 1], "x":2.25, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":7.25, "y":1.25},
- {"matrix":[1, 7], "x":8.25, "y":1.25},
- {"matrix":[1, 8], "x":10.5, "y":1.25},
- {"matrix":[1, 9], "x":11.5, "y":1.25},
- {"matrix":[1,10], "x":12.5, "y":1.25},
- {"matrix":[1,11], "x":13.5, "y":1.25},
- {"matrix":[1,12], "x":14.5, "y":1.25},
- {"matrix":[1,13], "x":15.5, "y":1.25},
- {"matrix":[1,14], "x":16.5, "y":1.25, "w":2},
- {"matrix":[1,15], "x":19, "y":1.25},
+ {"matrix": [1, 0], "x": 0.75, "y": 1.25},
+ {"matrix": [1, 1], "x": 2.25, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 7.25, "y": 1.25},
+ {"matrix": [1, 7], "x": 8.25, "y": 1.25},
+ {"matrix": [1, 8], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 13.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 14.5, "y": 1.25},
+ {"matrix": [1, 13], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 16.5, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 19, "y": 1.25},
- {"matrix":[2, 0], "x":0.5, "y":2.25},
- {"matrix":[2, 1], "x":1.75, "y":2.25, "w":1.5},
- {"matrix":[2, 2], "x":3.25, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 6], "x":7.5, "y":2.25},
- {"matrix":[2, 7], "x":10, "y":2.25},
- {"matrix":[2, 8], "x":11, "y":2.25},
- {"matrix":[2, 9], "x":12, "y":2.25},
- {"matrix":[2,10], "x":13, "y":2.25},
- {"matrix":[2,11], "x":14, "y":2.25},
- {"matrix":[2,12], "x":15.25, "y":2.25},
- {"matrix":[2,13], "x":16.25, "y":2.25},
- {"matrix":[2,15], "x":19.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0.5, "y": 2.25},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 2], "x": 3.25, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 10, "y": 2.25},
+ {"matrix": [2, 8], "x": 11, "y": 2.25},
+ {"matrix": [2, 9], "x": 12, "y": 2.25},
+ {"matrix": [2, 10], "x": 13, "y": 2.25},
+ {"matrix": [2, 11], "x": 14, "y": 2.25},
+ {"matrix": [2, 12], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 13], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 19.25, "y": 2.25},
- {"matrix":[3, 0], "x":0.25, "y":3.25},
- {"matrix":[3, 1], "x":1.5, "y":3.25, "w":1.75},
- {"matrix":[3, 2], "x":3.25, "y":3.25},
- {"matrix":[3, 3], "x":4.5, "y":3.25},
- {"matrix":[3, 4], "x":5.5, "y":3.25},
- {"matrix":[3, 5], "x":6.5, "y":3.25},
- {"matrix":[3, 6], "x":7.5, "y":3.25},
- {"matrix":[3, 8], "x":10.25, "y":3.25},
- {"matrix":[3, 9], "x":11.25, "y":3.25},
- {"matrix":[3,10], "x":12.25, "y":3.25},
- {"matrix":[3,11], "x":13.25, "y":3.25},
- {"matrix":[3,12], "x":14.75, "y":3.25},
- {"matrix":[3,13], "x":15.75, "y":3.25},
- {"matrix":[3,14], "x":16.75, "y":3.25},
- {"matrix":[2,14], "x":17.75, "y":3.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":19.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0.25, "y": 3.25},
+ {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 2], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 4.5, "y": 3.25},
+ {"matrix": [3, 4], "x": 5.5, "y": 3.25},
+ {"matrix": [3, 5], "x": 6.5, "y": 3.25},
+ {"matrix": [3, 6], "x": 7.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 13.25, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.75, "y": 3.25},
+ {"matrix": [3, 14], "x": 16.75, "y": 3.25},
+ {"matrix": [2, 14], "x": 17.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 19.5, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25},
- {"matrix":[4, 1], "x":1.5, "y":4.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25},
- {"matrix":[4, 3], "x":3.5, "y":4.25},
- {"matrix":[4, 4], "x":4.75, "y":4.25},
- {"matrix":[4, 5], "x":5.75, "y":4.25},
- {"matrix":[4, 6], "x":6.75, "y":4.25},
- {"matrix":[4, 7], "x":7.75, "y":4.25},
- {"matrix":[4, 8], "x":9.5, "y":4.25},
- {"matrix":[4, 9], "x":10.5, "y":4.25},
- {"matrix":[4,10], "x":11.5, "y":4.25},
- {"matrix":[4,11], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":13.5, "y":4.25},
- {"matrix":[4,13], "x":15.25, "y":4.25},
- {"matrix":[4,14], "x":16.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":18.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25},
+ {"matrix": [4, 1], "x": 1.5, "y": 4.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 4], "x": 4.75, "y": 4.25},
+ {"matrix": [4, 5], "x": 5.75, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.75, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.5, "y": 4.25},
+ {"matrix": [4, 9], "x": 10.5, "y": 4.25},
+ {"matrix": [4, 10], "x": 11.5, "y": 4.25},
+ {"matrix": [4, 11], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 13.5, "y": 4.25},
+ {"matrix": [4, 13], "x": 15.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 16.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 15], "x": 18.25, "y": 4.5},
- {"matrix":[5, 0], "x":0, "y":5.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":4.75, "y":5.25, "w":1.25},
- {"matrix":[5, 4], "x":6, "y":5.25, "w":2.25},
- {"matrix":[5, 7], "x":8.25, "y":5.25},
- {"matrix":[5, 8], "x":9.5, "y":5.25, "w":2.75},
- {"matrix":[5, 9], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":17.25, "y":5.5},
- {"matrix":[5,14], "x":18.25, "y":5.5},
- {"matrix":[5,15], "x":19.25, "y":5.5}
+ {"matrix": [5, 0], "x": 0, "y": 5.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 4.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 4], "x": 6, "y": 5.25, "w": 2.25},
+ {"matrix": [5, 7], "x": 8.25, "y": 5.25},
+ {"matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 2.75},
+ {"matrix": [5, 9], "x": 12.25, "y": 5.25},
+ {"matrix": [5, 13], "x": 17.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 18.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 19.25, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/q10/iso_encoder/iso_encoder.c b/keyboards/keychron/q10/iso_encoder/iso_encoder.c
index a54d35a14221..1e8f80ddd875 100644
--- a/keyboards/keychron/q10/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q10/iso_encoder/iso_encoder.c
@@ -147,12 +147,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q10/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q10/iso_encoder/keymaps/default/keymap.c
index 43bc2c099d61..77a26f1e991b 100644
--- a/keyboards/keychron/q10/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q10/iso_encoder/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
_______, 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_NUHS, KC_ENT, KC_HOME,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q10/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q10/iso_encoder/keymaps/keychron/keymap.c
index a37afe78dd66..6e024df8b7b5 100644
--- a/keyboards/keychron/q10/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q10/iso_encoder/keymaps/keychron/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -62,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -74,17 +73,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q10/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q10/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/q10/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q10/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q10/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q10/iso_encoder/keymaps/via/keymap.c
index b72de370067d..338bd34b314a 100644
--- a/keyboards/keychron/q10/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q10/iso_encoder/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q10/iso_encoder/readme.md b/keyboards/keychron/q10/iso_encoder/readme.md
new file mode 100644
index 000000000000..e66322443a08
--- /dev/null
+++ b/keyboards/keychron/q10/iso_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ISO variant of the Keychron Q10
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top left key pushbutton to mute.
diff --git a/keyboards/keychron/q10/iso_encoder/rules.mk b/keyboards/keychron/q10/iso_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/q10/iso_encoder/rules.mk
+++ b/keyboards/keychron/q10/iso_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q10/matrix.c b/keyboards/keychron/q10/matrix.c
new file mode 100644
index 000000000000..5c035b0e42ec
--- /dev/null
+++ b/keyboards/keychron/q10/matrix.c
@@ -0,0 +1,208 @@
+/* Copyright 2021 @ 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 "matrix.h"
+#include "quantum.h"
+
+// Pin connected to DS of 74HC595
+#define DATA_PIN A7
+// Pin connected to SH_CP of 74HC595
+#define CLOCK_PIN B1
+// Pin connected to ST_CP of 74HC595
+#define LATCH_PIN B0
+
+#ifdef MATRIX_ROW_PINS
+static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+#endif // MATRIX_ROW_PINS
+#ifdef MATRIX_COL_PINS
+static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif // MATRIX_COL_PINS
+
+#define ROWS_PER_HAND (MATRIX_ROWS)
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinLow(pin);
+ }
+}
+
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinHigh(pin);
+ }
+}
+
+static inline void setPinInputHigh_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinInputHigh(pin);
+ }
+}
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+static void shiftOutMultiple(uint16_t dataOut) {
+ for (uint8_t i = 0; i < 8; i++) {
+ if (dataOut & 0x1) {
+ setPinOutput_writeHigh(DATA_PIN);
+ } else {
+ setPinOutput_writeLow(DATA_PIN);
+ }
+ dataOut = dataOut >> 1;
+ setPinOutput_writeHigh(CLOCK_PIN);
+ setPinOutput_writeLow(CLOCK_PIN);
+ }
+ setPinOutput_writeHigh(LATCH_PIN);
+ setPinOutput_writeLow(LATCH_PIN);
+}
+
+static void shiftOut_single(uint8_t dataOut) {
+ if (dataOut & 0x1) {
+ setPinOutput_writeHigh(DATA_PIN);
+ } else {
+ setPinOutput_writeLow(DATA_PIN);
+ }
+ setPinOutput_writeHigh(CLOCK_PIN);
+ setPinOutput_writeLow(CLOCK_PIN);
+ setPinOutput_writeHigh(LATCH_PIN);
+ setPinOutput_writeLow(LATCH_PIN);
+}
+
+static bool select_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+ setPinOutput_writeLow(pin);
+ return true;
+ } else {
+ if (col == (MATRIX_COLS - 8)) {
+ shiftOut_single(0x00);
+ } else {
+ shiftOut_single(0x01);
+ }
+ return true;
+ }
+ return false;
+}
+
+static void unselect_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ if (col == (MATRIX_COLS - 1)) {
+ setPinOutput_writeHigh(CLOCK_PIN);
+ setPinOutput_writeLow(CLOCK_PIN);
+ setPinOutput_writeHigh(LATCH_PIN);
+ setPinOutput_writeLow(LATCH_PIN);
+ }
+ }
+}
+
+static void unselect_cols(void) {
+ // unselect column pins
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ pin_t pin = col_pins[x];
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ if (x == (MATRIX_COLS - 1)) {
+ // unselect Shift Register
+ shiftOutMultiple(0xFF);
+ }
+ }
+ }
+}
+
+static void matrix_init_pins(void) {
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ if (row_pins[x] != NO_PIN) {
+ setPinInputHigh_atomic(row_pins[x]);
+ }
+ }
+}
+
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ bool key_pressed = false;
+
+ // Select col
+ if (!select_col(current_col)) { // select col
+ return; // skip NO_PIN col
+ }
+
+ if (current_col < (MATRIX_COLS - 8)) {
+ matrix_output_select_delay();
+ } else {
+ matrix_output_select_delay();
+ matrix_output_select_delay();
+ matrix_output_select_delay();
+ matrix_output_select_delay();
+ }
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
+ // Check row pin state
+ if (readMatrixPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= row_shifter;
+ key_pressed = true;
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~row_shifter;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+ matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ matrix_init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
+
+ // Set col, read rows
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
+ matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
+ }
+
+ bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
+ if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
+
+ return changed;
+}
diff --git a/keyboards/keychron/q10/q10.c b/keyboards/keychron/q10/q10.c
index 66c66afd863f..455a2a25f28b 100644
--- a/keyboards/keychron/q10/q10.c
+++ b/keyboards/keychron/q10/q10.c
@@ -26,6 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
+
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -35,4 +36,52 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
+
+#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) {
+# ifdef RGB_MATRIX_ENABLE
+ 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;
+# endif
+ }
+ 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;
+ }
+
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q10/readme.md b/keyboards/keychron/q10/readme.md
index 8089bb447a27..ad3c5ebf4117 100644
--- a/keyboards/keychron/q10/readme.md
+++ b/keyboards/keychron/q10/readme.md
@@ -1,22 +1,18 @@
# Keychron Q10
-![Keychron Q10](https://i.imgur.com/QhqPOQQ.jpg)
-
A customizable 75% ergonomic keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q10
-* Hardware Availability: [Keychron Q10 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q10-alice-layout-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/q10/ansi_encoder:default
- make keychron/q10/iso_encoder:default
Flashing example for this keyboard:
make keychron/q10/ansi_encoder:default:flash
- make keychron/q10/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
index c6ad346b2013..0585ae9c96d2 100755
--- a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,16 +16,14 @@
#include "quantum.h"
-// clang-format off
#ifdef RGB_MATRIX_ENABLE
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, A_2, C_2, B_2}, // ESC
{0, A_3, C_3, B_3}, // F1
{0, A_4, C_4, B_4}, // F2
@@ -127,55 +125,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, G_1, I_1, H_1}, // Down
{0, G_7, I_7, H_7}, // Right
};
-
-#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, 11, 12, 13, 14, __ },
- { 15, 16, 17, 18, 19, __, 20, 21, __ },
- { 22, 23, 24, 25, 26, 27, 28, __, __ },
- { 29, __, 30, 31, 32, 33, 34, 35, __ },
- { 36, 37, 38, 39, 40, __, 41, __, __ },
- { 42, 43, 44, 45, 46, 47, 48, 49, __ },
- { 50, 51, 52, 53, 54, 55, 56, __, 57 },
- { 58, 59, 60, 61, 62, 63, 64, 65, 66 },
- { 67, 68, 69, 70, 71, 72, __, 73, 74 },
- { 75, 76, 77, 78, 79, 80, __, 81, __ },
- { __, 82, 83, 84, 85, __, 86, 87, 88 },
- },
- {
- // LED Index to Physical Position
- {17,0}, {31,0}, {45,0}, {59,0}, {72,0}, {86,0}, {100,0},
- {0,15}, {17,15}, {31,15}, {45,15}, {59,15}, {72,15}, {86,15}, {100,15},
- {0,27}, {21,27}, {38,27}, {52,27}, {66,27}, {79,27}, {93,27},
- {0,40}, {22,40}, {41,40}, {55,40}, {69,40}, {83,40}, {97,40},
- {0,52}, {26,52}, {48,52}, {61,52}, {76,52}, {90,52}, {102,52},
- {0,64}, {19,64}, {36,64}, {53,64}, {70,64}, {94,64},
- {110,0}, {124,0}, {138,0}, {152,0}, {165,0}, {179,0}, {193,0}, {207,0},
- {110,15}, {124,15}, {138,15}, {152,15}, {165,15}, {179,15}, {200,15}, {224,15},
- {104,27}, {117,27}, {131,27}, {145,27}, {158,27}, {172,27}, {186,27}, {203,27}, {224,27},
- {107,40}, {121,40}, {134,40}, {148,40}, {162,40}, {176,40}, {198,40}, {224,40},
- {114,52}, {127,52}, {141,52}, {155,52}, {169,52}, {188,52}, {210,52},
- {126,64}, {152,64}, {166,64}, {180,64}, {196,64}, {210,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4,
- 1, 1, 4, 4, 4, 4, 4,
- 1, 8, 4, 4, 4, 4, 4,
- 1, 1, 4, 4, 4, 4, 4,
- 1, 1, 1, 1, 1, 4,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 4, 4, 1, 1,
- 4, 4, 4, 4, 4, 1, 1,
- 4, 1, 1, 1, 1, 1, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/q11/ansi_encoder/config.h b/keyboards/keychron/q11/ansi_encoder/config.h
index 4b7f798b8370..60bdc493de53 100755
--- a/keyboards/keychron/q11/ansi_encoder/config.h
+++ b/keyboards/keychron/q11/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 QMK
+/* 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
@@ -16,5 +16,8 @@
#pragma once
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 89
+
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 23
diff --git a/keyboards/keychron/q11/ansi_encoder/info.json b/keyboards/keychron/q11/ansi_encoder/info.json
index 50d1260a09cb..01a81619baa1 100755
--- a/keyboards/keychron/q11/ansi_encoder/info.json
+++ b/keyboards/keychron/q11/ansi_encoder/info.json
@@ -1,166 +1,105 @@
{
- "keyboard_name": "Keychron Q11",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "bootloader": "stm32-dfu",
- "bootmagic": {
- "matrix": [0, 1]
- },
- "features": {
- "audio": false,
- "backlight": false,
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true,
- "rgblight": false
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "B0", "pin_b": "B1"}
- ]
- },
- "matrix_pins": {
- "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "C15", null],
- "rows": ["A13", "A14", "A15", "B3", "B4", "B5"]
- },
- "processor": "STM32L432",
- "rgb_matrix": {
- "driver": "CKLED2001",
- "split_count": [42, 47]
- },
- "split": {
- "enabled": true,
- "encoder": {
- "right": {
- "rotary": [
- {"pin_a": "C14", "pin_b": "C15"}
- ]
- }
- },
- "matrix_pins": {
- "right": {
- "cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- }
- },
- "transport": {
- "protocol": "serial_usart",
- "sync_matrix_state": false
- }
- },
"usb": {
- "vid": "0x3434",
"pid": "0x01E0",
"device_version": "1.0.0"
},
- "layouts": {
- "LAYOUT_ansi_91": {
- "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":[0,5], "x":5.25, "y":0},
- {"matrix":[0,6], "x":6.25, "y":0},
- {"matrix":[0,7], "x":7.25, "y":0},
- {"matrix":[6,0], "x":8.25, "y":0},
- {"matrix":[6,1], "x":9.25, "y":0},
- {"matrix":[6,2], "x":10.25, "y":0},
- {"matrix":[6,3], "x":11.25, "y":0},
- {"matrix":[6,4], "x":12.25, "y":0},
- {"matrix":[6,5], "x":13.25, "y":0},
- {"matrix":[6,6], "x":14.25, "y":0},
- {"matrix":[6,7], "x":15.25, "y":0},
- {"matrix":[6,8], "x":16.5, "y":0},
+ "rgb_matrix": {
+ "split_count": [42, 47],
+ "layout": [
+ {"matrix":[0, 1], "flags":1, "x":17, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":45, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":59, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":72, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":86, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":100, "y":0},
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":1, "x":17, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":45, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":72, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":86, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":100, "y":15},
- {"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":[1,5], "x":5.25, "y":1.25},
- {"matrix":[1,6], "x":6.25, "y":1.25},
- {"matrix":[1,7], "x":7.25, "y":1.25},
- {"matrix":[7,0], "x":8.25, "y":1.25},
- {"matrix":[7,1], "x":9.25, "y":1.25},
- {"matrix":[7,2], "x":10.25, "y":1.25},
- {"matrix":[7,3], "x":11.25, "y":1.25},
- {"matrix":[7,4], "x":12.25, "y":1.25},
- {"matrix":[7,5], "x":13.25, "y":1.25},
- {"matrix":[7,6], "x":14.25, "y":1.25, "w":2},
- {"matrix":[7,8], "x":16.5, "y":1.25},
+ {"matrix":[2, 0], "flags":1, "x":0, "y":27},
+ {"matrix":[2, 1], "flags":1, "x":21, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":38, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":52, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":79, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":93, "y":27},
+ {"matrix":[3, 0], "flags":1, "x":0, "y":40},
+ {"matrix":[3, 1], "flags":8, "x":22, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":41, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":69, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":83, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":97, "y":40},
- {"matrix":[2,0], "x":0, "y":2.25},
- {"matrix":[2,1], "x":1.25, "y":2.25, "w":1.5},
- {"matrix":[2,2], "x":2.75, "y":2.25},
- {"matrix":[2,3], "x":3.75, "y":2.25},
- {"matrix":[2,4], "x":4.75, "y":2.25},
- {"matrix":[2,6], "x":5.75, "y":2.25},
- {"matrix":[2,7], "x":6.75, "y":2.25},
- {"matrix":[8,0], "x":7.75, "y":2.25},
- {"matrix":[8,1], "x":8.75, "y":2.25},
- {"matrix":[8,2], "x":9.75, "y":2.25},
- {"matrix":[8,3], "x":10.75, "y":2.25},
- {"matrix":[8,4], "x":11.75, "y":2.25},
- {"matrix":[8,5], "x":12.75, "y":2.25},
- {"matrix":[8,6], "x":13.75, "y":2.25},
- {"matrix":[8,7], "x":14.75, "y":2.25, "w":1.5},
- {"matrix":[8,8], "x":16.5, "y":2.25},
+ {"matrix":[4, 0], "flags":1, "x":0, "y":52},
+ {"matrix":[4, 2], "flags":1, "x":34, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":61, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":90, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":102, "y":52},
+ {"matrix":[5, 0], "flags":1, "x":0, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":19, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":36, "y":64},
+ {"matrix":[5, 3], "flags":1, "x":53, "y":64},
+ {"matrix":[5, 4], "flags":1, "x":70, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":64},
- {"matrix":[3,0], "x":0, "y":3.25},
- {"matrix":[3,1], "x":1.25, "y":3.25, "w":1.75},
- {"matrix":[3,2], "x":3, "y":3.25},
- {"matrix":[3,3], "x":4, "y":3.25},
- {"matrix":[3,4], "x":5, "y":3.25},
- {"matrix":[3,5], "x":6, "y":3.25},
- {"matrix":[3,6], "x":7, "y":3.25},
- {"matrix":[9,0], "x":8, "y":3.25},
- {"matrix":[9,1], "x":9, "y":3.25},
- {"matrix":[9,2], "x":10, "y":3.25},
- {"matrix":[9,3], "x":11, "y":3.25},
- {"matrix":[9,4], "x":12, "y":3.25},
- {"matrix":[9,5], "x":13, "y":3.25},
- {"matrix":[9,7], "x":14, "y":3.25, "w":2.25},
- {"matrix":[9,8], "x":16.5, "y":3.25},
+ {"matrix":[6, 0], "flags":1, "x":110, "y":0},
+ {"matrix":[6, 1], "flags":1, "x":124, "y":0},
+ {"matrix":[6, 2], "flags":1, "x":138, "y":0},
+ {"matrix":[6, 3], "flags":1, "x":152, "y":0},
+ {"matrix":[6, 4], "flags":1, "x":165, "y":0},
+ {"matrix":[6, 5], "flags":1, "x":179, "y":0},
+ {"matrix":[6, 6], "flags":1, "x":193, "y":0},
+ {"matrix":[6, 7], "flags":1, "x":207, "y":0},
+ {"matrix":[7, 0], "flags":4, "x":110, "y":15},
+ {"matrix":[7, 1], "flags":4, "x":124, "y":15},
+ {"matrix":[7, 2], "flags":4, "x":138, "y":15},
+ {"matrix":[7, 3], "flags":4, "x":152, "y":15},
+ {"matrix":[7, 4], "flags":4, "x":165, "y":15},
+ {"matrix":[7, 5], "flags":4, "x":179, "y":15},
+ {"matrix":[7, 6], "flags":1, "x":200, "y":15},
+ {"matrix":[7, 8], "flags":1, "x":224, "y":15},
- {"matrix":[4,0], "x":0, "y":4.25},
- {"matrix":[4,2], "x":1.25, "y":4.25, "w":2.25},
- {"matrix":[4,3], "x":3.5, "y":4.25},
- {"matrix":[4,4], "x":4.5, "y":4.25},
- {"matrix":[4,5], "x":5.5, "y":4.25},
- {"matrix":[4,6], "x":6.5, "y":4.25},
- {"matrix":[4,7], "x":7.5, "y":4.25},
- {"matrix":[10,0], "x":8.5, "y":4.25},
- {"matrix":[10,1], "x":9.5, "y":4.25},
- {"matrix":[10,2], "x":10.5, "y":4.25},
- {"matrix":[10,3], "x":11.5, "y":4.25},
- {"matrix":[10,4], "x":12.5, "y":4.25},
- {"matrix":[10,5], "x":13.5, "y":4.25, "w":1.75},
- {"matrix":[10,7], "x":15.5, "y":4.25},
+ {"matrix":[8, 0], "flags":4, "x":104, "y":27},
+ {"matrix":[8, 1], "flags":4, "x":117, "y":27},
+ {"matrix":[8, 2], "flags":4, "x":131, "y":27},
+ {"matrix":[8, 3], "flags":4, "x":145, "y":27},
+ {"matrix":[8, 4], "flags":4, "x":158, "y":27},
+ {"matrix":[8, 5], "flags":4, "x":172, "y":27},
+ {"matrix":[8, 6], "flags":4, "x":186, "y":27},
+ {"matrix":[8, 7], "flags":4, "x":203, "y":27},
+ {"matrix":[8, 8], "flags":1, "x":224, "y":27},
+ {"matrix":[9, 0], "flags":4, "x":107, "y":40},
+ {"matrix":[9, 1], "flags":4, "x":121, "y":40},
+ {"matrix":[9, 2], "flags":4, "x":134, "y":40},
+ {"matrix":[9, 3], "flags":4, "x":148, "y":40},
+ {"matrix":[9, 4], "flags":4, "x":162, "y":40},
+ {"matrix":[9, 5], "flags":4, "x":176, "y":40},
+ {"matrix":[9, 7], "flags":1, "x":198, "y":40},
+ {"matrix":[9, 8], "flags":1, "x":224, "y":40},
- {"matrix":[5,0], "x":0, "y":5.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,3], "x":3.75, "y":5.25, "w":1.25},
- {"matrix":[5,4], "x":5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":6.25, "y":5.25, "w":2.25},
- {"matrix":[11,1], "x":8.5, "y":5.25, "w":2.75},
- {"matrix":[11,2], "x":11.25, "y":5.25},
- {"matrix":[11,3], "x":12.25, "y":5.25},
- {"matrix":[11,4], "x":13.25, "y":5.25},
- {"matrix":[11,6], "x":14.5, "y":5.25},
- {"matrix":[11,7], "x":15.5, "y":5.25},
- {"matrix":[11,8], "x":16.5, "y":5.25}
- ]
- }
+ {"matrix":[10, 0], "flags":4, "x":114, "y":52},
+ {"matrix":[10, 1], "flags":4, "x":127, "y":52},
+ {"matrix":[10, 2], "flags":4, "x":141, "y":52},
+ {"matrix":[10, 3], "flags":4, "x":155, "y":52},
+ {"matrix":[10, 4], "flags":4, "x":169, "y":52},
+ {"matrix":[10, 5], "flags":1, "x":188, "y":52},
+ {"matrix":[10, 7], "flags":1, "x":210, "y":52},
+ {"matrix":[11, 1], "flags":4, "x":126, "y":64},
+ {"matrix":[11, 2], "flags":1, "x":152, "y":64},
+ {"matrix":[11, 3], "flags":1, "x":166, "y":64},
+ {"matrix":[11, 4], "flags":1, "x":180, "y":64},
+ {"matrix":[11, 6], "flags":1, "x":196, "y":64},
+ {"matrix":[11, 7], "flags":1, "x":210, "y":64},
+ {"matrix":[11, 8], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c
index 3643b8a11970..7334ad852039 100755
--- a/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -15,20 +15,18 @@
*/
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_91(
+ [MAC_BASE] = LAYOUT_91_ansi(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
@@ -36,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_91(
+ [MAC_FN] = LAYOUT_91_ansi(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_91(
+ [WIN_BASE] = LAYOUT_91_ansi(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
@@ -52,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_91(
+ [WIN_FN] = LAYOUT_91_ansi(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c
index 54dc2341373a..d5f87b7a3989 100755
--- a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,19 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
-
-// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_91(
+ [MAC_BASE] = LAYOUT_91_ansi(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -36,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, 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,
MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_91(
+ [MAC_FN] = LAYOUT_91_ansi(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,15 +41,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_91(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
- MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- MC_2, 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_PGDN,
- MC_3, 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,
- MC_4, 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,
- MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_91_ansi(
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
+ MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ MC_2, 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_PGDN,
+ MC_3, 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,
+ MC_4, 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,
+ MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_91(
+ [WIN_FN] = LAYOUT_91_ansi(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -74,7 +71,6 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -82,9 +78,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk
index e420400d17a9..9cf1a9b56cba 100755
--- a/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c factory.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c
index 30c1a79f40b9..29fe3d488d14 100755
--- a/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q11/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,8 +16,6 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -29,7 +27,7 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_91(
+ [MAC_BASE] = LAYOUT_91_ansi(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -37,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, 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,
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_91(
+ [MAC_FN] = LAYOUT_91_ansi(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_91(
+ [WIN_BASE] = LAYOUT_91_ansi(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -53,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, 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,
MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_91(
+ [WIN_FN] = LAYOUT_91_ansi(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q11/ansi_encoder/rules.mk b/keyboards/keychron/q11/ansi_encoder/rules.mk
old mode 100755
new mode 100644
index bc11b0af05c0..60d5c6bea2f9
--- a/keyboards/keychron/q11/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q11/ansi_encoder/rules.mk
@@ -1,7 +1,6 @@
# Build Options
+# change yes to no to disable
+#
EEPROM_DRIVER = wear_leveling
WEAR_LEVELING_DRIVER = embedded_flash
SERIAL_DRIVER = usart
-
-# Enter lower-power sleep mode when on the ChibiOS idle thread
-OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/keychron/q11/config.h b/keyboards/keychron/q11/config.h
index 59423182420c..d2c7ad4a9681 100755
--- a/keyboards/keychron/q11/config.h
+++ b/keyboards/keychron/q11/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron(https://www.keychron.com)
+/* 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
@@ -17,24 +17,18 @@
#pragma once
// Connects each switch in the dip switch to the GPIO pin of the MCU
-#define DIP_SWITCH_PINS { A8 }
+#define DIP_SWITCH_PINS \
+ { A8 }
/* handedness */
#define SPLIT_HAND_MATRIX_GRID A2, A15
#define SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT
+
#define MATRIX_MASKED // actual mask is defined by `matrix_mask` in `q11.c`
-// #define SPLIT_WATCHDOG_ENABLE
-// #define EE_HANDS
-// #define MASTER_LEFT
-// #define SPLIT_USB_TIMEOUT 2000
-// #define NO_USB_STARTUP_CHECK
-/* RGB Matrix Configuration */
+/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 1
#define DRIVER_ADDR_1 0b1110100
-#define DRIVER_1_LED_TOTAL 90
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
-#define SPLIT_TRANSPORT_MIRROR
/* Increase I2C speed to 1000 KHz */
#define I2C1_TIMINGR_PRESC 0U
@@ -43,7 +37,6 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0x80, 0xFF, 0xFF } // 300mA
@@ -53,8 +46,6 @@
/* Split Keyboard specific options. */
#define SERIAL_USART_TX_PIN A9 // USART TX pin
-// #define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
-// #define SERIAL_USART_RX_PIN A10 // USART RX pin
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
@@ -65,56 +56,5 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q11/factory.c b/keyboards/keychron/q11/factory.c
deleted file mode 100644
index 0ea8b257e4cb..000000000000
--- a/keyboards/keychron/q11/factory.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* 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 "keychron_ft_common.h"
-#include "split_util.h"
-
-static bool skip_next_step = false;
-
-bool process_record_keychron_ft(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
-#if defined(FN_KEY1) || defined(FN_KEY2)
-# ifdef FN_KEY1
- case FN_KEY1: /* fall through */
-# endif
-# ifdef FN_KEY2
- case FN_KEY2:
-# endif
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_0;
- } else {
- key_press_status &= ~KEY_PRESS_STEP_0;
- timer_3s_buffer = 0;
- }
- return true;
-#endif
- case KC_ESC:
- if (is_transport_connected() || !is_keyboard_left()) {
- return true;
- } else {
- skip_next_step = true;
- }
- case KC_EQL:
- if ((is_transport_connected() || is_keyboard_left()) && !skip_next_step) {
- return true;
- } else {
- skip_next_step = true;
- }
- case KC_J:
- if (!is_transport_connected() && !skip_next_step) {
- return true;
- }
- skip_next_step = false;
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_1;
- if (key_press_status == KEY_PRESS_FACTORY_RESET) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
- }
- } else {
- key_press_status &= ~KEY_PRESS_STEP_1;
- timer_3s_buffer = 0;
- }
- return true;
- case KC_6:
- if (is_transport_connected() || !is_keyboard_left()) {
- return true;
- } else {
- skip_next_step = true;
- }
- case KC_M:
- if ((is_transport_connected() || is_keyboard_left()) && !skip_next_step) {
- return true;
- } else {
- skip_next_step = true;
- }
- case KC_Z:
- if (!is_transport_connected() && !skip_next_step) {
- return true;
- }
- skip_next_step = false;
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_2;
- if (key_press_status == KEY_PRESS_FACTORY_RESET) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
- }
- } else {
- key_press_status &= ~KEY_PRESS_STEP_2;
- timer_3s_buffer = 0;
- }
- return true;
- case KC_LSFT:
- case KC_RIGHT:
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_3;
- if (led_test_mode) {
- if (++led_test_mode >= LED_TEST_MODE_MAX) {
- led_test_mode = LED_TEST_MODE_WHITE;
- }
- } else if (key_press_status == KEY_PRESS_LED_TEST) {
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
- }
- } else {
- key_press_status &= ~KEY_PRESS_STEP_3;
- timer_3s_buffer = 0;
- }
- return true;
- case KC_5:
- case KC_HOME:
- if (record->event.pressed) {
- key_press_status |= KEY_PRESS_STEP_4;
- if (led_test_mode) {
- led_test_mode = LED_TEST_MODE_OFF;
- rgb_matrix_mode_noeeprom(led_state);
- rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
- } else if (key_press_status == KEY_PRESS_LED_TEST) {
- led_state = rgb_matrix_get_mode();
- hsv = rgb_matrix_get_hsv();
- timer_3s_buffer = sync_timer_read32() == 0 ? 1 : sync_timer_read32();
- }
- } else {
- key_press_status &= ~KEY_PRESS_STEP_4;
- timer_3s_buffer = 0;
- }
- return true;
- default:
- return true;
- }
-}
diff --git a/keyboards/keychron/q11/halconf.h b/keyboards/keychron/q11/halconf.h
index d9a8508a4725..028285a1f3e1 100755
--- a/keyboards/keychron/q11/halconf.h
+++ b/keyboards/keychron/q11/halconf.h
@@ -19,8 +19,5 @@
#define HAL_USE_I2C TRUE
#define HAL_USE_SERIAL TRUE
#define HAL_USE_ADC TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/q11/info.json b/keyboards/keychron/q11/info.json
new file mode 100755
index 000000000000..cd2864979d17
--- /dev/null
+++ b/keyboards/keychron/q11/info.json
@@ -0,0 +1,290 @@
+{
+ "keyboard_name": "Keychron Q11",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "bootmagic": {
+ "matrix": [0, 1]
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "encoder": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "C15", null],
+ "rows": ["A13", "A14", "A15", "B3", "B4", "B5"]
+ },
+ "diode_direction": "ROW2COL",
+ "split": {
+ "enabled": true,
+ "encoder": {
+ "right": {
+ "rotary": [
+ {"pin_a": "C14", "pin_b": "C15"}
+ ]
+ }
+ },
+ "matrix_pins": {
+ "right": {
+ "cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ }
+ },
+ "transport": {
+ "protocol": "serial_usart",
+ "sync_matrix_state": true
+ },
+ "bootmagic": {
+ "matrix": [6, 7]
+ }
+ },
+ "encoder": {
+ "rotary": [
+ {
+ "pin_a": "B0",
+ "pin_b": "B1"
+ }
+ ]
+ },
+ "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
+ }
+ },
+ "layouts": {
+ "LAYOUT_91_ansi": {
+ "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": [0, 5], "x": 5.25, "y": 0},
+ {"matrix": [0, 6], "x": 6.25, "y": 0},
+ {"matrix": [0, 7], "x": 7.25, "y": 0},
+ {"matrix": [6, 0], "x": 8.25, "y": 0},
+ {"matrix": [6, 1], "x": 9.25, "y": 0},
+ {"matrix": [6, 2], "x": 10.25, "y": 0},
+ {"matrix": [6, 3], "x": 11.25, "y": 0},
+ {"matrix": [6, 4], "x": 12.25, "y": 0},
+ {"matrix": [6, 5], "x": 13.25, "y": 0},
+ {"matrix": [6, 6], "x": 14.25, "y": 0},
+ {"matrix": [6, 7], "x": 15.25, "y": 0},
+ {"matrix": [6, 8], "x": 16.5, "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": [1, 5], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.25, "y": 1.25},
+ {"matrix": [7, 0], "x": 8.25, "y": 1.25},
+ {"matrix": [7, 1], "x": 9.25, "y": 1.25},
+ {"matrix": [7, 2], "x": 10.25, "y": 1.25},
+ {"matrix": [7, 3], "x": 11.25, "y": 1.25},
+ {"matrix": [7, 4], "x": 12.25, "y": 1.25},
+ {"matrix": [7, 5], "x": 13.25, "y": 1.25},
+ {"matrix": [7, 6], "x": 14.25, "y": 1.25, "w": 2},
+ {"matrix": [7, 8], "x": 16.5, "y": 1.25},
+
+ {"matrix": [2, 0], "x": 0, "y": 2.25},
+ {"matrix": [2, 1], "x": 1.25, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 6.75, "y": 2.25},
+ {"matrix": [8, 0], "x": 7.75, "y": 2.25},
+ {"matrix": [8, 1], "x": 8.75, "y": 2.25},
+ {"matrix": [8, 2], "x": 9.75, "y": 2.25},
+ {"matrix": [8, 3], "x": 10.75, "y": 2.25},
+ {"matrix": [8, 4], "x": 11.75, "y": 2.25},
+ {"matrix": [8, 5], "x": 12.75, "y": 2.25},
+ {"matrix": [8, 6], "x": 13.75, "y": 2.25},
+ {"matrix": [8, 7], "x": 14.75, "y": 2.25, "w": 1.5},
+ {"matrix": [8, 8], "x": 16.5, "y": 2.25},
+
+ {"matrix": [3, 0], "x": 0, "y": 3.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 2], "x": 3, "y": 3.25},
+ {"matrix": [3, 3], "x": 4, "y": 3.25},
+ {"matrix": [3, 4], "x": 5, "y": 3.25},
+ {"matrix": [3, 5], "x": 6, "y": 3.25},
+ {"matrix": [3, 6], "x": 7, "y": 3.25},
+ {"matrix": [9, 0], "x": 8, "y": 3.25},
+ {"matrix": [9, 1], "x": 9, "y": 3.25},
+ {"matrix": [9, 2], "x": 10, "y": 3.25},
+ {"matrix": [9, 3], "x": 11, "y": 3.25},
+ {"matrix": [9, 4], "x": 12, "y": 3.25},
+ {"matrix": [9, 5], "x": 13, "y": 3.25},
+ {"matrix": [9, 7], "x": 14, "y": 3.25, "w": 2.25},
+ {"matrix": [9, 8], "x": 16.5, "y": 3.25},
+
+ {"matrix": [4, 0], "x": 0, "y": 4.25},
+ {"matrix": [4, 2], "x": 1.25, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 4], "x": 4.5, "y": 4.25},
+ {"matrix": [4, 5], "x": 5.5, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.5, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.5, "y": 4.25},
+ {"matrix": [10, 0], "x": 8.5, "y": 4.25},
+ {"matrix": [10, 1], "x": 9.5, "y": 4.25},
+ {"matrix": [10, 2], "x": 10.5, "y": 4.25},
+ {"matrix": [10, 3], "x": 11.5, "y": 4.25},
+ {"matrix": [10, 4], "x": 12.5, "y": 4.25},
+ {"matrix": [10, 5], "x": 13.5, "y": 4.25, "w": 1.75},
+ {"matrix": [10, 7], "x": 15.5, "y": 4.25},
+
+ {"matrix": [5, 0], "x": 0, "y": 5.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 4], "x": 5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 6.25, "y": 5.25, "w": 2.25},
+ {"matrix": [11, 1], "x": 8.5, "y": 5.25, "w": 2.75},
+ {"matrix": [11, 2], "x": 11.25, "y": 5.25},
+ {"matrix": [11, 3], "x": 12.25, "y": 5.25},
+ {"matrix": [11, 4], "x": 13.25, "y": 5.25},
+ {"matrix": [11, 6], "x": 14.5, "y": 5.25},
+ {"matrix": [11, 7], "x": 15.5, "y": 5.25},
+ {"matrix": [11, 8], "x": 16.5, "y": 5.25}
+ ]
+ },
+ "LAYOUT_92_iso": {
+ "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":[0,5], "x":5.25, "y":0 },
+ {"matrix":[0,6], "x":6.25, "y":0 },
+ {"matrix":[0,7], "x":7.25, "y":0 },
+ {"matrix":[6,0], "x":9, "y":0 },
+ {"matrix":[6,1], "x":10, "y":0 },
+ {"matrix":[6,2], "x":11, "y":0 },
+ {"matrix":[6,3], "x":12, "y":0 },
+ {"matrix":[6,4], "x":13, "y":0 },
+ {"matrix":[6,5], "x":14, "y":0 },
+ {"matrix":[6,6], "x":15, "y":0 },
+ {"matrix":[6,7], "x":16, "y":0 },
+ {"matrix":[6,8], "x":17.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":[1,5], "x":5.25, "y":1.25 },
+ {"matrix":[1,6], "x":6.25, "y":1.25 },
+ {"matrix":[1,7], "x":7.25, "y":1.25 },
+ {"matrix":[7,0], "x":9, "y":1.25 },
+ {"matrix":[7,1], "x":10, "y":1.25 },
+ {"matrix":[7,2], "x":11, "y":1.25 },
+ {"matrix":[7,3], "x":12, "y":1.25 },
+ {"matrix":[7,4], "x":13, "y":1.25 },
+ {"matrix":[7,5], "x":14, "y":1.25 },
+ {"matrix":[7,6], "x":15, "y":1.25, "w":2 },
+ {"matrix":[7,8], "x":17.25, "y":1.25 },
+
+ {"matrix":[2,0], "x":0, "y":2.25 },
+ {"matrix":[2,1], "x":1.25, "y":2.25, "w":1.5 },
+ {"matrix":[2,2], "x":2.75, "y":2.25 },
+ {"matrix":[2,3], "x":3.75, "y":2.25 },
+ {"matrix":[2,4], "x":4.75, "y":2.25 },
+ {"matrix":[2,6], "x":5.75, "y":2.25 },
+ {"matrix":[2,7], "x":6.75, "y":2.25 },
+ {"matrix":[8,0], "x":8.5, "y":2.25 },
+ {"matrix":[8,1], "x":9.5, "y":2.25 },
+ {"matrix":[8,2], "x":10.5, "y":2.25 },
+ {"matrix":[8,3], "x":11.5, "y":2.25 },
+ {"matrix":[8,4], "x":12.5, "y":2.25 },
+ {"matrix":[8,5], "x":13.5, "y":2.25 },
+ {"matrix":[8,6], "x":14.5, "y":2.25 },
+ {"matrix":[8,8], "x":17.25, "y":2.25 },
+
+ {"matrix":[3,0], "x":0, "y":3.25 },
+ {"matrix":[3,1], "x":1.25, "y":3.25, "w":1.75 },
+ {"matrix":[3,2], "x":3, "y":3.25 },
+ {"matrix":[3,3], "x":4, "y":3.25 },
+ {"matrix":[3,4], "x":5, "y":3.25 },
+ {"matrix":[3,5], "x":6, "y":3.25 },
+ {"matrix":[3,6], "x":7, "y":3.25 },
+ {"matrix":[9,0], "x":8.75, "y":3.25 },
+ {"matrix":[9,1], "x":9.75, "y":3.25 },
+ {"matrix":[9,2], "x":10.75, "y":3.25 },
+ {"matrix":[9,3], "x":11.75, "y":3.25 },
+ {"matrix":[9,4], "x":12.75, "y":3.25 },
+ {"matrix":[9,5], "x":13.75, "y":3.25 },
+ {"matrix":[9,7], "x":14.75, "y":3.25 },
+ {"matrix":[8,7], "x":15.75, "y":2.25, "w":1.25, "h":2 },
+ {"matrix":[9,8], "x":17.25, "y":3.25 },
+
+ {"matrix":[4,0], "x":0, "y":4.25 },
+ {"matrix":[4,1], "x":1.25, "y":4.25, "w":1.25 },
+ {"matrix":[4,2], "x":2.5, "y":4.25 },
+ {"matrix":[4,3], "x":3.5, "y":4.25 },
+ {"matrix":[4,4], "x":4.5, "y":4.25 },
+ {"matrix":[4,5], "x":5.5, "y":4.25 },
+ {"matrix":[4,6], "x":6.5, "y":4.25 },
+ {"matrix":[4,7], "x":7.5, "y":4.25 },
+ {"matrix":[10,0], "x":9.25, "y":4.25 },
+ {"matrix":[10,1], "x":10.25, "y":4.25 },
+ {"matrix":[10,2], "x":11.25, "y":4.25 },
+ {"matrix":[10,3], "x":12.25, "y":4.25 },
+ {"matrix":[10,4], "x":13.25, "y":4.25 },
+ {"matrix":[10,5], "x":14.25, "y":4.25, "w":1.75 },
+ {"matrix":[10,7], "x":16.25, "y":4.25 },
+
+ {"matrix":[5,0], "x":0, "y":5.25 },
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25 },
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25 },
+ {"matrix":[5,3], "x":3.75, "y":5.25, "w":1.25 },
+ {"matrix":[5,4], "x":5, "y":5.25, "w":1.25 },
+ {"matrix":[5,6], "x":6.25, "y":5.25, "w":2.25 },
+ {"matrix":[11,1], "x":9.25, "y":5.25, "w":2.75 },
+ {"matrix":[11,2], "x":12, "y":5.25 },
+ {"matrix":[11,3], "x":13, "y":5.25 },
+ {"matrix":[11,4], "x":14, "y":5.25 },
+ {"matrix":[11,6], "x":15.25, "y":5.25 },
+ {"matrix":[11,7], "x":16.25, "y":5.25 },
+ {"matrix":[11,8], "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/q11/iso_encoder/config.h b/keyboards/keychron/q11/iso_encoder/config.h
index 08632f0ce726..57baea4c694b 100755
--- a/keyboards/keychron/q11/iso_encoder/config.h
+++ b/keyboards/keychron/q11/iso_encoder/config.h
@@ -16,5 +16,8 @@
#pragma once
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 90
+
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 23
diff --git a/keyboards/keychron/q11/iso_encoder/info.json b/keyboards/keychron/q11/iso_encoder/info.json
index e6954978eee1..0529ccb29169 100755
--- a/keyboards/keychron/q11/iso_encoder/info.json
+++ b/keyboards/keychron/q11/iso_encoder/info.json
@@ -1,167 +1,106 @@
{
- "keyboard_name": "Keychron Q11",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "bootloader": "stm32-dfu",
- "bootmagic": {
- "matrix": [0, 1]
- },
- "features": {
- "audio": false,
- "backlight": false,
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true,
- "rgblight": false
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "B0", "pin_b": "B1"}
- ]
- },
- "matrix_pins": {
- "cols": ["A7", "A6", "A5", "A4", "A3", "A2", "A1", "C15", null],
- "rows": ["A13", "A14", "A15", "B3", "B4", "B5"]
- },
- "processor": "STM32L432",
- "rgb_matrix": {
- "driver": "CKLED2001",
- "split_count": [43, 47]
- },
- "split": {
- "enabled": true,
- "encoder": {
- "right": {
- "rotary": [
- {"pin_a": "C14", "pin_b": "C15"}
- ]
- }
- },
- "matrix_pins": {
- "right": {
- "cols": ["A8", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- }
- },
- "transport": {
- "protocol": "serial_usart",
- "sync_matrix_state": false
- }
- },
"usb": {
- "vid": "0x3434",
"pid": "0x01E1",
"device_version": "1.0.0"
},
- "layouts": {
- "LAYOUT_iso_92": {
- "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":[0,5], "x":5.25, "y":0 },
- {"matrix":[0,6], "x":6.25, "y":0 },
- {"matrix":[0,7], "x":7.25, "y":0 },
- {"matrix":[6,0], "x":9, "y":0 },
- {"matrix":[6,1], "x":10, "y":0 },
- {"matrix":[6,2], "x":11, "y":0 },
- {"matrix":[6,3], "x":12, "y":0 },
- {"matrix":[6,4], "x":13, "y":0 },
- {"matrix":[6,5], "x":14, "y":0 },
- {"matrix":[6,6], "x":15, "y":0 },
- {"matrix":[6,7], "x":16, "y":0 },
- {"matrix":[6,8], "x":17.25, "y":0 },
+ "rgb_matrix": {
+ "split_count": [43, 47],
+ "layout": [
+ {"matrix":[0, 1], "flags":1, "x":17, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":45, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":59, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":72, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":86, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":100, "y":0},
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":1, "x":17, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":45, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":72, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":86, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":100, "y":15},
- {"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":[1,5], "x":5.25, "y":1.25 },
- {"matrix":[1,6], "x":6.25, "y":1.25 },
- {"matrix":[1,7], "x":7.25, "y":1.25 },
- {"matrix":[7,0], "x":9, "y":1.25 },
- {"matrix":[7,1], "x":10, "y":1.25 },
- {"matrix":[7,2], "x":11, "y":1.25 },
- {"matrix":[7,3], "x":12, "y":1.25 },
- {"matrix":[7,4], "x":13, "y":1.25 },
- {"matrix":[7,5], "x":14, "y":1.25 },
- {"matrix":[7,6], "x":15, "y":1.25, "w":2 },
- {"matrix":[7,8], "x":17.25, "y":1.25 },
+ {"matrix":[2, 0], "flags":1, "x":0, "y":27},
+ {"matrix":[2, 1], "flags":1, "x":21, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":38, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":52, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":79, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":93, "y":27},
+ {"matrix":[3, 0], "flags":1, "x":0, "y":40},
+ {"matrix":[3, 1], "flags":8, "x":22, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":41, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":69, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":83, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":97, "y":40},
- {"matrix":[2,0], "x":0, "y":2.25 },
- {"matrix":[2,1], "x":1.25, "y":2.25, "w":1.5 },
- {"matrix":[2,2], "x":2.75, "y":2.25 },
- {"matrix":[2,3], "x":3.75, "y":2.25 },
- {"matrix":[2,4], "x":4.75, "y":2.25 },
- {"matrix":[2,6], "x":5.75, "y":2.25 },
- {"matrix":[2,7], "x":6.75, "y":2.25 },
- {"matrix":[8,0], "x":8.5, "y":2.25 },
- {"matrix":[8,1], "x":9.5, "y":2.25 },
- {"matrix":[8,2], "x":10.5, "y":2.25 },
- {"matrix":[8,3], "x":11.5, "y":2.25 },
- {"matrix":[8,4], "x":12.5, "y":2.25 },
- {"matrix":[8,5], "x":13.5, "y":2.25 },
- {"matrix":[8,6], "x":14.5, "y":2.25 },
- {"matrix":[8,8], "x":17.25, "y":2.25 },
+ {"matrix":[4, 0], "flags":1, "x":0, "y":52},
+ {"matrix":[4, 1], "flags":1, "x":19, "y":52},
+ {"matrix":[4, 2], "flags":1, "x":34, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":90, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":103, "y":52},
+ {"matrix":[5, 0], "flags":1, "x":0, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":19, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":36, "y":64},
+ {"matrix":[5, 3], "flags":1, "x":53, "y":64},
+ {"matrix":[5, 4], "flags":1, "x":71, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":95, "y":64},
- {"matrix":[3,0], "x":0, "y":3.25 },
- {"matrix":[3,1], "x":1.25, "y":3.25, "w":1.75 },
- {"matrix":[3,2], "x":3, "y":3.25 },
- {"matrix":[3,3], "x":4, "y":3.25 },
- {"matrix":[3,4], "x":5, "y":3.25 },
- {"matrix":[3,5], "x":6, "y":3.25 },
- {"matrix":[3,6], "x":7, "y":3.25 },
- {"matrix":[9,0], "x":8.75, "y":3.25 },
- {"matrix":[9,1], "x":9.75, "y":3.25 },
- {"matrix":[9,2], "x":10.75, "y":3.25 },
- {"matrix":[9,3], "x":11.75, "y":3.25 },
- {"matrix":[9,4], "x":12.75, "y":3.25 },
- {"matrix":[9,5], "x":13.75, "y":3.25 },
- {"matrix":[9,7], "x":14.75, "y":3.25 },
- {"matrix":[8,7], "x":15.75, "y":2.25, "w":1.25, "h":2 },
- {"matrix":[9,8], "x":17.25, "y":3.25 },
+ {"matrix":[6, 0], "flags":1, "x":110, "y":0},
+ {"matrix":[6, 1], "flags":1, "x":124, "y":0},
+ {"matrix":[6, 2], "flags":1, "x":138, "y":0},
+ {"matrix":[6, 3], "flags":1, "x":152, "y":0},
+ {"matrix":[6, 4], "flags":1, "x":165, "y":0},
+ {"matrix":[6, 5], "flags":1, "x":179, "y":0},
+ {"matrix":[6, 6], "flags":1, "x":193, "y":0},
+ {"matrix":[6, 7], "flags":1, "x":207, "y":0},
+ {"matrix":[7, 0], "flags":4, "x":110, "y":15},
+ {"matrix":[7, 1], "flags":4, "x":124, "y":15},
+ {"matrix":[7, 2], "flags":4, "x":138, "y":15},
+ {"matrix":[7, 3], "flags":4, "x":152, "y":15},
+ {"matrix":[7, 4], "flags":4, "x":165, "y":15},
+ {"matrix":[7, 5], "flags":4, "x":179, "y":15},
+ {"matrix":[7, 6], "flags":1, "x":200, "y":15},
+ {"matrix":[7, 8], "flags":1, "x":224, "y":15},
- {"matrix":[4,0], "x":0, "y":4.25 },
- {"matrix":[4,1], "x":1.25, "y":4.25, "w":1.25 },
- {"matrix":[4,2], "x":2.5, "y":4.25 },
- {"matrix":[4,3], "x":3.5, "y":4.25 },
- {"matrix":[4,4], "x":4.5, "y":4.25 },
- {"matrix":[4,5], "x":5.5, "y":4.25 },
- {"matrix":[4,6], "x":6.5, "y":4.25 },
- {"matrix":[4,7], "x":7.5, "y":4.25 },
- {"matrix":[10,0], "x":9.25, "y":4.25 },
- {"matrix":[10,1], "x":10.25, "y":4.25 },
- {"matrix":[10,2], "x":11.25, "y":4.25 },
- {"matrix":[10,3], "x":12.25, "y":4.25 },
- {"matrix":[10,4], "x":13.25, "y":4.25 },
- {"matrix":[10,5], "x":14.25, "y":4.25, "w":1.75 },
- {"matrix":[10,7], "x":16.25, "y":4.25 },
+ {"matrix":[8, 0], "flags":4, "x":103, "y":27},
+ {"matrix":[8, 1], "flags":4, "x":117, "y":27},
+ {"matrix":[8, 2], "flags":4, "x":131, "y":27},
+ {"matrix":[8, 3], "flags":4, "x":145, "y":27},
+ {"matrix":[8, 4], "flags":4, "x":158, "y":27},
+ {"matrix":[8, 5], "flags":4, "x":172, "y":27},
+ {"matrix":[8, 6], "flags":4, "x":186, "y":27},
+ {"matrix":[8, 8], "flags":1, "x":224, "y":27},
+ {"matrix":[9, 0], "flags":4, "x":107, "y":40},
+ {"matrix":[9, 1], "flags":4, "x":121, "y":40},
+ {"matrix":[9, 2], "flags":4, "x":134, "y":40},
+ {"matrix":[9, 3], "flags":4, "x":148, "y":40},
+ {"matrix":[9, 4], "flags":4, "x":162, "y":40},
+ {"matrix":[9, 5], "flags":4, "x":176, "y":40},
+ {"matrix":[9, 7], "flags":1, "x":190, "y":40},
+ {"matrix":[8, 7], "flags":1, "x":208, "y":36},
+ {"matrix":[9, 8], "flags":1, "x":224, "y":40},
- {"matrix":[5,0], "x":0, "y":5.25 },
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25 },
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25 },
- {"matrix":[5,3], "x":3.75, "y":5.25, "w":1.25 },
- {"matrix":[5,4], "x":5, "y":5.25, "w":1.25 },
- {"matrix":[5,6], "x":6.25, "y":5.25, "w":2.25 },
- {"matrix":[11,1], "x":9.25, "y":5.25, "w":2.75 },
- {"matrix":[11,2], "x":12, "y":5.25 },
- {"matrix":[11,3], "x":13, "y":5.25 },
- {"matrix":[11,4], "x":14, "y":5.25 },
- {"matrix":[11,6], "x":15.25, "y":5.25 },
- {"matrix":[11,7], "x":16.25, "y":5.25 },
- {"matrix":[11,8], "x":17.25, "y":5.25}
- ]
- }
+ {"matrix":[10, 0], "flags":4, "x":114, "y":52},
+ {"matrix":[10, 1], "flags":4, "x":127, "y":52},
+ {"matrix":[10, 2], "flags":4, "x":141, "y":52},
+ {"matrix":[10, 3], "flags":4, "x":155, "y":52},
+ {"matrix":[10, 4], "flags":4, "x":169, "y":52},
+ {"matrix":[10, 5], "flags":1, "x":188, "y":52},
+ {"matrix":[10, 7], "flags":1, "x":210, "y":52},
+ {"matrix":[11, 1], "flags":4, "x":126, "y":64},
+ {"matrix":[11, 2], "flags":1, "x":152, "y":64},
+ {"matrix":[11, 3], "flags":1, "x":166, "y":64},
+ {"matrix":[11, 4], "flags":1, "x":180, "y":64},
+ {"matrix":[11, 6], "flags":1, "x":196, "y":64},
+ {"matrix":[11, 7], "flags":1, "x":210, "y":64},
+ {"matrix":[11, 8], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q11/iso_encoder/iso_encoder.c b/keyboards/keychron/q11/iso_encoder/iso_encoder.c
index 8cff7d555582..08858d9b7922 100755
--- a/keyboards/keychron/q11/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q11/iso_encoder/iso_encoder.c
@@ -16,9 +16,7 @@
#include "quantum.h"
-// clang-format off
#ifdef RGB_MATRIX_ENABLE
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -128,56 +126,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, G_1, I_1, H_1}, // Down
{0, G_7, I_7, H_7}, // Right
};
-
-#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, 11, 12, 13, 14, __ },
- { 15, 16, 17, 18, 19, __, 20, 21, __ },
- { 22, 23, 24, 25, 26, 27, 28, __, __ },
- { 29, 30, 31, 32, 33, 34, 35, 36, __ },
- { 37, 38, 39, 40, 41, __, 42, __, __ },
-
- { 43, 44, 45, 46, 47, 48, 49, 50, __ },
- { 51, 52, 53, 54, 55, 56, 57, __, 58 },
- { 59, 60, 61, 62, 63, 64, 65, 74, 66 },
- { 67, 68, 69, 70, 71, 72, __, 73, 75 },
- { 76, 77, 78, 79, 80, 81, __, 82, __ },
- { __, 83, 84, 85, 86, __, 87, 88, 89 },
- },
- {
- // LED Index to Physical Position
- {17,0}, {31,0}, {45,0}, {59,0}, {72,0}, {86,0}, {100,0},
- {0,15}, {17,15}, {31,15}, {45,15}, {59,15}, {72,15}, {86,15}, {100,15},
- {0,27}, {21,27}, {38,27}, {52,27}, {66,27}, {79,27}, {93,27},
- {0,40}, {22,40}, {41,40}, {55,40}, {69,40}, {83,40}, {97,40},
- {0,52}, {19,52}, {34,52}, {48,52}, {62,52}, {76,52}, {90,52}, {103,52},
- {0,64}, {19,64}, {36,64}, {53,64}, {71,64}, {95,64},
- {110,0}, {124,0}, {138,0}, {152,0}, {165,0}, {179,0}, {193,0}, {207,0},
- {110,15}, {124,15}, {138,15}, {152,15}, {165,15}, {179,15}, {200,15}, {224,15},
- {103,27}, {117,27}, {131,27}, {145,27}, {158,27}, {172,27}, {186,27}, {224,27},
- {107,40}, {121,40}, {134,40}, {148,40}, {162,40}, {176,40}, {190,40}, {208,36}, {224,40},
- {114,52}, {127,52}, {141,52}, {155,52}, {169,52}, {188,52}, {210,52},
- {126,64}, {152,64}, {166,64}, {180,64}, {196,64}, {210,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1,
- 4, 1, 4, 4, 4, 4, 4, 4,
- 4, 1, 4, 4, 4, 4, 4,
- 4, 8, 4, 4, 4, 4, 4,
- 4, 1, 4, 4, 4, 4, 4, 4,
- 4, 1, 1, 1, 4, 4,
- 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 1,
- 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 4, 4, 4, 4, 4, 1, 1,
- 4, 1, 4, 1, 1, 1, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q11/iso_encoder/keymaps/default/keymap.c
index bf526a1e87bc..2c494c08d524 100755
--- a/keyboards/keychron/q11/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/default/keymap.c
@@ -15,20 +15,18 @@
*/
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_92(
+ [MAC_BASE] = LAYOUT_92_iso(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
@@ -36,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_LSFT, KC_NUBS, 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_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_92(
+ [MAC_FN] = LAYOUT_92_iso(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_92(
+ [WIN_BASE] = LAYOUT_92_iso(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
@@ -52,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_LSFT, KC_NUBS, 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_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_92(
+ [WIN_FN] = LAYOUT_92_iso(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q11/iso_encoder/keymaps/keychron/keymap.c
index e6c1c04fa28f..8269bf1a8800 100755
--- a/keyboards/keychron/q11/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,19 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
-
-// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_92(
+ [MAC_BASE] = LAYOUT_92_iso(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -36,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_92(
+ [MAC_FN] = LAYOUT_92_iso(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_92(
+ [WIN_BASE] = LAYOUT_92_iso(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -52,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_92(
+ [WIN_FN] = LAYOUT_92_iso(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_DIRECTIONS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -74,7 +71,6 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
@@ -82,9 +78,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q11/iso_encoder/keymaps/keychron/rules.mk
index e420400d17a9..9cf1a9b56cba 100755
--- a/keyboards/keychron/q11/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c factory.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q11/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q11/iso_encoder/keymaps/via/keymap.c
index e1f579f0fa6f..8e969a8f815c 100755
--- a/keyboards/keychron/q11/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q11/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,20 +16,18 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_92(
+ [MAC_BASE] = LAYOUT_92_iso(
KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -37,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, MO(MAC_FN), KC_SPC, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_92(
+ [MAC_FN] = LAYOUT_92_iso(
RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_92(
+ [WIN_BASE] = LAYOUT_92_iso(
KC_MUTE, KC_ESC, 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_INS, KC_DEL, KC_MUTE,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
@@ -53,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_4, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MC_5, KC_LCTL, KC_LWIN, KC_LALT, MO(WIN_FN), KC_SPC, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_92(
+ [WIN_FN] = LAYOUT_92_iso(
RGB_TOG, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q11/iso_encoder/rules.mk b/keyboards/keychron/q11/iso_encoder/rules.mk
index bc11b0af05c0..ac78b227d602 100755
--- a/keyboards/keychron/q11/iso_encoder/rules.mk
+++ b/keyboards/keychron/q11/iso_encoder/rules.mk
@@ -1,7 +1,4 @@
-# Build Options
-EEPROM_DRIVER = wear_leveling
-WEAR_LEVELING_DRIVER = embedded_flash
-SERIAL_DRIVER = usart
-
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+SERIAL_DRIVER = usart
diff --git a/keyboards/keychron/q11/q11.c b/keyboards/keychron/q11/q11.c
index abb5e64cc635..bf7bab4b5397 100755
--- a/keyboards/keychron/q11/q11.c
+++ b/keyboards/keychron/q11/q11.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -20,7 +20,6 @@
// from keeping the keyboard awake
// - just mirroring `KC_NO` in the `LAYOUT`
// macro to keep it simple
-// clang-format off
const matrix_row_t matrix_mask[] = {
0b011111111,
0b011111111,
@@ -48,6 +47,60 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
#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 defined(CAPS_LOCK_LED_INDEX)
+ 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);
+ }
+ }
+# endif // CAPS_LOCK_LED_INDEX
+# if defined(NUM_LOCK_LED_INDEX)
+ if (host_keyboard_led_state().num_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
+ } else {
+ if (!rgb_matrix_get_flags()) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
+ }
+ }
+# endif // NUM_LOCK_LED_INDEX
+ return true;
+}
+#endif
+
#define ADC_BUFFER_DEPTH 1
#define ADC_NUM_CHANNELS 1
#define ADC_SAMPLING_RATE ADC_SMPR_SMP_12P5
@@ -86,24 +139,15 @@ static int16_t analogReadPin_my(pin_t pin) {
return *sampleBuffer;
}
-#if defined(ENCODER_ENABLE) && defined(PAL_USE_CALLBACKS)
-static void encoder_pad_cb(void *param) {
- encoder_inerrupt_read((uint32_t)param & 0XFF);
-}
-#endif
-
void keyboard_post_init_kb(void) {
-#if defined(ENCODER_ENABLE) && defined(PAL_USE_CALLBACKS)
-
- pin_t encoders_pad_a[NUM_ENCODERS] = ENCODERS_PAD_A;
- pin_t encoders_pad_b[NUM_ENCODERS] = ENCODERS_PAD_B;
- for (uint32_t i = 0; i < NUM_ENCODERS; i++) {
- palEnableLineEvent(encoders_pad_a[i], PAL_EVENT_MODE_BOTH_EDGES);
- palEnableLineEvent(encoders_pad_b[i], PAL_EVENT_MODE_BOTH_EDGES);
- palSetLineCallback(encoders_pad_a[i], encoder_pad_cb, (void *)i);
- palSetLineCallback(encoders_pad_b[i], encoder_pad_cb, (void *)i);
- }
-#endif
+ // 1. The pin A5/B5 of the USB C interface in the left hand is connected to the pin A0 of MCU,
+ // A0 will be set to output and write high when keyboard initial.
+ // 2. The same pin in the right hand is connected to the pin B0 and B1 of MCU respectively,
+ // and the ADC function of B0 and B1 will be enabled when keyboard initial.
+ // 3. because the serial usart RXD and TXD is multiplexed on USB's D+ and D- in the right hand.
+ // So detect the voltage on the pin A5/B5 of the USB C interface by ADC,
+ // and disable USB connectivity when the ADC value exceeds 1000,
+ // to avoid affecting the serial usart communication between the left hand and the right hand.
if (is_keyboard_left()) {
setPinOutput(A0);
writePinHigh(A0);
@@ -114,6 +158,5 @@ void keyboard_post_init_kb(void) {
}
}
- // allow user keymaps to do custom post_init
keyboard_post_init_user();
}
diff --git a/keyboards/keychron/q11/readme.md b/keyboards/keychron/q11/readme.md
index 6d6744fa8d7b..e6ed2afb7508 100644
--- a/keyboards/keychron/q11/readme.md
+++ b/keyboards/keychron/q11/readme.md
@@ -1,6 +1,6 @@
# Keychron Q11
-![Keychron Q11](https://i.imgur.com/fRZPpJN.jpg)
+![Keychron Q11](https://i.imgur.com/FPTNqKj.jpg)
A customizable 75% split keyboard.
@@ -18,6 +18,6 @@ Flashing example for this keyboard:
make keychron/q11/ansi_encoder:default:flash
make keychron/q11/iso_encoder:default:flash
-**Reset Key**: Hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard.
+**Reset Key**: The master and slave side should be flashed individually, to enter flashing mode, hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard for the master side and hold down the key located at *K67*, which programmed as *Del* while plugging in the keyboard for the slave side.
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).
diff --git a/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
index c701c74527db..2cfaeae8fc97 100644
--- a/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q12/ansi_encoder/ansi_encoder.c
@@ -15,125 +15,125 @@
*/
#include "quantum.h"
-#include "keychron_common.h"
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- // {0, I_1, G_1, H_1}
- {0, I_2, G_2, H_2}, // F13
- {0, I_3, G_3, H_3}, // F14
- {0, I_4, G_4, H_4}, // F15
- {0, I_5, G_5, H_5}, // Esc
- {0, I_6, G_6, H_6}, // F1
- {0, I_7, G_7, H_7}, // F2
- {0, I_8, G_8, H_8}, // F3
- {0, I_9, G_9, H_9}, // F4
- {0, I_10, G_10, H_10}, // F5
- {0, I_11, G_11, H_11}, // F6
- {0, I_12, G_12, H_12}, // F7
- {0, I_13, G_13, H_13}, // F8
- {0, I_14, G_14, H_14}, // F9
- {0, I_15, G_15, H_15}, // F10
- {0, I_16, G_16, H_16}, // F11
- {0, L_16, J_16, K_16}, // F12
- {0, L_15, J_15, K_15}, // DEL
- {0, L_14, J_14, K_14}, // Light
+ * | | G location
+ * | | | B location
+ * | | | | */
+ // {0, I_1, G_1, H_1}
+ {0, I_2, G_2, H_2}, // F13
+ {0, I_3, G_3, H_3}, // F14
+ {0, I_4, G_4, H_4}, // F15
+ {0, I_5, G_5, H_5}, // Esc
+ {0, I_6, G_6, H_6}, // F1
+ {0, I_7, G_7, H_7}, // F2
+ {0, I_8, G_8, H_8}, // F3
+ {0, I_9, G_9, H_9}, // F4
+ {0, I_10, G_10, H_10}, // F5
+ {0, I_11, G_11, H_11}, // F6
+ {0, I_12, G_12, H_12}, // F7
+ {0, I_13, G_13, H_13}, // F8
+ {0, I_14, G_14, H_14}, // F9
+ {0, I_15, G_15, H_15}, // F10
+ {0, I_16, G_16, H_16}, // F11
+ {0, L_16, J_16, K_16}, // F12
+ {0, L_15, J_15, K_15}, // DEL
+ {0, L_14, J_14, K_14}, // Light
- {0, C_1, A_1, B_1}, // num_lock
- {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, C_6, A_6, B_6}, // 1!
- {0, C_7, A_7, B_7}, // 2@
- {0, C_8, A_8, B_8}, // 3#
- {0, C_9, A_9, B_9}, // 4$
- {0, C_10, A_10, B_10}, // 5%
- {0, C_11, A_11, B_11}, // 6^
- {0, C_12, A_12, B_12}, // 7&
- {0, C_13, A_13, B_13}, // 8*
- {0, C_14, A_14, B_14}, // 9(
- {0, C_15, A_15, B_15}, // 0)
- {0, C_16, A_16, B_16}, // -_
- {0, L_13, J_13, K_13}, // =+
- {0, L_12, J_12, K_12}, // BackSpace
- {0, L_11, J_11, K_11}, // PgUp
- {0, F_1, D_1, E_1}, // 7
- {0, F_2, D_2, E_2}, // 8
- {0, F_3, D_3, E_3}, // 9
- {0, F_4, D_4, E_4}, // +
- {0, F_5, D_5, E_5}, // TAB
- {0, F_6, D_6, E_6}, // Q
- {0, F_7, D_7, E_7}, // W
- {0, F_8, D_8, E_8}, // E
- {0, F_9, D_9, E_9}, // R
- {0, F_10, D_10, E_10}, // T
- {0, F_11, D_11, E_11}, // Y
- {0, F_12, D_12, E_12}, // U
- {0, F_13, D_13, E_13}, // I
- {0, F_14, D_14, E_14}, // O
- {0, F_15, D_15, E_15}, // P
- {0, F_16, D_16, E_16}, // [
- {0, L_10, J_10, K_10}, // ]
- {0, L_9, J_9, K_9}, // \|
- {0, L_8, J_8, K_8}, // PgDn
+ {0, C_1, A_1, B_1}, // num_lock
+ {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, C_6, A_6, B_6}, // 1!
+ {0, C_7, A_7, B_7}, // 2@
+ {0, C_8, A_8, B_8}, // 3#
+ {0, C_9, A_9, B_9}, // 4$
+ {0, C_10, A_10, B_10}, // 5%
+ {0, C_11, A_11, B_11}, // 6^
+ {0, C_12, A_12, B_12}, // 7&
+ {0, C_13, A_13, B_13}, // 8*
+ {0, C_14, A_14, B_14}, // 9(
+ {0, C_15, A_15, B_15}, // 0)
+ {0, C_16, A_16, B_16}, // -_
+ {0, L_13, J_13, K_13}, // =+
+ {0, L_12, J_12, K_12}, // BackSpace
+ {0, L_11, J_11, K_11}, // PgUp
- {1, C_16, A_16, B_16}, // 4
- {1, C_15, A_15, B_15}, // 5
- {1, C_14, A_14, B_14}, // 6
+ {0, F_1, D_1, E_1}, // 7
+ {0, F_2, D_2, E_2}, // 8
+ {0, F_3, D_3, E_3}, // 9
+ {0, F_4, D_4, E_4}, // +
+ {0, F_5, D_5, E_5}, // TAB
+ {0, F_6, D_6, E_6}, // Q
+ {0, F_7, D_7, E_7}, // W
+ {0, F_8, D_8, E_8}, // E
+ {0, F_9, D_9, E_9}, // R
+ {0, F_10, D_10, E_10}, // T
+ {0, F_11, D_11, E_11}, // Y
+ {0, F_12, D_12, E_12}, // U
+ {0, F_13, D_13, E_13}, // I
+ {0, F_14, D_14, E_14}, // O
+ {0, F_15, D_15, E_15}, // P
+ {0, F_16, D_16, E_16}, // [
+ {0, L_10, J_10, K_10}, // ]
+ {0, L_9, J_9, K_9}, // \|
+ {0, L_8, J_8, K_8}, // PgDn
+
+ {1, C_16, A_16, B_16}, // 4
+ {1, C_15, A_15, B_15}, // 5
+ {1, C_14, A_14, B_14}, // 6
// {0, F_4, D_4, E_4}, // +
- {1, C_12, A_12, B_12}, // CapsLock
- {1, C_11, A_11, B_11}, // A
- {1, C_10, A_10, B_10}, // S
- {1, C_9, A_9, B_9}, // D
- {1, C_8, A_8, B_8}, // F
- {1, C_7, A_7, B_7}, // G
- {1, C_6, A_6, B_6}, // H
- {1, C_5, A_5, B_5}, // J
- {1, C_4, A_4, B_4}, // k
- {1, C_3, A_3, B_3}, // l
- {1, C_2, A_2, B_2}, // ;
- {1, C_1, A_1, B_1}, // '
- {1, L_1, J_1, K_1}, // Enter
- {1, L_2, J_2, K_2}, // Home
+ {1, C_12, A_12, B_12}, // CapsLock
+ {1, C_11, A_11, B_11}, // A
+ {1, C_10, A_10, B_10}, // S
+ {1, C_9, A_9, B_9}, // D
+ {1, C_8, A_8, B_8}, // F
+ {1, C_7, A_7, B_7}, // G
+ {1, C_6, A_6, B_6}, // H
+ {1, C_5, A_5, B_5}, // J
+ {1, C_4, A_4, B_4}, // k
+ {1, C_3, A_3, B_3}, // l
+ {1, C_2, A_2, B_2}, // ;
+ {1, C_1, A_1, B_1}, // '
+ {1, L_1, J_1, K_1}, // Enter
+ {1, L_2, J_2, K_2}, // Home
- {1, I_16, G_16, H_16}, // 1
- {1, I_15, G_15, H_15}, // 2
- {1, I_14, G_14, H_14}, // 3
- {1, I_13, G_13, H_13}, // Enter
- {1, I_12, G_12, H_12}, // Shift_L
- {1, I_10, G_10, H_10}, // Z
- {1, I_9, G_9, H_9}, // X
- {1, I_8, G_8, H_8}, // C
- {1, I_7, G_7, H_7}, // V
- {1, I_6, G_6, H_6}, // B
- {1, I_5, G_5, H_5}, // N
- {1, I_4, G_4, H_4}, // M
- {1, I_3, G_3, H_3}, // ,
- {1, I_2, G_2, H_2}, // .
- {1, I_1, G_1, H_1}, // ?
- {1, L_3, J_3, K_3}, // Shift_R
- {1, L_4, J_4, K_4}, // Up
+ {1, I_16, G_16, H_16}, // 1
+ {1, I_15, G_15, H_15}, // 2
+ {1, I_14, G_14, H_14}, // 3
+ {1, I_13, G_13, H_13}, // Enter
+ {1, I_12, G_12, H_12}, //Shift_L
+ {1, I_10, G_10, H_10}, // Z
+ {1, I_9, G_9, H_9}, // X
+ {1, I_8, G_8, H_8}, // C
+ {1, I_7, G_7, H_7}, // V
+ {1, I_6, G_6, H_6}, // B
+ {1, I_5, G_5, H_5}, // N
+ {1, I_4, G_4, H_4}, // M
+ {1, I_3, G_3, H_3}, // ,
+ {1, I_2, G_2, H_2}, // .
+ {1, I_1, G_1, H_1}, // ?
+ {1, L_3, J_3, K_3}, // Shift_R
+ {1, L_4, J_4, K_4}, // Up
- {1, F_16, D_16, E_16}, // 0
- {1, F_14, D_14, E_14}, // .
- {1, F_12, D_12, E_12}, // Ctrl_L
- {1, F_11, D_11, E_11}, // Win_L
- {1, F_10, D_10, E_10}, // Alt_L
- {1, F_6, D_6, E_6}, // Space
- {1, F_3, D_3, E_3}, // Alt_R
- {1, F_2, D_2, E_2}, // Fn
- {1, F_1, D_1, E_1}, // Ctrl_R
- {1, L_5, J_5, K_5}, // Left
- {1, L_6, J_6, K_6}, // Down
- {1, L_7, J_7, K_7}, // Right
+ {1, F_16, D_16, E_16}, // 0
+ {1, F_14, D_14, E_14}, // .
+ {1, F_12, D_12, E_12}, // Ctrl_L
+ {1, F_11, D_11, E_11}, // Win_L
+ {1, F_10, D_10, E_10}, // Alt_L
+ {1, F_6, D_6, E_6}, // Space
+ {1, F_3, D_3, E_3}, // Alt_R
+ {1, F_2, D_2, E_2}, // Fn
+ {1, F_1, D_1, E_1}, // Ctrl_R
+ {1, L_5, J_5, K_5}, // Left
+ {1, L_6, J_6, K_6}, // Down
+ {1, L_7, J_7, K_7}, // Right
};
#define __ NO_LED
diff --git a/keyboards/keychron/q12/ansi_encoder/config.h b/keyboards/keychron/q12/ansi_encoder/config.h
index c28a9b8b3e84..56a1f7505fb3 100644
--- a/keyboards/keychron/q12/ansi_encoder/config.h
+++ b/keyboards/keychron/q12/ansi_encoder/config.h
@@ -21,7 +21,6 @@
#define DRIVER_2_LED_TOTAL 46
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
diff --git a/keyboards/keychron/q12/ansi_encoder/info.json b/keyboards/keychron/q12/ansi_encoder/info.json
index a4894c0151e6..97c1334ffdfc 100644
--- a/keyboards/keychron/q12/ansi_encoder/info.json
+++ b/keyboards/keychron/q12/ansi_encoder/info.json
@@ -8,25 +8,9 @@
"pid": "0x01D1",
"device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "C14"}
@@ -37,114 +21,114 @@
"layouts": {
"LAYOUT_ansi_103": {
"layout": [
- {"matrix":[0,15], "x":0, "y":0},
- {"matrix":[0,16], "x":1, "y":0},
- {"matrix":[0,17], "x":2, "y":0},
- {"matrix":[5,16], "x":3, "y":0},
- {"matrix":[0,0], "x":4.25, "y":0},
- {"matrix":[0,1], "x":5.5, "y":0},
- {"matrix":[0,2], "x":6.5, "y":0},
- {"matrix":[0,3], "x":7.5, "y":0},
- {"matrix":[0,4], "x":8.5, "y":0},
- {"matrix":[0,5], "x":9.75, "y":0},
- {"matrix":[0,6], "x":10.75, "y":0},
- {"matrix":[0,7], "x":11.75, "y":0},
- {"matrix":[0,8], "x":12.75, "y":0},
- {"matrix":[0,9], "x":14, "y":0},
- {"matrix":[0,10], "x":15, "y":0},
- {"matrix":[0,11], "x":16, "y":0},
- {"matrix":[0,12], "x":17, "y":0},
- {"matrix":[0,13], "x":18.25, "y":0},
- {"matrix":[0,14], "x":19.5, "y":0},
+ {"matrix": [0, 15], "x": 0, "y": 0},
+ {"matrix": [0, 16], "x": 1, "y": 0},
+ {"matrix": [0, 17], "x": 2, "y": 0},
+ {"matrix": [5, 16], "x": 3, "y": 0},
+ {"matrix": [0, 0], "x": 4.25, "y": 0},
+ {"matrix": [0, 1], "x": 5.5, "y": 0},
+ {"matrix": [0, 2], "x": 6.5, "y": 0},
+ {"matrix": [0, 3], "x": 7.5, "y": 0},
+ {"matrix": [0, 4], "x": 8.5, "y": 0},
+ {"matrix": [0, 5], "x": 9.75, "y": 0},
+ {"matrix": [0, 6], "x": 10.75, "y": 0},
+ {"matrix": [0, 7], "x": 11.75, "y": 0},
+ {"matrix": [0, 8], "x": 12.75, "y": 0},
+ {"matrix": [0, 9], "x": 14, "y": 0},
+ {"matrix": [0, 10], "x": 15, "y": 0},
+ {"matrix": [0, 11], "x": 16, "y": 0},
+ {"matrix": [0, 12], "x": 17, "y": 0},
+ {"matrix": [0, 13], "x": 18.25, "y": 0},
+ {"matrix": [0, 14], "x": 19.5, "y": 0},
- {"matrix":[1,15], "x":0, "y":1.25},
- {"matrix":[1,16], "x":1, "y":1.25},
- {"matrix":[1,17], "x":2, "y":1.25},
- {"matrix":[5,5], "x":3, "y":1.25},
- {"matrix":[1,0], "x":4.25, "y":1.25},
- {"matrix":[1,1], "x":5.25, "y":1.25},
- {"matrix":[1,2], "x":6.25, "y":1.25},
- {"matrix":[1,3], "x":7.25, "y":1.25},
- {"matrix":[1,4], "x":8.25, "y":1.25},
- {"matrix":[1,5], "x":9.25, "y":1.25},
- {"matrix":[1,6], "x":10.25, "y":1.25},
- {"matrix":[1,7], "x":11.25, "y":1.25},
- {"matrix":[1,8], "x":12.25, "y":1.25},
- {"matrix":[1,9], "x":13.25, "y":1.25},
- {"matrix":[1,10], "x":14.25, "y":1.25},
- {"matrix":[1,11], "x":15.25, "y":1.25},
- {"matrix":[1,12], "x":16.25, "y":1.25},
- {"matrix":[1,13], "x":17.25, "y":1.25, "w":2},
- {"matrix":[1,14], "x":19.5, "y":1.25},
+ {"matrix": [1, 15], "x": 0, "y": 1.25},
+ {"matrix": [1, 16], "x": 1, "y": 1.25},
+ {"matrix": [1, 17], "x": 2, "y": 1.25},
+ {"matrix": [5, 5], "x": 3, "y": 1.25},
+ {"matrix": [1, 0], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 1], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 2], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 7.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 8.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 9.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 10.25, "y": 1.25},
+ {"matrix": [1, 7], "x": 11.25, "y": 1.25},
+ {"matrix": [1, 8], "x": 12.25, "y": 1.25},
+ {"matrix": [1, 9], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 10], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 13], "x": 17.25, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 19.5, "y": 1.25},
- {"matrix":[2,15], "x":0, "y":2.25},
- {"matrix":[2,16], "x":1, "y":2.25},
- {"matrix":[2,17], "x":2, "y":2.25},
- {"matrix":[5,7], "x":3, "y":2.25, "h":2},
- {"matrix":[2,0], "x":4.25, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":5.75, "y":2.25},
- {"matrix":[2,2], "x":6.75, "y":2.25},
- {"matrix":[2,3], "x":7.75, "y":2.25},
- {"matrix":[2,4], "x":8.75, "y":2.25},
- {"matrix":[2,5], "x":9.75, "y":2.25},
- {"matrix":[2,6], "x":10.75, "y":2.25},
- {"matrix":[2,7], "x":11.75, "y":2.25},
- {"matrix":[2,8], "x":12.75, "y":2.25},
- {"matrix":[2,9], "x":13.75, "y":2.25},
- {"matrix":[2,10], "x":14.75, "y":2.25},
- {"matrix":[2,11], "x":15.75, "y":2.25},
- {"matrix":[2,12], "x":16.75, "y":2.25},
- {"matrix":[2,13], "x":17.75, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":19.5, "y":2.25},
+ {"matrix": [2, 15], "x": 0, "y": 2.25},
+ {"matrix": [2, 16], "x": 1, "y": 2.25},
+ {"matrix": [2, 17], "x": 2, "y": 2.25},
+ {"matrix": [5, 7], "x": 3, "y": 2.25, "h": 2},
+ {"matrix": [2, 0], "x": 4.25, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 12.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 13.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 14.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 15.75, "y": 2.25},
+ {"matrix": [2, 12], "x": 16.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 17.75, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 19.5, "y": 2.25},
- {"matrix":[3,15], "x":0, "y":3.25},
- {"matrix":[3,16], "x":1, "y":3.25},
- {"matrix":[3,17], "x":2, "y":3.25},
- {"matrix":[3,0], "x":4.25, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":6, "y":3.25},
- {"matrix":[3,2], "x":7, "y":3.25},
- {"matrix":[3,3], "x":8, "y":3.25},
- {"matrix":[3,4], "x":9, "y":3.25},
- {"matrix":[3,5], "x":10, "y":3.25},
- {"matrix":[3,6], "x":11, "y":3.25},
- {"matrix":[3,7], "x":12, "y":3.25},
- {"matrix":[3,8], "x":13, "y":3.25},
- {"matrix":[3,9], "x":14, "y":3.25},
- {"matrix":[3,10], "x":15, "y":3.25},
- {"matrix":[3,11], "x":16, "y":3.25},
- {"matrix":[3,13], "x":17, "y":3.25, "w":2.25},
- {"matrix":[3,14], "x":19.5, "y":3.25},
+ {"matrix": [3, 15], "x": 0, "y": 3.25},
+ {"matrix": [3, 16], "x": 1, "y": 3.25},
+ {"matrix": [3, 17], "x": 2, "y": 3.25},
+ {"matrix": [3, 0], "x": 4.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 6, "y": 3.25},
+ {"matrix": [3, 2], "x": 7, "y": 3.25},
+ {"matrix": [3, 3], "x": 8, "y": 3.25},
+ {"matrix": [3, 4], "x": 9, "y": 3.25},
+ {"matrix": [3, 5], "x": 10, "y": 3.25},
+ {"matrix": [3, 6], "x": 11, "y": 3.25},
+ {"matrix": [3, 7], "x": 12, "y": 3.25},
+ {"matrix": [3, 8], "x": 13, "y": 3.25},
+ {"matrix": [3, 9], "x": 14, "y": 3.25},
+ {"matrix": [3, 10], "x": 15, "y": 3.25},
+ {"matrix": [3, 11], "x": 16, "y": 3.25},
+ {"matrix": [3, 13], "x": 17, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 14], "x": 19.5, "y": 3.25},
- {"matrix":[4,15], "x":0, "y":4.25},
- {"matrix":[4,16], "x":1, "y":4.25},
- {"matrix":[4,17], "x":2, "y":4.25},
- {"matrix":[3,12], "x":3, "y":4.25, "h":2},
- {"matrix":[4,0], "x":4.25, "y":4.25, "w":2.25},
- {"matrix":[4,2], "x":6.5, "y":4.25},
- {"matrix":[4,3], "x":7.5, "y":4.25},
- {"matrix":[4,4], "x":8.5, "y":4.25},
- {"matrix":[4,5], "x":9.5, "y":4.25},
- {"matrix":[4,6], "x":10.5, "y":4.25},
- {"matrix":[4,7], "x":11.5, "y":4.25},
- {"matrix":[4,8], "x":12.5, "y":4.25},
- {"matrix":[4,9], "x":13.5, "y":4.25},
- {"matrix":[4,10], "x":14.5, "y":4.25},
- {"matrix":[4,11], "x":15.5, "y":4.25},
- {"matrix":[4,13], "x":16.5, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":18.5, "y":4.5},
+ {"matrix": [4, 15], "x": 0, "y": 4.25},
+ {"matrix": [4, 16], "x": 1, "y": 4.25},
+ {"matrix": [4, 17], "x": 2, "y": 4.25},
+ {"matrix": [3, 12], "x": 3, "y": 4.25, "h": 2},
+ {"matrix": [4, 0], "x": 4.25, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 2], "x": 6.5, "y": 4.25},
+ {"matrix": [4, 3], "x": 7.5, "y": 4.25},
+ {"matrix": [4, 4], "x": 8.5, "y": 4.25},
+ {"matrix": [4, 5], "x": 9.5, "y": 4.25},
+ {"matrix": [4, 6], "x": 10.5, "y": 4.25},
+ {"matrix": [4, 7], "x": 11.5, "y": 4.25},
+ {"matrix": [4, 8], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 9], "x": 13.5, "y": 4.25},
+ {"matrix": [4, 10], "x": 14.5, "y": 4.25},
+ {"matrix": [4, 11], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 13], "x": 16.5, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 18.5, "y": 4.5},
- {"matrix":[5,15], "x":0, "y":5.25, "w":2},
- {"matrix":[5,17], "x":2, "y":5.25},
- {"matrix":[5,0], "x":4.25, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":5.5, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":6.75, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":8, "y":5.25, "w":6.25},
- {"matrix":[5,9], "x":14.25, "y":5.25},
- {"matrix":[5,10], "x":15.25, "y":5.25},
- {"matrix":[5,11], "x":16.25, "y":5.25},
- {"matrix":[5,12], "x":17.5, "y":5.5},
- {"matrix":[5,13], "x":18.5, "y":5.5},
- {"matrix":[5,14], "x":19.5, "y":5.5}
+ {"matrix": [5, 15], "x": 0, "y": 5.25, "w": 2},
+ {"matrix": [5, 17], "x": 2, "y": 5.25},
+ {"matrix": [5, 0], "x": 4.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 5.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 6.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 8, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 9], "x": 14.25, "y": 5.25},
+ {"matrix": [5, 10], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 11], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 12], "x": 17.5, "y": 5.5},
+ {"matrix": [5, 13], "x": 18.5, "y": 5.5},
+ {"matrix": [5, 14], "x": 19.5, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/q12/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q12/ansi_encoder/keymaps/default/keymap.c
index 5410f6ad82e0..a2234c1d4fe7 100644
--- a/keyboards/keychron/q12/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q12/ansi_encoder/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_103(
- KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
+ KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGDN,
KC_P4, KC_P5, KC_P6, 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,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/keymap.c
index 10e3827b4b45..b6349894f522 100644
--- a/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -61,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -71,17 +70,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q12/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q12/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q12/ansi_encoder/keymaps/via/keymap.c
index 5410f6ad82e0..a2234c1d4fe7 100644
--- a/keyboards/keychron/q12/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q12/ansi_encoder/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_103(
- KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
+ KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGDN,
KC_P4, KC_P5, KC_P6, 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,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q12/ansi_encoder/rules.mk b/keyboards/keychron/q12/ansi_encoder/rules.mk
index aa286a161677..80a3f300bd22 100644
--- a/keyboards/keychron/q12/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q12/ansi_encoder/rules.mk
@@ -1,14 +1,22 @@
# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q12/config.h b/keyboards/keychron/q12/config.h
index a2e0e6f15ef1..95281b4854c9 100644
--- a/keyboards/keychron/q12/config.h
+++ b/keyboards/keychron/q12/config.h
@@ -16,6 +16,15 @@
#pragma once
+/* Key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -28,12 +37,14 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define DIP_SWITCH_MATRIX_GRID \
+ { \
+ { 5, 4 } \
+ }
#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
@@ -78,13 +89,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -99,13 +106,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
-
-#define HC595_DS C15
-#define HC595_SHCP A1
-#define HC595_STCP A0
-
-#define SHIFT_COL_START 10
-#define SHIFT_COL_END 17
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/q12/halconf.h b/keyboards/keychron/q12/halconf.h
index 463d177eabc7..e490b49e005a 100644
--- a/keyboards/keychron/q12/halconf.h
+++ b/keyboards/keychron/q12/halconf.h
@@ -17,8 +17,6 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
+#define PAL_USE_CALLBACKS TRUE
#include_next
diff --git a/keyboards/keychron/q12/iso_encoder/config.h b/keyboards/keychron/q12/iso_encoder/config.h
index 416026847c0d..eb0957d7afe7 100644
--- a/keyboards/keychron/q12/iso_encoder/config.h
+++ b/keyboards/keychron/q12/iso_encoder/config.h
@@ -21,7 +21,6 @@
#define DRIVER_2_LED_TOTAL 47
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
diff --git a/keyboards/keychron/q12/iso_encoder/info.json b/keyboards/keychron/q12/iso_encoder/info.json
index 0a36350944f2..cd848c86b60a 100644
--- a/keyboards/keychron/q12/iso_encoder/info.json
+++ b/keyboards/keychron/q12/iso_encoder/info.json
@@ -8,25 +8,9 @@
"pid": "0x01D3",
"device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "C14"}
@@ -37,115 +21,115 @@
"layouts": {
"LAYOUT_iso_104": {
"layout": [
- {"matrix":[0,15], "x":0, "y":0},
- {"matrix":[0,16], "x":1, "y":0},
- {"matrix":[0,17], "x":2, "y":0},
- {"matrix":[5,16], "x":3, "y":0},
- {"matrix":[0,0], "x":4.25, "y":0},
- {"matrix":[0,1], "x":5.5, "y":0},
- {"matrix":[0,2], "x":6.5, "y":0},
- {"matrix":[0,3], "x":7.5, "y":0},
- {"matrix":[0,4], "x":8.5, "y":0},
- {"matrix":[0,5], "x":9.75, "y":0},
- {"matrix":[0,6], "x":10.75, "y":0},
- {"matrix":[0,7], "x":11.75, "y":0},
- {"matrix":[0,8], "x":12.75, "y":0},
- {"matrix":[0,9], "x":14, "y":0},
- {"matrix":[0,10], "x":15, "y":0},
- {"matrix":[0,11], "x":16, "y":0},
- {"matrix":[0,12], "x":17, "y":0},
- {"matrix":[0,13], "x":18.25, "y":0},
- {"matrix":[0,14], "x":19.5, "y":0},
+ {"matrix": [0, 15], "x": 0, "y": 0},
+ {"matrix": [0, 16], "x": 1, "y": 0},
+ {"matrix": [0, 17], "x": 2, "y": 0},
+ {"matrix": [5, 16], "x": 3, "y": 0},
+ {"matrix": [0, 0], "x": 4.25, "y": 0},
+ {"matrix": [0, 1], "x": 5.5, "y": 0},
+ {"matrix": [0, 2], "x": 6.5, "y": 0},
+ {"matrix": [0, 3], "x": 7.5, "y": 0},
+ {"matrix": [0, 4], "x": 8.5, "y": 0},
+ {"matrix": [0, 5], "x": 9.75, "y": 0},
+ {"matrix": [0, 6], "x": 10.75, "y": 0},
+ {"matrix": [0, 7], "x": 11.75, "y": 0},
+ {"matrix": [0, 8], "x": 12.75, "y": 0},
+ {"matrix": [0, 9], "x": 14, "y": 0},
+ {"matrix": [0, 10], "x": 15, "y": 0},
+ {"matrix": [0, 11], "x": 16, "y": 0},
+ {"matrix": [0, 12], "x": 17, "y": 0},
+ {"matrix": [0, 13], "x": 18.25, "y": 0},
+ {"matrix": [0, 14], "x": 19.5, "y": 0},
- {"matrix":[1,15], "x":0, "y":1.25},
- {"matrix":[1,16], "x":1, "y":1.25},
- {"matrix":[1,17], "x":2, "y":1.25},
- {"matrix":[5,5], "x":3, "y":1.25},
- {"matrix":[1,0], "x":4.25, "y":1.25},
- {"matrix":[1,1], "x":5.25, "y":1.25},
- {"matrix":[1,2], "x":6.25, "y":1.25},
- {"matrix":[1,3], "x":7.25, "y":1.25},
- {"matrix":[1,4], "x":8.25, "y":1.25},
- {"matrix":[1,5], "x":9.25, "y":1.25},
- {"matrix":[1,6], "x":10.25, "y":1.25},
- {"matrix":[1,7], "x":11.25, "y":1.25},
- {"matrix":[1,8], "x":12.25, "y":1.25},
- {"matrix":[1,9], "x":13.25, "y":1.25},
- {"matrix":[1,10], "x":14.25, "y":1.25},
- {"matrix":[1,11], "x":15.25, "y":1.25},
- {"matrix":[1,12], "x":16.25, "y":1.25},
- {"matrix":[1,13], "x":17.25, "y":1.25, "w":2},
- {"matrix":[1,14], "x":19.5, "y":1.25},
+ {"matrix": [1, 15], "x": 0, "y": 1.25},
+ {"matrix": [1, 16], "x": 1, "y": 1.25},
+ {"matrix": [1, 17], "x": 2, "y": 1.25},
+ {"matrix": [5, 5], "x": 3, "y": 1.25},
+ {"matrix": [1, 0], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 1], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 2], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 7.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 8.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 9.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 10.25, "y": 1.25},
+ {"matrix": [1, 7], "x": 11.25, "y": 1.25},
+ {"matrix": [1, 8], "x": 12.25, "y": 1.25},
+ {"matrix": [1, 9], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 10], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 13], "x": 17.25, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 19.5, "y": 1.25},
- {"matrix":[2,15], "x":0, "y":2.25},
- {"matrix":[2,16], "x":1, "y":2.25},
- {"matrix":[2,17], "x":2, "y":2.25},
- {"matrix":[5,7], "x":3, "y":2.25, "h":2},
- {"matrix":[2,0], "x":4.25, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":5.75, "y":2.25},
- {"matrix":[2,2], "x":6.75, "y":2.25},
- {"matrix":[2,3], "x":7.75, "y":2.25},
- {"matrix":[2,4], "x":8.75, "y":2.25},
- {"matrix":[2,5], "x":9.75, "y":2.25},
- {"matrix":[2,6], "x":10.75, "y":2.25},
- {"matrix":[2,7], "x":11.75, "y":2.25},
- {"matrix":[2,8], "x":12.75, "y":2.25},
- {"matrix":[2,9], "x":13.75, "y":2.25},
- {"matrix":[2,10], "x":14.75, "y":2.25},
- {"matrix":[2,11], "x":15.75, "y":2.25},
- {"matrix":[2,12], "x":16.75, "y":2.25},
- {"matrix":[2,14], "x":19.5, "y":2.25},
+ {"matrix": [2, 15], "x": 0, "y": 2.25},
+ {"matrix": [2, 16], "x": 1, "y": 2.25},
+ {"matrix": [2, 17], "x": 2, "y": 2.25},
+ {"matrix": [5, 7], "x": 3, "y": 2.25, "h": 2},
+ {"matrix": [2, 0], "x": 4.25, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 12.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 13.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 14.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 15.75, "y": 2.25},
+ {"matrix": [2, 12], "x": 16.75, "y": 2.25},
+ {"matrix": [2, 14], "x": 19.5, "y": 2.25},
- {"matrix":[3,15], "x":0, "y":3.25},
- {"matrix":[3,16], "x":1, "y":3.25},
- {"matrix":[3,17], "x":2, "y":3.25},
- {"matrix":[3,0], "x":4.25, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":6, "y":3.25},
- {"matrix":[3,2], "x":7, "y":3.25},
- {"matrix":[3,3], "x":8, "y":3.25},
- {"matrix":[3,4], "x":9, "y":3.25},
- {"matrix":[3,5], "x":10, "y":3.25},
- {"matrix":[3,6], "x":11, "y":3.25},
- {"matrix":[3,7], "x":12, "y":3.25},
- {"matrix":[3,8], "x":13, "y":3.25},
- {"matrix":[3,9], "x":14, "y":3.25},
- {"matrix":[3,10], "x":15, "y":3.25},
- {"matrix":[3,11], "x":16, "y":3.25},
- {"matrix":[3,13], "x":17, "y":3.25},
- {"matrix":[2,13], "x":18, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,14], "x":19.5, "y":3.25},
+ {"matrix": [3, 15], "x": 0, "y": 3.25},
+ {"matrix": [3, 16], "x": 1, "y": 3.25},
+ {"matrix": [3, 17], "x": 2, "y": 3.25},
+ {"matrix": [3, 0], "x": 4.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 6, "y": 3.25},
+ {"matrix": [3, 2], "x": 7, "y": 3.25},
+ {"matrix": [3, 3], "x": 8, "y": 3.25},
+ {"matrix": [3, 4], "x": 9, "y": 3.25},
+ {"matrix": [3, 5], "x": 10, "y": 3.25},
+ {"matrix": [3, 6], "x": 11, "y": 3.25},
+ {"matrix": [3, 7], "x": 12, "y": 3.25},
+ {"matrix": [3, 8], "x": 13, "y": 3.25},
+ {"matrix": [3, 9], "x": 14, "y": 3.25},
+ {"matrix": [3, 10], "x": 15, "y": 3.25},
+ {"matrix": [3, 11], "x": 16, "y": 3.25},
+ {"matrix": [3, 13], "x": 17, "y": 3.25},
+ {"matrix": [2, 13], "x": 18, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 14], "x": 19.5, "y": 3.25},
- {"matrix":[4,15], "x":0, "y":4.25},
- {"matrix":[4,16], "x":1, "y":4.25},
- {"matrix":[4,17], "x":2, "y":4.25},
- {"matrix":[3,12], "x":3, "y":4.25, "h":2},
- {"matrix":[4,0], "x":4.25, "y":4.25, "w":1.25},
- {"matrix":[4,1], "x":5.5, "y":4.25},
- {"matrix":[4,2], "x":6.5, "y":4.25},
- {"matrix":[4,3], "x":7.5, "y":4.25},
- {"matrix":[4,4], "x":8.5, "y":4.25},
- {"matrix":[4,5], "x":9.5, "y":4.25},
- {"matrix":[4,6], "x":10.5, "y":4.25},
- {"matrix":[4,7], "x":11.5, "y":4.25},
- {"matrix":[4,8], "x":12.5, "y":4.25},
- {"matrix":[4,9], "x":13.5, "y":4.25},
- {"matrix":[4,10], "x":14.5, "y":4.25},
- {"matrix":[4,11], "x":15.5, "y":4.25},
- {"matrix":[4,13], "x":16.5, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":18.5, "y":4.5},
+ {"matrix": [4, 15], "x": 0, "y": 4.25},
+ {"matrix": [4, 16], "x": 1, "y": 4.25},
+ {"matrix": [4, 17], "x": 2, "y": 4.25},
+ {"matrix": [3, 12], "x": 3, "y": 4.25, "h": 2},
+ {"matrix": [4, 0], "x": 4.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 5.5, "y": 4.25},
+ {"matrix": [4, 2], "x": 6.5, "y": 4.25},
+ {"matrix": [4, 3], "x": 7.5, "y": 4.25},
+ {"matrix": [4, 4], "x": 8.5, "y": 4.25},
+ {"matrix": [4, 5], "x": 9.5, "y": 4.25},
+ {"matrix": [4, 6], "x": 10.5, "y": 4.25},
+ {"matrix": [4, 7], "x": 11.5, "y": 4.25},
+ {"matrix": [4, 8], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 9], "x": 13.5, "y": 4.25},
+ {"matrix": [4, 10], "x": 14.5, "y": 4.25},
+ {"matrix": [4, 11], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 13], "x": 16.5, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 18.5, "y": 4.5},
- {"matrix":[5,15], "x":0, "y":5.25, "w":2},
- {"matrix":[5,17], "x":2, "y":5.25},
- {"matrix":[5,0], "x":4.25, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":5.5, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":6.75, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":8, "y":5.25, "w":6.25},
- {"matrix":[5,9], "x":14.25, "y":5.25},
- {"matrix":[5,10], "x":15.25, "y":5.25},
- {"matrix":[5,11], "x":16.25, "y":5.25},
- {"matrix":[5,12], "x":17.5, "y":5.5},
- {"matrix":[5,13], "x":18.5, "y":5.5},
- {"matrix":[5,14], "x":19.5, "y":5.5}
+ {"matrix": [5, 15], "x": 0, "y": 5.25, "w": 2},
+ {"matrix": [5, 17], "x": 2, "y": 5.25},
+ {"matrix": [5, 0], "x": 4.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 5.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 6.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 8, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 9], "x": 14.25, "y": 5.25},
+ {"matrix": [5, 10], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 11], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 12], "x": 17.5, "y": 5.5},
+ {"matrix": [5, 13], "x": 18.5, "y": 5.5},
+ {"matrix": [5, 14], "x": 19.5, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/q12/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q12/iso_encoder/keymaps/default/keymap.c
index 988eb446cd02..7cad0672f2fe 100644
--- a/keyboards/keychron/q12/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q12/iso_encoder/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_104(
- KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
+ KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGDN,
KC_P4, KC_P5, KC_P6, 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_NUHS, KC_ENT, KC_HOME,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q12/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q12/iso_encoder/keymaps/keychron/keymap.c
index 57e9a0e1fb40..9c79f73d7971 100644
--- a/keyboards/keychron/q12/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q12/iso_encoder/keymaps/keychron/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -61,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -71,17 +70,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q12/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q12/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/q12/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q12/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q12/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q12/iso_encoder/keymaps/via/keymap.c
index 988eb446cd02..7cad0672f2fe 100644
--- a/keyboards/keychron/q12/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q12/iso_encoder/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_104(
- KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
+ KC_MUTE, KC_F13, KC_F14, KC_F15, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
KC_P7, KC_P8, KC_P9, KC_PPLS, 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_PGDN,
KC_P4, KC_P5, KC_P6, 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_NUHS, KC_ENT, KC_HOME,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q12/iso_encoder/rules.mk b/keyboards/keychron/q12/iso_encoder/rules.mk
index aa286a161677..986772495755 100644
--- a/keyboards/keychron/q12/iso_encoder/rules.mk
+++ b/keyboards/keychron/q12/iso_encoder/rules.mk
@@ -1,14 +1,23 @@
# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
+VPATH ?= keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q12/matrix.c b/keyboards/keychron/q12/matrix.c
new file mode 100644
index 000000000000..8229517fd9ce
--- /dev/null
+++ b/keyboards/keychron/q12/matrix.c
@@ -0,0 +1,208 @@
+/* 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 .
+ */
+
+#include "matrix.h"
+#include "quantum.h"
+
+// Pin connected to DS of 74HC595
+#define DATA_PIN C15
+// Pin connected to SH_CP of 74HC595
+#define CLOCK_PIN A1
+// Pin connected to ST_CP of 74HC595
+#define LATCH_PIN A0
+
+#ifdef MATRIX_ROW_PINS
+static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+#endif // MATRIX_ROW_PINS
+#ifdef MATRIX_COL_PINS
+static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif // MATRIX_COL_PINS
+
+#define ROWS_PER_HAND (MATRIX_ROWS)
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinLow(pin);
+ }
+}
+
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinHigh(pin);
+ }
+}
+
+static inline void setPinInputHigh_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinInputHigh(pin);
+ }
+}
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+static void shiftOut(uint8_t dataOut) {
+ for (uint8_t i = 0; i < 8; i++) {
+ if (dataOut & 0x1) {
+ setPinOutput_writeHigh(DATA_PIN);
+ } else {
+ setPinOutput_writeLow(DATA_PIN);
+ }
+ dataOut = dataOut >> 1;
+ setPinOutput_writeHigh(CLOCK_PIN);
+ setPinOutput_writeLow(CLOCK_PIN);
+ }
+ setPinOutput_writeHigh(LATCH_PIN);
+ setPinOutput_writeLow(LATCH_PIN);
+}
+
+static void shiftout_single(uint8_t data) {
+ if (data & 0x1) {
+ setPinOutput_writeHigh(DATA_PIN);
+ } else {
+ setPinOutput_writeLow(DATA_PIN);
+ }
+ setPinOutput_writeHigh(CLOCK_PIN);
+ setPinOutput_writeLow(CLOCK_PIN);
+
+ setPinOutput_writeHigh(LATCH_PIN);
+ setPinOutput_writeLow(LATCH_PIN);
+}
+
+static bool select_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+ setPinOutput_writeLow(pin);
+ return true;
+ } else {
+ if (col == 10) {
+ shiftout_single(0x00);
+ } else {
+ shiftout_single(0x01);
+ }
+ return true;
+ }
+ return false;
+}
+
+static void unselect_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ if (col == (MATRIX_COLS - 1))
+ setPinOutput_writeHigh(CLOCK_PIN);
+ setPinOutput_writeLow(CLOCK_PIN);
+ setPinOutput_writeHigh(LATCH_PIN);
+ setPinOutput_writeLow(LATCH_PIN);
+ }
+}
+
+static void unselect_cols(void) {
+ // unselect column pins
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ pin_t pin = col_pins[x];
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ }
+ if (x == 10)
+ // unselect shift Register
+ shiftOut(0xFF);
+ }
+}
+
+static void matrix_init_pins(void) {
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ if (row_pins[x] != NO_PIN) {
+ setPinInputHigh_atomic(row_pins[x]);
+ }
+ }
+}
+
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ bool key_pressed = false;
+
+ // Select col
+ if (!select_col(current_col)) { // select col
+ return; // skip NO_PIN col
+ }
+
+ if (current_col < 10) {
+ matrix_output_select_delay();
+ } else {
+ for (int8_t cycle = 4; cycle > 0; cycle--) {
+ matrix_output_select_delay(); // 0.25us
+ matrix_output_select_delay();
+ matrix_output_select_delay();
+ matrix_output_select_delay();
+ }
+ }
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
+ // Check row pin state
+ if (readMatrixPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= row_shifter;
+ key_pressed = true;
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~row_shifter;
+ }
+ }
+
+ // // Unselect col
+ unselect_col(current_col);
+ matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ matrix_init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
+
+ // Set col, read rows
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
+ matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
+ }
+
+ bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
+ if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
+
+ return changed;
+}
diff --git a/keyboards/keychron/q12/q12.c b/keyboards/keychron/q12/q12.c
index c13cd641e9aa..3d8eab56590b 100644
--- a/keyboards/keychron/q12/q12.c
+++ b/keyboards/keychron/q12/q12.c
@@ -37,3 +37,57 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
return true;
}
#endif
+
+#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_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 defined(CAPS_LOCK_LED_INDEX)
+ 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);
+ }
+ }
+# endif // CAPS_LOCK_LED_INDEX
+# if defined(NUM_LOCK_LED_INDEX)
+ if (host_keyboard_led_state().num_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
+ } else {
+ if (!rgb_matrix_get_flags()) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
+ }
+ }
+# endif // NUM_LOCK_LED_INDEX
+ return true;
+}
+#endif
diff --git a/keyboards/keychron/q12/readme.md b/keyboards/keychron/q12/readme.md
index 34ac6e89a444..be9ec6f3e81a 100644
--- a/keyboards/keychron/q12/readme.md
+++ b/keyboards/keychron/q12/readme.md
@@ -1,22 +1,18 @@
# Keychron Q12
-![Keychron Q12](https://i.imgur.com/MiuqHFj.jpg)
-
A customizable 96% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q12
-* Hardware Availability: [Keychron Q12 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q12-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
- make keychron/q12/ansi_encoder:default
- make keychron/q12/iso_encoder:default
+ make keychron/q12/q12_ansi_stm32l432:default
Flashing example for this keyboard:
- make keychron/q12/ansi_encoder:default:flash
- make keychron/q12/iso_encoder:default:flash
+ make keychron/q12/q12_ansi_stm32l432:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/iso_atmega32u4_encoder.c b/keyboards/keychron/q1v1/ansi/ansi.c
similarity index 57%
rename from keyboards/keychron/q1/iso_atmega32u4_encoder/iso_atmega32u4_encoder.c
rename to keyboards/keychron/q1v1/ansi/ansi.c
index c0095fd1f254..3644f8c9bc78 100644
--- a/keyboards/keychron/q1/iso_atmega32u4_encoder/iso_atmega32u4_encoder.c
+++ b/keyboards/keychron/q1v1/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,15 +16,6 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b111111111111101,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
-};
-
#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
@@ -79,6 +70,7 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
+ {0, I_14, G_14, H_14},
{0, I_16, G_16, H_16},
{0, L_1, J_1, K_1},
@@ -94,11 +86,9 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_11, J_11, K_11},
{0, L_12, J_12, K_12},
{0, L_14, J_14, K_14},
- {0, I_14, G_14, H_14},
{0, L_16, J_16, K_16},
{1, C_1, A_1, B_1},
- {1, C_2, A_2, B_2},
{1, C_3, A_3, B_3},
{1, C_4, A_4, B_4},
{1, C_5, A_5, B_5},
@@ -121,56 +111,6 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_13, D_13, E_13},
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
- {1, F_16, D_16, E_16}
-};
-
-#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, 11, 12, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 72, 56, 58 },
- { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 81, 71, 13 },
- { 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 82 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
- {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
- {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {224,26},
- {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {187,38}, {203,32}, {224,38},
- {2,49}, {18,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
- {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
- }
+ {1, F_16, D_16, E_16},
};
-
-#endif
-
-#ifdef ENCODER_ENABLE
-
-void keyboard_post_init_kb(void) {
- PCMSK0 |= (1 << 7);
- PCICR |= (1 << PCIE0);
- sei();
-
- // allow user keymaps to do custom post_init
- keyboard_post_init_user();
-}
-
-ISR(PCINT0_vect) {
- encoder_inerrupt_read(0);
-}
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q1v1/ansi/config.h b/keyboards/keychron/q1v1/ansi/config.h
new file mode 100644
index 000000000000..130eb0217cf1
--- /dev/null
+++ b/keyboards/keychron/q1v1/ansi/config.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 @ 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 .
+ */
+
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 82
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
+// #define CAPS_LOCK_LED_INDEX 45 // Disable caps-lock LED to reduce code size
diff --git a/keyboards/keychron/q1v1/ansi/info.json b/keyboards/keychron/q1v1/ansi/info.json
new file mode 100644
index 000000000000..17ed94557704
--- /dev/null
+++ b/keyboards/keychron/q1v1/ansi/info.json
@@ -0,0 +1,190 @@
+{
+ "usb": {
+ "pid": "0x0100",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.25, "y": 0},
+ {"matrix": [0, 3], "x": 2.25, "y": 0},
+ {"matrix": [0, 4], "x": 3.25, "y": 0},
+ {"matrix": [0, 5], "x": 4.25, "y": 0},
+ {"matrix": [0, 6], "x": 5.5, "y": 0},
+ {"matrix": [0, 7], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [0, 9], "x": 8.5, "y": 0},
+ {"matrix": [0, 10], "x": 9.75, "y": 0},
+ {"matrix": [0, 11], "x": 10.75, "y": 0},
+ {"matrix": [0, 12], "x": 11.75, "y": 0},
+ {"matrix": [0, 13], "x": 12.75, "y": 0},
+ {"matrix": [4, 14], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "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": [1, 4], "x": 4, "y": 1},
+ {"matrix": [1, 5], "x": 5, "y": 1},
+ {"matrix": [1, 6], "x": 6, "y": 1},
+ {"matrix": [1, 7], "x": 7, "y": 1},
+ {"matrix": [1, 8], "x": 8, "y": 1},
+ {"matrix": [1, 9], "x": 9, "y": 1},
+ {"matrix": [1, 10], "x": 10, "y": 1},
+ {"matrix": [1, 11], "x": 11, "y": 1},
+ {"matrix": [1, 12], "x": 12, "y": 1},
+ {"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1},
+
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2},
+ {"matrix": [2, 2], "x": 2.5, "y": 2},
+ {"matrix": [2, 3], "x": 3.5, "y": 2},
+ {"matrix": [2, 4], "x": 4.5, "y": 2},
+ {"matrix": [2, 5], "x": 5.5, "y": 2},
+ {"matrix": [2, 6], "x": 6.5, "y": 2},
+ {"matrix": [2, 7], "x": 7.5, "y": 2},
+ {"matrix": [2, 8], "x": 8.5, "y": 2},
+ {"matrix": [2, 9], "x": 9.5, "y": 2},
+ {"matrix": [2, 10], "x": 10.5, "y": 2},
+ {"matrix": [2, 11], "x": 11.5, "y": 2},
+ {"matrix": [2, 12], "x": 12.5, "y": 2},
+ {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3},
+ {"matrix": [3, 2], "x": 2.75, "y": 3},
+ {"matrix": [3, 3], "x": 3.75, "y": 3},
+ {"matrix": [3, 4], "x": 4.75, "y": 3},
+ {"matrix": [3, 5], "x": 5.75, "y": 3},
+ {"matrix": [3, 6], "x": 6.75, "y": 3},
+ {"matrix": [3, 7], "x": 7.75, "y": 3},
+ {"matrix": [3, 8], "x": 8.75, "y": 3},
+ {"matrix": [3, 9], "x": 9.75, "y": 3},
+ {"matrix": [3, 10], "x": 10.75, "y": 3},
+ {"matrix": [3, 11], "x": 11.75, "y": 3},
+ {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
+ {"matrix": [3, 14], "x": 15.25, "y": 3},
+
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4},
+ {"matrix": [4, 3], "x": 3.25, "y": 4},
+ {"matrix": [4, 4], "x": 4.25, "y": 4},
+ {"matrix": [4, 5], "x": 5.25, "y": 4},
+ {"matrix": [4, 6], "x": 6.25, "y": 4},
+ {"matrix": [4, 7], "x": 7.25, "y": 4},
+ {"matrix": [4, 8], "x": 8.25, "y": 4},
+ {"matrix": [4, 9], "x": 9.25, "y": 4},
+ {"matrix": [4, 10], "x": 10.25, "y": 4},
+ {"matrix": [4, 11], "x": 11.25, "y": 4},
+ {"matrix": [4, 13], "x": 12.25, "y": 4, "w": 1.75},
+ {"matrix": [3, 12], "x": 14.25, "y": 4.25},
+
+ {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5},
+ {"matrix": [5, 11], "x": 11, "y": 5},
+ {"matrix": [5, 12], "x": 12, "y": 5},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.25},
+ {"matrix": [4, 12], "x": 14.25, "y": 5.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":187, "y":0},
+ {"matrix":[4, 14], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 13], "flags":4, "x":202, "y":26},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":196, "y":38},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":9, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[3, 12], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[4, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/keymap.c b/keyboards/keychron/q1v1/ansi/keymaps/default/keymap.c
similarity index 99%
rename from keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/keymap.c
rename to keyboards/keychron/q1v1/ansi/keymaps/default/keymap.c
index 54efc408e20e..ec4e05ca97ee 100644
--- a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v1/ansi/keymaps/default/keymap.c
@@ -16,8 +16,6 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -28,6 +26,7 @@ enum layers{
#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_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/keymap.c b/keyboards/keychron/q1v1/ansi/keymaps/keychron/keymap.c
similarity index 72%
rename from keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v1/ansi/keymaps/keychron/keymap.c
index b169397079b3..6cd08f3533db 100644
--- a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v1/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -18,51 +18,48 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -72,10 +69,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v1/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q1v1/ansi/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/q1v1/ansi/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/default/keymap.c b/keyboards/keychron/q1v1/ansi/keymaps/via/keymap.c
similarity index 98%
rename from keyboards/keychron/q1/ansi_atmega32u4/keymaps/default/keymap.c
rename to keyboards/keychron/q1v1/ansi/keymaps/via/keymap.c
index 339ba6d7ffc7..c7bcb8c2e798 100644
--- a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v1/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/rules.mk b/keyboards/keychron/q1v1/ansi/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/ansi_atmega32u4/keymaps/via/rules.mk
rename to keyboards/keychron/q1v1/ansi/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/rules.mk b/keyboards/keychron/q1v1/ansi/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/ansi_atmega32u4/rules.mk
rename to keyboards/keychron/q1v1/ansi/rules.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4/ansi_atmega32u4.c b/keyboards/keychron/q1v1/ansi_encoder/ansi_encoder.c
similarity index 61%
rename from keyboards/keychron/q1/ansi_atmega32u4/ansi_atmega32u4.c
rename to keyboards/keychron/q1v1/ansi_encoder/ansi_encoder.c
index fb6016527f31..9c45ae33552a 100644
--- a/keyboards/keychron/q1/ansi_atmega32u4/ansi_atmega32u4.c
+++ b/keyboards/keychron/q1v1/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,17 +16,7 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b111111111111101,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
-};
-
#ifdef RGB_MATRIX_ENABLE
-
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
@@ -122,37 +112,4 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}
};
-
-#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, 11, 12, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
- { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
- { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 81 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
- {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
- {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
- {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
- {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
- {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q1v1/ansi_encoder/config.h b/keyboards/keychron/q1v1/ansi_encoder/config.h
new file mode 100644
index 000000000000..7330e52bbd14
--- /dev/null
+++ b/keyboards/keychron/q1v1/ansi_encoder/config.h
@@ -0,0 +1,28 @@
+/* Copyright 2021 @ 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 .
+ */
+
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 82
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
+
+/* Enable caps-lock LED */
+// #define CAPS_LOCK_LED_INDEX 45 // Disable caps-lock LED to reduce code size
diff --git a/keyboards/keychron/q1v1/ansi_encoder/info.json b/keyboards/keychron/q1v1/ansi_encoder/info.json
new file mode 100644
index 000000000000..ce4f1acdbb73
--- /dev/null
+++ b/keyboards/keychron/q1v1/ansi_encoder/info.json
@@ -0,0 +1,198 @@
+{
+ "usb": {
+ "pid": "0x0101",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "encoder": true
+ },
+ "encoder": {
+ "rotary": [
+ {"pin_a": "E6", "pin_b": "B7"}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.25, "y": 0},
+ {"matrix": [0, 3], "x": 2.25, "y": 0},
+ {"matrix": [0, 4], "x": 3.25, "y": 0},
+ {"matrix": [0, 5], "x": 4.25, "y": 0},
+ {"matrix": [0, 6], "x": 5.5, "y": 0},
+ {"matrix": [0, 7], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [0, 9], "x": 8.5, "y": 0},
+ {"matrix": [0, 10], "x": 9.75, "y": 0},
+ {"matrix": [0, 11], "x": 10.75, "y": 0},
+ {"matrix": [0, 12], "x": 11.75, "y": 0},
+ {"matrix": [0, 13], "x": 12.75, "y": 0},
+ {"matrix": [4, 14], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "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": [1, 4], "x": 4, "y": 1},
+ {"matrix": [1, 5], "x": 5, "y": 1},
+ {"matrix": [1, 6], "x": 6, "y": 1},
+ {"matrix": [1, 7], "x": 7, "y": 1},
+ {"matrix": [1, 8], "x": 8, "y": 1},
+ {"matrix": [1, 9], "x": 9, "y": 1},
+ {"matrix": [1, 10], "x": 10, "y": 1},
+ {"matrix": [1, 11], "x": 11, "y": 1},
+ {"matrix": [1, 12], "x": 12, "y": 1},
+ {"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1},
+
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2},
+ {"matrix": [2, 2], "x": 2.5, "y": 2},
+ {"matrix": [2, 3], "x": 3.5, "y": 2},
+ {"matrix": [2, 4], "x": 4.5, "y": 2},
+ {"matrix": [2, 5], "x": 5.5, "y": 2},
+ {"matrix": [2, 6], "x": 6.5, "y": 2},
+ {"matrix": [2, 7], "x": 7.5, "y": 2},
+ {"matrix": [2, 8], "x": 8.5, "y": 2},
+ {"matrix": [2, 9], "x": 9.5, "y": 2},
+ {"matrix": [2, 10], "x": 10.5, "y": 2},
+ {"matrix": [2, 11], "x": 11.5, "y": 2},
+ {"matrix": [2, 12], "x": 12.5, "y": 2},
+ {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3},
+ {"matrix": [3, 2], "x": 2.75, "y": 3},
+ {"matrix": [3, 3], "x": 3.75, "y": 3},
+ {"matrix": [3, 4], "x": 4.75, "y": 3},
+ {"matrix": [3, 5], "x": 5.75, "y": 3},
+ {"matrix": [3, 6], "x": 6.75, "y": 3},
+ {"matrix": [3, 7], "x": 7.75, "y": 3},
+ {"matrix": [3, 8], "x": 8.75, "y": 3},
+ {"matrix": [3, 9], "x": 9.75, "y": 3},
+ {"matrix": [3, 10], "x": 10.75, "y": 3},
+ {"matrix": [3, 11], "x": 11.75, "y": 3},
+ {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
+ {"matrix": [3, 14], "x": 15.25, "y": 3},
+
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4},
+ {"matrix": [4, 3], "x": 3.25, "y": 4},
+ {"matrix": [4, 4], "x": 4.25, "y": 4},
+ {"matrix": [4, 5], "x": 5.25, "y": 4},
+ {"matrix": [4, 6], "x": 6.25, "y": 4},
+ {"matrix": [4, 7], "x": 7.25, "y": 4},
+ {"matrix": [4, 8], "x": 8.25, "y": 4},
+ {"matrix": [4, 9], "x": 9.25, "y": 4},
+ {"matrix": [4, 10], "x": 10.25, "y": 4},
+ {"matrix": [4, 11], "x": 11.25, "y": 4},
+ {"matrix": [4, 13], "x": 12.25, "y": 4, "w": 1.75},
+ {"matrix": [3, 12], "x": 14.25, "y": 4.25},
+
+ {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5},
+ {"matrix": [5, 11], "x": 11, "y": 5},
+ {"matrix": [5, 12], "x": 12, "y": 5},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.25},
+ {"matrix": [4, 12], "x": 14.25, "y": 5.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":187, "y":0},
+ {"matrix":[4, 14], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 13], "flags":4, "x":202, "y":26},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":196, "y":38},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":9, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[3, 12], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[4, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1v1/ansi_encoder/keymaps/default/keymap.c
similarity index 68%
rename from keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/keymap.c
rename to keyboards/keychron/q1v1/ansi_encoder/keymaps/default/keymap.c
index 28e51863a19f..2f41d68b5582 100644
--- a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v1/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,57 +16,53 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
-#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_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_ROPT, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, KC_BRID, KC_BRIU, _______, _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q1v1/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1v1/ansi_encoder/keymaps/default/rules.mk
new file mode 100644
index 000000000000..a40474b4d5c7
--- /dev/null
+++ b/keyboards/keychron/q1v1/ansi_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1v1/ansi_encoder/keymaps/keychron/keymap.c
similarity index 71%
rename from keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v1/ansi_encoder/keymaps/keychron/keymap.c
index b976a4ebeb1a..bf202ea5eefc 100644
--- a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v1/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -18,59 +18,56 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -81,10 +78,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v1/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v1/ansi_encoder/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..936769ddc6e2
--- /dev/null
+++ b/keyboards/keychron/q1v1/ansi_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1v1/ansi_encoder/keymaps/via/keymap.c
similarity index 68%
rename from keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/keymap.c
rename to keyboards/keychron/q1v1/ansi_encoder/keymaps/via/keymap.c
index 28e51863a19f..18ae53420147 100644
--- a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v1/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,57 +16,53 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
-#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_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_ansi_82(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, KC_BRID, KC_BRIU, _______, _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1v1/ansi_encoder/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/q1v1/ansi_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/rules.mk b/keyboards/keychron/q1v1/ansi_encoder/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/ansi_atmega32u4_encoder/rules.mk
rename to keyboards/keychron/q1v1/ansi_encoder/rules.mk
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/config.h b/keyboards/keychron/q1v1/config.h
similarity index 60%
rename from keyboards/keychron/q1/ansi_atmega32u4_encoder/config.h
rename to keyboards/keychron/q1v1/config.h
index 1fa21464e1a9..639a1e463405 100644
--- a/keyboards/keychron/q1/ansi_atmega32u4_encoder/config.h
+++ b/keyboards/keychron/q1v1/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,22 +16,27 @@
#pragma once
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 0, 1 } }
-#define SCAN_COUNT_MAX 100
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1011111
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 59
-#define DRIVER_2_LED_TOTAL 23
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { {0,1} }
+
+/* Disable DIP switch in matrix data */
+#define MATRIX_MASKED
+
+/* Disable RGB lighting when PC is in suspend */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYRELEASES
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q1v1/info.json b/keyboards/keychron/q1v1/info.json
new file mode 100644
index 000000000000..4735fc308400
--- /dev/null
+++ b/keyboards/keychron/q1v1/info.json
@@ -0,0 +1,54 @@
+{
+ "keyboard_name": "Q1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "atmega32u4",
+ "bootloader": "atmel-dfu",
+ "usb": {
+ "vid": "0x3434",
+ "force_nkro": true
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "lto": true
+ },
+ "rgb_matrix": {
+ "driver": "is31fl3733",
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": 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
+ }
+ },
+ "matrix_pins": {
+ "cols": ["D5", "D4", "D6", "D7", "B4", "B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "F1", "F0"],
+ "rows": ["D3", "D2", "B3", "B2", "B1", "B0"]
+ },
+ "diode_direction": "ROW2COL"
+}
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q1v1/iso/config.h
similarity index 73%
rename from keyboards/keychron/q2/ansi_encoder/keymaps/via/config.h
rename to keyboards/keychron/q1v1/iso/config.h
index 54bbaf673fed..ae3c43ff7124 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/via/config.h
+++ b/keyboards/keychron/q1v1/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -14,4 +14,10 @@
* along with this program. If not, see .
*/
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 83
+
+/* Enable caps-lock LED */
+// #define CAPS_LOCK_LED_INDEX 44 // Disable caps-lock LED to reduce code size
diff --git a/keyboards/keychron/q1v1/iso/info.json b/keyboards/keychron/q1v1/iso/info.json
new file mode 100644
index 000000000000..4b66d1fbeb1c
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/info.json
@@ -0,0 +1,192 @@
+{
+ "usb": {
+ "pid": "0x0102",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.25, "y": 0},
+ {"matrix": [0, 3], "x": 2.25, "y": 0},
+ {"matrix": [0, 4], "x": 3.25, "y": 0},
+ {"matrix": [0, 5], "x": 4.25, "y": 0},
+ {"matrix": [0, 6], "x": 5.5, "y": 0},
+ {"matrix": [0, 7], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [0, 9], "x": 8.5, "y": 0},
+ {"matrix": [0, 10], "x": 9.75, "y": 0},
+ {"matrix": [0, 11], "x": 10.75, "y": 0},
+ {"matrix": [0, 12], "x": 11.75, "y": 0},
+ {"matrix": [0, 13], "x": 12.75, "y": 0},
+ {"matrix": [4, 14], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 14], "x": 15.25, "y": 3.25},
+
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [3, 12], "x": 14.25, "y": 4.5},
+
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [4, 12], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.5}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":187, "y":0},
+ {"matrix":[4, 14], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":187, "y":38},
+ {"matrix":[2, 13], "flags":1, "x":203, "y":32},
+ {"matrix":[3, 14], "flags":1, "x":209, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":49},
+ {"matrix":[4, 1], "flags":1, "x":18, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[3, 12], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[4, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1v1/iso/iso.c b/keyboards/keychron/q1v1/iso/iso.c
new file mode 100644
index 000000000000..aa90584dea5c
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/iso.c
@@ -0,0 +1,116 @@
+/* Copyright 2021 @ 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 "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, C_1, A_1, B_1},
+ {0, C_3, A_3, B_3},
+ {0, C_4, A_4, B_4},
+ {0, C_5, A_5, B_5},
+ {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, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, C_14, A_14, B_14},
+ {0, C_15, A_15, B_15},
+ {0, C_16, A_16, B_16},
+
+ {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, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {0, F_10, D_10, E_10},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_14, D_14, E_14},
+ {0, F_16, D_16, E_16},
+
+ {0, I_1, G_1, H_1},
+ {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, 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, I_10, G_10, H_10},
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_16, G_16, H_16},
+
+ {0, L_1, J_1, K_1},
+ {0, L_2, J_2, K_2},
+ {0, L_3, J_3, K_3},
+ {0, L_4, J_4, K_4},
+ {0, L_5, J_5, K_5},
+ {0, L_6, J_6, K_6},
+ {0, L_7, J_7, K_7},
+ {0, L_8, J_8, K_8},
+ {0, L_9, J_9, K_9},
+ {0, L_10, J_10, K_10},
+ {0, L_11, J_11, K_11},
+ {0, L_12, J_12, K_12},
+ {0, L_14, J_14, K_14},
+ {0, I_14, G_14, H_14},
+ {0, L_16, J_16, K_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_2, A_2, B_2},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_7, D_7, E_7},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16}
+};
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q1/iso_atmega32u4/keymaps/via/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/default/keymap.c
similarity index 77%
rename from keyboards/keychron/q1/iso_atmega32u4/keymaps/via/keymap.c
rename to keyboards/keychron/q1v1/iso/keymaps/default/keymap.c
index 1db27f15969a..9b17ca737d28 100644
--- a/keyboards/keychron/q1/iso_atmega32u4/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v1/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,48 +16,47 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ };
diff --git a/keyboards/keychron/q1v1/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/keychron/keymap.c
new file mode 100644
index 000000000000..bf486149a7c4
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/keychron/keymap.c
@@ -0,0 +1,76 @@
+/* Copyright 2021 @ 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_iso_83(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/q1v1/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q1v1/iso/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1/iso_atmega32u4/keymaps/default/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/via/keymap.c
similarity index 77%
rename from keyboards/keychron/q1/iso_atmega32u4/keymaps/default/keymap.c
rename to keyboards/keychron/q1v1/iso/keymaps/via/keymap.c
index 1db27f15969a..2b5ae78879e3 100644
--- a/keyboards/keychron/q1/iso_atmega32u4/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v1/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,48 +16,47 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q1/ansi_stm32l432/keymaps/via/rules.mk b/keyboards/keychron/q1v1/iso/keymaps/via/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/ansi_stm32l432/keymaps/via/rules.mk
rename to keyboards/keychron/q1v1/iso/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1/iso_atmega32u4/rules.mk b/keyboards/keychron/q1v1/iso/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/iso_atmega32u4/rules.mk
rename to keyboards/keychron/q1v1/iso/rules.mk
diff --git a/keyboards/keychron/q1v1/iso_encoder/config.h b/keyboards/keychron/q1v1/iso_encoder/config.h
new file mode 100644
index 000000000000..e802a7422193
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso_encoder/config.h
@@ -0,0 +1,28 @@
+/* Copyright 2021 @ 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 .
+ */
+
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 83
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
+
+/* Enable caps-lock LED */
+// #define CAPS_LOCK_LED_INDEX 44 // Disable caps-lock LED to reduce code size
diff --git a/keyboards/keychron/q1v1/iso_encoder/info.json b/keyboards/keychron/q1v1/iso_encoder/info.json
new file mode 100644
index 000000000000..03baa7f1aafc
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso_encoder/info.json
@@ -0,0 +1,200 @@
+{
+ "usb": {
+ "pid": "0x0103",
+ "device_version": "1.0.2"
+ },
+ "features": {
+ "encoder": true
+ },
+ "encoder": {
+ "rotary": [
+ {"pin_a": "E6", "pin_b": "B7"}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 1.25, "y": 0},
+ {"matrix": [0, 3], "x": 2.25, "y": 0},
+ {"matrix": [0, 4], "x": 3.25, "y": 0},
+ {"matrix": [0, 5], "x": 4.25, "y": 0},
+ {"matrix": [0, 6], "x": 5.5, "y": 0},
+ {"matrix": [0, 7], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [0, 9], "x": 8.5, "y": 0},
+ {"matrix": [0, 10], "x": 9.75, "y": 0},
+ {"matrix": [0, 11], "x": 10.75, "y": 0},
+ {"matrix": [0, 12], "x": 11.75, "y": 0},
+ {"matrix": [0, 13], "x": 12.75, "y": 0},
+ {"matrix": [4, 14], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 14], "x": 15.25, "y": 3.25},
+
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [3, 12], "x": 14.25, "y": 4.5},
+
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [4, 12], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.5}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":187, "y":0},
+ {"matrix":[4, 14], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":187, "y":38},
+ {"matrix":[2, 13], "flags":1, "x":203, "y":32},
+ {"matrix":[3, 14], "flags":1, "x":209, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":49},
+ {"matrix":[4, 1], "flags":1, "x":18, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[3, 12], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[4, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/iso_atmega32u4/iso_atmega32u4.c b/keyboards/keychron/q1v1/iso_encoder/iso_encoder.c
similarity index 61%
rename from keyboards/keychron/q1/iso_atmega32u4/iso_atmega32u4.c
rename to keyboards/keychron/q1v1/iso_encoder/iso_encoder.c
index 63d15f921806..aa152002e947 100644
--- a/keyboards/keychron/q1/iso_atmega32u4/iso_atmega32u4.c
+++ b/keyboards/keychron/q1v1/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,15 +16,6 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b111111111111101,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
-};
-
#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
@@ -121,39 +112,6 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_13, D_13, E_13},
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
- {1, F_16, D_16, E_16}
-};
-
-#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, 11, 12, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 72, 56, 58 },
- { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 81, 71, 13 },
- { 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 82 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
- {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
- {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {224,26},
- {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {187,38}, {203,32}, {224,38},
- {2,49}, {18,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
- {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
- }
+ {1, F_16, D_16, E_16},
};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1v1/iso_encoder/keymaps/default/keymap.c
similarity index 87%
rename from keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/keymap.c
rename to keyboards/keychron/q1v1/iso_encoder/keymaps/default/keymap.c
index ab0bc57e0b7a..6463ef085d1e 100644
--- a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v1/iso_encoder/keymaps/default/keymap.c
@@ -16,18 +16,14 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
-#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_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
@@ -38,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD , KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -51,10 +47,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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,
+ _______, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,10 +59,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q1v1/iso_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1v1/iso_encoder/keymaps/default/rules.mk
new file mode 100644
index 000000000000..a40474b4d5c7
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1v1/iso_encoder/keymaps/keychron/keymap.c
similarity index 89%
rename from keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v1/iso_encoder/keymaps/keychron/keymap.c
index 50c052f75685..4746d9e46eff 100644
--- a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v1/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -18,18 +18,17 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
@@ -50,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
_______, 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,
@@ -61,18 +60,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -83,10 +78,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v1/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v1/iso_encoder/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..936769ddc6e2
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1v1/iso_encoder/keymaps/via/keymap.c
similarity index 86%
rename from keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/keymap.c
rename to keyboards/keychron/q1v1/iso_encoder/keymaps/via/keymap.c
index ab0bc57e0b7a..7fbf6195119a 100644
--- a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v1/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,18 +16,14 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
-#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_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
@@ -38,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD , KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -51,10 +47,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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,
+ _______, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,10 +59,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q1v1/iso_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1v1/iso_encoder/keymaps/via/rules.mk
new file mode 100644
index 000000000000..4253f570f0bb
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso_encoder/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/rules.mk b/keyboards/keychron/q1v1/iso_encoder/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/iso_atmega32u4_encoder/rules.mk
rename to keyboards/keychron/q1v1/iso_encoder/rules.mk
diff --git a/keyboards/keychron/v6/jis_encoder/config.h b/keyboards/keychron/q1v1/q1v1.c
similarity index 55%
rename from keyboards/keychron/v6/jis_encoder/config.h
rename to keyboards/keychron/q1v1/q1v1.c
index 0766ba1a00e0..3df62c4339bf 100644
--- a/keyboards/keychron/v6/jis_encoder/config.h
+++ b/keyboards/keychron/q1v1/q1v1.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -14,21 +14,25 @@
* along with this program. If not, see .
*/
-#pragma once
+#include "quantum.h"
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 61
-#define DRIVER_2_LED_TOTAL 51
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+const matrix_row_t matrix_mask[] = {
+ 0b0111111111111101,
+ 0b0111111111111111,
+ 0b0111111111111111,
+ 0b0111111111111111,
+ 0b0111111111111111,
+ 0b0111111111111111,
+};
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+#ifdef DIP_SWITCH_ENABLE
-/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 62
+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 ? 2 : 0));
+ }
+ return true;
+}
-/* Enable NUM_LOCK_LED_INDEX */
-#define NUM_LOCK_LED_INDEX 38
-
-#define SHIFT_COL_START 10
-#define SHIFT_COL_END 19
+#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/q1v1/readme.md b/keyboards/keychron/q1v1/readme.md
new file mode 100644
index 000000000000..9cdd06a7aa4d
--- /dev/null
+++ b/keyboards/keychron/q1v1/readme.md
@@ -0,0 +1,32 @@
+# Keychron Q1
+
+![Keychron Q1](https://i.imgur.com/BbJNGLY.jpg)
+
+A customizable 75% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Keychron Q1
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/q1/ansi:default
+ make keychron/q1/ansi_encoder:default
+ make keychron/q1/iso:default
+ make keychron/q1/iso_encoder:default
+
+Flashing example for this keyboard:
+
+ make keychron/q1/ansi:default:flash
+ make keychron/q1/ansi_encoder:default:flash
+ make keychron/q1/iso:default:flash
+ make keychron/q1/iso_encoder:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/q1/ansi_stm32l432/ansi_stm32l432.c b/keyboards/keychron/q1v2/ansi/ansi.c
old mode 100644
new mode 100755
similarity index 61%
rename from keyboards/keychron/q1/ansi_stm32l432/ansi_stm32l432.c
rename to keyboards/keychron/q1v2/ansi/ansi.c
index 4de45c931141..ea6c6278d1cf
--- a/keyboards/keychron/q1/ansi_stm32l432/ansi_stm32l432.c
+++ b/keyboards/keychron/q1v2/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,6 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
-};
-
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -123,36 +114,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
-#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, 11, 12, 13, __, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, __, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, __, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, __, 57, __, 58 },
- { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, __, 70, 71, __ },
- { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 80, 81 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
- {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
- {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
- {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
- {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
- {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
- }
-};
-
#endif
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q1v2/ansi/config.h
old mode 100644
new mode 100755
similarity index 83%
rename from keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/config.h
rename to keyboards/keychron/q1v2/ansi/config.h
index 76cdab739231..5246136e3c65
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/config.h
+++ b/keyboards/keychron/q1v2/ansi/config.h
@@ -14,4 +14,10 @@
* along with this program. If not, see .
*/
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 82
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1v2/ansi/info.json b/keyboards/keychron/q1v2/ansi/info.json
new file mode 100755
index 000000000000..a72d202d816d
--- /dev/null
+++ b/keyboards/keychron/q1v2/ansi/info.json
@@ -0,0 +1,190 @@
+{
+ "usb": {
+ "pid": "0x0106",
+ "device_version": "2.0.0"
+ },
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":187, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 13], "flags":4, "x":202, "y":26},
+ {"matrix":[2, 15], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":9, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":196, "y":38},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":9, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/ansi_stm32l432/keymaps/default/keymap.c b/keyboards/keychron/q1v2/ansi/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 98%
rename from keyboards/keychron/q1/ansi_stm32l432/keymaps/default/keymap.c
rename to keyboards/keychron/q1v2/ansi/keymaps/default/keymap.c
index 42292f385123..46f43b8bfa0e
--- a/keyboards/keychron/q1/ansi_stm32l432/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v2/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
diff --git a/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/keymap.c b/keyboards/keychron/q1v2/ansi/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 97%
rename from keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v2/ansi/keymaps/keychron/keymap.c
index 429ea2e24bc0..7569346144eb
--- a/keyboards/keychron/q1/ansi_stm32l432/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v2/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -18,18 +18,17 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
@@ -72,10 +71,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v2/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/ansi/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/q1v2/ansi/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1/ansi_stm32l432/keymaps/via/keymap.c b/keyboards/keychron/q1v2/ansi/keymaps/via/keymap.c
old mode 100644
new mode 100755
similarity index 98%
rename from keyboards/keychron/q1/ansi_stm32l432/keymaps/via/keymap.c
rename to keyboards/keychron/q1v2/ansi/keymaps/via/keymap.c
index 42292f385123..46f43b8bfa0e
--- a/keyboards/keychron/q1/ansi_stm32l432/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v2/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
diff --git a/keyboards/keychron/q1/iso_atmega32u4/keymaps/via/rules.mk b/keyboards/keychron/q1v2/ansi/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q1/iso_atmega32u4/keymaps/via/rules.mk
rename to keyboards/keychron/q1v2/ansi/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1v2/ansi/rules.mk b/keyboards/keychron/q1v2/ansi/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1v2/ansi/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/ansi_stm32l432_encoder.c b/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
old mode 100644
new mode 100755
similarity index 61%
rename from keyboards/keychron/q1/ansi_stm32l432_encoder/ansi_stm32l432_encoder.c
rename to keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
index 2da073ba5b1c..ea6c6278d1cf
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/ansi_stm32l432_encoder.c
+++ b/keyboards/keychron/q1v2/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,6 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
-};
-
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -123,36 +114,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
-#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, 11, 12, 13, __, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, __, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, __, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, __, 57, __, 58 },
- { 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, __, 70, 71, __ },
- { 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 80, 81 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
- {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
- {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26}, {224,26},
- {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {196,38}, {224,38},
- {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
- {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/q1v2/ansi_encoder/config.h b/keyboards/keychron/q1v2/ansi_encoder/config.h
new file mode 100755
index 000000000000..cb15be0babaa
--- /dev/null
+++ b/keyboards/keychron/q1v2/ansi_encoder/config.h
@@ -0,0 +1,28 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 82
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
diff --git a/keyboards/keychron/q1v2/ansi_encoder/info.json b/keyboards/keychron/q1v2/ansi_encoder/info.json
new file mode 100755
index 000000000000..616c44489131
--- /dev/null
+++ b/keyboards/keychron/q1v2/ansi_encoder/info.json
@@ -0,0 +1,199 @@
+{
+ "usb": {
+ "pid": "0x0107",
+ "device_version": "2.0.0"
+ },
+ "features": {
+ "encoder": true
+ },
+ "encoder": {
+ "enabled": true,
+ "rotary": [
+ {"pin_a": "A10", "pin_b": "A8", "resolution": 4}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":187, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 13], "flags":4, "x":202, "y":26},
+ {"matrix":[2, 15], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":9, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":196, "y":38},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":9, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 97%
rename from keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/keymap.c
rename to keyboards/keychron/q1v2/ansi_encoder/keymaps/default/keymap.c
index b21f1aef75e2..a7a54d0892b6
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
@@ -63,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/rules.mk
new file mode 100755
index 000000000000..a40474b4d5c7
--- /dev/null
+++ b/keyboards/keychron/q1v2/ansi_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 96%
rename from keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/keymap.c
index 93c6eea89184..5bbb0c1404f5
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -18,18 +18,17 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
@@ -62,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -81,10 +80,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..5a08c68ec613
--- /dev/null
+++ b/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+<<<<<<< HEAD
+include keyboards/keychron/common/common.mk
+=======
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
+>>>>>>> temp
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1v2/ansi_encoder/keymaps/via/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/keymap.c
rename to keyboards/keychron/q1v2/ansi_encoder/keymaps/via/keymap.c
index 041aa26ee23a..5f589baa194e
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v2/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
@@ -65,5 +64,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}};
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1v2/ansi_encoder/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q1/iso_atmega32u4_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/q1v2/ansi_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1v2/ansi_encoder/rules.mk b/keyboards/keychron/q1v2/ansi_encoder/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1v2/ansi_encoder/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1/ansi_stm32l432_encoder/config.h b/keyboards/keychron/q1v2/config.h
old mode 100644
new mode 100755
similarity index 69%
rename from keyboards/keychron/q1/ansi_stm32l432_encoder/config.h
rename to keyboards/keychron/q1v2/config.h
index 13b8ab1cec45..4f020ed30651
--- a/keyboards/keychron/q1/ansi_stm32l432_encoder/config.h
+++ b/keyboards/keychron/q1v2/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,10 +16,6 @@
#pragma once
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -32,23 +28,38 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
+/* DIP switch */
+#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+
+/* Disable DIP switch in matrix data */
+#define MATRIX_MASKED
+
+/* Disable RGB lighting when PC is in suspend */
+#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)
+
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
-/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 45
-#define DRIVER_2_LED_TOTAL 37
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* 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
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+/* HC595 Driver Configuration */
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
+#define HC595_START_INDEX 8
+#define HC595_END_INDEX 15
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 45
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q1/halconf.h b/keyboards/keychron/q1v2/halconf.h
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q1/halconf.h
rename to keyboards/keychron/q1v2/halconf.h
diff --git a/keyboards/keychron/q1v2/info.json b/keyboards/keychron/q1v2/info.json
new file mode 100755
index 000000000000..6cd122874868
--- /dev/null
+++ b/keyboards/keychron/q1v2/info.json
@@ -0,0 +1,58 @@
+{
+ "manufacturer": "Keychron",
+ "keyboard_name": "Keychron Q1",
+ "url": "https://github.com/Keychron",
+ "maintainer": "keychron-contrib",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
+ "matrix_size": {
+ "cols": 16,
+ "rows": 6
+ },
+ "diode_direction": "ROW2COL",
+ "rgb_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": 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
+ }
+ }
+}
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q1v2/iso/config.h
old mode 100644
new mode 100755
similarity index 83%
rename from keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/config.h
rename to keyboards/keychron/q1v2/iso/config.h
index 76cdab739231..0708cdb1bc7b
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/config.h
+++ b/keyboards/keychron/q1v2/iso/config.h
@@ -14,4 +14,10 @@
* along with this program. If not, see .
*/
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 83
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/q1v2/iso/info.json b/keyboards/keychron/q1v2/iso/info.json
new file mode 100755
index 000000000000..ed16a3a8208f
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso/info.json
@@ -0,0 +1,192 @@
+{
+ "usb": {
+ "pid": "0x0108",
+ "device_version": "2.0.0"
+ },
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":187, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 15], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":9, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":187, "y":38},
+ {"matrix":[2, 13], "flags":4, "x":203, "y":32},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":49},
+ {"matrix":[4, 1], "flags":4, "x":18, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/iso_stm32l432_encoder.c b/keyboards/keychron/q1v2/iso/iso.c
old mode 100644
new mode 100755
similarity index 61%
rename from keyboards/keychron/q1/iso_stm32l432_encoder/iso_stm32l432_encoder.c
rename to keyboards/keychron/q1v2/iso/iso.c
index 6a28e3fa0a5b..eae39c8d61d0
--- a/keyboards/keychron/q1/iso_stm32l432_encoder/iso_stm32l432_encoder.c
+++ b/keyboards/keychron/q1v2/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,6 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
-};
-
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -124,36 +115,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
-#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, 11, 12, 13, __, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, __, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, __, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, __, 56, __, 58 },
- { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, __, 71, 72, __ },
- { 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 81, 82 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
- {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
- {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {224,26},
- {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {187,38}, {203,32}, {224,38},
- {2,49}, {18,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
- {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
- }
-};
-
#endif
diff --git a/keyboards/keychron/q1/iso_stm32l432/keymaps/via/keymap.c b/keyboards/keychron/q1v2/iso/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 98%
rename from keyboards/keychron/q1/iso_stm32l432/keymaps/via/keymap.c
rename to keyboards/keychron/q1v2/iso/keymaps/default/keymap.c
index f37a37658ea5..4d6312d2944c
--- a/keyboards/keychron/q1/iso_stm32l432/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v2/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
diff --git a/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/keymap.c b/keyboards/keychron/q1v2/iso/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 98%
rename from keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v2/iso/keymaps/keychron/keymap.c
index 45c2c74acac6..55058651d5d2
--- a/keyboards/keychron/q1/iso_stm32l432/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v2/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -18,15 +18,14 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
@@ -72,10 +71,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v2/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/iso/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1/iso_stm32l432/keymaps/default/keymap.c b/keyboards/keychron/q1v2/iso/keymaps/via/keymap.c
old mode 100644
new mode 100755
similarity index 98%
rename from keyboards/keychron/q1/iso_stm32l432/keymaps/default/keymap.c
rename to keyboards/keychron/q1v2/iso/keymaps/via/keymap.c
index f37a37658ea5..4d6312d2944c
--- a/keyboards/keychron/q1/iso_stm32l432/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v2/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
diff --git a/keyboards/keychron/q1/iso_stm32l432/keymaps/via/rules.mk b/keyboards/keychron/q1v2/iso/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q1/iso_stm32l432/keymaps/via/rules.mk
rename to keyboards/keychron/q1v2/iso/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1v2/iso/rules.mk b/keyboards/keychron/q1v2/iso/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1v2/iso_encoder/config.h b/keyboards/keychron/q1v2/iso_encoder/config.h
new file mode 100755
index 000000000000..ae39290a2995
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso_encoder/config.h
@@ -0,0 +1,28 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 83
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 44
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
diff --git a/keyboards/keychron/q1v2/iso_encoder/info.json b/keyboards/keychron/q1v2/iso_encoder/info.json
new file mode 100755
index 000000000000..bc30de4c4d60
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso_encoder/info.json
@@ -0,0 +1,200 @@
+{
+ "usb": {
+ "pid": "0x0109",
+ "device_version": "2.0.0"
+ },
+ "features": {
+ "encoder": true
+ },
+ "encoder": {
+ "rotary": [
+ {"pin_a": "A10", "pin_b": "A8", "resolution": 4}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_iso_83": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":187, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 15], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":9, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":187, "y":38},
+ {"matrix":[2, 13], "flags":4, "x":203, "y":32},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":49},
+ {"matrix":[4, 1], "flags":4, "x":18, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/iso_stm32l432/iso_stm32l432.c b/keyboards/keychron/q1v2/iso_encoder/iso_encoder.c
old mode 100644
new mode 100755
similarity index 61%
rename from keyboards/keychron/q1/iso_stm32l432/iso_stm32l432.c
rename to keyboards/keychron/q1v2/iso_encoder/iso_encoder.c
index 6a28e3fa0a5b..eae39c8d61d0
--- a/keyboards/keychron/q1/iso_stm32l432/iso_stm32l432.c
+++ b/keyboards/keychron/q1v2/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,6 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
-};
-
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -124,36 +115,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
-#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, 11, 12, 13, __, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, __, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, __, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, __, 56, __, 58 },
- { 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, __, 71, 72, __ },
- { 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 81, 82 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {18,0}, {33,0}, {48,0}, {62,0}, {81,0}, {95,0}, {110,0}, {125,0}, {143,0}, {158,0}, {173,0}, {187,0}, {206,0}, {224,0},
- {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15}, {224,15},
- {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {224,26},
- {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {187,38}, {203,32}, {224,38},
- {2,49}, {18,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49}, {185,49}, {209,52},
- {2,61}, {20,61}, {39,61}, {94,61}, {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
- }
-};
-
#endif
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1v2/iso_encoder/keymaps/default/keymap.c
new file mode 100755
index 000000000000..30efe449d022
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso_encoder/keymaps/default/keymap.c
@@ -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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1v2/iso_encoder/keymaps/default/rules.mk
new file mode 100755
index 000000000000..a40474b4d5c7
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/keymap.c b/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 80%
rename from keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/keymap.c
index 51792a4da48f..700cda345bbf
--- a/keyboards/keychron/q1/iso_atmega32u4/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -18,18 +18,17 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
@@ -37,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_INS,
+ KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
@@ -53,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,7 +60,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-// clang-fotmat on
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
+
+// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -72,10 +80,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..936769ddc6e2
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1v2/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1v2/iso_encoder/keymaps/via/keymap.c
new file mode 100755
index 000000000000..30efe449d022
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso_encoder/keymaps/via/keymap.c
@@ -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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1v2/iso_encoder/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q1/iso_stm32l432_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/q1v2/iso_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1v2/iso_encoder/rules.mk b/keyboards/keychron/q1v2/iso_encoder/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1v2/iso_encoder/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q2/ansi/keymaps/via/config.h b/keyboards/keychron/q1v2/jis/config.h
old mode 100644
new mode 100755
similarity index 77%
rename from keyboards/keychron/q2/ansi/keymaps/via/config.h
rename to keyboards/keychron/q1v2/jis/config.h
index 54bbaf673fed..0fe9fd0d6d84
--- a/keyboards/keychron/q2/ansi/keymaps/via/config.h
+++ b/keyboards/keychron/q1v2/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -14,4 +14,10 @@
* along with this program. If not, see .
*/
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 86
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/q1v2/jis/info.json b/keyboards/keychron/q1v2/jis/info.json
new file mode 100755
index 000000000000..e704624a6619
--- /dev/null
+++ b/keyboards/keychron/q1v2/jis/info.json
@@ -0,0 +1,198 @@
+{
+ "usb": {
+ "pid": "0x010A",
+ "device_version": "2.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.251},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[1,14], "x":14, "y":1.25},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25},
+ {"matrix":[5,12], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.25},
+ {"matrix":[5,14], "x":14.25, "y":5.25},
+ {"matrix":[5,15], "x":15.25, "y":5.25}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":187, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":205, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":161, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":4, "x":191, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":205, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":139, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":183, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":9, "x":6, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":128, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":172, "y":40},
+ {"matrix":[3, 13], "flags":4, "x":187, "y":40},
+ {"matrix":[2, 13], "flags":1, "x":207, "y":36},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":9, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":150, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":52},
+ {"matrix":[4, 12], "flags":4, "x":180, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":194, "y":52},
+ {"matrix":[4, 14], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":35, "y":64},
+ {"matrix":[5, 3], "flags":1, "x":51, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":92, "y":64},
+ {"matrix":[5, 9], "flags":1, "x":134, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":150, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":165, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":194, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/jis_stm32l432/jis_stm32l432.c b/keyboards/keychron/q1v2/jis/jis.c
old mode 100644
new mode 100755
similarity index 61%
rename from keyboards/keychron/q1/jis_stm32l432/jis_stm32l432.c
rename to keyboards/keychron/q1v2/jis/jis.c
index 150946b71510..6bfcbad3e4d0
--- a/keyboards/keychron/q1/jis_stm32l432/jis_stm32l432.c
+++ b/keyboards/keychron/q1v2/jis/jis.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,6 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
-};
-
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -127,36 +118,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
-#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, 11, 12, 13, __, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
- { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 58, __, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, __, 57, __, 59 },
- { 60, __, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __ },
- { 74, 75, 76, 77, __, __, 78, __, __, 79, 80, 81, 82, 83, 84, 85 },
- },
- {
- // LED Index to Physical Position
- {0, 0}, {18, 0}, {33, 0}, {48, 0}, {62, 0}, {81, 0}, {95, 0}, {110, 0}, {125, 0}, {143, 0}, {158, 0}, {173, 0}, {187, 0}, {205, 0}, {224, 0},
- {0, 15}, {15, 15}, {29, 15}, {44, 15}, {59, 15}, {73, 15}, {88, 15}, {103, 15}, {117, 15}, {132, 15}, {147, 15}, {161, 15}, {176, 15}, {191, 15}, {205, 15}, {224, 15},
- {4, 28}, {22, 28}, {37, 28}, {51, 28}, {66, 28}, {81, 28}, {95, 28}, {110, 28}, {125, 28}, {139, 28}, {154, 28}, {169, 28}, {183, 28}, {224, 28},
- {6, 40}, {26, 40}, {40, 40}, {55, 40}, {70, 40}, {84, 40}, {99, 40}, {114, 40}, {128, 40}, {143, 40}, {158, 40}, {172, 40}, {187, 40}, {207, 36}, {224, 40},
- {9, 52}, {33, 52}, {48, 52}, {62, 52}, {77, 52}, {92, 52}, {106, 52}, {121, 52}, {136, 52}, {150, 52}, {165, 52}, {180, 52}, {194, 52}, {209, 52},
- {2, 64}, {18, 64}, {35, 64}, {51, 64}, { 92, 64}, {134, 64}, {150, 64}, {165, 64}, {180, 64}, {194, 64}, {209, 64}, {224, 64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/q1/jis_stm32l432/keymaps/default/keymap.c b/keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 95%
rename from keyboards/keychron/q1/jis_stm32l432/keymaps/default/keymap.c
rename to keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
index 779e9dac661d..2cd4c24ea133
--- a/keyboards/keychron/q1/jis_stm32l432/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,20 +16,19 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_jis_86(
+ [MAC_BASE] = LAYOUT(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -37,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_jis_86(
+ [MAC_FN] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_jis_86(
+ [WIN_BASE] = LAYOUT(
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -53,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_jis_86(
+ [WIN_FN] = LAYOUT(
_______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/keymap.c b/keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 93%
rename from keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
index 027951946821..1ad45ae56202
--- a/keyboards/keychron/q1/jis_stm32l432/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -18,25 +18,24 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ [MAC_BASE] = LAYOUT(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_jis_86(
+ [MAC_FN] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_jis_86(
+ [WIN_BASE] = LAYOUT(
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -52,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_jis_86(
+ [WIN_FN] = LAYOUT(
_______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -72,10 +71,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v2/jis/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/jis/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/q1v2/jis/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1/jis_stm32l432/keymaps/via/keymap.c b/keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
old mode 100644
new mode 100755
similarity index 95%
rename from keyboards/keychron/q1/jis_stm32l432/keymaps/via/keymap.c
rename to keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
index 779e9dac661d..2cd4c24ea133
--- a/keyboards/keychron/q1/jis_stm32l432/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,20 +16,19 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_jis_86(
+ [MAC_BASE] = LAYOUT(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -37,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_jis_86(
+ [MAC_FN] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_jis_86(
+ [WIN_BASE] = LAYOUT(
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -53,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_jis_86(
+ [WIN_FN] = LAYOUT(
_______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q1/jis_stm32l432/keymaps/via/rules.mk b/keyboards/keychron/q1v2/jis/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q1/jis_stm32l432/keymaps/via/rules.mk
rename to keyboards/keychron/q1v2/jis/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1v2/jis/rules.mk b/keyboards/keychron/q1v2/jis/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1v2/jis/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1v2/jis_encoder/config.h b/keyboards/keychron/q1v2/jis_encoder/config.h
new file mode 100755
index 000000000000..39364286c3f8
--- /dev/null
+++ b/keyboards/keychron/q1v2/jis_encoder/config.h
@@ -0,0 +1,28 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 86
+
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 45
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
diff --git a/keyboards/keychron/q1v2/jis_encoder/info.json b/keyboards/keychron/q1v2/jis_encoder/info.json
new file mode 100755
index 000000000000..02f90b5e7183
--- /dev/null
+++ b/keyboards/keychron/q1v2/jis_encoder/info.json
@@ -0,0 +1,206 @@
+{
+ "usb": {
+ "pid": "0x010B",
+ "device_version": "2.0.0"
+ },
+ "features": {
+ "encoder": true
+ },
+ "encoder": {
+ "rotary": [
+ {"pin_a": "A10", "pin_b": "A8", "resolution": 4}
+ ]
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,15], "x":15.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.251},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25},
+ {"matrix":[1,14], "x":14, "y":1.25},
+ {"matrix":[1,15], "x":15.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,15], "x":15.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25},
+ {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix":[3,15], "x":15.25, "y":3.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,12], "x":12.25, "y":4.25},
+ {"matrix":[4,13], "x":13.25, "y":4.25},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25},
+ {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 3], "x":3.5, "y":5.25},
+ {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
+ {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
+ {"matrix":[5,10], "x":10.25, "y":5.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25},
+ {"matrix":[5,12], "x":12.25, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.25},
+ {"matrix":[5,14], "x":14.25, "y":5.25},
+ {"matrix":[5,15], "x":15.25, "y":5.25}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":187, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":205, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":161, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":4, "x":191, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":205, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":139, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":183, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":9, "x":6, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":128, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":172, "y":40},
+ {"matrix":[3, 13], "flags":4, "x":187, "y":40},
+ {"matrix":[2, 13], "flags":1, "x":207, "y":36},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":9, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":150, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":52},
+ {"matrix":[4, 12], "flags":4, "x":180, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":194, "y":52},
+ {"matrix":[4, 14], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":35, "y":64},
+ {"matrix":[5, 3], "flags":1, "x":51, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":92, "y":64},
+ {"matrix":[5, 9], "flags":1, "x":134, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":150, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":165, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":194, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/jis_stm32l432_encoder.c b/keyboards/keychron/q1v2/jis_encoder/jis_encoder.c
old mode 100644
new mode 100755
similarity index 61%
rename from keyboards/keychron/q1/jis_stm32l432_encoder/jis_stm32l432_encoder.c
rename to keyboards/keychron/q1v2/jis_encoder/jis_encoder.c
index 150946b71510..6bfcbad3e4d0
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/jis_stm32l432_encoder.c
+++ b/keyboards/keychron/q1v2/jis_encoder/jis_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,15 +16,6 @@
#include "quantum.h"
-const matrix_row_t matrix_mask[] = {
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111111111,
- 0b1111111111101111,
-};
-
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -127,36 +118,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_16, A_16, B_16},
};
-#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, 11, 12, 13, __, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
- { 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 58, __, 44 },
- { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, __, 57, __, 59 },
- { 60, __, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __ },
- { 74, 75, 76, 77, __, __, 78, __, __, 79, 80, 81, 82, 83, 84, 85 },
- },
- {
- // LED Index to Physical Position
- {0, 0}, {18, 0}, {33, 0}, {48, 0}, {62, 0}, {81, 0}, {95, 0}, {110, 0}, {125, 0}, {143, 0}, {158, 0}, {173, 0}, {187, 0}, {205, 0}, {224, 0},
- {0, 15}, {15, 15}, {29, 15}, {44, 15}, {59, 15}, {73, 15}, {88, 15}, {103, 15}, {117, 15}, {132, 15}, {147, 15}, {161, 15}, {176, 15}, {191, 15}, {205, 15}, {224, 15},
- {4, 28}, {22, 28}, {37, 28}, {51, 28}, {66, 28}, {81, 28}, {95, 28}, {110, 28}, {125, 28}, {139, 28}, {154, 28}, {169, 28}, {183, 28}, {224, 28},
- {6, 40}, {26, 40}, {40, 40}, {55, 40}, {70, 40}, {84, 40}, {99, 40}, {114, 40}, {128, 40}, {143, 40}, {158, 40}, {172, 40}, {187, 40}, {207, 36}, {224, 40},
- {9, 52}, {33, 52}, {48, 52}, {62, 52}, {77, 52}, {92, 52}, {106, 52}, {121, 52}, {136, 52}, {150, 52}, {165, 52}, {180, 52}, {194, 52}, {209, 52},
- {2, 64}, {18, 64}, {35, 64}, {51, 64}, { 92, 64}, {134, 64}, {150, 64}, {165, 64}, {180, 64}, {194, 64}, {209, 64}, {224, 64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c
old mode 100644
new mode 100755
similarity index 95%
rename from keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/keymap.c
rename to keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c
index 0086534adc1b..6d4b14b93352
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,20 +16,19 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_jis_86(
+ [MAC_BASE] = LAYOUT(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -37,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_jis_86(
+ [MAC_FN] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_jis_86(
+ [WIN_BASE] = LAYOUT(
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -53,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_jis_86(
+ [WIN_FN] = LAYOUT(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/default/rules.mk b/keyboards/keychron/q1v2/jis_encoder/keymaps/default/rules.mk
new file mode 100755
index 000000000000..a40474b4d5c7
--- /dev/null
+++ b/keyboards/keychron/q1v2/jis_encoder/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
similarity index 92%
rename from keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/keymap.c
rename to keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c
index 3fd9bcf8f093..74823b2ecd9b
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -18,25 +18,24 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ [MAC_BASE] = LAYOUT(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_jis_86(
+ [MAC_FN] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_jis_86(
+ [WIN_BASE] = LAYOUT(
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -52,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_jis_86(
+ [WIN_FN] = LAYOUT(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,10 +60,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -83,10 +80,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..936769ddc6e2
--- /dev/null
+++ b/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c
old mode 100644
new mode 100755
similarity index 95%
rename from keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/keymap.c
rename to keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c
index 0086534adc1b..6d4b14b93352
--- a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,20 +16,19 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_jis_86(
+ [MAC_BASE] = LAYOUT(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -37,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_jis_86(
+ [MAC_FN] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_jis_86(
+ [WIN_BASE] = LAYOUT(
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
@@ -53,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_jis_86(
+ [WIN_FN] = LAYOUT(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/rules.mk b/keyboards/keychron/q1v2/jis_encoder/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q1/jis_stm32l432_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/q1v2/jis_encoder/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q1v2/jis_encoder/rules.mk b/keyboards/keychron/q1v2/jis_encoder/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q1v2/jis_encoder/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q1/mcuconf.h b/keyboards/keychron/q1v2/mcuconf.h
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q1/mcuconf.h
rename to keyboards/keychron/q1v2/mcuconf.h
diff --git a/keyboards/keychron/q1/q1.c b/keyboards/keychron/q1v2/q1v2.c
old mode 100644
new mode 100755
similarity index 79%
rename from keyboards/keychron/q1/q1.c
rename to keyboards/keychron/q1v2/q1v2.c
index 8b6d6f2bf231..6d3508d53596
--- a/keyboards/keychron/q1/q1.c
+++ b/keyboards/keychron/q1v2/q1v2.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,15 @@
#include "quantum.h"
+const matrix_row_t matrix_mask[] = {
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
+};
+
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
diff --git a/keyboards/keychron/q1v2/readme.md b/keyboards/keychron/q1v2/readme.md
new file mode 100755
index 000000000000..aa3559c6e12a
--- /dev/null
+++ b/keyboards/keychron/q1v2/readme.md
@@ -0,0 +1,36 @@
+# Keychron Q1 Version 2
+
+![Keychron Q1V2](https://i.imgur.com/BbJNGLYh.jpg)
+
+A customizable 75% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Keychron Q1 Version 2
+* Hardware Availability: [Keychron Q1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q1)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/q1v2/ansi:default
+ make keychron/q1v2/ansi_encoder:default
+ make keychron/q1v2/iso:default
+ make keychron/q1v2/iso_encoder:default
+ make keychron/q1v2/jis:default
+ make keychron/q1v2/jis_encoder:default
+
+Flashing example for this keyboard:
+
+ make keychron/q1v2/ansi:default:flash
+ make keychron/q1v2/ansi_encoder:default:flash
+ make keychron/q1v2/iso:default:flash
+ make keychron/q1v2/iso_encoder:default:flash
+ make keychron/q1v2/jis:default:flash
+ make keychron/q1v2/jis_encoder:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/q1v2/rules.mk b/keyboards/keychron/q1v2/rules.mk
new file mode 100755
index 000000000000..a515de570cd8
--- /dev/null
+++ b/keyboards/keychron/q1v2/rules.mk
@@ -0,0 +1,2 @@
+VPATH += $(TOP_DIR)/keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q2/ansi/ansi.c b/keyboards/keychron/q2/ansi/ansi.c
index 347f00f760c6..6741e1c92a78 100644
--- a/keyboards/keychron/q2/ansi/ansi.c
+++ b/keyboards/keychron/q2/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,9 +17,8 @@
#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
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -97,34 +96,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16},
};
-
-#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, 11, 12, 13, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 65, 42, 43 },
- { 44, __, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, __, 55, 56 },
- { 57, 58, 59, __, __, __, 60, __, __, __, 61, 62, 63, 64, 66 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0}, // {244,-4}
- {4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {202,15}, {224,15},
- {6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {196,30}, {224,30},
- {9,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
- {2,60}, {20,60}, {39,60}, {94,60}, {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q2/ansi/config.h b/keyboards/keychron/q2/ansi/config.h
index 88d86a5a7f95..d94a0a6b0a93 100644
--- a/keyboards/keychron/q2/ansi/config.h
+++ b/keyboards/keychron/q2/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,9 +17,7 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 34
-#define DRIVER_2_LED_TOTAL 33
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 67
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/q2/ansi/info.json b/keyboards/keychron/q2/ansi/info.json
index 161dc70952b5..a80a9ae270bd 100644
--- a/keyboards/keychron/q2/ansi/info.json
+++ b/keyboards/keychron/q2/ansi/info.json
@@ -1,109 +1,158 @@
{
- "keyboard_name": "Keychron Q2",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0110",
- "device_version": "1.0.6"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25, "w":2},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 13], "x": 13.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.25, "y":3.25},
- {"matrix":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4.25},
- {"matrix":[4,11], "x":11, "y":4.25},
- {"matrix":[4,12], "x":12, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.5},
- {"matrix":[2,12], "x":14.25, "y":4.5},
- {"matrix":[4,14], "x":15.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4.25},
+ {"matrix": [4, 11], "x": 11, "y": 4.25},
+ {"matrix": [4, 12], "x": 12, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.5},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.5}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":4, "x":15, "y":0},
+ {"matrix":[0, 2], "flags":4, "x":29, "y":0},
+ {"matrix":[0, 3], "flags":4, "x":44, "y":0},
+ {"matrix":[0, 4], "flags":4, "x":59, "y":0},
+ {"matrix":[0, 5], "flags":4, "x":73, "y":0},
+ {"matrix":[0, 6], "flags":4, "x":88, "y":0},
+ {"matrix":[0, 7], "flags":4, "x":103, "y":0},
+ {"matrix":[0, 8], "flags":4, "x":118, "y":0},
+ {"matrix":[0, 9], "flags":4, "x":132, "y":0},
+ {"matrix":[0, 10], "flags":4, "x":147, "y":0},
+ {"matrix":[0, 11], "flags":4, "x":162, "y":0},
+ {"matrix":[0, 12], "flags":4, "x":176, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":4, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":22, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":37, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":51, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":66, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":81, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":95, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":110, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":140, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":154, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":169, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":184, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":202, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":8, "x":6, "y":30},
+ {"matrix":[2, 1], "flags":4, "x":26, "y":30},
+ {"matrix":[2, 2], "flags":4, "x":40, "y":30},
+ {"matrix":[2, 3], "flags":4, "x":55, "y":30},
+ {"matrix":[2, 4], "flags":4, "x":70, "y":30},
+ {"matrix":[2, 5], "flags":4, "x":84, "y":30},
+ {"matrix":[2, 6], "flags":4, "x":99, "y":30},
+ {"matrix":[2, 7], "flags":4, "x":114, "y":30},
+ {"matrix":[2, 8], "flags":4, "x":129, "y":30},
+ {"matrix":[2, 9], "flags":4, "x":143, "y":30},
+ {"matrix":[2, 10], "flags":4, "x":158, "y":30},
+ {"matrix":[2, 11], "flags":4, "x":173, "y":30},
+ {"matrix":[2, 13], "flags":1, "x":196, "y":30},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":30},
+
+ {"matrix":[3, 0], "flags":1, "x":9, "y":45},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":45},
+ {"matrix":[3, 3], "flags":4, "x":48, "y":45},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":45},
+ {"matrix":[3, 5], "flags":4, "x":77, "y":45},
+ {"matrix":[3, 6], "flags":4, "x":92, "y":45},
+ {"matrix":[3, 7], "flags":4, "x":106, "y":45},
+ {"matrix":[3, 8], "flags":4, "x":121, "y":45},
+ {"matrix":[3, 9], "flags":4, "x":136, "y":45},
+ {"matrix":[3, 10], "flags":4, "x":151, "y":45},
+ {"matrix":[3, 11], "flags":4, "x":165, "y":45},
+ {"matrix":[3, 13], "flags":1, "x":185, "y":45},
+ {"matrix":[3, 14], "flags":1, "x":209, "y":49},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":60},
+ {"matrix":[4, 1], "flags":1, "x":20, "y":60},
+ {"matrix":[4, 2], "flags":1, "x":39, "y":60},
+ {"matrix":[4, 6], "flags":4, "x":94, "y":60},
+ {"matrix":[4, 10], "flags":1, "x":147, "y":60},
+ {"matrix":[4, 11], "flags":1, "x":162, "y":60},
+ {"matrix":[4, 12], "flags":1, "x":176, "y":60},
+ {"matrix":[4, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[2, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q2/ansi/keymaps/default/keymap.c b/keyboards/keychron/q2/ansi/keymaps/default/keymap.c
index fa10916396d3..e421f70d1302 100644
--- a/keyboards/keychron/q2/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,52 +16,51 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_FN1] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN2] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q2/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q2/ansi/keymaps/keychron/keymap.c
index ea2d8880fa31..f3ac27c1275a 100644
--- a/keyboards/keychron/q2/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -18,54 +18,51 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN1] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN1] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ 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_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-// clang-format on
+ [_FN3] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -76,10 +73,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q2/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q2/ansi/keymaps/keychron/rules.mk
index dac903490f12..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q2/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q2/ansi/keymaps/via/keymap.c b/keyboards/keychron/q2/ansi/keymaps/via/keymap.c
index fa10916396d3..e421f70d1302 100644
--- a/keyboards/keychron/q2/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,52 +16,51 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_FN1] = LAYOUT_ansi_67(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN2] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q2/ansi/readme.md b/keyboards/keychron/q2/ansi/readme.md
new file mode 100644
index 000000000000..d3134cedb504
--- /dev/null
+++ b/keyboards/keychron/q2/ansi/readme.md
@@ -0,0 +1 @@
+# The ANSI variant of the Keychron Q2
diff --git a/keyboards/keychron/q2/ansi/rules.mk b/keyboards/keychron/q2/ansi/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q2/ansi/rules.mk
+++ b/keyboards/keychron/q2/ansi/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
index 347f00f760c6..6741e1c92a78 100644
--- a/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q2/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,9 +17,8 @@
#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
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -97,34 +96,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16},
};
-
-#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, 11, 12, 13, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 65, 42, 43 },
- { 44, __, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, __, 55, 56 },
- { 57, 58, 59, __, __, __, 60, __, __, __, 61, 62, 63, 64, 66 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0}, // {244,-4}
- {4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {202,15}, {224,15},
- {6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {196,30}, {224,30},
- {9,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
- {2,60}, {20,60}, {39,60}, {94,60}, {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q2/ansi_encoder/config.h b/keyboards/keychron/q2/ansi_encoder/config.h
index ea8cb564ada5..f1b6a9b7c0b8 100644
--- a/keyboards/keychron/q2/ansi_encoder/config.h
+++ b/keyboards/keychron/q2/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,12 +17,12 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 34
-#define DRIVER_2_LED_TOTAL 33
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Encoder used pins */
-#define ENCODER_DEFAULT_POS 0x3
+#define RGB_MATRIX_LED_COUNT 67
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
diff --git a/keyboards/keychron/q2/ansi_encoder/info.json b/keyboards/keychron/q2/ansi_encoder/info.json
index 66f83d1ef946..0f62e42b21d5 100644
--- a/keyboards/keychron/q2/ansi_encoder/info.json
+++ b/keyboards/keychron/q2/ansi_encoder/info.json
@@ -1,114 +1,166 @@
{
- "keyboard_name": "Keychron Q2",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0111",
- "device_version": "1.0.6"
+ "device_version": "1.0.0"
},
"features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "encoder": true
},
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "B5"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25, "w":2},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 13], "x": 13.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.25, "y":3.25},
- {"matrix":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4.25},
- {"matrix":[4,11], "x":11, "y":4.25},
- {"matrix":[4,12], "x":12, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.5},
- {"matrix":[2,12], "x":14.25, "y":4.5},
- {"matrix":[4,14], "x":15.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4.25},
+ {"matrix": [4, 11], "x": 11, "y": 4.25},
+ {"matrix": [4, 12], "x": 12, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.5},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.5}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":4, "x":15, "y":0},
+ {"matrix":[0, 2], "flags":4, "x":29, "y":0},
+ {"matrix":[0, 3], "flags":4, "x":44, "y":0},
+ {"matrix":[0, 4], "flags":4, "x":59, "y":0},
+ {"matrix":[0, 5], "flags":4, "x":73, "y":0},
+ {"matrix":[0, 6], "flags":4, "x":88, "y":0},
+ {"matrix":[0, 7], "flags":4, "x":103, "y":0},
+ {"matrix":[0, 8], "flags":4, "x":118, "y":0},
+ {"matrix":[0, 9], "flags":4, "x":132, "y":0},
+ {"matrix":[0, 10], "flags":4, "x":147, "y":0},
+ {"matrix":[0, 11], "flags":4, "x":162, "y":0},
+ {"matrix":[0, 12], "flags":4, "x":176, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":4, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":22, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":37, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":51, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":66, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":81, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":95, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":110, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":140, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":154, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":169, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":184, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":202, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":8, "x":6, "y":30},
+ {"matrix":[2, 1], "flags":4, "x":26, "y":30},
+ {"matrix":[2, 2], "flags":4, "x":40, "y":30},
+ {"matrix":[2, 3], "flags":4, "x":55, "y":30},
+ {"matrix":[2, 4], "flags":4, "x":70, "y":30},
+ {"matrix":[2, 5], "flags":4, "x":84, "y":30},
+ {"matrix":[2, 6], "flags":4, "x":99, "y":30},
+ {"matrix":[2, 7], "flags":4, "x":114, "y":30},
+ {"matrix":[2, 8], "flags":4, "x":129, "y":30},
+ {"matrix":[2, 9], "flags":4, "x":143, "y":30},
+ {"matrix":[2, 10], "flags":4, "x":158, "y":30},
+ {"matrix":[2, 11], "flags":4, "x":173, "y":30},
+ {"matrix":[2, 13], "flags":1, "x":196, "y":30},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":30},
+
+ {"matrix":[3, 0], "flags":1, "x":9, "y":45},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":45},
+ {"matrix":[3, 3], "flags":4, "x":48, "y":45},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":45},
+ {"matrix":[3, 5], "flags":4, "x":77, "y":45},
+ {"matrix":[3, 6], "flags":4, "x":92, "y":45},
+ {"matrix":[3, 7], "flags":4, "x":106, "y":45},
+ {"matrix":[3, 8], "flags":4, "x":121, "y":45},
+ {"matrix":[3, 9], "flags":4, "x":136, "y":45},
+ {"matrix":[3, 10], "flags":4, "x":151, "y":45},
+ {"matrix":[3, 11], "flags":4, "x":165, "y":45},
+ {"matrix":[3, 13], "flags":1, "x":185, "y":45},
+ {"matrix":[3, 14], "flags":1, "x":209, "y":49},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":60},
+ {"matrix":[4, 1], "flags":1, "x":20, "y":60},
+ {"matrix":[4, 2], "flags":1, "x":39, "y":60},
+ {"matrix":[4, 6], "flags":4, "x":94, "y":60},
+ {"matrix":[4, 10], "flags":1, "x":147, "y":60},
+ {"matrix":[4, 11], "flags":1, "x":162, "y":60},
+ {"matrix":[4, 12], "flags":1, "x":176, "y":60},
+ {"matrix":[4, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[2, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q2/ansi_encoder/keymaps/default/keymap.c
index 4c2df8554722..778b1a47c3c6 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,62 +16,61 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
- 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_ansi_67(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN2] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [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(_______, _______)}
+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) },
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN3] = { ENCODER_CCW_CW(_______, _______) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q2/ansi_encoder/keymaps/default/rules.mk
index ee325681483f..a40474b4d5c7 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/default/rules.mk
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/default/rules.mk
@@ -1 +1 @@
-ENCODER_MAP_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/keymap.c
index 484b2dd6c1a8..9012fb1b14ef 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -18,64 +18,61 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN1] = LAYOUT_ansi_67(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN1] = LAYOUT_ansi_67(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, 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_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-// clang-format on
+ [_FN3] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [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(_______, _______)}
+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) },
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN3] = { ENCODER_CCW_CW(_______, _______) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -86,10 +83,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..936769ddc6e2 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q2/ansi_encoder/keymaps/via/keymap.c
index 4c2df8554722..30944a33ce45 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,62 +16,61 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
- 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_ansi_67(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_ansi_67(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN2] = LAYOUT_ansi_67(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_ansi_67(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [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(_______, _______)}
+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) },
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN3] = { ENCODER_CCW_CW(_______, _______) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q2/ansi_encoder/keymaps/via/rules.mk
index f1adcab005e8..4253f570f0bb 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/via/rules.mk
+++ b/keyboards/keychron/q2/ansi_encoder/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q2/ansi_encoder/readme.md b/keyboards/keychron/q2/ansi_encoder/readme.md
new file mode 100644
index 000000000000..2bb5d3bca8a7
--- /dev/null
+++ b/keyboards/keychron/q2/ansi_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ANSI variant of the Keychron Q2 and support encoder
+
+- Enable EC11 rotary encoder
+- Turn colckwise to increase volume and turn anti-colckwise to decrease volume
+- Press top right key pushbutton to mute
diff --git a/keyboards/keychron/q2/ansi_encoder/rules.mk b/keyboards/keychron/q2/ansi_encoder/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q2/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q2/ansi_encoder/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q2/config.h b/keyboards/keychron/q2/config.h
index 8e368df7a95b..a748a1b5a44d 100644
--- a/keyboards/keychron/q2/config.h
+++ b/keyboards/keychron/q2/config.h
@@ -42,7 +42,6 @@
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
/* Turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
@@ -54,55 +53,9 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define RGB_MATRIX_KEYRELEASES
/* Factory test keys */
#define FN_KEY1 MO(2)
diff --git a/keyboards/keychron/q2/info.json b/keyboards/keychron/q2/info.json
new file mode 100644
index 000000000000..6a4a5260fa91
--- /dev/null
+++ b/keyboards/keychron/q2/info.json
@@ -0,0 +1,55 @@
+{
+ "keyboard_name": "Q2",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": 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
+ }
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
+ "rows": ["B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "dynamic_keymap": {
+ "layer_count": 5
+ }
+}
diff --git a/keyboards/keychron/q2/iso/config.h b/keyboards/keychron/q2/iso/config.h
index 1ea629f68067..5e6ddbf8ea1c 100644
--- a/keyboards/keychron/q2/iso/config.h
+++ b/keyboards/keychron/q2/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,9 +17,7 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 34
-#define DRIVER_2_LED_TOTAL 34
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 68
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 29
diff --git a/keyboards/keychron/q2/iso/info.json b/keyboards/keychron/q2/iso/info.json
index c3530a049c9c..04c9b9bc2b1b 100644
--- a/keyboards/keychron/q2/iso/info.json
+++ b/keyboards/keychron/q2/iso/info.json
@@ -1,110 +1,160 @@
{
- "keyboard_name": "Keychron Q2",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0112",
- "device_version": "1.0.7"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_68": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25, "w":2},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25},
- {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25},
+ {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.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":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.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": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4.25},
- {"matrix":[4,11], "x":11, "y":4.25},
- {"matrix":[4,12], "x":12, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.5},
- {"matrix":[2,12], "x":14.25, "y":4.5},
- {"matrix":[4,14], "x":15.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4.25},
+ {"matrix": [4, 11], "x": 11, "y": 4.25},
+ {"matrix": [4, 12], "x": 12, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.5},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.5}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":4, "x":15, "y":0},
+ {"matrix":[0, 2], "flags":4, "x":29, "y":0},
+ {"matrix":[0, 3], "flags":4, "x":44, "y":0},
+ {"matrix":[0, 4], "flags":4, "x":59, "y":0},
+ {"matrix":[0, 5], "flags":4, "x":73, "y":0},
+ {"matrix":[0, 6], "flags":4, "x":88, "y":0},
+ {"matrix":[0, 7], "flags":4, "x":103, "y":0},
+ {"matrix":[0, 8], "flags":4, "x":118, "y":0},
+ {"matrix":[0, 9], "flags":4, "x":132, "y":0},
+ {"matrix":[0, 10], "flags":4, "x":147, "y":0},
+ {"matrix":[0, 11], "flags":4, "x":162, "y":0},
+ {"matrix":[0, 12], "flags":4, "x":176, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":4, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":22, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":37, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":51, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":66, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":81, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":95, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":110, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":140, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":154, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":169, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":184, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":8, "x":6, "y":30},
+ {"matrix":[2, 1], "flags":4, "x":26, "y":30},
+ {"matrix":[2, 2], "flags":4, "x":40, "y":30},
+ {"matrix":[2, 3], "flags":4, "x":55, "y":30},
+ {"matrix":[2, 4], "flags":4, "x":70, "y":30},
+ {"matrix":[2, 5], "flags":4, "x":84, "y":30},
+ {"matrix":[2, 6], "flags":4, "x":99, "y":30},
+ {"matrix":[2, 7], "flags":4, "x":114, "y":30},
+ {"matrix":[2, 8], "flags":4, "x":129, "y":30},
+ {"matrix":[2, 9], "flags":4, "x":143, "y":30},
+ {"matrix":[2, 10], "flags":4, "x":158, "y":30},
+ {"matrix":[2, 11], "flags":4, "x":173, "y":30},
+ {"matrix":[2, 13], "flags":1, "x":187, "y":30},
+ {"matrix":[1, 13], "flags":1, "x":204, "y":23},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":30},
+
+ {"matrix":[3, 0], "flags":1, "x":2, "y":45},
+ {"matrix":[3, 1], "flags":1, "x":18, "y":45},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":45},
+ {"matrix":[3, 3], "flags":4, "x":48, "y":45},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":45},
+ {"matrix":[3, 5], "flags":4, "x":77, "y":45},
+ {"matrix":[3, 6], "flags":4, "x":92, "y":45},
+ {"matrix":[3, 7], "flags":4, "x":106, "y":45},
+ {"matrix":[3, 8], "flags":4, "x":121, "y":45},
+ {"matrix":[3, 9], "flags":4, "x":136, "y":45},
+ {"matrix":[3, 10], "flags":4, "x":151, "y":45},
+ {"matrix":[3, 11], "flags":4, "x":165, "y":45},
+ {"matrix":[3, 13], "flags":1, "x":185, "y":45},
+ {"matrix":[3, 14], "flags":1, "x":209, "y":49},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":60},
+ {"matrix":[4, 1], "flags":1, "x":20, "y":60},
+ {"matrix":[4, 2], "flags":1, "x":39, "y":60},
+ {"matrix":[4, 6], "flags":4, "x":94, "y":60},
+ {"matrix":[4, 10], "flags":1, "x":147, "y":60},
+ {"matrix":[4, 11], "flags":1, "x":162, "y":60},
+ {"matrix":[4, 12], "flags":1, "x":176, "y":60},
+ {"matrix":[4, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[2, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q2/iso/iso.c b/keyboards/keychron/q2/iso/iso.c
index 5e4f80462e53..e1a8d32d3d4a 100644
--- a/keyboards/keychron/q2/iso/iso.c
+++ b/keyboards/keychron/q2/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,9 +17,8 @@
#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
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -98,34 +97,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}
};
-
-#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, 11, 12, 13, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 42, 28 },
- { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 66, 41, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, __, 56, 57 },
- { 58, 59, 60, __, __, __, 61, __, __, __, 62, 63, 64, 65, 67 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0}, // {224,-4}
- {4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {224,15},
- {6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {187,30}, {204,23}, {224,30},
- {2,45}, {18,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
- {2,60}, {20,60}, {39,60}, {94,60}, {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q2/iso/keymaps/default/keymap.c b/keyboards/keychron/q2/iso/keymaps/default/keymap.c
index 3401266132fc..ecd958a2c4a8 100644
--- a/keyboards/keychron/q2/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,52 +16,51 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_FN1] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN2] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q2/iso/keymaps/keychron/config.h b/keyboards/keychron/q2/iso/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q2/iso/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q2/iso/keymaps/keychron/keymap.c
index 5a61f3f06bb5..bee6767578f1 100644
--- a/keyboards/keychron/q2/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -18,54 +18,51 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
-
- [MAC_FN1] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN1] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ 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_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-// clang-format on
+ [_FN3] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -76,10 +73,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q2/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q2/iso/keymaps/keychron/rules.mk
index dac903490f12..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q2/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q2/iso/keymaps/via/config.h b/keyboards/keychron/q2/iso/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q2/iso/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/iso/keymaps/via/keymap.c b/keyboards/keychron/q2/iso/keymaps/via/keymap.c
index 3401266132fc..ecd958a2c4a8 100644
--- a/keyboards/keychron/q2/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,52 +16,51 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_FN1] = LAYOUT_iso_68(
- 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN2] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q2/iso/readme.md b/keyboards/keychron/q2/iso/readme.md
new file mode 100644
index 000000000000..29404e03cac5
--- /dev/null
+++ b/keyboards/keychron/q2/iso/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q2
diff --git a/keyboards/keychron/q2/iso/rules.mk b/keyboards/keychron/q2/iso/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q2/iso/rules.mk
+++ b/keyboards/keychron/q2/iso/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q2/iso_encoder/config.h b/keyboards/keychron/q2/iso_encoder/config.h
index 5190145f257a..692d995a0ce2 100644
--- a/keyboards/keychron/q2/iso_encoder/config.h
+++ b/keyboards/keychron/q2/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,12 +17,12 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 34
-#define DRIVER_2_LED_TOTAL 34
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Encoder used pins */
-#define ENCODER_DEFAULT_POS 0x3
+#define RGB_MATRIX_LED_COUNT 68
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 29
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
diff --git a/keyboards/keychron/q2/iso_encoder/info.json b/keyboards/keychron/q2/iso_encoder/info.json
index 9b4b8dc5edaf..c8559ddfb521 100644
--- a/keyboards/keychron/q2/iso_encoder/info.json
+++ b/keyboards/keychron/q2/iso_encoder/info.json
@@ -1,115 +1,168 @@
{
- "keyboard_name": "Keychron Q2",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0113",
- "device_version": "1.0.7"
+ "device_version": "1.0.0"
},
"features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "encoder": true
},
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "B5"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_68": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25, "w":2},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25},
- {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25},
+ {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.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":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.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": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4.25},
- {"matrix":[4,11], "x":11, "y":4.25},
- {"matrix":[4,12], "x":12, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.5},
- {"matrix":[2,12], "x":14.25, "y":4.5},
- {"matrix":[4,14], "x":15.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4.25},
+ {"matrix": [4, 11], "x": 11, "y": 4.25},
+ {"matrix": [4, 12], "x": 12, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.5},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.5}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":4, "x":15, "y":0},
+ {"matrix":[0, 2], "flags":4, "x":29, "y":0},
+ {"matrix":[0, 3], "flags":4, "x":44, "y":0},
+ {"matrix":[0, 4], "flags":4, "x":59, "y":0},
+ {"matrix":[0, 5], "flags":4, "x":73, "y":0},
+ {"matrix":[0, 6], "flags":4, "x":88, "y":0},
+ {"matrix":[0, 7], "flags":4, "x":103, "y":0},
+ {"matrix":[0, 8], "flags":4, "x":118, "y":0},
+ {"matrix":[0, 9], "flags":4, "x":132, "y":0},
+ {"matrix":[0, 10], "flags":4, "x":147, "y":0},
+ {"matrix":[0, 11], "flags":4, "x":162, "y":0},
+ {"matrix":[0, 12], "flags":4, "x":176, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":4, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":22, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":37, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":51, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":66, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":81, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":95, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":110, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":140, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":154, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":169, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":184, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":8, "x":6, "y":30},
+ {"matrix":[2, 1], "flags":4, "x":26, "y":30},
+ {"matrix":[2, 2], "flags":4, "x":40, "y":30},
+ {"matrix":[2, 3], "flags":4, "x":55, "y":30},
+ {"matrix":[2, 4], "flags":4, "x":70, "y":30},
+ {"matrix":[2, 5], "flags":4, "x":84, "y":30},
+ {"matrix":[2, 6], "flags":4, "x":99, "y":30},
+ {"matrix":[2, 7], "flags":4, "x":114, "y":30},
+ {"matrix":[2, 8], "flags":4, "x":129, "y":30},
+ {"matrix":[2, 9], "flags":4, "x":143, "y":30},
+ {"matrix":[2, 10], "flags":4, "x":158, "y":30},
+ {"matrix":[2, 11], "flags":4, "x":173, "y":30},
+ {"matrix":[2, 13], "flags":1, "x":187, "y":30},
+ {"matrix":[1, 13], "flags":1, "x":204, "y":23},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":30},
+
+ {"matrix":[3, 0], "flags":1, "x":2, "y":45},
+ {"matrix":[3, 1], "flags":1, "x":18, "y":45},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":45},
+ {"matrix":[3, 3], "flags":4, "x":48, "y":45},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":45},
+ {"matrix":[3, 5], "flags":4, "x":77, "y":45},
+ {"matrix":[3, 6], "flags":4, "x":92, "y":45},
+ {"matrix":[3, 7], "flags":4, "x":106, "y":45},
+ {"matrix":[3, 8], "flags":4, "x":121, "y":45},
+ {"matrix":[3, 9], "flags":4, "x":136, "y":45},
+ {"matrix":[3, 10], "flags":4, "x":151, "y":45},
+ {"matrix":[3, 11], "flags":4, "x":165, "y":45},
+ {"matrix":[3, 13], "flags":1, "x":185, "y":45},
+ {"matrix":[3, 14], "flags":1, "x":209, "y":49},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":60},
+ {"matrix":[4, 1], "flags":1, "x":20, "y":60},
+ {"matrix":[4, 2], "flags":1, "x":39, "y":60},
+ {"matrix":[4, 6], "flags":4, "x":94, "y":60},
+ {"matrix":[4, 10], "flags":1, "x":147, "y":60},
+ {"matrix":[4, 11], "flags":1, "x":162, "y":60},
+ {"matrix":[4, 12], "flags":1, "x":176, "y":60},
+ {"matrix":[4, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[2, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q2/iso_encoder/iso_encoder.c b/keyboards/keychron/q2/iso_encoder/iso_encoder.c
index 5e4f80462e53..e1a8d32d3d4a 100644
--- a/keyboards/keychron/q2/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q2/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,9 +17,8 @@
#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
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -98,34 +97,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}
};
-
-#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, 11, 12, 13, 14 },
- { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 42, 28 },
- { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 66, 41, 43 },
- { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, __, 56, 57 },
- { 58, 59, 60, __, __, __, 61, __, __, __, 62, 63, 64, 65, 67 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {15,0}, {29,0}, {44,0}, {59,0}, {73,0}, {88,0}, {103,0}, {118,0}, {132,0}, {147,0}, {162,0}, {176,0}, {198,0}, {224,0}, // {224,-4}
- {4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {224,15},
- {6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {187,30}, {204,23}, {224,30},
- {2,45}, {18,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
- {2,60}, {20,60}, {39,60}, {94,60}, {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q2/iso_encoder/keymaps/default/keymap.c
index cc408fea0e1a..f40af24ce034 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,62 +16,61 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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_iso_68(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN2] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [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(_______, _______)}
+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) },
+ [_FN1] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN2] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN3] = { ENCODER_CCW_CW(_______, _______) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/default/rules.mk b/keyboards/keychron/q2/iso_encoder/keymaps/default/rules.mk
index ee325681483f..a40474b4d5c7 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/default/rules.mk
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/default/rules.mk
@@ -1 +1 @@
-ENCODER_MAP_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/keymap.c
index 40e0b2c130f5..d0c8fccb0196 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -18,58 +18,61 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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_iso_68(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, 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_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
-};
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-// clang-format on
+ [_FN3] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {[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 // 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) },
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN3] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -80,10 +83,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..936769ddc6e2 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/via/config.h b/keyboards/keychron/q2/iso_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q2/iso_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q2/iso_encoder/keymaps/via/keymap.c
index cc408fea0e1a..707ee5aa5a39 100644
--- a/keyboards/keychron/q2/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,62 +16,61 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
- 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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
+ 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_DEL,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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_iso_68(
- 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [_FN1] = LAYOUT_iso_68(
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[_FN2] = LAYOUT_iso_68(
- 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, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [_FN3] = LAYOUT_iso_68(
+ 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, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD,RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [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(_______, _______)}
+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) },
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN3] = { ENCODER_CCW_CW(_______, _______) },
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q2/iso_encoder/readme.md b/keyboards/keychron/q2/iso_encoder/readme.md
new file mode 100644
index 000000000000..1d808cbb738a
--- /dev/null
+++ b/keyboards/keychron/q2/iso_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ISO variant of the Keychron Q2 and support encoder
+
+- Enable EC11 rotary encoder
+- Turn colckwise to increase volume and turn anti-colckwise to decrease volume
+- Press top right key pushbutton to mute
diff --git a/keyboards/keychron/q2/iso_encoder/rules.mk b/keyboards/keychron/q2/iso_encoder/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q2/iso_encoder/rules.mk
+++ b/keyboards/keychron/q2/iso_encoder/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q2/jis/config.h b/keyboards/keychron/q2/jis/config.h
index e6d9bff37597..f428589bb2a2 100644
--- a/keyboards/keychron/q2/jis/config.h
+++ b/keyboards/keychron/q2/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,9 +17,7 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 35
-#define DRIVER_2_LED_TOTAL 36
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 71
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/q2/jis/info.json b/keyboards/keychron/q2/jis/info.json
index ac8ed1176942..eb24b69d2b4b 100644
--- a/keyboards/keychron/q2/jis/info.json
+++ b/keyboards/keychron/q2/jis/info.json
@@ -1,113 +1,166 @@
{
- "keyboard_name": "Keychron Q2",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0114",
- "device_version": "1.0.2"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_jis_71": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25},
- {"matrix":[3, 1], "x":14, "y":0.25},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25},
+ {"matrix": [3, 1], "x": 14, "y": 0.25},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25},
- {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25},
+ {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.25, "y":3.25},
- {"matrix":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,12], "x":12.25, "y":3.25},
- {"matrix":[3,13], "x":13.25, "y":3.25},
- {"matrix":[3,14], "x":14.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 12], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 13.25, "y": 3.25},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25},
- {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":3.5, "y":4.25},
- {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5},
- {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[2,12], "x":14.25, "y":4.25},
- {"matrix":[4,14], "x":15.25, "y":4.25}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 6], "x": 4.5, "y": 4.25, "w": 4.5},
+ {"matrix": [4, 9], "x": 9, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":4},
+ {"matrix":[0, 1], "flags":4, "x":15, "y":4},
+ {"matrix":[0, 2], "flags":4, "x":29, "y":4},
+ {"matrix":[0, 3], "flags":4, "x":44, "y":4},
+ {"matrix":[0, 4], "flags":4, "x":59, "y":4},
+ {"matrix":[0, 5], "flags":4, "x":73, "y":4},
+ {"matrix":[0, 6], "flags":4, "x":88, "y":4},
+ {"matrix":[0, 7], "flags":4, "x":103, "y":4},
+ {"matrix":[0, 8], "flags":4, "x":117, "y":4},
+ {"matrix":[0, 9], "flags":4, "x":132, "y":4},
+ {"matrix":[0, 10], "flags":4, "x":146, "y":4},
+ {"matrix":[0, 11], "flags":4, "x":161, "y":4},
+ {"matrix":[0, 12], "flags":4, "x":176, "y":4},
+ {"matrix":[0, 13], "flags":1, "x":190, "y":4},
+ {"matrix":[3, 1], "flags":1, "x":205, "y":4},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":4, "y":19},
+ {"matrix":[1, 1], "flags":4, "x":22, "y":19},
+ {"matrix":[1, 2], "flags":4, "x":37, "y":19},
+ {"matrix":[1, 3], "flags":4, "x":51, "y":19},
+ {"matrix":[1, 4], "flags":4, "x":66, "y":19},
+ {"matrix":[1, 5], "flags":4, "x":81, "y":19},
+ {"matrix":[1, 6], "flags":4, "x":95, "y":19},
+ {"matrix":[1, 7], "flags":4, "x":110, "y":19},
+ {"matrix":[1, 8], "flags":4, "x":125, "y":19},
+ {"matrix":[1, 9], "flags":4, "x":140, "y":19},
+ {"matrix":[1, 10], "flags":4, "x":154, "y":19},
+ {"matrix":[1, 11], "flags":4, "x":168, "y":19},
+ {"matrix":[1, 12], "flags":4, "x":183, "y":19},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":19},
+
+ {"matrix":[2, 0], "flags":8, "x":6, "y":34},
+ {"matrix":[2, 1], "flags":4, "x":26, "y":34},
+ {"matrix":[2, 2], "flags":4, "x":40, "y":34},
+ {"matrix":[2, 3], "flags":4, "x":55, "y":34},
+ {"matrix":[2, 4], "flags":4, "x":70, "y":34},
+ {"matrix":[2, 5], "flags":4, "x":84, "y":34},
+ {"matrix":[2, 6], "flags":4, "x":99, "y":34},
+ {"matrix":[2, 7], "flags":4, "x":114, "y":34},
+ {"matrix":[2, 8], "flags":4, "x":128, "y":34},
+ {"matrix":[2, 9], "flags":4, "x":143, "y":34},
+ {"matrix":[2, 10], "flags":4, "x":158, "y":34},
+ {"matrix":[2, 11], "flags":4, "x":172, "y":34},
+ {"matrix":[2, 13], "flags":1, "x":187, "y":34},
+ {"matrix":[1, 13], "flags":1, "x":207, "y":29},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":34},
+
+ {"matrix":[3, 0], "flags":1, "x":9, "y":49},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[3, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[3, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[3, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[3, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[3, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[3, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[3, 10], "flags":4, "x":150, "y":49},
+ {"matrix":[3, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[3, 12], "flags":4, "x":179, "y":49},
+ {"matrix":[3, 13], "flags":1, "x":194, "y":49},
+ {"matrix":[3, 14], "flags":1, "x":209, "y":49},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[4, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[4, 2], "flags":1, "x":35, "y":64},
+ {"matrix":[4, 3], "flags":1, "x":51, "y":64},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":64},
+ {"matrix":[4, 9], "flags":1, "x":134, "y":64},
+ {"matrix":[4, 10], "flags":1, "x":150, "y":64},
+ {"matrix":[4, 11], "flags":1, "x":165, "y":64},
+ {"matrix":[4, 12], "flags":1, "x":179, "y":64},
+ {"matrix":[4, 13], "flags":1, "x":194, "y":64},
+ {"matrix":[2, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q2/jis/jis.c b/keyboards/keychron/q2/jis/jis.c
index 6193f80b019f..9d8f439d6ff3 100644
--- a/keyboards/keychron/q2/jis/jis.c
+++ b/keyboards/keychron/q2/jis/jis.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -102,33 +102,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_16, D_16, E_16}
};
-#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, 11, 12, 13, 15 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 43, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 69, 42, 44 },
- { 45, 14, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 },
- { 59, 60, 61, 62, __, __, 63, __, __, 64, 65, 66, 67, 68, 70 }
- },
- {
- // LED Index to Physical Position
- {0,4}, {15,4}, {29,4}, {44,4}, {59,4}, {73,4}, {88,4}, {103,4}, {117,4}, {132,4}, {146,4}, {161,4}, {176,4}, {190,4}, {205,4}, {224,0},
- {4,19}, {22,19}, {37,19}, {51,19}, {66,19}, {81,19}, {95,19}, {110,19}, {125,19}, {139,19}, {154,19}, {168,19}, {183,19}, {224,19},
- {6,34}, {26,34}, {40,34}, {55,34}, {70,34}, {84,34}, {99,34}, {114,34}, {128,34}, {143,34}, {158,34}, {172,34}, {187,34}, {207,29}, {224,34},
- {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {150,49}, {165,49}, {179,49}, {194,49}, {209,49},
- {2,64}, {18,64}, {35,64}, {51,64}, {92,64}, {134,64}, {150,64}, {165,64}, {179,64}, {194,64}, {209,64}, {223,64},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q2/jis/keymaps/default/keymap.c b/keyboards/keychron/q2/jis/keymaps/default/keymap.c
index cf85a0ebe58e..dc160b8a58f5 100644
--- a/keyboards/keychron/q2/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,49 +16,48 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
+ [_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/config.h b/keyboards/keychron/q2/jis/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q2/jis/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
index cd4c0b419204..cb3718ce7b12 100644
--- a/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -18,46 +18,45 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
- 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, _______, _______, _______,
+ [_FN1] = LAYOUT_jis_71(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -76,10 +75,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk b/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk
index dac903490f12..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q2/jis/keymaps/via/config.h b/keyboards/keychron/q2/jis/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q2/jis/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/jis/keymaps/via/keymap.c b/keyboards/keychron/q2/jis/keymaps/via/keymap.c
index cf85a0ebe58e..f72ad2f63a8a 100644
--- a/keyboards/keychron/q2/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
@@ -35,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
+ [_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q2/jis/rules.mk b/keyboards/keychron/q2/jis/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q2/jis/rules.mk
+++ b/keyboards/keychron/q2/jis/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q2/jis_encoder/config.h b/keyboards/keychron/q2/jis_encoder/config.h
index fc961ea2dbb2..dabeac526510 100644
--- a/keyboards/keychron/q2/jis_encoder/config.h
+++ b/keyboards/keychron/q2/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -17,12 +17,12 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 35
-#define DRIVER_2_LED_TOTAL 36
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+#define RGB_MATRIX_LED_COUNT 71
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
diff --git a/keyboards/keychron/q2/jis_encoder/info.json b/keyboards/keychron/q2/jis_encoder/info.json
index 4d7168ac5efe..cf43e4ca0554 100644
--- a/keyboards/keychron/q2/jis_encoder/info.json
+++ b/keyboards/keychron/q2/jis_encoder/info.json
@@ -1,119 +1,171 @@
{
- "keyboard_name": "Keychron Q2",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0115",
- "device_version": "1.0.2"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "encoder_map": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "B5"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_jis_71": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25},
- {"matrix":[3, 1], "x":14, "y":0.25},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25},
+ {"matrix": [3, 1], "x": 14, "y": 0.25},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25},
- {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25},
+ {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.25, "y":3.25},
- {"matrix":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,12], "x":12.25, "y":3.25},
- {"matrix":[3,13], "x":13.25, "y":3.25},
- {"matrix":[3,14], "x":14.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 12], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 13.25, "y": 3.25},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25},
- {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":3.5, "y":4.25},
- {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5},
- {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[2,12], "x":14.25, "y":4.25},
- {"matrix":[4,14], "x":15.25, "y":4.25}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 6], "x": 4.5, "y": 4.25, "w": 4.5},
+ {"matrix": [4, 9], "x": 9, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":4},
+ {"matrix":[0, 1], "flags":4, "x":15, "y":4},
+ {"matrix":[0, 2], "flags":4, "x":29, "y":4},
+ {"matrix":[0, 3], "flags":4, "x":44, "y":4},
+ {"matrix":[0, 4], "flags":4, "x":59, "y":4},
+ {"matrix":[0, 5], "flags":4, "x":73, "y":4},
+ {"matrix":[0, 6], "flags":4, "x":88, "y":4},
+ {"matrix":[0, 7], "flags":4, "x":103, "y":4},
+ {"matrix":[0, 8], "flags":4, "x":117, "y":4},
+ {"matrix":[0, 9], "flags":4, "x":132, "y":4},
+ {"matrix":[0, 10], "flags":4, "x":146, "y":4},
+ {"matrix":[0, 11], "flags":4, "x":161, "y":4},
+ {"matrix":[0, 12], "flags":4, "x":176, "y":4},
+ {"matrix":[0, 13], "flags":1, "x":190, "y":4},
+ {"matrix":[3, 1], "flags":1, "x":205, "y":4},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":4, "y":19},
+ {"matrix":[1, 1], "flags":4, "x":22, "y":19},
+ {"matrix":[1, 2], "flags":4, "x":37, "y":19},
+ {"matrix":[1, 3], "flags":4, "x":51, "y":19},
+ {"matrix":[1, 4], "flags":4, "x":66, "y":19},
+ {"matrix":[1, 5], "flags":4, "x":81, "y":19},
+ {"matrix":[1, 6], "flags":4, "x":95, "y":19},
+ {"matrix":[1, 7], "flags":4, "x":110, "y":19},
+ {"matrix":[1, 8], "flags":4, "x":125, "y":19},
+ {"matrix":[1, 9], "flags":4, "x":140, "y":19},
+ {"matrix":[1, 10], "flags":4, "x":154, "y":19},
+ {"matrix":[1, 11], "flags":4, "x":168, "y":19},
+ {"matrix":[1, 12], "flags":4, "x":183, "y":19},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":19},
+
+ {"matrix":[2, 0], "flags":8, "x":6, "y":34},
+ {"matrix":[2, 1], "flags":4, "x":26, "y":34},
+ {"matrix":[2, 2], "flags":4, "x":40, "y":34},
+ {"matrix":[2, 3], "flags":4, "x":55, "y":34},
+ {"matrix":[2, 4], "flags":4, "x":70, "y":34},
+ {"matrix":[2, 5], "flags":4, "x":84, "y":34},
+ {"matrix":[2, 6], "flags":4, "x":99, "y":34},
+ {"matrix":[2, 7], "flags":4, "x":114, "y":34},
+ {"matrix":[2, 8], "flags":4, "x":128, "y":34},
+ {"matrix":[2, 9], "flags":4, "x":143, "y":34},
+ {"matrix":[2, 10], "flags":4, "x":158, "y":34},
+ {"matrix":[2, 11], "flags":4, "x":172, "y":34},
+ {"matrix":[2, 13], "flags":1, "x":187, "y":34},
+ {"matrix":[1, 13], "flags":1, "x":207, "y":29},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":34},
+
+ {"matrix":[3, 0], "flags":1, "x":9, "y":49},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[3, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[3, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[3, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[3, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[3, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[3, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[3, 10], "flags":4, "x":150, "y":49},
+ {"matrix":[3, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[3, 12], "flags":4, "x":179, "y":49},
+ {"matrix":[3, 13], "flags":1, "x":194, "y":49},
+ {"matrix":[3, 14], "flags":1, "x":209, "y":49},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[4, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[4, 2], "flags":1, "x":35, "y":64},
+ {"matrix":[4, 3], "flags":1, "x":51, "y":64},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":64},
+ {"matrix":[4, 9], "flags":1, "x":134, "y":64},
+ {"matrix":[4, 10], "flags":1, "x":150, "y":64},
+ {"matrix":[4, 11], "flags":1, "x":165, "y":64},
+ {"matrix":[4, 12], "flags":1, "x":179, "y":64},
+ {"matrix":[4, 13], "flags":1, "x":194, "y":64},
+ {"matrix":[2, 12], "flags":1, "x":209, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q2/jis_encoder/jis_encoder.c b/keyboards/keychron/q2/jis_encoder/jis_encoder.c
index 13a57b9be807..9d8f439d6ff3 100644
--- a/keyboards/keychron/q2/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/q2/jis_encoder/jis_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -102,33 +102,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_16, D_16, E_16}
};
-#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, 11, 12, 13, 15 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 43, 29 },
- { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 69, 42, 44 },
- { 45, 14, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 },
- { 59, 60, 61, 62, __, __, 63, __, __, 64, 65, 66, 67, 68, 70 },
- },
- {
- // LED Index to Physical Position
- {0,4}, {15,4}, {29,4}, {44,4}, {59,4}, {73,4}, {88,4}, {103,4}, {117,4}, {132,4}, {146,4}, {161,4}, {176,4}, {190,4}, {205,4}, {224,0},
- {4,19}, {22,19}, {37,19}, {51,19}, {66,19}, {81,19}, {95,19}, {110,19}, {125,19}, {139,19}, {154,19}, {168,19}, {183,19}, {224,19},
- {6,34}, {26,34}, {40,34}, {55,34}, {70,34}, {84,34}, {99,34}, {114,34}, {128,34}, {143,34}, {158,34}, {172,34}, {187,34}, {207,29}, {224,34},
- {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {150,49}, {165,49}, {179,49}, {194,49}, {209,49},
- {2,64}, {18,64}, {35,64}, {51,64}, {92,64}, {134,64}, {150,64}, {165,64}, {179,64}, {194,64}, {209,64}, {223,64},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
index 8d11a8a0ea98..77315b82db5e 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,49 +16,48 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
+ [_FN1] = LAYOUT_jis_71(
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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/rules.mk b/keyboards/keychron/q2/jis_encoder/keymaps/default/rules.mk
similarity index 100%
rename from keyboards/keychron/q1/ansi_atmega32u4_encoder/keymaps/default/rules.mk
rename to keyboards/keychron/q2/jis_encoder/keymaps/default/rules.mk
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/config.h b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
index f0ac231651b9..7283b73ead66 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -18,46 +18,45 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
- 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,
+ [_FN1] = LAYOUT_jis_71(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, 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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,16 +65,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [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(_______, _______)}
+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) },
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN3] = { ENCODER_CCW_CW(_______, _______) },
};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -86,10 +83,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk
index dac903490f12..936769ddc6e2 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/config.h b/keyboards/keychron/q2/jis_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q2/jis_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
index c6d2c5262b3e..84bd50617de5 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
@@ -35,30 +34,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [_FN1] = LAYOUT_jis_71(
+ 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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk b/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk
index 1e5b99807cb7..f1adcab005e8 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk
@@ -1 +1,2 @@
VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q2/jis_encoder/rules.mk b/keyboards/keychron/q2/jis_encoder/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q2/jis_encoder/rules.mk
+++ b/keyboards/keychron/q2/jis_encoder/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q2/q2.c b/keyboards/keychron/q2/q2.c
index 2d33298a45db..e522c20f868b 100644
--- a/keyboards/keychron/q2/q2.c
+++ b/keyboards/keychron/q2/q2.c
@@ -17,14 +17,15 @@
#include "quantum.h"
const matrix_row_t matrix_mask[] = {
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111111111,
- 0b111111111101111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111111111,
+ 0b1111111111101111,
};
#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) {
@@ -32,4 +33,5 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/q2/readme.md b/keyboards/keychron/q2/readme.md
index 86af71ee42ed..b79b0ade0765 100644
--- a/keyboards/keychron/q2/readme.md
+++ b/keyboards/keychron/q2/readme.md
@@ -1,12 +1,12 @@
# Keychron Q2
-![Keychron Q2](https://i.imgur.com/9bJ6Moh.jpg)
+![Keychron Q2](https://i.imgur.com/sRf98x5.jpg)
A customizable 65% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q2
-* Hardware Availability: [Keychron Q2 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q2-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
@@ -26,6 +26,11 @@ Flashing example for this keyboard ([after setting up the bootloadHID flashing e
make keychron/q2/jis:default:flash
make keychron/q2/jis_encoder:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
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).
diff --git a/keyboards/keychron/q3/ansi/ansi.c b/keyboards/keychron/q3/ansi/ansi.c
index f44471e364ab..7cd7422da89c 100644
--- a/keyboards/keychron/q3/ansi/ansi.c
+++ b/keyboards/keychron/q3/ansi/ansi.c
@@ -17,9 +17,8 @@
#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
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -118,37 +117,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_16, D_16, E_16},
{1, C_15, A_15, B_15},
};
-
-#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, 11, 12, __, 13, 14 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
- { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 },
- { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, 62, 15, 32 },
- { 63, __, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 86, 75 },
- { 76, 77, 78, __, __, __, 79, __, __, __, 80, 81, 82, 83, 84, 85 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {26,0}, {39,0}, {52,0}, {65,0}, {85,0}, {98,0}, {111,0}, {124,0}, {143,0}, {156,0}, {169,0}, {182,0}, {198,0}, {211,0}, {224,0},
- {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
- {3,28}, {20,28}, {33,28}, {46,28}, {59,28}, {72,28}, {85,28}, {98,28}, {111,28}, {124,28}, {137,28}, {150,28}, {163,28}, {179,28}, {198,28}, {211,28}, {224,28},
- {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {174,40},
- {8,52}, {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52}, {107,52}, {120,52}, {133,52}, {146,52}, {171,52}, {211,52},
- {2,64}, {18,64}, {34,64}, {83,64}, {131,64}, {148,64}, {164,64}, {180,64}, {198,64}, {211,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q3/ansi/config.h b/keyboards/keychron/q3/ansi/config.h
index 9e3a2704cf65..3f940adf43cf 100644
--- a/keyboards/keychron/q3/ansi/config.h
+++ b/keyboards/keychron/q3/ansi/config.h
@@ -16,10 +16,11 @@
#pragma once
+/* We uses a pin with a stronger pull resistor than the internal MCU pins */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 48
-#define DRIVER_2_LED_TOTAL 39
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 87
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
diff --git a/keyboards/keychron/q3/ansi/info.json b/keyboards/keychron/q3/ansi/info.json
index 7e96e5e175b8..9b6393e313f2 100644
--- a/keyboards/keychron/q3/ansi/info.json
+++ b/keyboards/keychron/q3/ansi/info.json
@@ -1,130 +1,204 @@
{
- "keyboard_name": "Keychron Q3",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0120",
- "device_version": "1.0.7"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "device_version": "1.0.0"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":13, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":28},
+ {"matrix":[2, 13], "flags":1, "x":179, "y":28},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":28},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":153, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":174, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":81, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":94, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":120, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":133, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":146, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":164, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q3/ansi/keymaps/default/keymap.c b/keyboards/keychron/q3/ansi/keymaps/default/keymap.c
index 6b7cd23ddc4a..905ceb16dce2 100644
--- a/keyboards/keychron/q3/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/ansi/keymaps/default/keymap.c
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_tkl_ansi(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
@@ -46,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
+ KC_ESC, 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_PSCR, _______, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
diff --git a/keyboards/keychron/q3/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q3/ansi/keymaps/keychron/keymap.c
index 1e7dfbb9264e..91e588fe6271 100644
--- a/keyboards/keychron/q3/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/ansi/keymaps/keychron/keymap.c
@@ -18,18 +18,17 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
@@ -61,8 +60,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format off
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -72,10 +69,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q3/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q3/ansi/keymaps/keychron/rules.mk
index dac903490f12..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q3/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q3/ansi/keymaps/via/keymap.c b/keyboards/keychron/q3/ansi/keymaps/via/keymap.c
index 6b7cd23ddc4a..af0721dfb8d3 100644
--- a/keyboards/keychron/q3/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/ansi/keymaps/via/keymap.c
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_tkl_ansi(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
@@ -46,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_ansi(
- KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
+ KC_ESC, 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_PSCR, _______, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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,
diff --git a/keyboards/keychron/q3/ansi/readme.md b/keyboards/keychron/q3/ansi/readme.md
new file mode 100644
index 000000000000..1e7ea53e233e
--- /dev/null
+++ b/keyboards/keychron/q3/ansi/readme.md
@@ -0,0 +1 @@
+# The ANSI variant of the Keychron Q3
diff --git a/keyboards/keychron/q3/ansi/rules.mk b/keyboards/keychron/q3/ansi/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q3/ansi/rules.mk
+++ b/keyboards/keychron/q3/ansi/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
index d58e84671213..9d72f640281f 100644
--- a/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q3/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -17,9 +17,8 @@
#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
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -38,7 +37,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
- // {0, I_14, G_14, H_14}, // Encoder
{0, I_15, G_15, H_15},
{0, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -119,37 +117,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_16, D_16, E_16},
{1, C_15, A_15, B_15},
};
-
-#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, 11, 12, __, 13, 14 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
- { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48 },
- { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, 62, 15, 32 },
- { 63, __, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 86, 75 },
- { 76, 77, 78, __, __, __, 79, __, __, __, 80, 81, 82, 83, 84, 85 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {16,0}, {29,0}, {42,0}, {55,0}, {71,0}, {84,0}, {97,0}, {110,0}, {126,0}, {139,0}, {152,0}, {165,0}, {198,0}, {211,0}, {224,0},
- {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
- {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28}, {111,28}, {124,28}, {137,28}, {150,28}, {163,28}, {179,28}, {198,28}, {211,28}, {224,28},
- {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {174,40},
- {8,52}, {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52}, {107,52}, {120,52}, {133,52}, {146,52}, {171,52}, {211,52},
- {2,64}, {18,64}, {34,64}, {83,64}, {131,64}, {148,64}, {164,64}, {180,64}, {198,64}, {211,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q3/ansi_encoder/config.h b/keyboards/keychron/q3/ansi_encoder/config.h
index fa72bf557869..fa2c936c8ab4 100644
--- a/keyboards/keychron/q3/ansi_encoder/config.h
+++ b/keyboards/keychron/q3/ansi_encoder/config.h
@@ -17,15 +17,19 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 48
-#define DRIVER_2_LED_TOTAL 39
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+#define RGB_MATRIX_LED_COUNT 87
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
+
+/* HC595 Driver Configuration */
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
+#define HC595_START_INDEX 8
+#define HC595_END_INDEX 15
diff --git a/keyboards/keychron/q3/ansi_encoder/info.json b/keyboards/keychron/q3/ansi_encoder/info.json
index b685276dee5f..2215e77fe4c2 100644
--- a/keyboards/keychron/q3/ansi_encoder/info.json
+++ b/keyboards/keychron/q3/ansi_encoder/info.json
@@ -1,136 +1,215 @@
{
- "keyboard_name": "Keychron Q3",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0121",
- "device_version": "1.0.7"
+ "device_version": "1.0.0"
},
"features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": false
+ "encoder": true
},
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
"layouts": {
"LAYOUT_tkl_f13_ansi": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,14], "x":15.75, "y":0},
- {"matrix":[0,15], "x":16.75, "y":0},
- {"matrix":[3,14], "x":17.75, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.75, "y":1.25},
- {"matrix":[1,15], "x":16.75, "y":1.25},
- {"matrix":[3,15], "x":17.75, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.75, "y":2.25},
- {"matrix":[2,15], "x":16.75, "y":2.25},
- {"matrix":[3,12], "x":17.75, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.75, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.75, "y":5.25},
- {"matrix":[5,15], "x":16.75, "y":5.25},
- {"matrix":[4,14], "x":17.75, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":13, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":28},
+ {"matrix":[2, 13], "flags":1, "x":179, "y":28},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":28},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":153, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":174, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":81, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":94, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":120, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":133, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":146, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":164, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q3/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q3/ansi_encoder/keymaps/default/keymap.c
index 29e2e7fdc496..95e24673f17b 100644
--- a/keyboards/keychron/q3/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/ansi_encoder/keymaps/default/keymap.c
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_tkl_f13_ansi(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
@@ -54,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_ansi(
- _______, 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,
+ _______, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
@@ -63,10 +62,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/keymap.c
index b3b4e3f14e63..5e2008271d6f 100644
--- a/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/keymap.c
@@ -18,60 +18,56 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ 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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_tkl_f13_ansi(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_f13_ansi(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_ansi(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
#endif // ENCODER_MAP_ENABLE
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -81,10 +77,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..936769ddc6e2 100644
--- a/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q3/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q3/ansi_encoder/keymaps/via/keymap.c
index 29e2e7fdc496..67f98b2ce1ec 100644
--- a/keyboards/keychron/q3/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/ansi_encoder/keymaps/via/keymap.c
@@ -16,18 +16,17 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_tkl_f13_ansi(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
@@ -63,10 +62,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/ansi_encoder/readme.md b/keyboards/keychron/q3/ansi_encoder/readme.md
new file mode 100644
index 000000000000..97f0f5db7114
--- /dev/null
+++ b/keyboards/keychron/q3/ansi_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ANSI variant of the Keychron Q3
+
+- Enable rotary encoder support.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q3/ansi_encoder/rules.mk b/keyboards/keychron/q3/ansi_encoder/rules.mk
index aa286a161677..a515de570cd8 100644
--- a/keyboards/keychron/q3/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q3/ansi_encoder/rules.mk
@@ -1,14 +1,2 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
+VPATH += $(TOP_DIR)/keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q3/config.h b/keyboards/keychron/q3/config.h
index ab452c1a1282..225bf60f568e 100644
--- a/keyboards/keychron/q3/config.h
+++ b/keyboards/keychron/q3/config.h
@@ -16,9 +16,6 @@
#pragma once
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -33,13 +30,13 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
+
/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
- { 0x98, 0x98, 0x44, 0x98, 0x98, 0x44, 0x98, 0x98, 0x44, 0x98, 0x98, 0x44 }
+ { 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44, 0x9D, 0x9D, 0x44 }
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -54,60 +51,10 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define RGB_MATRIX_KEYRELEASES
/* Factory test keys */
#define FN_KEY1 MO(1)
#define FN_KEY2 MO(3)
-
-#define HC595_STCP B0
-#define HC595_SHCP B1
-#define HC595_DS A7
diff --git a/keyboards/keychron/q3/info.json b/keyboards/keychron/q3/info.json
new file mode 100644
index 000000000000..cdb126c70e86
--- /dev/null
+++ b/keyboards/keychron/q3/info.json
@@ -0,0 +1,48 @@
+{
+ "keyboard_name": "Keychron Q3",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "jellybean_raindrops": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "solid_reactive_multinexus": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_simple": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ }
+ },
+ "diode_direction": "ROW2COL"
+}
diff --git a/keyboards/keychron/q3/iso/config.h b/keyboards/keychron/q3/iso/config.h
index 2f7f39ad9517..b12f12ad2149 100644
--- a/keyboards/keychron/q3/iso/config.h
+++ b/keyboards/keychron/q3/iso/config.h
@@ -16,10 +16,11 @@
#pragma once
+/* We uses a pin with a stronger pull resistor than the internal MCU pins */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 48
-#define DRIVER_2_LED_TOTAL 40
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 88
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 49
diff --git a/keyboards/keychron/q3/iso/info.json b/keyboards/keychron/q3/iso/info.json
index 7d12eb84fa90..87666ad5f0bd 100644
--- a/keyboards/keychron/q3/iso/info.json
+++ b/keyboards/keychron/q3/iso/info.json
@@ -1,131 +1,206 @@
{
- "keyboard_name": "Keychron Q3",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0122",
- "device_version": "1.0.5"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "device_version": "1.0.0"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_tkl_iso": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":13, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":28},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":28},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":150, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":166, "y":40},
+ {"matrix":[2, 13], "flags":1, "x":183, "y":36},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":52},
+ {"matrix":[4, 1], "flags":1, "x":16, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":81, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":94, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":120, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":133, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":146, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":164, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q3/iso/iso.c b/keyboards/keychron/q3/iso/iso.c
index 4563d51f1166..6aa831802d43 100644
--- a/keyboards/keychron/q3/iso/iso.c
+++ b/keyboards/keychron/q3/iso/iso.c
@@ -17,9 +17,8 @@
#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
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -119,37 +118,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_16, D_16, E_16},
{1, C_15, A_15, B_15},
};
-
-#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, 11, 12, __, 13, 14 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
- { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 62, 46, 47 },
- { 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 48, 61, 15, 32 },
- { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, __, 75, 87, 76 },
- { 77, 78, 79, __, __, __, 80, __, __, __, 81, 82, 83, 84, 85, 86 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {26,0}, {39,0}, {52,0}, {65,0}, {84,0}, {97,0}, {111,0}, {124,0}, {143,0}, {156,0}, {169,0}, {182,0}, {198,0}, {211,0}, {224,0},
- {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
- {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28}, {111,28}, {124,28}, {137,28}, {150,28}, {163,28}, {198,28}, {211,28}, {224,28},
- {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {166,40}, {183,36},
- {2,52}, {16,52}, {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52}, {107,52}, {120,52}, {133,52}, {146,52}, {171,52}, {211,52},
- {2,64}, {18,64}, {34,64}, {83,64}, {131,64}, {148,64}, {164,64}, {180,64}, {198,64}, {211,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q3/iso/keymaps/default/keymap.c b/keyboards/keychron/q3/iso/keymaps/default/keymap.c
index baebff79cb4d..6d7f0c976ff3 100644
--- a/keyboards/keychron/q3/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/iso/keymaps/default/keymap.c
@@ -16,17 +16,46 @@
#include QMK_KEYBOARD_H
-enum layers { MAC_BASE, MAC_FN, WIN_BASE, WIN_FN };
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_iso(KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, , RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, 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_NUHS, KC_ENT, KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [MAC_BASE] = LAYOUT_tkl_iso(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_iso(_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN] = LAYOUT_tkl_iso(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_tkl_iso(KC_ESC, 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_PSCR, KC_NO, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, 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_NUHS, KC_ENT, KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_tkl_iso(
+ KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_iso(_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN] = LAYOUT_tkl_iso(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q3/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q3/iso/keymaps/keychron/keymap.c
index b765b8ad5ce1..3a87da0f4389 100644
--- a/keyboards/keychron/q3/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/iso/keymaps/keychron/keymap.c
@@ -22,12 +22,12 @@ enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
@@ -68,10 +68,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q3/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q3/iso/keymaps/keychron/rules.mk
index dac903490f12..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q3/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q3/iso/keymaps/via/keymap.c b/keyboards/keychron/q3/iso/keymaps/via/keymap.c
index baebff79cb4d..7c41bbc17793 100644
--- a/keyboards/keychron/q3/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/iso/keymaps/via/keymap.c
@@ -16,17 +16,46 @@
#include QMK_KEYBOARD_H
-enum layers { MAC_BASE, MAC_FN, WIN_BASE, WIN_FN };
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_tkl_iso(KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, , RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, 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_NUHS, KC_ENT, KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [MAC_BASE] = LAYOUT_tkl_iso(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_tkl_iso(_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [MAC_FN] = LAYOUT_tkl_iso(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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_BASE] = LAYOUT_tkl_iso(KC_ESC, 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_PSCR, KC_NO, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, 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_DEL, KC_END, KC_PGDN, 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_NUHS, KC_ENT, KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [WIN_BASE] = LAYOUT_tkl_iso(
+ KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_NUHS, KC_ENT,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_tkl_iso(_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_FN] = LAYOUT_tkl_iso(
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q3/iso/readme.md b/keyboards/keychron/q3/iso/readme.md
new file mode 100644
index 000000000000..69db8ff53268
--- /dev/null
+++ b/keyboards/keychron/q3/iso/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q3
diff --git a/keyboards/keychron/q3/iso/rules.mk b/keyboards/keychron/q3/iso/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q3/iso/rules.mk
+++ b/keyboards/keychron/q3/iso/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q3/iso_encoder/config.h b/keyboards/keychron/q3/iso_encoder/config.h
index addebe1f47a3..d2b3bf19fbf4 100644
--- a/keyboards/keychron/q3/iso_encoder/config.h
+++ b/keyboards/keychron/q3/iso_encoder/config.h
@@ -17,15 +17,19 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 48
-#define DRIVER_2_LED_TOTAL 40
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+#define RGB_MATRIX_LED_COUNT 88
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 49
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
+
+/* HC595 Driver Configuration */
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
+#define HC595_START_INDEX 8
+#define HC595_END_INDEX 15
diff --git a/keyboards/keychron/q3/iso_encoder/info.json b/keyboards/keychron/q3/iso_encoder/info.json
index 584da7952cac..ed26580db79c 100644
--- a/keyboards/keychron/q3/iso_encoder/info.json
+++ b/keyboards/keychron/q3/iso_encoder/info.json
@@ -1,137 +1,217 @@
{
- "keyboard_name": "Keychron Q3",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0123",
- "device_version": "1.0.5"
+ "device_version": "1.0.0"
},
"features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "encoder": true
},
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
"layouts": {
"LAYOUT_tkl_f13_iso": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,14], "x":15.75, "y":0},
- {"matrix":[0,15], "x":16.75, "y":0},
- {"matrix":[3,14], "x":17.75, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":26, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":39, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":98, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":111, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":124, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":156, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":13, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":176, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":20, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":33, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":46, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":28},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":28},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":150, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":166, "y":40},
+ {"matrix":[2, 13], "flags":1, "x":183, "y":36},
+
+ {"matrix":[4, 0], "flags":1, "x":2, "y":52},
+ {"matrix":[4, 1], "flags":1, "x":16, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":81, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":94, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":120, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":133, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":146, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":171, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":18, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":34, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":83, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":148, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":164, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q3/iso_encoder/iso_encoder.c b/keyboards/keychron/q3/iso_encoder/iso_encoder.c
index 4c7ac5adf302..6aa831802d43 100644
--- a/keyboards/keychron/q3/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q3/iso_encoder/iso_encoder.c
@@ -17,9 +17,8 @@
#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
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -119,37 +118,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_16, D_16, E_16},
{1, C_15, A_15, B_15},
};
-
-#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, 11, 12, __, 13, 14 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 },
- { 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 62, 46, 47 },
- { 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 48, 61, 15, 32 },
- { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, __, 75, 87, 76 },
- { 77, 78, 79, __, __, __, 80, __, __, __, 81, 82, 83, 84, 85, 86 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {16,0}, {29,0}, {42,0}, {55,0}, {71,0}, {84,0}, {97,0}, {110,0}, {126,0}, {139,0}, {152,0}, {165,0}, {198,0}, {211,0}, {224,0},
- {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {176,15}, {198,15}, {211,15}, {224,15},
- {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28}, {111,28}, {124,28}, {137,28}, {150,28}, {163,28}, {198,28}, {211,28}, {224,28},
- {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {166,40}, {183,36},
- {2,52}, {16,52}, {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52}, {107,52}, {120,52}, {133,52}, {146,52}, {171,52}, {211,52},
- {2,64}, {18,64}, {34,64}, {83,64}, {131,64}, {148,64}, {164,64}, {180,64}, {198,64}, {211,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q3/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q3/iso_encoder/keymaps/default/keymap.c
index a07e4610c486..ba50c77b4b5b 100644
--- a/keyboards/keychron/q3/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/iso_encoder/keymaps/default/keymap.c
@@ -16,13 +16,11 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
@@ -51,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_iso(
_______, 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,
@@ -63,10 +61,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q3/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q3/iso_encoder/keymaps/keychron/keymap.c
index a5693f9a36b7..968566f7132b 100644
--- a/keyboards/keychron/q3/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/iso_encoder/keymaps/keychron/keymap.c
@@ -18,61 +18,55 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_f13_iso(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, KC_ROPTN,MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_tkl_f13_iso(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_f13_iso(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_iso(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -83,10 +77,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q3/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q3/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..936769ddc6e2 100644
--- a/keyboards/keychron/q3/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q3/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q3/iso_encoder/keymaps/via/keymap.c
index a07e4610c486..ba50c77b4b5b 100644
--- a/keyboards/keychron/q3/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/iso_encoder/keymaps/via/keymap.c
@@ -16,13 +16,11 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
@@ -51,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_f13_iso(
_______, 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,
@@ -63,10 +61,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q3/iso_encoder/readme.md b/keyboards/keychron/q3/iso_encoder/readme.md
new file mode 100644
index 000000000000..9d0017b30baf
--- /dev/null
+++ b/keyboards/keychron/q3/iso_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ISO variant of the Keychron Q3
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q3/iso_encoder/rules.mk b/keyboards/keychron/q3/iso_encoder/rules.mk
index aa286a161677..a515de570cd8 100644
--- a/keyboards/keychron/q3/iso_encoder/rules.mk
+++ b/keyboards/keychron/q3/iso_encoder/rules.mk
@@ -1,14 +1,2 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
+VPATH += $(TOP_DIR)/keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q3/jis/config.h b/keyboards/keychron/q3/jis/config.h
index ae247da3ee89..34c10ad712ae 100644
--- a/keyboards/keychron/q3/jis/config.h
+++ b/keyboards/keychron/q3/jis/config.h
@@ -16,10 +16,11 @@
#pragma once
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 48
-#define DRIVER_2_LED_TOTAL 43
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 91
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
diff --git a/keyboards/keychron/q3/jis/info.json b/keyboards/keychron/q3/jis/info.json
index 8935fbb2bc03..6a6f96519df5 100644
--- a/keyboards/keychron/q3/jis/info.json
+++ b/keyboards/keychron/q3/jis/info.json
@@ -1,134 +1,212 @@
{
- "keyboard_name": "Keychron Q3",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0124",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "device_version": "1.0.0"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
"rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
},
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_jis_91": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[0,13], "x":14, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25},
+ {"matrix": [0, 13], "x": 14, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.75, "y":5.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25},
+ {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 3.5, "y": 5.25},
+ {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
+ {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":16, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":29, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":55, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":84, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":97, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":126, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":139, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":152, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":165, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":13, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":169, "y":15},
+ {"matrix":[0, 13], "flags":1, "x":182, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":19, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":32, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":45, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":58, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":28},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":28},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":150, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":166, "y":40},
+ {"matrix":[2, 13], "flags":1, "x":183, "y":36},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":81, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":94, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":120, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":133, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":146, "y":52},
+ {"matrix":[4, 12], "flags":4, "x":159, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":177, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":16, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":31, "y":64},
+ {"matrix":[5, 3], "flags":1, "x":45, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":81, "y":64},
+ {"matrix":[5, 9], "flags":1, "x":119, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":135, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":151, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":166, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q3/jis/jis.c b/keyboards/keychron/q3/jis/jis.c
index 6b21fa36815e..245b3974fa8e 100644
--- a/keyboards/keychron/q3/jis/jis.c
+++ b/keyboards/keychron/q3/jis/jis.c
@@ -17,142 +17,108 @@
#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
+/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, I_1, G_1, H_1}, // ESC
- {0, I_2, G_2, H_2}, // F1
- {0, I_3, G_3, H_3}, // F2
- {0, I_4, G_4, H_4}, // F3
- {0, I_5, G_5, H_5}, // F4
- {0, I_6, G_6, H_6}, // F5
- {0, I_7, G_7, H_7}, // F6
- {0, I_8, G_8, H_8}, // F7
- {0, I_9, G_9, H_9}, // F8
- {0, I_10, G_10, H_10}, // F9
- {0, I_11, G_11, H_11}, // F10
- {0, I_12, G_12, H_12}, // F11
- {0, I_13, G_13, H_13}, // F12
- {0, I_15, G_15, H_15}, // Print
- {0, I_16, G_16, H_16}, // Cortana
- {1, I_15, G_15, H_15}, // Light
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, I_1, G_1, H_1}, // ESC
+ {0, I_2, G_2, H_2}, // F1
+ {0, I_3, G_3, H_3}, // F2
+ {0, I_4, G_4, H_4}, // F3
+ {0, I_5, G_5, H_5}, // F4
+ {0, I_6, G_6, H_6}, // F5
+ {0, I_7, G_7, H_7}, // F6
+ {0, I_8, G_8, H_8}, // F7
+ {0, I_9, G_9, H_9}, // F8
+ {0, I_10, G_10, H_10}, // F9
+ {0, I_11, G_11, H_11}, // F10
+ {0, I_12, G_12, H_12}, // F11
+ {0, I_13, G_13, H_13}, // F12
+ {0, I_15, G_15, H_15}, // Print
+ {0, I_16, G_16, H_16}, // Cortana
+ {1, I_15, G_15, H_15}, // Light
- {0, C_1, A_1, B_1}, // `~
- {0, C_2, A_2, B_2}, // 1!
- {0, C_3, A_3, B_3}, // 2@
- {0, C_4, A_4, B_4}, // 3#
- {0, C_5, A_5, B_5}, // 4$
- {0, C_6, A_6, B_6}, // 5%
- {0, C_7, A_7, B_7}, // 6^
- {0, C_8, A_8, B_8}, // 7&
- {0, C_9, A_9, B_9}, // 8*
- {0, C_10, A_10, B_10}, // 9()
- {0, C_11, A_11, B_11}, // 0)
- {0, C_12, A_12, B_12}, // -_
- {0, C_13, A_13, B_13}, // =+
- {0, I_13, G_13, H_13}, // |
- {0, I_14, G_14, H_14}, // Backspace
- {0, C_15, A_15, B_15}, // Ins
- {0, C_16, A_16, B_16}, // Home
- {1, I_16, G_16, H_16}, // Page Up
+ {0, C_1, A_1, B_1}, // `~
+ {0, C_2, A_2, B_2}, // 1!
+ {0, C_3, A_3, B_3}, // 2@
+ {0, C_4, A_4, B_4}, // 3#
+ {0, C_5, A_5, B_5}, // 4$
+ {0, C_6, A_6, B_6}, // 5%
+ {0, C_7, A_7, B_7}, // 6^
+ {0, C_8, A_8, B_8}, // 7&
+ {0, C_9, A_9, B_9}, // 8*
+ {0, C_10, A_10, B_10}, // 9()
+ {0, C_11, A_11, B_11}, // 0)
+ {0, C_12, A_12, B_12}, // -_
+ {0, C_13, A_13, B_13}, // =+
+ {0, I_13, G_13, H_13}, // |
+ {0, I_14, G_14, H_14}, // Backspace
+ {0, C_15, A_15, B_15}, // Ins
+ {0, C_16, A_16, B_16}, // Home
+ {1, I_16, G_16, H_16}, // Page Up
- {0, F_1, D_1, E_1}, // tab
- {0, F_2, D_2, E_2}, // Q
- {0, F_3, D_3, E_3}, // W
- {0, F_4, D_4, E_4}, // E
- {0, F_5, D_5, E_5}, // R
- {0, F_6, D_6, E_6}, // T
- {0, F_7, D_7, E_7}, // Y
- {0, F_8, D_8, E_8}, // U
- {0, F_9, D_9, E_9}, // I
- {0, F_10, D_10, E_10}, // O
- {0, F_11, D_11, E_11}, // P
- {0, F_12, D_12, E_12}, // [{
- {0, F_13, D_13, E_13}, // }}
- {0, F_15, D_15, E_15}, // Del
- {0, F_16, D_16, E_16}, // End
- {1, I_13, G_13, H_13}, // Page Down
+ {0, F_1, D_1, E_1}, // tab
+ {0, F_2, D_2, E_2}, // Q
+ {0, F_3, D_3, E_3}, // W
+ {0, F_4, D_4, E_4}, // E
+ {0, F_5, D_5, E_5}, // R
+ {0, F_6, D_6, E_6}, // T
+ {0, F_7, D_7, E_7}, // Y
+ {0, F_8, D_8, E_8}, // U
+ {0, F_9, D_9, E_9}, // I
+ {0, F_10, D_10, E_10}, // O
+ {0, F_11, D_11, E_11}, // P
+ {0, F_12, D_12, E_12}, // [{
+ {0, F_14, D_14, E_14}, // }}
+ {0, F_15, D_15, E_15}, // Del
+ {0, F_16, D_16, E_16}, // End
+ {1, I_13, G_13, H_13}, // Page Down
- {1, I_1, G_1, H_1}, // Cpas
- {1, I_2, G_2, H_2}, // A
- {1, I_3, G_3, H_3}, // S
- {1, I_4, G_4, H_4}, // D
- {1, I_5, G_5, H_5}, // F
- {1, I_6, G_6, H_6}, // G
- {1, I_7, G_7, H_7}, // H
- {1, I_8, G_8, H_8}, // J
- {1, I_9, G_9, H_9}, // K
- {1, I_10, G_10, H_10}, // L
- {1, I_11, G_11, H_11}, // ;
- {1, I_12, G_12, H_12}, // :
- {1, I_14, G_14, H_14}, // #~
- {0, F_14, D_14, E_14}, // Enter
+ {1, I_1, G_1, H_1}, // Cpas
+ {1, I_2, G_2, H_2}, // A
+ {1, I_3, G_3, H_3}, // S
+ {1, I_4, G_4, H_4}, // D
+ {1, I_5, G_5, H_5}, // F
+ {1, I_6, G_6, H_6}, // G
+ {1, I_7, G_7, H_7}, // H
+ {1, I_8, G_8, H_8}, // J
+ {1, I_9, G_9, H_9}, // K
+ {1, I_10, G_10, H_10}, // L
+ {1, I_11, G_11, H_11}, // ;
+ {1, I_12, G_12, H_12}, // :
+ {1, I_14, G_14, H_14}, // #~
+ {0, F_13, D_13, E_13}, // Enter
- {1, C_1, A_1, B_1}, // LShift
- {1, C_3, A_3, B_3}, // Z
- {1, C_4, A_4, B_4}, // X
- {1, C_5, A_5, B_5}, // C
- {1, C_6, A_6, B_6}, // V
- {1, C_7, A_7, B_7}, // B
- {1, C_8, A_8, B_8}, // N
- {1, C_9, A_9, B_9}, // M
- {1, C_10, A_10, B_10}, // ,<
- {1, C_11, A_11, B_11}, // .>
- {1, C_12, A_12, B_12}, // /?
- {1, C_13, A_13, B_13}, // |
- {1, C_14, A_14, B_14}, // RShift
- {1, C_16, A_16, B_16}, // Up
+ {1, C_1, A_1, B_1}, // LShift
+ {1, C_3, A_3, B_3}, // Z
+ {1, C_4, A_4, B_4}, // X
+ {1, C_5, A_5, B_5}, // C
+ {1, C_6, A_6, B_6}, // V
+ {1, C_7, A_7, B_7}, // B
+ {1, C_8, A_8, B_8}, // N
+ {1, C_9, A_9, B_9}, // M
+ {1, C_10, A_10, B_10}, // ,<
+ {1, C_11, A_11, B_11}, // .>
+ {1, C_12, A_12, B_12}, // /?
+ {1, C_13, A_13, B_13}, // |
+ {1, C_14, A_14, B_14}, // RShift
+ {1, C_16, A_16, B_16}, // Up
- {1, F_1, D_1, E_1}, // LCtrl
- {1, F_2, D_2, E_2}, // LWin
- {1, F_3, D_3, E_3}, // LAlt
- {1, F_4, D_4, E_4}, // NUm
- {1, F_7, D_7, E_7}, // Space
- {1, F_10, D_10, E_10}, // Jap
- {1, F_11, D_11, E_11}, // RAlt
- {1, F_12, D_12, E_12}, // RWin
- {1, F_13, D_13, E_13}, // Fn
- {1, F_14, D_14, E_14}, // RCtrl
- {1, F_15, D_15, E_15}, // Left
- {1, F_16, D_16, E_16}, // Down
- {1, C_15, A_15, B_15}, // Right
+ {1, F_1, D_1, E_1}, // LCtrl
+ {1, F_2, D_2, E_2}, // LWin
+ {1, F_3, D_3, E_3}, // LAlt
+ {1, F_4, D_4, E_4}, // NUm
+ {1, F_7, D_7, E_7}, // Space
+ {1, F_10, D_10, E_10}, // Jap
+ {1, F_11, D_11, E_11}, // RAlt
+ {1, F_12, D_12, E_12}, // RWin
+ {1, F_13, D_13, E_13}, // Fn
+ {1, F_14, D_14, E_14}, // RCtrl
+ {1, F_15, D_15, E_15}, // Left
+ {1, F_16, D_16, E_16}, // Down
+ {1, C_15, A_15, B_15}, // Right
};
-
-# 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, 11, 12, 30, 13, 14 },
- { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32 },
- { 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 63, 47, 48 },
- { 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 49, 62, 15, 33 },
- { 64, __, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 90, 77 },
- { 78, 79, 80, 81, __, __, 82, __, __, 83, 84, 85, 86, 87, 88, 89 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {26,0}, {39,0}, {52,0}, {65,0}, {84,0}, {97,0}, {111,0}, {124,0}, {143,0}, {156,0}, {169,0}, {182,0}, {198,0}, {211,0}, {224,0},
- {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {169,15}, {182,15}, {198,15}, {211,15}, {224,15},
- {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28}, {111,28}, {124,28}, {137,28}, {150,28}, {163,28}, {198,28}, {211,28}, {224,28},
- {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {166,40}, {183,36},
- {8,52}, {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52}, {107,52}, {120,52}, {133,52}, {146,52}, {159,52}, {177,52}, {211,52},
- {2,64}, {16,64}, {31,64}, {45,64}, {81,64}, {119,64}, {135,64}, {151,64}, {166,64}, {180,64}, {198,64}, {211,64}, {224,64}
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif
+#endif // GB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q3/jis/keymaps/default/keymap.c b/keyboards/keychron/q3/jis/keymaps/default/keymap.c
index d073fa737a1b..b9bc01598eeb 100644
--- a/keyboards/keychron/q3/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/default/keymap.c
@@ -16,13 +16,11 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
@@ -30,7 +28,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_91(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
@@ -51,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_91(
_______, 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,
diff --git a/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
index 2afc9e59659b..9e480911d802 100644
--- a/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
@@ -18,8 +18,6 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -50,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_91(
_______, 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,
@@ -61,8 +59,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -72,10 +68,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q3/jis/keymaps/keychron/rules.mk b/keyboards/keychron/q3/jis/keymaps/keychron/rules.mk
index dac903490f12..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q3/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q3/jis/keymaps/via/keymap.c b/keyboards/keychron/q3/jis/keymaps/via/keymap.c
index d073fa737a1b..23bddc75bba9 100644
--- a/keyboards/keychron/q3/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/via/keymap.c
@@ -16,13 +16,11 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
@@ -51,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_91(
_______, 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,
diff --git a/keyboards/keychron/q3/jis/readme.md b/keyboards/keychron/q3/jis/readme.md
new file mode 100644
index 000000000000..f8faed6a6c5b
--- /dev/null
+++ b/keyboards/keychron/q3/jis/readme.md
@@ -0,0 +1 @@
+# The JIS variant of the Keychron Q3
diff --git a/keyboards/keychron/q3/jis/rules.mk b/keyboards/keychron/q3/jis/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q3/jis/rules.mk
+++ b/keyboards/keychron/q3/jis/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q3/jis_encoder/config.h b/keyboards/keychron/q3/jis_encoder/config.h
index 59f888a4c3ab..a794d9bf7a9e 100644
--- a/keyboards/keychron/q3/jis_encoder/config.h
+++ b/keyboards/keychron/q3/jis_encoder/config.h
@@ -17,12 +17,19 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 49
-#define DRIVER_2_LED_TOTAL 43
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+#define RGB_MATRIX_LED_COUNT 92
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 51
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
+
+/* HC595 Driver Configuration */
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
+#define HC595_START_INDEX 8
+#define HC595_END_INDEX 15
diff --git a/keyboards/keychron/q3/jis_encoder/info.json b/keyboards/keychron/q3/jis_encoder/info.json
index 0d339de6e2b7..61d3e267c87c 100644
--- a/keyboards/keychron/q3/jis_encoder/info.json
+++ b/keyboards/keychron/q3/jis_encoder/info.json
@@ -1,140 +1,224 @@
{
- "keyboard_name": "Keychron Q3",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0125",
- "device_version": "1.0.3"
+ "device_version": "1.0.0"
},
"features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "encoder": true
},
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
"layouts": {
"LAYOUT_jis_92": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[5, 5], "x":14, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25},
+ {"matrix": [5, 5], "x": 14, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.75, "y":5.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25},
+ {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 3.5, "y": 5.25},
+ {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
+ {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":16, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":29, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":55, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":71, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":84, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":97, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":126, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":139, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":152, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":165, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":182, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":198, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":211, "y":0},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":13, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":26, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":39, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":65, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":78, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":117, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":130, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":143, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":156, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":169, "y":15},
+ {"matrix":[5, 5], "flags":1, "x":182, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":211, "y":15},
+ {"matrix":[3, 15], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":19, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":32, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":45, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":59, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":72, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":85, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":98, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":111, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":124, "y":28},
+ {"matrix":[2, 10], "flags":4, "x":137, "y":28},
+ {"matrix":[2, 11], "flags":4, "x":150, "y":28},
+ {"matrix":[2, 12], "flags":4, "x":163, "y":28},
+ {"matrix":[2, 14], "flags":1, "x":198, "y":28},
+ {"matrix":[2, 15], "flags":1, "x":211, "y":28},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":28},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":23, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":36, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":49, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":62, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":75, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":88, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":101, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":114, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":127, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":140, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":150, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":166, "y":40},
+ {"matrix":[2, 13], "flags":1, "x":183, "y":36},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":29, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":42, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":68, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":81, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":94, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":120, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":133, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":146, "y":52},
+ {"matrix":[4, 12], "flags":1, "x":159, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":177, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":211, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":16, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":31, "y":64},
+ {"matrix":[5, 3], "flags":1, "x":45, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":81, "y":64},
+ {"matrix":[5, 9], "flags":1, "x":119, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":135, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":151, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":166, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":198, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":211, "y":64},
+ {"matrix":[4, 14], "flags":1, "x":224, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q3/jis_encoder/jis_encoder.c b/keyboards/keychron/q3/jis_encoder/jis_encoder.c
index 2bb76750390b..1b50100f0fc3 100644
--- a/keyboards/keychron/q3/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/q3/jis_encoder/jis_encoder.c
@@ -17,143 +17,109 @@
#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
+/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, I_1, G_1, H_1}, // ESC
- {0, I_2, G_2, H_2}, // F1
- {0, I_3, G_3, H_3}, // F2
- {0, I_4, G_4, H_4}, // F3
- {0, I_5, G_5, H_5}, // F4
- {0, I_6, G_6, H_6}, // F5
- {0, I_7, G_7, H_7}, // F6
- {0, I_8, G_8, H_8}, // F7
- {0, I_9, G_9, H_9}, // F8
- {0, I_10, G_10, H_10}, // F9
- {0, I_11, G_11, H_11}, // F10
- {0, I_12, G_12, H_12}, // F11
- {0, I_13, G_13, H_13}, // F12
- {0, I_14, G_14, H_14}, // Mute
- {0, I_15, G_15, H_15}, // Print
- {0, I_16, G_16, H_16}, // Cortana
- {1, I_15, G_15, H_15}, // Light
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, I_1, G_1, H_1}, // ESC
+ {0, I_2, G_2, H_2}, // F1
+ {0, I_3, G_3, H_3}, // F2
+ {0, I_4, G_4, H_4}, // F3
+ {0, I_5, G_5, H_5}, // F4
+ {0, I_6, G_6, H_6}, // F5
+ {0, I_7, G_7, H_7}, // F6
+ {0, I_8, G_8, H_8}, // F7
+ {0, I_9, G_9, H_9}, // F8
+ {0, I_10, G_10, H_10}, // F9
+ {0, I_11, G_11, H_11}, // F10
+ {0, I_12, G_12, H_12}, // F11
+ {0, I_13, G_13, H_13}, // F12
+ {0, I_14, G_14, H_14}, // Mute
+ {0, I_15, G_15, H_15}, // Print
+ {0, I_16, G_16, H_16}, // Cortana
+ {1, I_15, G_15, H_15}, // Light
- {0, C_1, A_1, B_1}, // `~
- {0, C_2, A_2, B_2}, // 1!
- {0, C_3, A_3, B_3}, // 2@
- {0, C_4, A_4, B_4}, // 3#
- {0, C_5, A_5, B_5}, // 4$
- {0, C_6, A_6, B_6}, // 5%
- {0, C_7, A_7, B_7}, // 6^
- {0, C_8, A_8, B_8}, // 7&
- {0, C_9, A_9, B_9}, // 8*
- {0, C_10, A_10, B_10}, // 9()
- {0, C_11, A_11, B_11}, // 0)
- {0, C_12, A_12, B_12}, // -_
- {0, C_13, A_13, B_13}, // =+
- {0, C_14, A_14, B_14}, // |
- {1, F_6, D_6, E_6}, // Backspace
- {0, C_15, A_15, B_15}, // Ins
- {0, C_16, A_16, B_16}, // Home
- {1, I_16, G_16, H_16}, // Page Up
+ {0, C_1, A_1, B_1}, // `~
+ {0, C_2, A_2, B_2}, // 1!
+ {0, C_3, A_3, B_3}, // 2@
+ {0, C_4, A_4, B_4}, // 3#
+ {0, C_5, A_5, B_5}, // 4$
+ {0, C_6, A_6, B_6}, // 5%
+ {0, C_7, A_7, B_7}, // 6^
+ {0, C_8, A_8, B_8}, // 7&
+ {0, C_9, A_9, B_9}, // 8*
+ {0, C_10, A_10, B_10}, // 9()
+ {0, C_11, A_11, B_11}, // 0)
+ {0, C_12, A_12, B_12}, // -_
+ {0, C_13, A_13, B_13}, // =+
+ {0, C_14, A_14, B_14}, // |
+ {1, F_6, D_6, E_6}, // Backspace
+ {0, C_15, A_15, B_15}, // Ins
+ {0, C_16, A_16, B_16}, // Home
+ {1, I_16, G_16, H_16}, // Page Up
- {0, F_1, D_1, E_1}, // tab
- {0, F_2, D_2, E_2}, // Q
- {0, F_3, D_3, E_3}, // W
- {0, F_4, D_4, E_4}, // E
- {0, F_5, D_5, E_5}, // R
- {0, F_6, D_6, E_6}, // T
- {0, F_7, D_7, E_7}, // Y
- {0, F_8, D_8, E_8}, // U
- {0, F_9, D_9, E_9}, // I
- {0, F_10, D_10, E_10}, // O
- {0, F_11, D_11, E_11}, // P
- {0, F_12, D_12, E_12}, // [{
- {0, F_13, D_13, E_13}, // }}
- {0, F_15, D_15, E_15}, // Del
- {0, F_16, D_16, E_16}, // End
- {1, I_13, G_13, H_13}, // Page Down
+ {0, F_1, D_1, E_1}, // tab
+ {0, F_2, D_2, E_2}, // Q
+ {0, F_3, D_3, E_3}, // W
+ {0, F_4, D_4, E_4}, // E
+ {0, F_5, D_5, E_5}, // R
+ {0, F_6, D_6, E_6}, // T
+ {0, F_7, D_7, E_7}, // Y
+ {0, F_8, D_8, E_8}, // U
+ {0, F_9, D_9, E_9}, // I
+ {0, F_10, D_10, E_10}, // O
+ {0, F_11, D_11, E_11}, // P
+ {0, F_12, D_12, E_12}, // [{
+ {0, F_13, D_13, E_13}, // }}
+ {0, F_15, D_15, E_15}, // Del
+ {0, F_16, D_16, E_16}, // End
+ {1, I_13, G_13, H_13}, // Page Down
- {1, I_1, G_1, H_1}, // Cpas
- {1, I_2, G_2, H_2}, // A
- {1, I_3, G_3, H_3}, // S
- {1, I_4, G_4, H_4}, // D
- {1, I_5, G_5, H_5}, // F
- {1, I_6, G_6, H_6}, // G
- {1, I_7, G_7, H_7}, // H
- {1, I_8, G_8, H_8}, // J
- {1, I_9, G_9, H_9}, // K
- {1, I_10, G_10, H_10}, // L
- {1, I_11, G_11, H_11}, // ;
- {1, I_12, G_12, H_12}, // :
- {1, I_14, G_14, H_14}, // #~
- {0, F_14, D_14, E_14}, // Enter
+ {1, I_1, G_1, H_1}, // Cpas
+ {1, I_2, G_2, H_2}, // A
+ {1, I_3, G_3, H_3}, // S
+ {1, I_4, G_4, H_4}, // D
+ {1, I_5, G_5, H_5}, // F
+ {1, I_6, G_6, H_6}, // G
+ {1, I_7, G_7, H_7}, // H
+ {1, I_8, G_8, H_8}, // J
+ {1, I_9, G_9, H_9}, // K
+ {1, I_10, G_10, H_10}, // L
+ {1, I_11, G_11, H_11}, // ;
+ {1, I_12, G_12, H_12}, // :
+ {1, I_14, G_14, H_14}, // #~
+ {0, F_14, D_14, E_14}, // Enter
- {1, C_1, A_1, B_1}, // LShift
- {1, C_3, A_3, B_3}, // Z
- {1, C_4, A_4, B_4}, // X
- {1, C_5, A_5, B_5}, // C
- {1, C_6, A_6, B_6}, // V
- {1, C_7, A_7, B_7}, // B
- {1, C_8, A_8, B_8}, // N
- {1, C_9, A_9, B_9}, // M
- {1, C_10, A_10, B_10}, // ,<
- {1, C_11, A_11, B_11}, // .>
- {1, C_12, A_12, B_12}, // /?
- {1, C_13, A_13, B_13}, // |
- {1, C_14, A_14, B_14}, // RShift
- {1, C_16, A_16, B_16}, // Up
+ {1, C_1, A_1, B_1}, // LShift
+ {1, C_3, A_3, B_3}, // Z
+ {1, C_4, A_4, B_4}, // X
+ {1, C_5, A_5, B_5}, // C
+ {1, C_6, A_6, B_6}, // V
+ {1, C_7, A_7, B_7}, // B
+ {1, C_8, A_8, B_8}, // N
+ {1, C_9, A_9, B_9}, // M
+ {1, C_10, A_10, B_10}, // ,<
+ {1, C_11, A_11, B_11}, // .>
+ {1, C_12, A_12, B_12}, // /?
+ {1, C_13, A_13, B_13}, // |
+ {1, C_14, A_14, B_14}, // RShift
+ {1, C_16, A_16, B_16}, // Up
- {1, F_1, D_1, E_1}, // LCtrl
- {1, F_2, D_2, E_2}, // LWin
- {1, F_3, D_3, E_3}, // LAlt
- {1, F_4, D_4, E_4}, // NUm
- {1, F_7, D_7, E_7}, // Space
- {1, F_10, D_10, E_10}, // Jap
- {1, F_11, D_11, E_11}, // RAlt
- {1, F_12, D_12, E_12}, // RWin
- {1, F_13, D_13, E_13}, // Fn
- {1, F_14, D_14, E_14}, // RCtrl
- {1, F_15, D_15, E_15}, // Left
- {1, F_16, D_16, E_16}, // Down
- {1, C_15, A_15, B_15}, // Right
+ {1, F_1, D_1, E_1}, // LCtrl
+ {1, F_2, D_2, E_2}, // LWin
+ {1, F_3, D_3, E_3}, // LAlt
+ {1, F_4, D_4, E_4}, // NUm
+ {1, F_7, D_7, E_7}, // Space
+ {1, F_10, D_10, E_10}, // Jap
+ {1, F_11, D_11, E_11}, // RAlt
+ {1, F_12, D_12, E_12}, // RWin
+ {1, F_13, D_13, E_13}, // Fn
+ {1, F_14, D_14, E_14}, // RCtrl
+ {1, F_15, D_15, E_15}, // Left
+ {1, F_16, D_16, E_16}, // Down
+ {1, C_15, A_15, B_15}, // Right
};
-
-# 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, 11, 12, 13, 14, 15 },
- { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 64, 48, 49 },
- { 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 50, 63, 16, 34 },
- { 65, __, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 91, 78 },
- { 79, 80, 81, 82, __, 31, 83, __, __, 84, 85, 86, 87, 88, 89, 90 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {16,0}, {29,0}, {42,0}, {55,0}, {71,0}, {84,0}, {97,0}, {110,0}, {126,0}, {139,0}, {152,0}, {165,0}, {182,0}, {198,0}, {211,0}, {224,0},
- {0,15}, {13,15}, {26,15}, {39,15}, {52,15}, {65,15}, {78,15}, {91,15}, {104,15}, {117,15}, {130,15}, {143,15}, {156,15}, {169,15}, {182,15}, {198,15}, {211,15}, {224,15},
- {3,28}, {19,28}, {32,28}, {45,28}, {59,28}, {72,28}, {85,28}, {98,28}, {111,28}, {124,28}, {137,28}, {150,28}, {163,28}, {198,28}, {211,28}, {224,28},
- {5,40}, {23,40}, {36,40}, {49,40}, {62,40}, {75,40}, {88,40}, {101,40}, {114,40}, {127,40}, {140,40}, {153,40}, {166,40}, {183,36},
- {8,52}, {29,52}, {42,52}, {55,52}, {68,52}, {81,52}, {94,52}, {107,52}, {120,52}, {133,52}, {146,52}, {159,52}, {177,52}, {211,52},
- {2,64}, {16,64}, {31,64}, {45,64}, {81,64}, {119,64}, {135,64}, {151,64}, {166,64}, {180,64}, {198,64}, {211,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
index f92035cc32f6..6b5e19a8b14a 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,13 +16,11 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
@@ -63,10 +61,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
index a3b15bc99fd4..04946593a140 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
@@ -18,62 +18,56 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_92(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_92(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_jis_92(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
- 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_DEL, KC_END, KC_PGDN,
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_92(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
#endif // ENCODER_MAP_ENABLE
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -83,10 +77,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/rules.mk
index 340c028b389c..936769ddc6e2 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
index f92035cc32f6..d4870c926e3a 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
@@ -16,13 +16,11 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
+enum layers {
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
@@ -63,10 +61,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q3/jis_encoder/readme.md b/keyboards/keychron/q3/jis_encoder/readme.md
new file mode 100644
index 000000000000..8fdb3bb2e001
--- /dev/null
+++ b/keyboards/keychron/q3/jis_encoder/readme.md
@@ -0,0 +1,5 @@
+# The JIS variant of the Keychron Q3
+
+- Enable rotary encoder support.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q3/jis_encoder/rules.mk b/keyboards/keychron/q3/jis_encoder/rules.mk
index aa286a161677..a515de570cd8 100644
--- a/keyboards/keychron/q3/jis_encoder/rules.mk
+++ b/keyboards/keychron/q3/jis_encoder/rules.mk
@@ -1,14 +1,2 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
+VPATH += $(TOP_DIR)/keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q3/q3.c b/keyboards/keychron/q3/q3.c
index 8acb24641f76..11786b4c27db 100644
--- a/keyboards/keychron/q3/q3.c
+++ b/keyboards/keychron/q3/q3.c
@@ -30,6 +30,7 @@ const matrix_row_t matrix_mask[] = {
// clang-format on
#ifdef DIP_SWITCH_ENABLE
+
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -39,4 +40,5 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif // DIP_SWITCH_ENABLE
+
+#endif
diff --git a/keyboards/keychron/q3/readme.md b/keyboards/keychron/q3/readme.md
index 2cde60dd9fa0..14733dbf2db5 100644
--- a/keyboards/keychron/q3/readme.md
+++ b/keyboards/keychron/q3/readme.md
@@ -6,7 +6,7 @@ A customizable 80% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q3
-* Hardware Availability: [Keychron Q3 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q3-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
@@ -26,6 +26,11 @@ Flashing example for this keyboard:
make keychron/q3/jis:default:flash
make keychron/q3/jis_encoder:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
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).
diff --git a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q4/ansi/config.h
similarity index 91%
rename from keyboards/keychron/q2/ansi_encoder/keymaps/keychron/config.h
rename to keyboards/keychron/q4/ansi/config.h
index 54bbaf673fed..c05e8f73a065 100644
--- a/keyboards/keychron/q2/ansi_encoder/keymaps/keychron/config.h
+++ b/keyboards/keychron/q4/ansi/config.h
@@ -14,4 +14,7 @@
* along with this program. If not, see .
*/
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#pragma once
+
+/* Enable CapsLcok LED*/
+#define CAPS_LOCK_LED_INDEX 28
diff --git a/keyboards/keychron/q4/ansi/info.json b/keyboards/keychron/q4/ansi/info.json
new file mode 100644
index 000000000000..23f40e3de31e
--- /dev/null
+++ b/keyboards/keychron/q4/ansi/info.json
@@ -0,0 +1,147 @@
+{
+ "usb": {
+ "pid": "0x0140",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT_ansi_61": {
+ "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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+ {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+ {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+ {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+ {"matrix": [0, 5], "x": 81, "y": 0, "flags": 4},
+ {"matrix": [0, 6], "x": 97, "y": 0, "flags": 4},
+ {"matrix": [0, 7], "x": 113, "y": 0, "flags": 4},
+ {"matrix": [0, 8], "x": 129, "y": 0, "flags": 4},
+ {"matrix": [0, 9], "x": 145, "y": 0, "flags": 4},
+ {"matrix": [0, 10], "x": 161, "y": 0, "flags": 4},
+ {"matrix": [0, 11], "x": 177, "y": 0, "flags": 4},
+ {"matrix": [0, 12], "x": 193, "y": 0, "flags": 4},
+ {"matrix": [0, 13], "x": 218, "y": 0, "flags": 1},
+
+ {"matrix": [1, 0], "x": 4,"y": 16, "flags": 1},
+ {"matrix": [1, 1], "x": 24,"y": 16, "flags": 4},
+ {"matrix": [1, 2], "x": 40,"y": 16, "flags": 4},
+ {"matrix": [1, 3], "x": 56,"y": 16, "flags": 4},
+ {"matrix": [1, 4], "x": 73,"y": 16, "flags": 4},
+ {"matrix": [1, 5], "x": 89,"y": 16, "flags": 4},
+ {"matrix": [1, 6], "x": 105,"y": 16, "flags": 4},
+ {"matrix": [1, 7], "x": 121,"y": 16, "flags": 4},
+ {"matrix": [1, 8], "x": 137,"y": 16, "flags": 4},
+ {"matrix": [1, 9], "x": 153,"y": 16, "flags": 4},
+ {"matrix": [1, 10], "x": 169,"y": 16, "flags": 4},
+ {"matrix": [1, 11], "x": 185,"y": 16, "flags": 4},
+ {"matrix": [1, 12], "x": 202,"y": 16, "flags": 4},
+ {"matrix": [1, 13], "x": 222,"y": 16, "flags": 4},
+
+ {"matrix": [2, 0], "x": 6, "y": 32, "flags": 8},
+ {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
+ {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
+ {"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
+ {"matrix": [2, 4], "x": 77, "y": 32, "flags": 4},
+ {"matrix": [2, 5], "x": 93, "y": 32, "flags": 4},
+ {"matrix": [2, 6], "x": 109, "y": 32, "flags": 4},
+ {"matrix": [2, 7], "x": 125, "y": 32, "flags": 4},
+ {"matrix": [2, 8], "x": 141, "y": 32, "flags": 4},
+ {"matrix": [2, 9], "x": 157, "y": 32, "flags": 4},
+ {"matrix": [2, 10], "x": 173, "y": 32, "flags": 4},
+ {"matrix": [2, 11], "x": 189, "y": 32, "flags": 4},
+ {"matrix": [2, 13], "x": 216, "y": 32, "flags": 1},
+
+ {"matrix": [3, 0], "x": 10, "y": 48, "flags": 1},
+ {"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
+ {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
+ {"matrix": [3, 4], "x": 69, "y": 48, "flags": 4},
+ {"matrix": [3, 5], "x": 85, "y": 48, "flags": 4},
+ {"matrix": [3, 6], "x": 101, "y": 48, "flags": 4},
+ {"matrix": [3, 7], "x": 117, "y": 48, "flags": 4},
+ {"matrix": [3, 8], "x": 133, "y": 48, "flags": 4},
+ {"matrix": [3, 9], "x": 149, "y": 48, "flags": 4},
+ {"matrix": [3, 10], "x": 165, "y": 48, "flags": 4},
+ {"matrix": [3, 11], "x": 181, "y": 48, "flags": 4},
+ {"matrix": [3, 13], "x": 212, "y": 48, "flags": 1},
+
+ {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+ {"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
+ {"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
+ {"matrix": [4, 6], "x": 103, "y": 64, "flags": 4},
+ {"matrix": [4, 10], "x": 164, "y": 64, "flags": 1},
+ {"matrix": [4, 11], "x": 184, "y": 64, "flags": 1},
+ {"matrix": [4, 12], "x": 204, "y": 64, "flags": 1},
+ {"matrix": [4, 13], "x": 224, "y": 64, "flags": 1}
+
+ ]
+ }
+}
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/via/keymap.c b/keyboards/keychron/q4/ansi/keymaps/default/keymap.c
similarity index 91%
rename from keyboards/keychron/q4/ansi_v1/keymaps/via/keymap.c
rename to keyboards/keychron/q4/ansi/keymaps/default/keymap.c
index 1e0084850d75..67bc10435eaa 100644
--- a/keyboards/keychron/q4/ansi_v1/keymaps/via/keymap.c
+++ b/keyboards/keychron/q4/ansi/keymaps/default/keymap.c
@@ -16,49 +16,48 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_ansi_61(
+ [_FN1] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
+ [_FN3] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/keychron/keymap.c b/keyboards/keychron/q4/ansi/keymaps/keychron/keymap.c
similarity index 89%
rename from keyboards/keychron/q4/ansi_v2/keymaps/keychron/keymap.c
rename to keyboards/keychron/q4/ansi/keymaps/keychron/keymap.c
index 261c78ddbc9b..333e006d317c 100644
--- a/keyboards/keychron/q4/ansi_v2/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q4/ansi/keymaps/keychron/keymap.c
@@ -18,46 +18,45 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_ansi_61(
- 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_MOD,
+ [_FN1] = LAYOUT_ansi_61(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
+ [_FN3] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
@@ -76,10 +75,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q4/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q4/ansi/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/q4/ansi/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/default/keymap.c b/keyboards/keychron/q4/ansi/keymaps/via/keymap.c
similarity index 91%
rename from keyboards/keychron/q4/ansi_v1/keymaps/default/keymap.c
rename to keyboards/keychron/q4/ansi/keymaps/via/keymap.c
index 1e0084850d75..97895d0745ea 100644
--- a/keyboards/keychron/q4/ansi_v1/keymaps/default/keymap.c
+++ b/keyboards/keychron/q4/ansi/keymaps/via/keymap.c
@@ -16,49 +16,49 @@
#include QMK_KEYBOARD_H
-// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
[WIN_BASE] = LAYOUT_ansi_61(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_ansi_61(
+ [_FN1] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_ansi_61(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
+ [_FN3] = LAYOUT_ansi_61(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q4/ansi/keymaps/via/rules.mk b/keyboards/keychron/q4/ansi/keymaps/via/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/keychron/q4/ansi/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q4/ansi/readme.md b/keyboards/keychron/q4/ansi/readme.md
new file mode 100644
index 000000000000..bd2f3fd8a81f
--- /dev/null
+++ b/keyboards/keychron/q4/ansi/readme.md
@@ -0,0 +1 @@
+# The ANSI variant of the Keychron Q4
diff --git a/keyboards/keychron/q4/ansi_v1/config.h b/keyboards/keychron/q4/ansi/v1/config.h
similarity index 86%
rename from keyboards/keychron/q4/ansi_v1/config.h
rename to keyboards/keychron/q4/ansi/v1/config.h
index 26168f5360f3..ef0a97909358 100644
--- a/keyboards/keychron/q4/ansi_v1/config.h
+++ b/keyboards/keychron/q4/ansi/v1/config.h
@@ -22,13 +22,12 @@
#define DRIVER_ADDR_2 0b1110100
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 31
-#define DRIVER_2_LED_TOTAL 30
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 61
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
/* Enable CapsLcok LED*/
#define CAPS_LOCK_LED_INDEX 28
diff --git a/keyboards/keychron/q4/ansi/v1/rules.mk b/keyboards/keychron/q4/ansi/v1/rules.mk
new file mode 100644
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q4/ansi/v1/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q4/ansi_v1/ansi_v1.c b/keyboards/keychron/q4/ansi/v1/v1.c
similarity index 64%
rename from keyboards/keychron/q4/ansi_v1/ansi_v1.c
rename to keyboards/keychron/q4/ansi/v1/v1.c
index 42f77b219849..d593569d7321 100644
--- a/keyboards/keychron/q4/ansi_v1/ansi_v1.c
+++ b/keyboards/keychron/q4/ansi/v1/v1.c
@@ -17,9 +17,8 @@
#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
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -91,34 +90,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_13, D_13, E_13},
{1, F_14, D_14, E_14},
};
-
-#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, 11, 12, 13 },
- { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
- { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, __, 40 },
- { 41, __, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, __, 52 },
- { 53, 54, 55, __, __, __, 56, __, __, __, 57, 58, 59, 60 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {16,0}, {32,0}, {48,0}, {64,0}, {81,0}, {97,0}, {113,0}, {129,0}, {145,0}, {161,0}, {177,0}, {193,0}, {218,0},
- {4,16}, {24,16}, {40,16}, {56,16}, {73,16}, {89,16}, {105,16}, {121,16}, {137,16}, {153,16}, {169,16}, {185,16}, {202,16}, {222,16},
- {6,32}, {28,32}, {44,32}, {60,32}, {77,32}, {93,32}, {109,32}, {125,32}, {141,32}, {157,32}, {173,32}, {189,32}, {216,32},
- {10,48}, {36,48}, {52,48}, {69,48}, {85,48}, {101,48}, {117,48}, {133,48}, {149,48}, {165,48}, {181,48}, {212,48},
- {2,64}, {22,64}, {42,64}, {103,64}, {164,64}, {184,64}, {204,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 4, 4, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/q4/ansi_v2/config.h b/keyboards/keychron/q4/ansi/v2/config.h
similarity index 85%
rename from keyboards/keychron/q4/ansi_v2/config.h
rename to keyboards/keychron/q4/ansi/v2/config.h
index fe557f40efdc..6630902b5478 100644
--- a/keyboards/keychron/q4/ansi_v2/config.h
+++ b/keyboards/keychron/q4/ansi/v2/config.h
@@ -21,8 +21,7 @@
#define DRIVER_ADDR_1 0b1110100
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 61
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+#define RGB_MATRIX_LED_COUNT 61
-/* Enable CapsLcok LED*/
-#define CAPS_LOCK_LED_INDEX 28
+#define CKLED2001_CURRENT_TUNE \
+ { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
diff --git a/keyboards/keychron/q4/ansi/v2/rules.mk b/keyboards/keychron/q4/ansi/v2/rules.mk
new file mode 100644
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/q4/ansi/v2/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/q4/ansi_v2/ansi_v2.c b/keyboards/keychron/q4/ansi/v2/v2.c
similarity index 64%
rename from keyboards/keychron/q4/ansi_v2/ansi_v2.c
rename to keyboards/keychron/q4/ansi/v2/v2.c
index 92ca7eb29620..0d044979a025 100644
--- a/keyboards/keychron/q4/ansi_v2/ansi_v2.c
+++ b/keyboards/keychron/q4/ansi/v2/v2.c
@@ -17,9 +17,8 @@
#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
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -91,34 +90,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
};
-
-#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, 11, 12, 13 },
- { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
- { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, __, 40 },
- { 41, __, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, __, 52 },
- { 53, 54, 55, __, __, __, 56, __, __, __, 57, 58, 59, 60 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {16,0}, {32,0}, {48,0}, {64,0}, {81,0}, {97,0}, {113,0}, {129,0}, {145,0}, {161,0}, {177,0}, {193,0}, {218,0},
- {4,16}, {24,16}, {40,16}, {56,16}, {73,16}, {89,16}, {105,16}, {121,16}, {137,16}, {153,16}, {169,16}, {185,16}, {202,16}, {222,16},
- {6,32}, {28,32}, {44,32}, {60,32}, {77,32}, {93,32}, {109,32}, {125,32}, {141,32}, {157,32}, {173,32}, {189,32}, {216,32},
- {10,48}, {36,48}, {52,48}, {69,48}, {85,48}, {101,48}, {117,48}, {133,48}, {149,48}, {165,48}, {181,48}, {212,48},
- {2,64}, {22,64}, {42,64}, {103,64}, {164,64}, {184,64}, {204,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 4, 4, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/q4/ansi_v1/info.json b/keyboards/keychron/q4/ansi_v1/info.json
deleted file mode 100644
index d0a5cedec901..000000000000
--- a/keyboards/keychron/q4/ansi_v1/info.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "keyboard_name": "Keychron Q4",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0140",
- "device_version": "1.0.6"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_ansi_61": {
- "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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
-
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
-
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
-
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4, "w":1.25},
- {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
- {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
- {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/keychron/keymap.c b/keyboards/keychron/q4/ansi_v1/keymaps/keychron/keymap.c
deleted file mode 100644
index 261c78ddbc9b..000000000000
--- a/keyboards/keychron/q4/ansi_v1/keymaps/keychron/keymap.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-#include "keychron_common.h"
-#include "keychron_ft_common.h"
-
-// clang-format off
-
-enum layers {
- MAC_BASE,
- WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_61(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
-
- [WIN_BASE] = LAYOUT_ansi_61(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
-
- [MAC_FN1] = LAYOUT_ansi_61(
- 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_MOD,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_FN1] = LAYOUT_ansi_61(
- 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_MOD,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
-
- [_FN2] = LAYOUT_ansi_61(
- 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, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______)
-};
-
-// clang-format on
-
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (!process_record_keychron(keycode, record)) {
- return false;
- }
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
- return true;
-}
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/keychron/rules.mk b/keyboards/keychron/q4/ansi_v1/keymaps/keychron/rules.mk
deleted file mode 100644
index dac903490f12..000000000000
--- a/keyboards/keychron/q4/ansi_v1/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q4/ansi_v1/rules.mk b/keyboards/keychron/q4/ansi_v1/rules.mk
deleted file mode 100644
index 4bc1e23a57a0..000000000000
--- a/keyboards/keychron/q4/ansi_v1/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
diff --git a/keyboards/keychron/q4/ansi_v2/info.json b/keyboards/keychron/q4/ansi_v2/info.json
deleted file mode 100644
index d0a5cedec901..000000000000
--- a/keyboards/keychron/q4/ansi_v2/info.json
+++ /dev/null
@@ -1,103 +0,0 @@
-{
- "keyboard_name": "Keychron Q4",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0140",
- "device_version": "1.0.6"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_ansi_61": {
- "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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
-
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
-
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
-
- {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
-
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4, "w":1.25},
- {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
- {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
- {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/default/keymap.c b/keyboards/keychron/q4/ansi_v2/keymaps/default/keymap.c
deleted file mode 100644
index 1e0084850d75..000000000000
--- a/keyboards/keychron/q4/ansi_v2/keymaps/default/keymap.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-
-// clang-format off
-
-enum layers {
- MAC_BASE,
- WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_61(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
-
- [WIN_BASE] = LAYOUT_ansi_61(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
-
- [MAC_FN1] = LAYOUT_ansi_61(
- 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_MOD,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_FN1] = LAYOUT_ansi_61(
- 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_MOD,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
-
- [_FN2] = LAYOUT_ansi_61(
- 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, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______)
-};
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/keychron/rules.mk b/keyboards/keychron/q4/ansi_v2/keymaps/keychron/rules.mk
deleted file mode 100644
index dac903490f12..000000000000
--- a/keyboards/keychron/q4/ansi_v2/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/via/keymap.c b/keyboards/keychron/q4/ansi_v2/keymaps/via/keymap.c
deleted file mode 100644
index 1e0084850d75..000000000000
--- a/keyboards/keychron/q4/ansi_v2/keymaps/via/keymap.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-
-// clang-format off
-
-enum layers {
- MAC_BASE,
- WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_61(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
-
- [WIN_BASE] = LAYOUT_ansi_61(
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
- 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
-
- [MAC_FN1] = LAYOUT_ansi_61(
- 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_MOD,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
-
- [WIN_FN1] = LAYOUT_ansi_61(
- 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_MOD,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
-
- [_FN2] = LAYOUT_ansi_61(
- 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, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______)
-};
diff --git a/keyboards/keychron/q4/ansi_v2/rules.mk b/keyboards/keychron/q4/ansi_v2/rules.mk
deleted file mode 100644
index 4bc1e23a57a0..000000000000
--- a/keyboards/keychron/q4/ansi_v2/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
diff --git a/keyboards/keychron/q4/config.h b/keyboards/keychron/q4/config.h
index f08eef28eee9..09d6cbf07ca7 100644
--- a/keyboards/keychron/q4/config.h
+++ b/keyboards/keychron/q4/config.h
@@ -17,8 +17,7 @@
#pragma once
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -26,18 +25,6 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
-
-/* 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
-
-#define CKLED2001_CURRENT_TUNE \
- { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
-
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -45,55 +32,9 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
/* Factory test keys */
#define FN_KEY1 MO(2)
diff --git a/keyboards/keychron/q4/info.json b/keyboards/keychron/q4/info.json
new file mode 100644
index 000000000000..de4d1fed44c4
--- /dev/null
+++ b/keyboards/keychron/q4/info.json
@@ -0,0 +1,55 @@
+{
+ "keyboard_name": "Keychron Q4",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
+ "rows": ["B4", "B3", "A15", "A14", "A13"]
+ },
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "jellybean_raindrops": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "solid_reactive_multinexus": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_simple": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ }
+ },
+ "dynamic_keymap": {
+ "layer_count": 5
+ }
+}
diff --git a/keyboards/keychron/q4/iso/config.h b/keyboards/keychron/q4/iso/config.h
index 3bdcf4dcc071..51f3ca054ad3 100644
--- a/keyboards/keychron/q4/iso/config.h
+++ b/keyboards/keychron/q4/iso/config.h
@@ -21,8 +21,10 @@
#define DRIVER_ADDR_1 0b1110100
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 62
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+#define RGB_MATRIX_LED_COUNT 62
+
+#define CKLED2001_CURRENT_TUNE \
+ { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
/* Enable CapsLcok LED*/
#define CAPS_LOCK_LED_INDEX 27
diff --git a/keyboards/keychron/q4/iso/info.json b/keyboards/keychron/q4/iso/info.json
index cca317058c8a..3a173cdccc6b 100644
--- a/keyboards/keychron/q4/iso/info.json
+++ b/keyboards/keychron/q4/iso/info.json
@@ -1,104 +1,148 @@
{
- "keyboard_name": "Keychron Q4",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0142",
- "device_version": "1.0.4"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_62": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2},
- {"matrix":[1,13], "x":13.75, "y":1, "w":1.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2},
+ {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
- {"matrix":[3, 0], "x":0, "y":3, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3.25},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4, "w":1.25},
- {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
- {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
- {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
+ {"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
+ {"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
+ {"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
+ {"matrix": [0, 5], "x": 81, "y": 0, "flags": 4},
+ {"matrix": [0, 6], "x": 97, "y": 0, "flags": 4},
+ {"matrix": [0, 7], "x": 113, "y": 0, "flags": 4},
+ {"matrix": [0, 8], "x": 129, "y": 0, "flags": 4},
+ {"matrix": [0, 9], "x": 145, "y": 0, "flags": 4},
+ {"matrix": [0, 10], "x": 161, "y": 0, "flags": 4},
+ {"matrix": [0, 11], "x": 177, "y": 0, "flags": 4},
+ {"matrix": [0, 12], "x": 193, "y": 0, "flags": 4},
+ {"matrix": [0, 13], "x": 218, "y": 0, "flags": 1},
+
+ {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+ {"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
+ {"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
+ {"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
+ {"matrix": [1, 4], "x": 73, "y": 16, "flags": 4},
+ {"matrix": [1, 5], "x": 89, "y": 16, "flags": 4},
+ {"matrix": [1, 6], "x": 105, "y": 16, "flags": 4},
+ {"matrix": [1, 7], "x": 121, "y": 16, "flags": 4},
+ {"matrix": [1, 8], "x": 137, "y": 16, "flags": 4},
+ {"matrix": [1, 9], "x": 153, "y": 16, "flags": 4},
+ {"matrix": [1, 10], "x": 169, "y": 16, "flags": 4},
+ {"matrix": [1, 11], "x": 185, "y": 16, "flags": 4},
+ {"matrix": [1, 12], "x": 202, "y": 16, "flags": 4},
+
+ {"matrix": [2, 0], "x": 6, "y": 32, "flags": 8},
+ {"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
+ {"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
+ {"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
+ {"matrix": [2, 4], "x": 77, "y": 32, "flags": 4},
+ {"matrix": [2, 5], "x": 93, "y": 32, "flags": 4},
+ {"matrix": [2, 6], "x": 109, "y": 32, "flags": 4},
+ {"matrix": [2, 7], "x": 125, "y": 32, "flags": 4},
+ {"matrix": [2, 8], "x": 141, "y": 32, "flags": 4},
+ {"matrix": [2, 9], "x": 157, "y": 32, "flags": 4},
+ {"matrix": [2, 10], "x": 173, "y": 32, "flags": 4},
+ {"matrix": [2, 11], "x": 189, "y": 32, "flags": 4},
+ {"matrix": [2, 13], "x": 206, "y": 32, "flags": 4},
+ {"matrix": [1, 13], "x": 224, "y": 24, "flags": 1},
+
+ {"matrix": [3, 0], "x": 2, "y": 48, "flags": 1},
+ {"matrix": [3, 1], "x": 20, "y": 48, "flags": 4},
+ {"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
+ {"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
+ {"matrix": [3, 4], "x": 69, "y": 48, "flags": 4},
+ {"matrix": [3, 5], "x": 85, "y": 48, "flags": 4},
+ {"matrix": [3, 6], "x": 101, "y": 48, "flags": 4},
+ {"matrix": [3, 7], "x": 117, "y": 48, "flags": 4},
+ {"matrix": [3, 8], "x": 133, "y": 48, "flags": 4},
+ {"matrix": [3, 9], "x": 149, "y": 48, "flags": 4},
+ {"matrix": [3, 10], "x": 165, "y": 48, "flags": 4},
+ {"matrix": [3, 11], "x": 181, "y": 48, "flags": 4},
+ {"matrix": [3, 13], "x": 212, "y": 48, "flags": 1},
+
+ {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+ {"matrix": [4, 1], "x": 22, "y": 64, "flags": 1},
+ {"matrix": [4, 2], "x": 42, "y": 64, "flags": 1},
+ {"matrix": [4, 6], "x": 103, "y": 64, "flags": 4},
+ {"matrix": [4, 10], "x": 164, "y": 64, "flags": 1},
+ {"matrix": [4, 11], "x": 184, "y": 64, "flags": 1},
+ {"matrix": [4, 12], "x": 204, "y": 64, "flags": 1},
+ {"matrix": [4, 13], "x": 224, "y": 64, "flags": 1}
+ ]
}
}
diff --git a/keyboards/keychron/q4/iso/iso.c b/keyboards/keychron/q4/iso/iso.c
index 34e263cf2944..190037000cd5 100644
--- a/keyboards/keychron/q4/iso/iso.c
+++ b/keyboards/keychron/q4/iso/iso.c
@@ -17,9 +17,8 @@
#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
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -92,34 +91,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
};
-
-#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, 11, 12, 13 },
- { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 40 },
- { 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, __, 39 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, __, 53 },
- { 54, 55, 56, __, __, __, 57, __, __, __, 58, 59, 60, 61 },
- },
- {
- // LED Index to Physical Position
- {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {81, 0}, { 97, 0}, {113, 0}, {129, 0}, {145, 0}, {161, 0}, {177, 0}, {193, 0}, {218, 0},
- {4,16}, {24,16}, {40,16}, {56,16}, {73,16}, {89,16}, {105,16}, {121,16}, {137,16}, {153,16}, {169,16}, {185,16}, {202,16},
- {6,32}, {28,32}, {44,32}, {60,32}, {77,32}, {93,32}, {109,32}, {125,32}, {141,32}, {157,32}, {173,32}, {189,32}, {206,32}, {224,24},
- {2,48}, {20,48}, {36,48}, {52,48}, {69,48}, {85,48}, {101,48}, {117,48}, {133,48}, {149,48}, {165,48}, {181,48}, {212,48},
- {2,64}, {22,64}, {42,64}, {103,64}, {164,64}, {184,64}, {204,64}, {224,64},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 4, 4, 1,
- }
-};
-
#endif
diff --git a/keyboards/keychron/q4/iso/keymaps/default/keymap.c b/keyboards/keychron/q4/iso/keymaps/default/keymap.c
index 1e8156581556..d3aa858bcfe4 100644
--- a/keyboards/keychron/q4/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q4/iso/keymaps/default/keymap.c
@@ -16,49 +16,48 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
[WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_iso_62(
+ [_FN1] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
+ [_FN3] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q4/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q4/iso/keymaps/keychron/keymap.c
index 4cf623c73da6..b5f37968c0ea 100644
--- a/keyboards/keychron/q4/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q4/iso/keymaps/keychron/keymap.c
@@ -18,46 +18,45 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPTN, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
[WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_iso_62(
- 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_MOD,
+ [_FN1] = LAYOUT_iso_62(
+ KC_GRV, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
+ [_FN3] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -65,8 +64,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______)
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -76,10 +73,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q4/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q4/iso/keymaps/keychron/rules.mk
index dac903490f12..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q4/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q4/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q4/iso/keymaps/via/keymap.c b/keyboards/keychron/q4/iso/keymaps/via/keymap.c
index 1e8156581556..d3aa858bcfe4 100644
--- a/keyboards/keychron/q4/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q4/iso/keymaps/via/keymap.c
@@ -16,49 +16,48 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3,
};
#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_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
[WIN_BASE] = LAYOUT_iso_62(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_iso_62(
+ [_FN1] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_NO, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_iso_62(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
+ [_FN3] = LAYOUT_iso_62(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q4/iso/keymaps/via/rules.mk b/keyboards/keychron/q4/iso/keymaps/via/rules.mk
index 1e5b99807cb7..036bd6d1c3ec 100644
--- a/keyboards/keychron/q4/iso/keymaps/via/rules.mk
+++ b/keyboards/keychron/q4/iso/keymaps/via/rules.mk
@@ -1 +1 @@
-VIA_ENABLE = yes
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/keychron/q4/iso/readme.md b/keyboards/keychron/q4/iso/readme.md
new file mode 100644
index 000000000000..05f5805e31cc
--- /dev/null
+++ b/keyboards/keychron/q4/iso/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q4
diff --git a/keyboards/keychron/q4/iso/rules.mk b/keyboards/keychron/q4/iso/rules.mk
index 4bc1e23a57a0..6e7633bfe015 100644
--- a/keyboards/keychron/q4/iso/rules.mk
+++ b/keyboards/keychron/q4/iso/rules.mk
@@ -1,8 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
+# This file intentionally left blank
diff --git a/keyboards/keychron/q4/q4.c b/keyboards/keychron/q4/q4.c
index 1c40e430ea7c..d97f72fb8ea1 100644
--- a/keyboards/keychron/q4/q4.c
+++ b/keyboards/keychron/q4/q4.c
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,5 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/q4/readme.md b/keyboards/keychron/q4/readme.md
index 9c002c1c9caa..ec05e28ef3f1 100644
--- a/keyboards/keychron/q4/readme.md
+++ b/keyboards/keychron/q4/readme.md
@@ -3,7 +3,6 @@
![Keychron Q4](https://i.imgur.com/daIVjVG.jpg)
A customizable 60% keyboard.
-
Q4 Version 1 uses only 2 ICs for CKLED2001 and Q4 Version 2 uses only one IC.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
@@ -12,16 +11,19 @@ Q4 Version 1 uses only 2 ICs for CKLED2001 and Q4 Version 2 uses only one IC.
Make example for this keyboard (after setting up your build environment):
- make keychron/q4/ansi_v1:default
- make keychron/q4/ansi_v2:default
+ make keychron/q4/ansi/v1:default
+ make keychron/q4/ansi/v2:default
make keychron/q4/iso:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
- make keychron/q4/ansi_v1:default:flash
make keychron/q4/ansi_v2:default:flash
- make keychron/q4/iso:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
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).
diff --git a/keyboards/keychron/q5/ansi/ansi.c b/keyboards/keychron/q5/ansi/ansi.c
index d75f72fb2518..ee877a05702e 100644
--- a/keyboards/keychron/q5/ansi/ansi.c
+++ b/keyboards/keychron/q5/ansi/ansi.c
@@ -17,11 +17,8 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-
-// clang-format off
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -83,7 +80,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
- {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -101,6 +97,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
+ {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -118,7 +115,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
- {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -132,38 +128,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
+ {1, L_7, J_7, K_7}
};
-
-#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, 11, 12, 13, 14, 15, 16, 17 },
- { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
- { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 54, 51, 52, 53 },
- { 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 18, 67, 36, 68, 69, 70 },
- { 71, __, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, __, 82, 83, 84, 85, 86 },
- { 88, 89, 90, __, __, 87, 91, __, __, __, 92, 93, 94, 95, 96, 97, 98, 99 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {12,0}, {24,0}, {36,0}, {48,0}, {60,0}, {72,0}, {84,0}, {97,0}, {109,0}, {121,0}, {133,0}, {145,0}, {157,0}, {169,0}, {188,0}, {200,0}, {212,0}, {224,0},
- {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {84,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26}, {224,32},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38},
- {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q5/ansi/config.h b/keyboards/keychron/q5/ansi/config.h
index 7e3a2e9911ac..4b324b206749 100644
--- a/keyboards/keychron/q5/ansi/config.h
+++ b/keyboards/keychron/q5/ansi/config.h
@@ -17,12 +17,10 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 55
-#define DRIVER_2_LED_TOTAL 45
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 100
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 55
+#define CAPS_LOCK_LED_INDEX 54
/* Enable num-lock LED */
#define NUM_LOCK_LED_INDEX 33
diff --git a/keyboards/keychron/q5/ansi/info.json b/keyboards/keychron/q5/ansi/info.json
index ae0b25767764..069e0a54ebb9 100644
--- a/keyboards/keychron/q5/ansi/info.json
+++ b/keyboards/keychron/q5/ansi/info.json
@@ -1,143 +1,226 @@
{
- "keyboard_name": "Keychron Q5",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0150",
- "device_version": "1.0.6"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_100": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[0,14], "x":14, "y":0},
- {"matrix":[0,15], "x":15.5, "y":0},
- {"matrix":[0,16], "x":16.5, "y":0},
- {"matrix":[0,17], "x":17.5, "y":0},
- {"matrix":[3,12], "x":18.5, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.5, "y": 0},
+ {"matrix": [0, 16], "x": 16.5, "y": 0},
+ {"matrix": [0, 17], "x": 17.5, "y": 0},
+ {"matrix": [3, 12], "x": 18.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.5, "y":1.25},
- {"matrix":[1,16], "x":16.5, "y":1.25},
- {"matrix":[1,17], "x":17.5, "y":1.25},
- {"matrix":[3,14], "x":18.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 16], "x": 16.5, "y": 1.25},
+ {"matrix": [1, 17], "x": 17.5, "y": 1.25},
+ {"matrix": [3, 14], "x": 18.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.5, "y":2.25},
- {"matrix":[2,16], "x":16.5, "y":2.25},
- {"matrix":[2,17], "x":17.5, "y":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 15], "x": 15.5, "y": 2.25},
+ {"matrix": [2, 16], "x": 16.5, "y": 2.25},
+ {"matrix": [2, 17], "x": 17.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.5, "y":3.25},
- {"matrix":[3,16], "x":16.5, "y":3.25},
- {"matrix":[3,17], "x":17.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 15], "x": 15.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 16.5, "y": 3.25},
+ {"matrix": [3, 17], "x": 17.5, "y": 3.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix":[4,15], "x":15.5, "y":4.25},
- {"matrix":[4,16], "x":16.5, "y":4.25},
- {"matrix":[4,17], "x":17.5, "y":4.25},
- {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 15], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 16], "x": 16.5, "y": 4.25},
+ {"matrix": [4, 17], "x": 17.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5},
- {"matrix":[5,16], "x":16.5, "y":5.25},
- {"matrix":[5,17], "x":17.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 16.5, "y": 5.25},
+ {"matrix": [5, 17], "x": 17.5, "y": 5.25},
+ {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":12, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":24, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":36, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":60, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":72, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":84, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":97, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":109, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":121, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":133, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":145, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":157, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":188, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":200, "y":0},
+ {"matrix":[0, 17], "flags":1, "x":212, "y":0},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":12, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":24, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":36, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":48, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":60, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":72, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":84, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":97, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":109, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":121, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":133, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":145, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":163, "y":15},
+ {"matrix":[1, 15], "flags":8, "x":188, "y":15},
+ {"matrix":[1, 16], "flags":4, "x":200, "y":15},
+ {"matrix":[1, 17], "flags":4, "x":212, "y":15},
+ {"matrix":[3, 14], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":18, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":30, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":42, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":54, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":78, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":91, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":103, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":115, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":127, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":139, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":151, "y":26},
+ {"matrix":[2, 13], "flags":1, "x":166, "y":26},
+ {"matrix":[2, 15], "flags":4, "x":188, "y":26},
+ {"matrix":[2, 16], "flags":4, "x":200, "y":26},
+ {"matrix":[2, 17], "flags":4, "x":212, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":21, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":45, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":57, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":69, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":81, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":94, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":106, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":118, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":130, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":142, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":161, "y":38},
+ {"matrix":[3, 15], "flags":4, "x":188, "y":38},
+ {"matrix":[3, 16], "flags":4, "x":200, "y":38},
+ {"matrix":[3, 17], "flags":4, "x":212, "y":38},
+ {"matrix":[2, 14], "flags":4, "x":224, "y":32},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":27, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":39, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":51, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":63, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":75, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":88, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":100, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":112, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":124, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":152, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":172, "y":52},
+ {"matrix":[4, 15], "flags":4, "x":188, "y":49},
+ {"matrix":[4, 16], "flags":4, "x":200, "y":49},
+ {"matrix":[4, 17], "flags":4, "x":212, "y":49},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":17, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":32, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":77, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":121, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":133, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":145, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":160, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":172, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":184, "y":64},
+ {"matrix":[5, 16], "flags":4, "x":200, "y":61},
+ {"matrix":[5, 17], "flags":4, "x":212, "y":61},
+ {"matrix":[5, 5], "flags":4, "x":224, "y":55}
+ ]
}
}
diff --git a/keyboards/keychron/q5/ansi/keymaps/default/keymap.c b/keyboards/keychron/q5/ansi/keymaps/default/keymap.c
index 1de732fe29ca..4dc56ade450c 100644
--- a/keyboards/keychron/q5/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q5/ansi/keymaps/default/keymap.c
@@ -16,45 +16,44 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_ansi_100(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q5/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q5/ansi/keymaps/keychron/keymap.c
index 39d14d2b950b..bcab9f89f086 100644
--- a/keyboards/keychron/q5/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q5/ansi/keymaps/keychron/keymap.c
@@ -18,48 +18,45 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -69,10 +66,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q5/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q5/ansi/keymaps/keychron/rules.mk
index 65df6fb72655..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q5/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q5/ansi/keymaps/keychron/rules.mk
@@ -1,3 +1,3 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q5/ansi/keymaps/via/keymap.c b/keyboards/keychron/q5/ansi/keymaps/via/keymap.c
index 1de732fe29ca..4dc56ade450c 100644
--- a/keyboards/keychron/q5/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q5/ansi/keymaps/via/keymap.c
@@ -16,45 +16,44 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_ansi_100(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q5/ansi/readme.md b/keyboards/keychron/q5/ansi/readme.md
new file mode 100644
index 000000000000..225978d183d1
--- /dev/null
+++ b/keyboards/keychron/q5/ansi/readme.md
@@ -0,0 +1 @@
+# The ANSI variant of the Keychron Q5
diff --git a/keyboards/keychron/q5/ansi/rules.mk b/keyboards/keychron/q5/ansi/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/q5/ansi/rules.mk
+++ b/keyboards/keychron/q5/ansi/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
index fc21cac6d214..d61c73eb9697 100644
--- a/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q5/ansi_encoder/ansi_encoder.c
@@ -16,12 +16,11 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
// clang-format off
+#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -83,7 +82,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
- {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -101,6 +99,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
+ {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -118,7 +117,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
- {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -132,38 +130,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
+ {1, L_7, J_7, K_7}
};
-
-#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, 11, 12, 13, 14, 15 },
- { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 52, 49, 50, 51 },
- { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 16, 65, 34, 66, 67, 68 },
- { 69, __, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, __, 80, 81, 82, 83, 84 },
- { 86, 87, 88, __, __, 85, 89, __, __, __, 90, 91, 92, 93, 94, 95, 96, 97 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {103,0}, {115,0}, {133,0}, {145,0}, {157,0}, {169,0}, {184,0}, {196,0}, {208,0}, {224,0},
- {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26}, {224,32},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38},
- {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q5/ansi_encoder/config.h b/keyboards/keychron/q5/ansi_encoder/config.h
index 13cb7cfb969c..e1055525c3dd 100644
--- a/keyboards/keychron/q5/ansi_encoder/config.h
+++ b/keyboards/keychron/q5/ansi_encoder/config.h
@@ -17,15 +17,15 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 53
-#define DRIVER_2_LED_TOTAL 45
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 98
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 53
+#define CAPS_LOCK_LED_INDEX 52
/* Enable num-lock LED */
#define NUM_LOCK_LED_INDEX 31
diff --git a/keyboards/keychron/q5/ansi_encoder/info.json b/keyboards/keychron/q5/ansi_encoder/info.json
index 8df12daf77dd..9bb7b142c42f 100644
--- a/keyboards/keychron/q5/ansi_encoder/info.json
+++ b/keyboards/keychron/q5/ansi_encoder/info.json
@@ -1,146 +1,230 @@
{
- "keyboard_name": "Keychron Q5",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0151",
- "device_version": "1.0.6"
+ "device_version": "1.0.0"
},
"features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "encoder": true
},
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_98": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 2], "x":2, "y":0},
- {"matrix":[0, 3], "x":3, "y":0},
- {"matrix":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 7], "x":6.5, "y":0},
- {"matrix":[0, 8], "x":7.5, "y":0},
- {"matrix":[0, 9], "x":8.5, "y":0},
- {"matrix":[0,10], "x":9.5, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[0,14], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix":[0,16], "x":16.25, "y":0},
- {"matrix":[0,17], "x":17.25, "y":0},
- {"matrix":[3,12], "x":18.5, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 7], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [0, 9], "x": 8.5, "y": 0},
+ {"matrix": [0, 10], "x": 9.5, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"matrix": [0, 16], "x": 16.25, "y": 0},
+ {"matrix": [0, 17], "x": 17.25, "y": 0},
+ {"matrix": [3, 12], "x": 18.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.5, "y":1.25},
- {"matrix":[1,16], "x":16.5, "y":1.25},
- {"matrix":[1,17], "x":17.5, "y":1.25},
- {"matrix":[3,14], "x":18.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 16], "x": 16.5, "y": 1.25},
+ {"matrix": [1, 17], "x": 17.5, "y": 1.25},
+ {"matrix": [3, 14], "x": 18.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.5, "y":2.25},
- {"matrix":[2,16], "x":16.5, "y":2.25},
- {"matrix":[2,17], "x":17.5, "y":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 15], "x": 15.5, "y": 2.25},
+ {"matrix": [2, 16], "x": 16.5, "y": 2.25},
+ {"matrix": [2, 17], "x": 17.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.5, "y":3.25},
- {"matrix":[3,16], "x":16.5, "y":3.25},
- {"matrix":[3,17], "x":17.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 15], "x": 15.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 16.5, "y": 3.25},
+ {"matrix": [3, 17], "x": 17.5, "y": 3.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix":[4,15], "x":15.5, "y":4.25},
- {"matrix":[4,16], "x":16.5, "y":4.25},
- {"matrix":[4,17], "x":17.5, "y":4.25},
- {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 15], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 16], "x": 16.5, "y": 4.25},
+ {"matrix": [4, 17], "x": 17.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5},
- {"matrix":[5,16], "x":16.5, "y":5.25},
- {"matrix":[5,17], "x":17.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 16.5, "y": 5.25},
+ {"matrix": [5, 17], "x": 17.5, "y": 5.25},
+ {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":24, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":36, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":60, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":90, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":103, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":133, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":145, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":157, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":184, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":196, "y":0},
+ {"matrix":[0, 17], "flags":1, "x":208, "y":0},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":12, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":24, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":36, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":48, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":60, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":72, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":84, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":97, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":109, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":121, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":133, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":145, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":163, "y":15},
+ {"matrix":[1, 15], "flags":8, "x":188, "y":15},
+ {"matrix":[1, 16], "flags":4, "x":200, "y":15},
+ {"matrix":[1, 17], "flags":4, "x":212, "y":15},
+ {"matrix":[3, 14], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":18, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":30, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":42, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":54, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":78, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":91, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":103, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":115, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":127, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":139, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":151, "y":26},
+ {"matrix":[2, 13], "flags":1, "x":166, "y":26},
+ {"matrix":[2, 15], "flags":4, "x":188, "y":26},
+ {"matrix":[2, 16], "flags":4, "x":200, "y":26},
+ {"matrix":[2, 17], "flags":4, "x":212, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":21, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":45, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":57, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":69, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":81, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":94, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":106, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":118, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":130, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":142, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":161, "y":38},
+ {"matrix":[3, 15], "flags":4, "x":188, "y":38},
+ {"matrix":[3, 16], "flags":4, "x":200, "y":38},
+ {"matrix":[3, 17], "flags":4, "x":212, "y":38},
+ {"matrix":[2, 14], "flags":4, "x":224, "y":32},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":27, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":39, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":51, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":63, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":75, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":88, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":100, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":112, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":124, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":152, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":172, "y":52},
+ {"matrix":[4, 15], "flags":4, "x":188, "y":49},
+ {"matrix":[4, 16], "flags":4, "x":200, "y":49},
+ {"matrix":[4, 17], "flags":4, "x":212, "y":49},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":17, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":32, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":77, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":121, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":133, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":145, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":160, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":172, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":184, "y":64},
+ {"matrix":[5, 16], "flags":4, "x":200, "y":61},
+ {"matrix":[5, 17], "flags":4, "x":212, "y":61},
+ {"matrix":[5, 5], "flags":4, "x":224, "y":55}
+ ]
}
}
diff --git a/keyboards/keychron/q5/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q5/ansi_encoder/keymaps/default/keymap.c
index 7b2980979456..be64346b7d5e 100644
--- a/keyboards/keychron/q5/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q5/ansi_encoder/keymaps/default/keymap.c
@@ -16,54 +16,53 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_ansi_98(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_98(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_98(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/keymap.c
index b650e4733de2..f67d16cd82ac 100644
--- a/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/keymap.c
@@ -18,58 +18,53 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_98(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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_BASE] = LAYOUT_ansi_98(
- KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_98(
- _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -80,10 +75,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..936769ddc6e2 100644
--- a/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q5/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q5/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q5/ansi_encoder/keymaps/via/keymap.c
index 7b2980979456..be64346b7d5e 100644
--- a/keyboards/keychron/q5/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q5/ansi_encoder/keymaps/via/keymap.c
@@ -16,54 +16,53 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_ansi_98(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_98(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_98(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q5/ansi_encoder/readme.md b/keyboards/keychron/q5/ansi_encoder/readme.md
new file mode 100644
index 000000000000..0f7018b0849b
--- /dev/null
+++ b/keyboards/keychron/q5/ansi_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ANSI variant of the Keychron Q5
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q5/ansi_encoder/rules.mk b/keyboards/keychron/q5/ansi_encoder/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/q5/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q5/ansi_encoder/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/q5/config.h b/keyboards/keychron/q5/config.h
index e3b8d0316557..ade361dd9e91 100644
--- a/keyboards/keychron/q5/config.h
+++ b/keyboards/keychron/q5/config.h
@@ -21,20 +21,12 @@
#define DRIVER_ADDR_1 0b1110111
#define DRIVER_ADDR_2 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 \
{ 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -49,63 +41,17 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
+/* HC595 Driver Configuration */
#define HC595_STCP A0
#define HC595_SHCP A1
#define HC595_DS C15
+#define HC595_START_INDEX 10
+#define HC595_END_INDEX 17
-#define SHIFT_COL_START 10
-#define SHIFT_COL_END 17
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/q5/info.json b/keyboards/keychron/q5/info.json
new file mode 100644
index 000000000000..dc238bdc5188
--- /dev/null
+++ b/keyboards/keychron/q5/info.json
@@ -0,0 +1,53 @@
+{
+ "keyboard_name": "Keychron Q5",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
+ "rgb_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "jellybean_raindrops": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "solid_reactive_multinexus": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_simple": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ }
+ }
+}
diff --git a/keyboards/keychron/q5/iso/config.h b/keyboards/keychron/q5/iso/config.h
index 8a10f742925e..f307c70f32c3 100644
--- a/keyboards/keychron/q5/iso/config.h
+++ b/keyboards/keychron/q5/iso/config.h
@@ -17,12 +17,10 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 55
-#define DRIVER_2_LED_TOTAL 46
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 101
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 54
+#define CAPS_LOCK_LED_INDEX 53
/* Enable num-lock LED */
#define NUM_LOCK_LED_INDEX 33
diff --git a/keyboards/keychron/q5/iso/info.json b/keyboards/keychron/q5/iso/info.json
index 8f58971f03c5..85c61e29da87 100644
--- a/keyboards/keychron/q5/iso/info.json
+++ b/keyboards/keychron/q5/iso/info.json
@@ -1,144 +1,228 @@
{
- "keyboard_name": "Keychron Q5",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0152",
- "device_version": "1.0.5"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_101": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[0,14], "x":14, "y":0},
- {"matrix":[0,15], "x":15.5, "y":0},
- {"matrix":[0,16], "x":16.5, "y":0},
- {"matrix":[0,17], "x":17.5, "y":0},
- {"matrix":[3,12], "x":18.5, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.5, "y": 0},
+ {"matrix": [0, 16], "x": 16.5, "y": 0},
+ {"matrix": [0, 17], "x": 17.5, "y": 0},
+ {"matrix": [3, 12], "x": 18.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.5, "y":1.25},
- {"matrix":[1,16], "x":16.5, "y":1.25},
- {"matrix":[1,17], "x":17.5, "y":1.25},
- {"matrix":[3,14], "x":18.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 16], "x": 16.5, "y": 1.25},
+ {"matrix": [1, 17], "x": 17.5, "y": 1.25},
+ {"matrix": [3, 14], "x": 18.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.5, "y":2.25},
- {"matrix":[2,16], "x":16.5, "y":2.25},
- {"matrix":[2,17], "x":17.5, "y":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 15], "x": 15.5, "y": 2.25},
+ {"matrix": [2, 16], "x": 16.5, "y": 2.25},
+ {"matrix": [2, 17], "x": 17.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.5, "y":3.25},
- {"matrix":[3,16], "x":16.5, "y":3.25},
- {"matrix":[3,17], "x":17.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 15.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 16.5, "y": 3.25},
+ {"matrix": [3, 17], "x": 17.5, "y": 3.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix":[4,15], "x":15.5, "y":4.25},
- {"matrix":[4,16], "x":16.5, "y":4.25},
- {"matrix":[4,17], "x":17.5, "y":4.25},
- {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 15], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 16], "x": 16.5, "y": 4.25},
+ {"matrix": [4, 17], "x": 17.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5},
- {"matrix":[5,16], "x":16.5, "y":5.25},
- {"matrix":[5,17], "x":17.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 16.5, "y": 5.25},
+ {"matrix": [5, 17], "x": 17.5, "y": 5.25},
+ {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":12, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":24, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":36, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":60, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":72, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":97, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":109, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":121, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":133, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":145, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":157, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":188, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":200, "y":0},
+ {"matrix":[0, 17], "flags":1, "x":212, "y":0},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":12, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":24, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":36, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":48, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":60, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":72, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":84, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":97, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":109, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":121, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":133, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":145, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":163, "y":15},
+ {"matrix":[1, 15], "flags":8, "x":188, "y":15},
+ {"matrix":[1, 16], "flags":4, "x":200, "y":15},
+ {"matrix":[1, 17], "flags":4, "x":212, "y":15},
+ {"matrix":[3, 14], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":18, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":30, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":42, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":54, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":78, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":91, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":103, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":115, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":127, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":139, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":151, "y":26},
+ {"matrix":[2, 15], "flags":4, "x":188, "y":26},
+ {"matrix":[2, 16], "flags":4, "x":200, "y":26},
+ {"matrix":[2, 17], "flags":4, "x":212, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":21, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":45, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":57, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":69, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":81, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":94, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":106, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":118, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":130, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":142, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":154, "y":38},
+ {"matrix":[2, 13], "flags":1, "x":170, "y":34},
+ {"matrix":[3, 15], "flags":4, "x":188, "y":38},
+ {"matrix":[3, 16], "flags":4, "x":200, "y":38},
+ {"matrix":[3, 17], "flags":4, "x":212, "y":38},
+ {"matrix":[2, 14], "flags":4, "x":224, "y":32},
+
+ {"matrix":[4, 0], "flags":1, "x":3, "y":49},
+ {"matrix":[4, 1], "flags":1, "x":15, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":27, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":39, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":51, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":63, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":75, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":88, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":100, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":112, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":124, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":152, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":172, "y":52},
+ {"matrix":[4, 15], "flags":4, "x":188, "y":49},
+ {"matrix":[4, 16], "flags":4, "x":200, "y":49},
+ {"matrix":[4, 17], "flags":4, "x":212, "y":49},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":17, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":32, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":77, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":121, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":133, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":145, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":160, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":172, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":184, "y":64},
+ {"matrix":[5, 16], "flags":4, "x":200, "y":61},
+ {"matrix":[5, 17], "flags":4, "x":212, "y":61},
+ {"matrix":[5, 5], "flags":4, "x":224, "y":55}
+ ]
}
}
diff --git a/keyboards/keychron/q5/iso/iso.c b/keyboards/keychron/q5/iso/iso.c
index 7fe24c2c95e8..e25db33bd5fc 100644
--- a/keyboards/keychron/q5/iso/iso.c
+++ b/keyboards/keychron/q5/iso/iso.c
@@ -16,12 +16,11 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
// clang-format off
+#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -82,7 +81,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
- {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -101,6 +99,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
+ {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -119,7 +118,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
- {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -133,38 +131,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
+ {1, L_7, J_7, K_7}
};
-
-#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, 11, 12, 13, 14, 15, 16, 17 },
- { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
- { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 67, 53, 50, 51, 52 },
- { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 36, 68, 69, 70 },
- { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, __, 83, 84, 85, 86, 87 },
- { 89, 90, 91, __, __, 88, 92, __, __, __, 93, 94, 95, 96, 97, 98, 99, 100 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {12,0}, {24,0}, {36,0}, {48,0}, {60,0}, {72,0}, {85,0}, {97,0}, {109,0}, {121,0}, {133,0}, {145,0}, {157,0}, {169,0}, {188,0}, {200,0}, {212,0}, {224,0},
- {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26}, {224,32},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38},
- {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q5/iso/keymaps/default/keymap.c b/keyboards/keychron/q5/iso/keymaps/default/keymap.c
index d756b8542278..ffaa90721eab 100644
--- a/keyboards/keychron/q5/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q5/iso/keymaps/default/keymap.c
@@ -16,45 +16,45 @@
#include QMK_KEYBOARD_H
-// clang-format off
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_iso_101(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q5/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q5/iso/keymaps/keychron/keymap.c
index 67aa61d21732..b48bbff4e419 100644
--- a/keyboards/keychron/q5/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q5/iso/keymaps/keychron/keymap.c
@@ -18,48 +18,45 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -69,10 +66,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q5/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q5/iso/keymaps/keychron/rules.mk
index 65df6fb72655..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q5/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q5/iso/keymaps/keychron/rules.mk
@@ -1,3 +1,3 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q5/iso/keymaps/via/keymap.c b/keyboards/keychron/q5/iso/keymaps/via/keymap.c
index d756b8542278..ffaa90721eab 100644
--- a/keyboards/keychron/q5/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q5/iso/keymaps/via/keymap.c
@@ -16,45 +16,45 @@
#include QMK_KEYBOARD_H
-// clang-format off
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_iso_101(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q5/iso/readme.md b/keyboards/keychron/q5/iso/readme.md
new file mode 100644
index 000000000000..01ca9b20d4de
--- /dev/null
+++ b/keyboards/keychron/q5/iso/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q5
diff --git a/keyboards/keychron/q5/iso/rules.mk b/keyboards/keychron/q5/iso/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/q5/iso/rules.mk
+++ b/keyboards/keychron/q5/iso/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/q5/iso_encoder/config.h b/keyboards/keychron/q5/iso_encoder/config.h
index ab5453e4dac2..ac5f39545b9b 100644
--- a/keyboards/keychron/q5/iso_encoder/config.h
+++ b/keyboards/keychron/q5/iso_encoder/config.h
@@ -17,15 +17,15 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 53
-#define DRIVER_2_LED_TOTAL 46
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 89
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 52
+#define CAPS_LOCK_LED_INDEX 51
/* Enable num-lock LED */
#define NUM_LOCK_LED_INDEX 31
diff --git a/keyboards/keychron/q5/iso_encoder/info.json b/keyboards/keychron/q5/iso_encoder/info.json
index 757ba59c0157..8d55b060e583 100644
--- a/keyboards/keychron/q5/iso_encoder/info.json
+++ b/keyboards/keychron/q5/iso_encoder/info.json
@@ -1,147 +1,232 @@
{
- "keyboard_name": "Keychron Q5",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0153",
- "device_version": "1.0.5"
+ "device_version": "1.0.0"
},
"features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "encoder": true
},
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_99": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 2], "x":2, "y":0},
- {"matrix":[0, 3], "x":3, "y":0},
- {"matrix":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 7], "x":6.5, "y":0},
- {"matrix":[0, 8], "x":7.5, "y":0},
- {"matrix":[0, 9], "x":8.5, "y":0},
- {"matrix":[0,10], "x":9.5, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[0,14], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix":[0,16], "x":16.25, "y":0},
- {"matrix":[0,17], "x":17.25, "y":0},
- {"matrix":[3,12], "x":18.5, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 7], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [0, 9], "x": 8.5, "y": 0},
+ {"matrix": [0, 10], "x": 9.5, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"matrix": [0, 16], "x": 16.25, "y": 0},
+ {"matrix": [0, 17], "x": 17.25, "y": 0},
+ {"matrix": [3, 12], "x": 18.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.5, "y":1.25},
- {"matrix":[1,16], "x":16.5, "y":1.25},
- {"matrix":[1,17], "x":17.5, "y":1.25},
- {"matrix":[3,14], "x":18.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 16], "x": 16.5, "y": 1.25},
+ {"matrix": [1, 17], "x": 17.5, "y": 1.25},
+ {"matrix": [3, 14], "x": 18.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.5, "y":2.25},
- {"matrix":[2,16], "x":16.5, "y":2.25},
- {"matrix":[2,17], "x":17.5, "y":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 15], "x": 15.5, "y": 2.25},
+ {"matrix": [2, 16], "x": 16.5, "y": 2.25},
+ {"matrix": [2, 17], "x": 17.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.5, "y":3.25},
- {"matrix":[3,16], "x":16.5, "y":3.25},
- {"matrix":[3,17], "x":17.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 15.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 16.5, "y": 3.25},
+ {"matrix": [3, 17], "x": 17.5, "y": 3.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix":[4,15], "x":15.5, "y":4.25},
- {"matrix":[4,16], "x":16.5, "y":4.25},
- {"matrix":[4,17], "x":17.5, "y":4.25},
- {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 15], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 16], "x": 16.5, "y": 4.25},
+ {"matrix": [4, 17], "x": 17.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5},
- {"matrix":[5,16], "x":16.5, "y":5.25},
- {"matrix":[5,17], "x":17.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 16.5, "y": 5.25},
+ {"matrix": [5, 17], "x": 17.5, "y": 5.25},
+ {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":24, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":36, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":60, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":90, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":103, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":133, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":145, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":157, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":184, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":196, "y":0},
+ {"matrix":[0, 17], "flags":1, "x":208, "y":0},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":12, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":24, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":36, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":48, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":60, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":72, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":84, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":97, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":109, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":121, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":133, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":145, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":163, "y":15},
+ {"matrix":[1, 15], "flags":8, "x":188, "y":15},
+ {"matrix":[1, 16], "flags":4, "x":200, "y":15},
+ {"matrix":[1, 17], "flags":4, "x":212, "y":15},
+ {"matrix":[3, 14], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":18, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":30, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":42, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":54, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":78, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":91, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":103, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":115, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":127, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":139, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":151, "y":26},
+ {"matrix":[2, 15], "flags":4, "x":188, "y":26},
+ {"matrix":[2, 16], "flags":4, "x":200, "y":26},
+ {"matrix":[2, 17], "flags":4, "x":212, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":21, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":45, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":57, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":69, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":81, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":94, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":106, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":118, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":130, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":142, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":154, "y":38},
+ {"matrix":[2, 13], "flags":1, "x":170, "y":34},
+ {"matrix":[3, 15], "flags":4, "x":188, "y":38},
+ {"matrix":[3, 16], "flags":4, "x":200, "y":38},
+ {"matrix":[3, 17], "flags":4, "x":212, "y":38},
+ {"matrix":[2, 14], "flags":4, "x":224, "y":32},
+
+ {"matrix":[4, 0], "flags":1, "x":3, "y":49},
+ {"matrix":[4, 1], "flags":1, "x":15, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":27, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":39, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":51, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":63, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":75, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":88, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":100, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":112, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":124, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":152, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":172, "y":52},
+ {"matrix":[4, 15], "flags":4, "x":188, "y":49},
+ {"matrix":[4, 16], "flags":4, "x":200, "y":49},
+ {"matrix":[4, 17], "flags":4, "x":212, "y":49},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":17, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":32, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":77, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":121, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":133, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":145, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":160, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":172, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":184, "y":64},
+ {"matrix":[5, 16], "flags":4, "x":200, "y":61},
+ {"matrix":[5, 17], "flags":4, "x":212, "y":61},
+ {"matrix":[5, 5], "flags":4, "x":224, "y":55}
+ ]
}
}
diff --git a/keyboards/keychron/q5/iso_encoder/iso_encoder.c b/keyboards/keychron/q5/iso_encoder/iso_encoder.c
index 8da6cfc499d2..b6978757d9fb 100644
--- a/keyboards/keychron/q5/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q5/iso_encoder/iso_encoder.c
@@ -16,12 +16,11 @@
#include "quantum.h"
-#ifdef RGB_MATRIX_ENABLE
-
// clang-format off
+#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -80,7 +79,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
- {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -99,6 +97,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
+ {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -117,7 +116,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
- {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -131,38 +129,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
+ {1, L_7, J_7, K_7}
};
-
-#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, 11, 12, 13, 14, 15 },
- { 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 65, 51, 48, 49, 50 },
- { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 16, 64, 34, 66, 67, 68 },
- { 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, __, 81, 82, 83, 84, 85 },
- { 87, 88, 89, __, __, 86, 90, __, __, __, 91, 92, 93, 94, 95, 96, 97, 98 },
- },
- {
- // LED Index to Physical Position
- {0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {103,0}, {115,0}, {133,0}, {145,0}, {157,0}, {169,0}, {184,0}, {196,0}, {208,0}, {224,0},
- {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26}, {224,32},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38},
- {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q5/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q5/iso_encoder/keymaps/default/keymap.c
index af54e00cbc17..c16a4459f7d1 100644
--- a/keyboards/keychron/q5/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q5/iso_encoder/keymaps/default/keymap.c
@@ -16,54 +16,53 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_iso_99(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_99(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_99(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q5/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q5/iso_encoder/keymaps/keychron/keymap.c
index 5dc34610e641..0ba707a685c7 100644
--- a/keyboards/keychron/q5/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q5/iso_encoder/keymaps/keychron/keymap.c
@@ -18,58 +18,54 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_99(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_99(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format off
-
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -80,10 +76,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q5/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q5/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..936769ddc6e2 100644
--- a/keyboards/keychron/q5/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q5/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q5/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q5/iso_encoder/keymaps/via/keymap.c
index af54e00cbc17..d7ea6600af7a 100644
--- a/keyboards/keychron/q5/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q5/iso_encoder/keymaps/via/keymap.c
@@ -16,54 +16,53 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_iso_99(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_99(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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_BASE] = LAYOUT_iso_99(
- KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_99(
- _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
- [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
- [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
- [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q5/iso_encoder/readme.md b/keyboards/keychron/q5/iso_encoder/readme.md
new file mode 100644
index 000000000000..f628460b3039
--- /dev/null
+++ b/keyboards/keychron/q5/iso_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ISO variant of the Keychron Q5
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q5/iso_encoder/rules.mk b/keyboards/keychron/q5/iso_encoder/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/q5/iso_encoder/rules.mk
+++ b/keyboards/keychron/q5/iso_encoder/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/q5/q5.c b/keyboards/keychron/q5/q5.c
index 883f7c573b84..9e8a093d9a2b 100644
--- a/keyboards/keychron/q5/q5.c
+++ b/keyboards/keychron/q5/q5.c
@@ -26,6 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
+
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -35,4 +36,5 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/q5/readme.md b/keyboards/keychron/q5/readme.md
index 3f97a35e25a9..839338a7a406 100644
--- a/keyboards/keychron/q5/readme.md
+++ b/keyboards/keychron/q5/readme.md
@@ -10,18 +10,23 @@ A customizable 96% keyboard.
Make example for this keyboard (after setting up your build environment):
- make keychron/q5/ansi:default
- make keychron/q5/ansi_encoder:default
- make keychron/q5/iso:default
- make keychron/q5/iso_encoder:default
+ make keychron/q5/ansi:default
+ make keychron/q5/ansi_encoder:default
+ make keychron/q5/iso:default
+ make keychron/q5/iso_encoder:default
Flashing example for this keyboard:
- make keychron/q5/ansi:default:flash
- make keychron/q5/ansi_encoder:default:flash
- make keychron/q5/iso:default:flash
- make keychron/q5/iso_encoder:default:flash
+ make keychron/q5/ansi:default:flash
+ make keychron/q5/ansi_encoder:default:flash
+ make keychron/q5/iso:default:flash
+ make keychron/q5/iso_encoder:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
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).
diff --git a/keyboards/keychron/q5/rules.mk b/keyboards/keychron/q5/rules.mk
new file mode 100755
index 000000000000..a515de570cd8
--- /dev/null
+++ b/keyboards/keychron/q5/rules.mk
@@ -0,0 +1,2 @@
+VPATH += $(TOP_DIR)/keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q6/ansi/ansi.c b/keyboards/keychron/q6/ansi/ansi.c
index 71529dac91c5..5c698cba1e79 100644
--- a/keyboards/keychron/q6/ansi/ansi.c
+++ b/keyboards/keychron/q6/ansi/ansi.c
@@ -16,10 +16,10 @@
#include "quantum.h"
+// clang-format off
#ifdef RGB_MATRIX_ENABLE
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -88,7 +88,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -106,6 +105,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
+ {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -123,7 +123,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -138,38 +137,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
+ {1, L_9, J_9, K_9},
};
-
-#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, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
- },
- {
- // LED Index to Physical Position
- {0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
- {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q6/ansi/config.h b/keyboards/keychron/q6/ansi/config.h
index 0a017f9e767d..a149902333e3 100644
--- a/keyboards/keychron/q6/ansi/config.h
+++ b/keyboards/keychron/q6/ansi/config.h
@@ -17,15 +17,14 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 60
-#define DRIVER_2_LED_TOTAL 48
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 108
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 62
+#define CAPS_LOCK_LED_INDEX 61
/* Enable NUM_LOCK_LED_INDEX */
#define NUM_LOCK_LED_INDEX 37
-#define SHIFT_COL_START 11
-#define SHIFT_COL_END 18
+/* HC595 Driver Configuration */
+#define HC595_START_INDEX 11
+#define HC595_END_INDEX 18
diff --git a/keyboards/keychron/q6/ansi/info.json b/keyboards/keychron/q6/ansi/info.json
index 05fe3dbf7dca..061974269842 100644
--- a/keyboards/keychron/q6/ansi/info.json
+++ b/keyboards/keychron/q6/ansi/info.json
@@ -1,151 +1,248 @@
{
- "keyboard_name": "Keychron Q6",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0160",
- "device_version": "1.0.5"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "device_version": "1.0.0"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
},
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_108": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [0, 19], "x": 18.5, "y": 0},
+ {"matrix": [1, 19], "x": 19.5, "y": 0},
+ {"matrix": [2, 19], "x": 20.5, "y": 0},
+ {"matrix": [3, 19], "x": 21.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.25},
+ {"matrix": [0, 17], "x": 20.5, "y": 1.25},
+ {"matrix": [0, 18], "x": 21.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.25},
+ {"matrix": [3, 14], "x": 20.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 20.5, "y": 3.25},
+ {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.25},
+ {"matrix": [4, 14], "x": 20.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.25},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
+ {"matrix": [5, 18], "x": 20.5, "y": 5.25},
+ {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":21, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":68, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":89, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":99, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":136, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":146, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":159, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":180, "y":0},
+ {"matrix":[0, 19], "flags":1, "x":193, "y":0},
+ {"matrix":[1, 19], "flags":1, "x":203, "y":0},
+ {"matrix":[2, 19], "flags":1, "x":214, "y":0},
+ {"matrix":[3, 19], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":21, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":42, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":63, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":83, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":94, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":115, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":141, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":159, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":169, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":180, "y":15},
+ {"matrix":[1, 17], "flags":8, "x":193, "y":15},
+ {"matrix":[1, 18], "flags":4, "x":203, "y":15},
+ {"matrix":[0, 17], "flags":4, "x":214, "y":15},
+ {"matrix":[0, 18], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 13], "flags":1, "x":143, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":159, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":169, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":180, "y":27},
+ {"matrix":[2, 17], "flags":4, "x":193, "y":27},
+ {"matrix":[2, 18], "flags":4, "x":203, "y":27},
+ {"matrix":[3, 14], "flags":4, "x":214, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":139, "y":40},
+ {"matrix":[3, 17], "flags":4, "x":193, "y":40},
+ {"matrix":[3, 18], "flags":4, "x":203, "y":40},
+ {"matrix":[3, 16], "flags":4, "x":214, "y":40},
+ {"matrix":[3, 15], "flags":4, "x":224, "y":34},
+
+ {"matrix":[4, 0], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":169, "y":52},
+ {"matrix":[4, 17], "flags":4, "x":193, "y":52},
+ {"matrix":[4, 18], "flags":4, "x":203, "y":52},
+ {"matrix":[4, 14], "flags":4, "x":214, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":66, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":105, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":118, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":145, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":159, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":169, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":198, "y":64},
+ {"matrix":[5, 18], "flags":4, "x":214, "y":64},
+ {"matrix":[4, 16], "flags":4, "x":224, "y":58}
+ ]
}
}
diff --git a/keyboards/keychron/q6/ansi/keymaps/default/keymap.c b/keyboards/keychron/q6/ansi/keymaps/default/keymap.c
index 3f63412300bd..e65076d9aa1d 100644
--- a/keyboards/keychron/q6/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q6/ansi/keymaps/default/keymap.c
@@ -16,45 +16,44 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_108(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q6/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q6/ansi/keymaps/keychron/keymap.c
index c1e36ce850cf..9ea98681a419 100644
--- a/keyboards/keychron/q6/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q6/ansi/keymaps/keychron/keymap.c
@@ -18,48 +18,45 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -69,10 +66,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q6/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q6/ansi/keymaps/keychron/rules.mk
index 65df6fb72655..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q6/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q6/ansi/keymaps/keychron/rules.mk
@@ -1,3 +1,3 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q6/ansi/keymaps/via/keymap.c b/keyboards/keychron/q6/ansi/keymaps/via/keymap.c
index 3f63412300bd..3457f8ef1342 100644
--- a/keyboards/keychron/q6/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q6/ansi/keymaps/via/keymap.c
@@ -16,45 +16,44 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_ansi_108(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q6/ansi/readme.md b/keyboards/keychron/q6/ansi/readme.md
new file mode 100644
index 000000000000..d4075e915939
--- /dev/null
+++ b/keyboards/keychron/q6/ansi/readme.md
@@ -0,0 +1 @@
+# The ANSI variant of the Keychron Q6
diff --git a/keyboards/keychron/q6/ansi/rules.mk b/keyboards/keychron/q6/ansi/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/q6/ansi/rules.mk
+++ b/keyboards/keychron/q6/ansi/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
index fd59ba356a1e..5c698cba1e79 100644
--- a/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q6/ansi_encoder/ansi_encoder.c
@@ -17,11 +17,9 @@
#include "quantum.h"
// clang-format off
-
#ifdef RGB_MATRIX_ENABLE
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -90,7 +88,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -108,6 +105,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
+ {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -125,7 +123,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -140,38 +137,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
+ {1, L_9, J_9, K_9},
};
-
-#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, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
- },
- {
- // LED Index to Physical Position
- {0,0}, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
- {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q6/ansi_encoder/config.h b/keyboards/keychron/q6/ansi_encoder/config.h
index 099c3306f1df..a0f1a04406a9 100644
--- a/keyboards/keychron/q6/ansi_encoder/config.h
+++ b/keyboards/keychron/q6/ansi_encoder/config.h
@@ -17,18 +17,17 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 60
-#define DRIVER_2_LED_TOTAL 48
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 108
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 62
+#define CAPS_LOCK_LED_INDEX 61
/* Enable NUM_LOCK_LED_INDEX */
#define NUM_LOCK_LED_INDEX 37
-#define SHIFT_COL_START 10
-#define SHIFT_COL_END 19
+/* HC595 Driver Configuration */
+#define HC595_START_INDEX 10
+#define HC595_END_INDEX 19
diff --git a/keyboards/keychron/q6/ansi_encoder/info.json b/keyboards/keychron/q6/ansi_encoder/info.json
index 99d7174aae4d..3badb39473da 100644
--- a/keyboards/keychron/q6/ansi_encoder/info.json
+++ b/keyboards/keychron/q6/ansi_encoder/info.json
@@ -1,85 +1,68 @@
{
- "keyboard_name": "Keychron Q6",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0161",
"device_version": "1.0.5"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
+ "features": {
+ "encoder": true
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_109": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[4,19], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [4, 19], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [0, 19], "x": 18.5, "y": 0},
+ {"matrix": [1, 19], "x": 19.5, "y": 0},
+ {"matrix": [2, 19], "x": 20.5, "y": 0},
+ {"matrix": [3, 19], "x": 21.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.25},
+ {"matrix": [0, 17], "x": 20.5, "y": 1.25},
+ {"matrix": [0, 18], "x": 21.5, "y": 1.25},
{"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
{"matrix":[2, 1], "x":1.5, "y":2.25},
@@ -150,8 +133,125 @@
{"matrix":[5,15], "x":16.25, "y":5.25},
{"matrix":[5,16], "x":17.25, "y":5.25},
{"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":21, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":68, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":89, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":99, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":136, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":146, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":180, "y":0},
+ {"matrix":[0, 19], "flags":1, "x":193, "y":0},
+ {"matrix":[1, 19], "flags":1, "x":203, "y":0},
+ {"matrix":[2, 19], "flags":1, "x":214, "y":0},
+ {"matrix":[3, 19], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":21, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":42, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":63, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":83, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":94, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":115, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":141, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":159, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":169, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":180, "y":15},
+ {"matrix":[1, 17], "flags":8, "x":193, "y":15},
+ {"matrix":[1, 18], "flags":4, "x":203, "y":15},
+ {"matrix":[0, 17], "flags":4, "x":214, "y":15},
+ {"matrix":[0, 18], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 13], "flags":1, "x":143, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":159, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":169, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":180, "y":27},
+ {"matrix":[2, 17], "flags":4, "x":193, "y":27},
+ {"matrix":[2, 18], "flags":4, "x":203, "y":27},
+ {"matrix":[3, 14], "flags":4, "x":214, "y":27},
+ {"matrix":[3, 15], "flags":4, "x":214, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":139, "y":40},
+ {"matrix":[3, 17], "flags":4, "x":193, "y":40},
+ {"matrix":[3, 18], "flags":4, "x":203, "y":40},
+ {"matrix":[3, 16], "flags":4, "x":214, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":169, "y":52},
+ {"matrix":[4, 17], "flags":4, "x":193, "y":52},
+ {"matrix":[4, 18], "flags":4, "x":203, "y":52},
+ {"matrix":[4, 14], "flags":4, "x":214, "y":52},
+ {"matrix":[4, 16], "flags":4, "x":214, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":66, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":105, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":118, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":145, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":159, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":169, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":198, "y":64},
+ {"matrix":[5, 18], "flags":4, "x":214, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q6/ansi_encoder/keymaps/default/keymap.c
index f57e544b2608..458ffc908f44 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/default/keymap.c
@@ -16,54 +16,53 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/keymap.c
index f853d49596bd..5c87536acc83 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/keymap.c
@@ -18,56 +18,53 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -78,10 +75,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..936769ddc6e2 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q6/ansi_encoder/keymaps/via/keymap.c
index f57e544b2608..fe7d9d6aafb0 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/via/keymap.c
@@ -16,54 +16,53 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_ansi_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_109(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_ansi_109(
- KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_109(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q6/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q6/ansi_encoder/keymaps/via/rules.mk
index c09b2475769a..f1adcab005e8 100644
--- a/keyboards/keychron/q6/ansi_encoder/keymaps/via/rules.mk
+++ b/keyboards/keychron/q6/ansi_encoder/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-EMCODER_MAP_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q6/ansi_encoder/readme.md b/keyboards/keychron/q6/ansi_encoder/readme.md
new file mode 100644
index 000000000000..f63e1c1648eb
--- /dev/null
+++ b/keyboards/keychron/q6/ansi_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ANSI variant of the Keychron Q6
+
+- Enable rotary encoder support.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q6/ansi_encoder/rules.mk b/keyboards/keychron/q6/ansi_encoder/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/q6/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q6/ansi_encoder/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/q6/config.h b/keyboards/keychron/q6/config.h
index 25aee4e4524d..599e5e98a501 100644
--- a/keyboards/keychron/q6/config.h
+++ b/keyboards/keychron/q6/config.h
@@ -21,20 +21,11 @@
#define DRIVER_ADDR_1 0b1110111
#define DRIVER_ADDR_2 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 \
{ 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52, 0xA4, 0xA4, 0x52 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -49,60 +40,15 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+/* HC595 Driver Configuration */
+#define HC595_STCP A0
+#define HC595_SHCP A1
+#define HC595_DS C15
/* Factory test keys */
#define FN_KEY1 MO(1)
#define FN_KEY2 MO(3)
-
-#define HC595_DS C15
-#define HC595_SHCP A1
-#define HC595_STCP A0
diff --git a/keyboards/keychron/q6/info.json b/keyboards/keychron/q6/info.json
new file mode 100644
index 000000000000..2a60619feec8
--- /dev/null
+++ b/keyboards/keychron/q6/info.json
@@ -0,0 +1,47 @@
+{
+ "keyboard_name": "Keychron Q6",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "dip_switch": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "rgb_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "jellybean_raindrops": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "solid_reactive_multinexus": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_simple": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ }
+ }
+}
diff --git a/keyboards/keychron/q6/iso/config.h b/keyboards/keychron/q6/iso/config.h
index d46fda6d9f9c..18584b9ee1da 100644
--- a/keyboards/keychron/q6/iso/config.h
+++ b/keyboards/keychron/q6/iso/config.h
@@ -17,15 +17,14 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 60
-#define DRIVER_2_LED_TOTAL 49
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 109
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 61
+#define CAPS_LOCK_LED_INDEX 60
/* Enable NUM_LOCK_LED_INDEX */
#define NUM_LOCK_LED_INDEX 37
-#define SHIFT_COL_START 11
-#define SHIFT_COL_END 18
+/* HC595 Driver Configuration */
+#define HC595_START_INDEX 11
+#define HC595_END_INDEX 18
diff --git a/keyboards/keychron/q6/iso/info.json b/keyboards/keychron/q6/iso/info.json
index ef714b6737c7..680996ecd5b9 100644
--- a/keyboards/keychron/q6/iso/info.json
+++ b/keyboards/keychron/q6/iso/info.json
@@ -1,79 +1,62 @@
{
- "keyboard_name": "Keychron Q6",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0162",
"device_version": "1.0.5"
},
"features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "encoder": false
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
},
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_109": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [0, 19], "x": 18.5, "y": 0},
+ {"matrix": [1, 19], "x": 19.5, "y": 0},
+ {"matrix": [2, 19], "x": 20.5, "y": 0},
+ {"matrix": [3, 19], "x": 21.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.25},
+ {"matrix": [0, 17], "x": 20.5, "y": 1.25},
+ {"matrix": [0, 18], "x": 21.5, "y": 1.25},
{"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
{"matrix":[2, 1], "x":1.5, "y":2.25},
@@ -148,5 +131,123 @@
{"matrix":[5,18], "x":20.5, "y":5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":21, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":68, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":89, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":99, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":136, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":146, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":159, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":180, "y":0},
+ {"matrix":[0, 19], "flags":1, "x":193, "y":0},
+ {"matrix":[1, 19], "flags":1, "x":203, "y":0},
+ {"matrix":[2, 19], "flags":1, "x":214, "y":0},
+ {"matrix":[3, 19], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":21, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":42, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":63, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":83, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":94, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":115, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":141, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":159, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":169, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":180, "y":15},
+ {"matrix":[1, 17], "flags":8, "x":193, "y":15},
+ {"matrix":[1, 18], "flags":4, "x":203, "y":15},
+ {"matrix":[0, 17], "flags":4, "x":214, "y":15},
+ {"matrix":[0, 18], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":159, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":169, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":180, "y":27},
+ {"matrix":[2, 17], "flags":4, "x":193, "y":27},
+ {"matrix":[2, 18], "flags":4, "x":203, "y":27},
+ {"matrix":[3, 14], "flags":4, "x":214, "y":27},
+ {"matrix":[3, 15], "flags":4, "x":224, "y":34},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":133, "y":40},
+ {"matrix":[2, 13], "flags":1, "x":147, "y":27},
+ {"matrix":[3, 17], "flags":4, "x":193, "y":40},
+ {"matrix":[3, 18], "flags":4, "x":203, "y":40},
+ {"matrix":[3, 16], "flags":4, "x":214, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":1, "y":52},
+ {"matrix":[4, 1], "flags":1, "x":13, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":169, "y":52},
+ {"matrix":[4, 17], "flags":4, "x":193, "y":52},
+ {"matrix":[4, 18], "flags":4, "x":203, "y":52},
+ {"matrix":[4, 14], "flags":4, "x":214, "y":52},
+ {"matrix":[4, 16], "flags":4, "x":224, "y":58},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":66, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":105, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":118, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":145, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":159, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":169, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":198, "y":64},
+ {"matrix":[5, 18], "flags":4, "x":214, "y":64}
+ ]
}
}
diff --git a/keyboards/keychron/q6/iso/iso.c b/keyboards/keychron/q6/iso/iso.c
index 0e28267a2c6b..5a25407d87e4 100644
--- a/keyboards/keychron/q6/iso/iso.c
+++ b/keyboards/keychron/q6/iso/iso.c
@@ -17,11 +17,9 @@
#include "quantum.h"
// clang-format off
-
#ifdef RGB_MATRIX_ENABLE
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -89,7 +87,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -108,6 +105,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
+ {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -126,7 +124,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -141,38 +138,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
+ {1, L_9, J_9, K_9},
};
-
-#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, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 54, 55, 56, 57, 58, 18 },
- { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 59, 60, 77, 75, 76, 19 },
- { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 95, 92, 93, __ },
- { 96, 97, 98, __, __, __, 99, __, __, __, 100, 101, 102, 103, 104, 105, 106, 107, 108, __ },
- },
- {
- // LED Index to Physical Position
- {0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
- {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
- {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q6/iso/keymaps/default/keymap.c b/keyboards/keychron/q6/iso/keymaps/default/keymap.c
index 754831db3335..797ec59bf506 100644
--- a/keyboards/keychron/q6/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q6/iso/keymaps/default/keymap.c
@@ -16,45 +16,44 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
#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_iso_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q6/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q6/iso/keymaps/keychron/keymap.c
index 2dbd2e23e8bf..9b00c562d92a 100644
--- a/keyboards/keychron/q6/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q6/iso/keymaps/keychron/keymap.c
@@ -18,48 +18,45 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
@@ -69,10 +66,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q6/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q6/iso/keymaps/keychron/rules.mk
index 65df6fb72655..3c9fcc5c98c2 100644
--- a/keyboards/keychron/q6/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q6/iso/keymaps/keychron/rules.mk
@@ -1,3 +1,3 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q6/iso/keymaps/via/keymap.c b/keyboards/keychron/q6/iso/keymaps/via/keymap.c
index 754831db3335..1f68f420a8c9 100644
--- a/keyboards/keychron/q6/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q6/iso/keymaps/via/keymap.c
@@ -16,45 +16,44 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_iso_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/q6/iso/readme.md b/keyboards/keychron/q6/iso/readme.md
new file mode 100644
index 000000000000..05fced2017de
--- /dev/null
+++ b/keyboards/keychron/q6/iso/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q6
diff --git a/keyboards/keychron/q6/iso/rules.mk b/keyboards/keychron/q6/iso/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/q6/iso/rules.mk
+++ b/keyboards/keychron/q6/iso/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/q6/iso_encoder/config.h b/keyboards/keychron/q6/iso_encoder/config.h
index cf287b19859a..a3d4a427a165 100644
--- a/keyboards/keychron/q6/iso_encoder/config.h
+++ b/keyboards/keychron/q6/iso_encoder/config.h
@@ -17,18 +17,17 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 60
-#define DRIVER_2_LED_TOTAL 49
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 109
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 61
+#define CAPS_LOCK_LED_INDEX 60
/* Enable NUM_LOCK_LED_INDEX */
#define NUM_LOCK_LED_INDEX 37
-#define SHIFT_COL_START 10
-#define SHIFT_COL_END 19
+/* HC595 Driver Configuration */
+#define HC595_START_INDEX 10
+#define HC595_END_INDEX 19
diff --git a/keyboards/keychron/q6/iso_encoder/info.json b/keyboards/keychron/q6/iso_encoder/info.json
index 74a74ab41bf1..39724a717278 100644
--- a/keyboards/keychron/q6/iso_encoder/info.json
+++ b/keyboards/keychron/q6/iso_encoder/info.json
@@ -1,158 +1,259 @@
{
- "keyboard_name": "Keychron Q6",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0163",
- "device_version": "1.0.5"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "device_version": "1.0.0"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
+ "features": {
+ "encoder": true
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
]
},
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_110": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[4,19], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [4, 19], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [0, 19], "x": 18.5, "y": 0},
+ {"matrix": [1, 19], "x": 19.5, "y": 0},
+ {"matrix": [2, 19], "x": 20.5, "y": 0},
+ {"matrix": [3, 19], "x": 21.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.25},
+ {"matrix": [0, 17], "x": 20.5, "y": 1.25},
+ {"matrix": [0, 18], "x": 21.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.25},
+ {"matrix": [3, 14], "x": 20.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 20.5, "y": 3.25},
+ {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.25},
+ {"matrix": [4, 14], "x": 20.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25},
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.25},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
+ {"matrix": [5, 18], "x": 20.5, "y": 5.25},
+ {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":21, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":31, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":42, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":52, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":68, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":78, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":89, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":99, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":115, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":136, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":146, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":180, "y":0},
+ {"matrix":[0, 19], "flags":1, "x":193, "y":0},
+ {"matrix":[1, 19], "flags":1, "x":203, "y":0},
+ {"matrix":[2, 19], "flags":1, "x":214, "y":0},
+ {"matrix":[3, 19], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":21, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":31, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":42, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":52, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":63, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":83, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":94, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":104, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":115, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":125, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":141, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":159, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":169, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":180, "y":15},
+ {"matrix":[1, 17], "flags":8, "x":193, "y":15},
+ {"matrix":[1, 18], "flags":4, "x":203, "y":15},
+ {"matrix":[0, 17], "flags":4, "x":214, "y":15},
+ {"matrix":[0, 18], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":159, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":169, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":180, "y":27},
+ {"matrix":[2, 17], "flags":4, "x":193, "y":27},
+ {"matrix":[2, 18], "flags":4, "x":203, "y":27},
+ {"matrix":[3, 14], "flags":4, "x":214, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":1, "x":139, "y":40},
+ {"matrix":[2, 13], "flags":1, "x":143, "y":27},
+ {"matrix":[3, 17], "flags":4, "x":193, "y":40},
+ {"matrix":[3, 18], "flags":4, "x":203, "y":40},
+ {"matrix":[3, 16], "flags":4, "x":214, "y":40},
+ {"matrix":[3, 15], "flags":4, "x":214, "y":27},
+
+ {"matrix":[4, 0], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 1], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":169, "y":52},
+ {"matrix":[4, 17], "flags":4, "x":193, "y":52},
+ {"matrix":[4, 18], "flags":4, "x":203, "y":52},
+ {"matrix":[4, 14], "flags":4, "x":214, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":66, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":105, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":118, "y":64},
+ {"matrix":[5, 12], "flags":1, "x":131, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":145, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":159, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":169, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":180, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":198, "y":64},
+ {"matrix":[5, 18], "flags":4, "x":214, "y":64},
+ {"matrix":[4, 16], "flags":4, "x":214, "y":52}
+ ]
}
}
diff --git a/keyboards/keychron/q6/iso_encoder/iso_encoder.c b/keyboards/keychron/q6/iso_encoder/iso_encoder.c
index f406a83392c8..5a25407d87e4 100644
--- a/keyboards/keychron/q6/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q6/iso_encoder/iso_encoder.c
@@ -17,11 +17,9 @@
#include "quantum.h"
// clang-format off
-
#ifdef RGB_MATRIX_ENABLE
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -89,7 +87,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -108,6 +105,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
+ {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -126,7 +124,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -141,38 +138,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
+ {1, L_9, J_9, K_9},
};
-
-#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, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 54, 55, 56, 57, 58, 18 },
- { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 59, 60, 77, 75, 76, 19 },
- { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 95, 92, 93, __ },
- { 96, 97, 98, __, __, __, 99, __, __, __, 100, 101, 102, 103, 104, 105, 106, 107, 108, __ },
- },
- {
- // LED Index to Physical Position
- {0,0}, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
- {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
- {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q6/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q6/iso_encoder/keymaps/default/keymap.c
index 790538586efb..09bdab829c95 100644
--- a/keyboards/keychron/q6/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q6/iso_encoder/keymaps/default/keymap.c
@@ -16,51 +16,50 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_iso_110(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD , KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_110(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_110(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_110(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q6/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q6/iso_encoder/keymaps/keychron/keymap.c
index c61a163b4edc..54c6506fc95a 100644
--- a/keyboards/keychron/q6/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q6/iso_encoder/keymaps/keychron/keymap.c
@@ -18,56 +18,53 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_110(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_iso_110(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_110(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
@@ -78,10 +75,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/q6/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q6/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..936769ddc6e2 100644
--- a/keyboards/keychron/q6/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q6/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/q6/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q6/iso_encoder/keymaps/via/keymap.c
index 790538586efb..74022f5d32a9 100644
--- a/keyboards/keychron/q6/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q6/iso_encoder/keymaps/via/keymap.c
@@ -16,51 +16,50 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#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_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_110(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_iso_110(
- KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_110(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/q6/iso_encoder/readme.md b/keyboards/keychron/q6/iso_encoder/readme.md
new file mode 100644
index 000000000000..b68e34014960
--- /dev/null
+++ b/keyboards/keychron/q6/iso_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ISO variant of the Keychron Q6
+
+- Enable rotary encoder support.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q6/iso_encoder/rules.mk b/keyboards/keychron/q6/iso_encoder/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/q6/iso_encoder/rules.mk
+++ b/keyboards/keychron/q6/iso_encoder/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/q6/q6.c b/keyboards/keychron/q6/q6.c
index 9a02067c7d4a..0f893c788155 100644
--- a/keyboards/keychron/q6/q6.c
+++ b/keyboards/keychron/q6/q6.c
@@ -26,6 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
+
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -35,4 +36,5 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/q6/readme.md b/keyboards/keychron/q6/readme.md
index 5d2181ad3dbf..fe8196481dc5 100644
--- a/keyboards/keychron/q6/readme.md
+++ b/keyboards/keychron/q6/readme.md
@@ -17,11 +17,16 @@ Make example for this keyboard (after setting up your build environment):
Flashing example for this keyboard:
- make keychron/q6/ansi:flash
- make keychron/q6/ansi_encoder:flash
- make keychron/q6/iso:flash
- make keychron/q6/iso_encoder:flash
+ make keychron/q6/ansi:default:flash
+ make keychron/q6/ansi_encoder:default:flash
+ make keychron/q6/iso:default:flash
+ make keychron/q6/iso_encoder:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
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).
diff --git a/keyboards/keychron/q6/rules.mk b/keyboards/keychron/q6/rules.mk
new file mode 100755
index 000000000000..a515de570cd8
--- /dev/null
+++ b/keyboards/keychron/q6/rules.mk
@@ -0,0 +1,2 @@
+VPATH += $(TOP_DIR)/keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/q60/ansi/ansi.c b/keyboards/keychron/q60/ansi/ansi.c
index 0e5d0957f1f7..bb3c84b64a9d 100644
--- a/keyboards/keychron/q60/ansi/ansi.c
+++ b/keyboards/keychron/q60/ansi/ansi.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -117,7 +117,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 1, 1,
}
};
diff --git a/keyboards/keychron/q60/ansi/config.h b/keyboards/keychron/q60/ansi/config.h
index 2f6abf669d3e..05810cce64a8 100644
--- a/keyboards/keychron/q60/ansi/config.h
+++ b/keyboards/keychron/q60/ansi/config.h
@@ -17,5 +17,4 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 60
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+#define RGB_MATRIX_LED_COUNT 60
diff --git a/keyboards/keychron/q60/ansi/info.json b/keyboards/keychron/q60/ansi/info.json
index 0ef742bbc6ba..95b1c4e4728f 100644
--- a/keyboards/keychron/q60/ansi/info.json
+++ b/keyboards/keychron/q60/ansi/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x01C0",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -32,70 +21,70 @@
"layouts": {
"LAYOUT_ansi_60": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[4,12], "x":14, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [4, 12], "x": 14, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
- {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,12], "x":12.25, "y":3, "w":1.75},
- {"matrix":[3,13], "x":14, "y":3},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"matrix": [3, 13], "x": 14, "y": 3},
- {"matrix":[4, 0], "x":1.5, "y":4},
- {"matrix":[4, 1], "x":2.5, "y":4, "w":1.5},
- {"matrix":[4, 6], "x":4, "y":4, "w":7},
- {"matrix":[4,10], "x":11, "y":4, "w":1.5},
- {"matrix":[4,11], "x":12.5, "y":4}
+ {"matrix": [4, 0], "x": 1.5, "y": 4},
+ {"matrix": [4, 1], "x": 2.5, "y": 4, "w": 1.5},
+ {"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
+ {"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
+ {"matrix": [4, 11], "x": 12.5, "y": 4}
]
}
}
diff --git a/keyboards/keychron/q60/ansi/keymaps/default/keymap.c b/keyboards/keychron/q60/ansi/keymaps/default/keymap.c
index f5dc74c7e3b6..cb245ede67a5 100644
--- a/keyboards/keychron/q60/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q60/ansi/keymaps/default/keymap.c
@@ -21,7 +21,10 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
+ FUNC,
+ L3,
+ L4,
+ L5
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -29,20 +32,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN),
[WIN_BASE] = LAYOUT_ansi_60(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
KC_LALT, KC_LWIN, KC_SPC, KC_RWIN, KC_RALT),
- [_FN1] = LAYOUT_ansi_60(
+ [FUNC] = LAYOUT_ansi_60(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+
+ [L3] = LAYOUT_ansi_60(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+
+ [L4] = LAYOUT_ansi_60(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+
+ [L5] = LAYOUT_ansi_60(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______)
};
diff --git a/keyboards/keychron/q60/ansi/keymaps/keychron/config.h b/keyboards/keychron/q60/ansi/keymaps/keychron/config.h
deleted file mode 100644
index 100548654b07..000000000000
--- a/keyboards/keychron/q60/ansi/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 6
diff --git a/keyboards/keychron/q60/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q60/ansi/keymaps/keychron/keymap.c
index a54a56573157..e75f61a1f994 100644
--- a/keyboards/keychron/q60/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q60/ansi/keymaps/keychron/keymap.c
@@ -16,14 +16,13 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
+ FUNC,
L3,
L4,
L5
@@ -34,14 +33,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN),
[WIN_BASE] = LAYOUT_ansi_60(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN),
[FUNC] = LAYOUT_ansi_60(
@@ -75,19 +74,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q60/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q60/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/q60/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q60/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q60/ansi/keymaps/via/config.h b/keyboards/keychron/q60/ansi/keymaps/via/config.h
deleted file mode 100644
index 100548654b07..000000000000
--- a/keyboards/keychron/q60/ansi/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 6
diff --git a/keyboards/keychron/q60/ansi/keymaps/via/keymap.c b/keyboards/keychron/q60/ansi/keymaps/via/keymap.c
index f027f4dc1449..cb245ede67a5 100644
--- a/keyboards/keychron/q60/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q60/ansi/keymaps/via/keymap.c
@@ -21,7 +21,7 @@
enum layers {
MAC_BASE,
WIN_BASE,
- _FN1,
+ FUNC,
L3,
L4,
L5
@@ -32,14 +32,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN),
[WIN_BASE] = LAYOUT_ansi_60(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
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_DEL,
KC_LCTL, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(FUNC),
KC_LALT, KC_LWIN, KC_SPC, KC_RWIN, KC_RALT),
[FUNC] = LAYOUT_ansi_60(
diff --git a/keyboards/keychron/q60/ansi/rules.mk b/keyboards/keychron/q60/ansi/rules.mk
index 4bc1e23a57a0..46f5aef144b4 100644
--- a/keyboards/keychron/q60/ansi/rules.mk
+++ b/keyboards/keychron/q60/ansi/rules.mk
@@ -1,8 +1,17 @@
# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q60/config.h b/keyboards/keychron/q60/config.h
index 5ccd85258ac2..779feea4ce1b 100644
--- a/keyboards/keychron/q60/config.h
+++ b/keyboards/keychron/q60/config.h
@@ -25,15 +25,13 @@
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
-#define I2C1_TIMINGR_SCLL 30U
+#define I2C1_TIMINGR_SCLL 51U
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xD8, 0xD8, 0x60, 0xD8, 0xD8, 0x60, 0xD8, 0xD8, 0x60, 0xD8, 0xD8, 0x60 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -41,6 +39,8 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -77,13 +77,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -98,7 +94,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(2)
-#define BL_TEST_KEY1 KC_B
-#define BL_TEST_KEY2 KC_L
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/q60/q60.c b/keyboards/keychron/q60/q60.c
index 1c40e430ea7c..d97f72fb8ea1 100644
--- a/keyboards/keychron/q60/q60.c
+++ b/keyboards/keychron/q60/q60.c
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,5 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/q60/readme.md b/keyboards/keychron/q60/readme.md
index 88a6a13f05bb..6e546ae1e15f 100644
--- a/keyboards/keychron/q60/readme.md
+++ b/keyboards/keychron/q60/readme.md
@@ -1,12 +1,10 @@
# Keychron Q60
-[Keychron Q60](https://i.imgur.com/Uxgs4Sr.jpg)
-
A customizable 60% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q60
-* Hardware Availability: [Keychron Q60 QMK Custom Mechanical Keyboard](https://www.keychron.com)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
index 93f33196753d..fffa00194d6e 100644
--- a/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q65/ansi_encoder/ansi_encoder.c
@@ -19,12 +19,12 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, C_15, A_15, B_15}, // Esc
{0, C_14, A_14, B_14}, // 1!
{0, C_13, A_13, B_13}, // 2@
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q65/ansi_encoder/info.json b/keyboards/keychron/q65/ansi_encoder/info.json
index 01cd5f1d5caa..0f7679945a26 100644
--- a/keyboards/keychron/q65/ansi_encoder/info.json
+++ b/keyboards/keychron/q65/ansi_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x01B1",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": [null, null, null, null, null, null, null, null, "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1"],
- "rows": ["B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -40,83 +24,83 @@
"layouts": {
"LAYOUT_ansi_73": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":1.5, "y":0.25},
- {"matrix":[0, 2], "x":2.5, "y":0.25},
- {"matrix":[0, 3], "x":3.5, "y":0.25},
- {"matrix":[0, 4], "x":4.5, "y":0.25},
- {"matrix":[0, 5], "x":5.5, "y":0.25},
- {"matrix":[0, 6], "x":6.5, "y":0.25},
- {"matrix":[0, 7], "x":7.5, "y":0.25},
- {"matrix":[0, 8], "x":8.5, "y":0.25},
- {"matrix":[0, 9], "x":9.5, "y":0.25},
- {"matrix":[0,10], "x":10.5, "y":0.25},
- {"matrix":[0,11], "x":11.5, "y":0.25},
- {"matrix":[0,12], "x":12.5, "y":0.25},
- {"matrix":[0,13], "x":13.5, "y":0.25},
- {"matrix":[0,14], "x":14.5, "y":0.25, "w":2},
- {"matrix":[0,15], "x":17, "y":0.25},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1.5, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.5, "y": 0.25},
+ {"matrix": [0, 3], "x": 3.5, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.5, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.5, "y": 0.25},
+ {"matrix": [0, 7], "x": 7.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 8.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 12], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 13.5, "y": 0.25},
+ {"matrix": [0, 14], "x": 14.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 15], "x": 17, "y": 0.25},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1.5, "y":1.25, "w":1.5},
- {"matrix":[1, 2], "x":3, "y":1.25},
- {"matrix":[1, 3], "x":4, "y":1.25},
- {"matrix":[1, 4], "x":5, "y":1.25},
- {"matrix":[1, 5], "x":6, "y":1.25},
- {"matrix":[1, 6], "x":7, "y":1.25},
- {"matrix":[1, 7], "x":8, "y":1.25},
- {"matrix":[1, 8], "x":9, "y":1.25},
- {"matrix":[1, 9], "x":10, "y":1.25},
- {"matrix":[1,10], "x":11, "y":1.25},
- {"matrix":[1,11], "x":12, "y":1.25},
- {"matrix":[1,12], "x":13, "y":1.25},
- {"matrix":[1,13], "x":14, "y":1.25},
- {"matrix":[1,14], "x":15, "y":1.25, "w":1.5},
- {"matrix":[1,15], "x":17, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 2], "x": 3, "y": 1.25},
+ {"matrix": [1, 3], "x": 4, "y": 1.25},
+ {"matrix": [1, 4], "x": 5, "y": 1.25},
+ {"matrix": [1, 5], "x": 6, "y": 1.25},
+ {"matrix": [1, 6], "x": 7, "y": 1.25},
+ {"matrix": [1, 7], "x": 8, "y": 1.25},
+ {"matrix": [1, 8], "x": 9, "y": 1.25},
+ {"matrix": [1, 9], "x": 10, "y": 1.25},
+ {"matrix": [1, 10], "x": 11, "y": 1.25},
+ {"matrix": [1, 11], "x": 12, "y": 1.25},
+ {"matrix": [1, 12], "x": 13, "y": 1.25},
+ {"matrix": [1, 13], "x": 14, "y": 1.25},
+ {"matrix": [1, 14], "x": 15, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 15], "x": 17, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25},
- {"matrix":[2, 1], "x":1.5, "y":2.25, "w":1.75},
- {"matrix":[2, 2], "x":3.25, "y":2.25},
- {"matrix":[2, 3], "x":4.25, "y":2.25},
- {"matrix":[2, 4], "x":5.25, "y":2.25},
- {"matrix":[2, 5], "x":6.25, "y":2.25},
- {"matrix":[2, 6], "x":7.25, "y":2.25},
- {"matrix":[2, 7], "x":8.25, "y":2.25},
- {"matrix":[2, 8], "x":9.25, "y":2.25},
- {"matrix":[2, 9], "x":10.25, "y":2.25},
- {"matrix":[2,10], "x":11.25, "y":2.25},
- {"matrix":[2,11], "x":12.25, "y":2.25},
- {"matrix":[2,12], "x":13.25, "y":2.25},
- {"matrix":[2,14], "x":14.25, "y":2.25, "w":2.25},
- {"matrix":[2,15], "x":17, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 2], "x": 3.25, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.25, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.25, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.25, "y": 2.25},
+ {"matrix": [2, 6], "x": 7.25, "y": 2.25},
+ {"matrix": [2, 7], "x": 8.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 12], "x": 13.25, "y": 2.25},
+ {"matrix": [2, 14], "x": 14.25, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 15], "x": 17, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25},
- {"matrix":[3, 1], "x":1.5, "y":3.25, "w":2.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,12], "x":12.75, "y":3.25},
- {"matrix":[3,13], "x":13.75, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17, "y":3.25},
- {"matrix":[3,15], "x":15.75, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25},
+ {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 12], "x": 12.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17, "y": 3.25},
+ {"matrix": [3, 15], "x": 15.75, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25},
- {"matrix":[4, 1], "x":1.5, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":4, "y":4.25, "w":1.25},
- {"matrix":[4, 7], "x":5.25, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":11.5, "y":4.25},
- {"matrix":[4,11], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":13.5, "y":4.25},
- {"matrix":[4,13], "x":14.75, "y":4.5},
- {"matrix":[4,14], "x":15.75, "y":4.5},
- {"matrix":[4,15], "x":16.75, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25},
+ {"matrix": [4, 1], "x": 1.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 4, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 7], "x": 5.25, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 11.5, "y": 4.25},
+ {"matrix": [4, 11], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 13.5, "y": 4.25},
+ {"matrix": [4, 13], "x": 14.75, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.75, "y": 4.5},
+ {"matrix": [4, 15], "x": 16.75, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q65/ansi_encoder/keymaps/default/keymap.c
index 75490d2dd337..dbe8c04973c7 100644
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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_HOME,
_______, 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_PGUP,
_______, 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_PGDN,
- _______, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ _______, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_73(
KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
_______, 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_HOME,
_______, 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_PGUP,
_______, 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_PGDN,
- _______, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ _______, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_73(
- RGB_TOG, 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_73(
+ RGB_TOG, KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, 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_ansi_73(
+ [_FN2] = LAYOUT_ansi_73(
RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_73(
+ [_FN3] = LAYOUT_ansi_73(
_______, 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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/keymap.c
index ddbf4b8055c1..d543a3bc5cad 100644
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_2, 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_HOME,
MC_3, 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_PGUP,
MC_4, 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_PGDN,
- MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_73(
KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
MC_2, 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_HOME,
MC_3, 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_PGUP,
MC_4, 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_PGDN,
- MC_5, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ MC_5, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_73(
+ [_FN1] = LAYOUT_ansi_73(
RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_73(
+ [_FN2] = LAYOUT_ansi_73(
RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_73(
+ [_FN3] = LAYOUT_ansi_73(
_______, 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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -65,30 +64,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
+// clang-format on
+
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
-// clang-format on
-
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q65/ansi_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q65/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q65/ansi_encoder/keymaps/via/keymap.c
index 1ae68eda41d5..dbe8c04973c7 100644
--- a/keyboards/keychron/q65/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q65/ansi_encoder/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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_HOME,
_______, 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_PGUP,
_______, 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_PGDN,
- _______, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ _______, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_73(
KC_MUTE, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
_______, 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_HOME,
_______, 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_PGUP,
_______, 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_PGDN,
- _______, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ _______, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_73(
+ [_FN1] = LAYOUT_ansi_73(
RGB_TOG, KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, 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_ansi_73(
+ [_FN2] = LAYOUT_ansi_73(
RGB_TOG, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_73(
+ [_FN3] = LAYOUT_ansi_73(
_______, 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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q65/ansi_encoder/rules.mk b/keyboards/keychron/q65/ansi_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/q65/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q65/ansi_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q65/config.h b/keyboards/keychron/q65/config.h
index 7fddb901ddff..148ea9ad1405 100644
--- a/keyboards/keychron/q65/config.h
+++ b/keyboards/keychron/q65/config.h
@@ -16,6 +16,15 @@
#pragma once
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, A2, A3, A4, A5, A6, A7, B0, B1 }
+
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -26,7 +35,7 @@
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
-#define I2C1_TIMINGR_SCLL 51U
+#define I2C1_TIMINGR_SCLL 30U
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
@@ -37,12 +46,13 @@
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* Turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -79,13 +89,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -100,13 +106,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(2)
-#define FN_KEY2 MO(3)
-
-#define HC595_STCP A0
-#define HC595_SHCP A1
-#define HC595_DS C15
-
-#define SHIFT_COL_START 0
-#define SHIFT_COL_END 7
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/q65/halconf.h b/keyboards/keychron/q65/halconf.h
index 463d177eabc7..41bddcb2799b 100644
--- a/keyboards/keychron/q65/halconf.h
+++ b/keyboards/keychron/q65/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/q65/matrix.c b/keyboards/keychron/q65/matrix.c
new file mode 100644
index 000000000000..5785f5d5709b
--- /dev/null
+++ b/keyboards/keychron/q65/matrix.c
@@ -0,0 +1,231 @@
+/* Copyright 2021 @ 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 "matrix.h"
+#include "quantum.h"
+
+// Pin connected to DS of 74HC595
+#define DATA_PIN C15
+// Pin connected to SH_CP of 74HC595
+#define CLOCK_PIN A1
+// Pin connected to ST_CP of 74HC595
+#define LATCH_PIN A0
+
+#ifdef MATRIX_ROW_PINS
+static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+#endif // MATRIX_ROW_PINS
+#ifdef MATRIX_COL_PINS
+static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif // MATRIX_COL_PINS
+
+#define ROWS_PER_HAND (MATRIX_ROWS)
+
+static inline void writePinLow_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ writePinLow(pin);
+ }
+}
+
+static inline void writePinHigh_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ writePinHigh(pin);
+ }
+}
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinLow(pin);
+ }
+}
+
+static inline void setPinInputHigh_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinInputHigh(pin);
+ }
+}
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+// At 3.6V input, three nops (37.5ns) should be enough for all signals
+#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
+#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
+
+static void shiftOut(uint8_t dataOut) {
+ ATOMIC_BLOCK_FORCEON {
+ for (uint8_t i = 0; i < 8; i++) {
+ compiler_barrier();
+ if (dataOut & 0x1) {
+ writePinHigh(DATA_PIN);
+ } else {
+ writePinLow(DATA_PIN);
+ }
+ dataOut = dataOut >> 1;
+ compiler_barrier();
+ writePinHigh(CLOCK_PIN);
+ small_delay();
+ writePinLow(CLOCK_PIN);
+ }
+ compiler_barrier();
+ writePinHigh(LATCH_PIN);
+ small_delay();
+ writePinLow(LATCH_PIN);
+ compiler_barrier();
+ }
+}
+
+static void shiftout_single(uint8_t data) {
+ ATOMIC_BLOCK_FORCEON {
+ compiler_barrier();
+ if (data & 0x1) {
+ writePinHigh(DATA_PIN);
+ } else {
+ writePinLow(DATA_PIN);
+ }
+ compiler_barrier();
+ writePinHigh(CLOCK_PIN);
+ small_delay();
+ writePinLow(CLOCK_PIN);
+ compiler_barrier();
+ writePinHigh(LATCH_PIN);
+ small_delay();
+ writePinLow(LATCH_PIN);
+ compiler_barrier();
+ }
+}
+
+static bool select_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ writePinLow_atomic(pin);
+#else
+ setPinOutput_writeLow(pin);
+#endif
+ return true;
+ } else {
+ if (col == 0) {
+ shiftout_single(0x00);
+ }
+ return true;
+ }
+ return false;
+}
+
+static void unselect_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ writePinHigh_atomic(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ shiftout_single(0x01);
+ }
+}
+
+static void unselect_cols(void) {
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ pin_t pin = col_pins[x];
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ if (x == 0)
+ // unselect shift Register
+ shiftOut(0xFF);
+ }
+ }
+}
+
+static void matrix_init_pins(void) {
+ setPinOutput(DATA_PIN);
+ setPinOutput(CLOCK_PIN);
+ setPinOutput(LATCH_PIN);
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ if (col_pins[x] != NO_PIN) {
+ setPinOutput(col_pins[x]);
+ }
+ }
+#endif
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ if (row_pins[x] != NO_PIN) {
+ setPinInputHigh_atomic(row_pins[x]);
+ }
+ }
+}
+
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ bool key_pressed = false;
+
+ // Select col
+ if (!select_col(current_col)) { // select col
+ return; // skip NO_PIN col
+ }
+
+ matrix_output_select_delay();
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
+ // Check row pin state
+ if (readMatrixPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= row_shifter;
+ key_pressed = true;
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~row_shifter;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+ matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ matrix_init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
+
+ // Set col, read rows
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
+ matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
+ }
+
+ bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
+ if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
+
+ return changed;
+}
diff --git a/keyboards/keychron/q65/q65.c b/keyboards/keychron/q65/q65.c
index 0cb6a646a50b..18fa8697c79d 100644
--- a/keyboards/keychron/q65/q65.c
+++ b/keyboards/keychron/q65/q65.c
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,50 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
+
+#endif // DIP_SWITCH_ENABLE
+
+// clang-format on
+#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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q65/readme.md b/keyboards/keychron/q65/readme.md
index f546ea3b5f11..1a2a27dc752e 100644
--- a/keyboards/keychron/q65/readme.md
+++ b/keyboards/keychron/q65/readme.md
@@ -1,12 +1,10 @@
# Keychron Q65
-![Keychron Q65](https://i.imgur.com/5Cbb1C5.jpg)
-
A customizable 65% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q65
-* Hardware Availability: [KKeychron Q65 QMK Custom Mechanical Keyboardeychron](https://www.keychron.com/products/keychron-q65-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/keychron/q7/ansi/ansi.c b/keyboards/keychron/q7/ansi/ansi.c
index 88d552e36257..3dccb8b660d2 100644
--- a/keyboards/keychron/q7/ansi/ansi.c
+++ b/keyboards/keychron/q7/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -130,8 +130,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q7/ansi/config.h b/keyboards/keychron/q7/ansi/config.h
index 277e505e065f..32727a13ce9c 100644
--- a/keyboards/keychron/q7/ansi/config.h
+++ b/keyboards/keychron/q7/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q7/ansi/info.json b/keyboards/keychron/q7/ansi/info.json
index 76e2f3e71086..2549e329f26b 100644
--- a/keyboards/keychron/q7/ansi/info.json
+++ b/keyboards/keychron/q7/ansi/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0170",
- "device_version": "1.0.6"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "B5"],
@@ -32,82 +21,82 @@
"layouts": {
"LAYOUT_ansi_72": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix":[0,14], "x":15, "y":0},
- {"matrix":[0,15], "x":16, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"matrix": [0, 14], "x": 15, "y": 0},
+ {"matrix": [0, 15], "x": 16, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
- {"matrix":[1,14], "x":15, "y":1},
- {"matrix":[1,15], "x":16, "y":1},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix": [1, 14], "x": 15, "y": 1},
+ {"matrix": [1, 15], "x": 16, "y": 1},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
- {"matrix":[2,14], "x":15, "y":2},
- {"matrix":[2,15], "x":16, "y":2},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"matrix": [2, 14], "x": 15, "y": 2},
+ {"matrix": [2, 15], "x": 16, "y": 2},
- {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix":[3,14], "x":15, "y":3},
- {"matrix":[3,15], "x":16, "y":3},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix": [3, 14], "x": 15, "y": 3},
+ {"matrix": [3, 15], "x": 16, "y": 3},
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4, 9], "x":10, "y":4},
- {"matrix":[4,10], "x":11, "y":4},
- {"matrix":[4,11], "x":12, "y":4},
- {"matrix":[4,12], "x":13, "y":4},
- {"matrix":[4,13], "x":14, "y":4},
- {"matrix":[4,14], "x":15, "y":4},
- {"matrix":[4,15], "x":16, "y":4}
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+ {"matrix": [4, 9], "x": 10, "y": 4},
+ {"matrix": [4, 10], "x": 11, "y": 4},
+ {"matrix": [4, 11], "x": 12, "y": 4},
+ {"matrix": [4, 12], "x": 13, "y": 4},
+ {"matrix": [4, 13], "x": 14, "y": 4},
+ {"matrix": [4, 14], "x": 15, "y": 4},
+ {"matrix": [4, 15], "x": 16, "y": 4}
]
}
}
diff --git a/keyboards/keychron/q7/ansi/keymaps/default/keymap.c b/keyboards/keychron/q7/ansi/keymaps/default/keymap.c
index 169f512f55c6..4fb2e861ca00 100644
--- a/keyboards/keychron/q7/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q7/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_72(
- KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, , RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [_FN1] = LAYOUT_ansi_72(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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_ansi_72(
+ [_FN3] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q7/ansi/keymaps/keychron/config.h b/keyboards/keychron/q7/ansi/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q7/ansi/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q7/ansi/keymaps/keychron/keymap.c
index 9773ffc11d82..f0c1684677eb 100644
--- a/keyboards/keychron/q7/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q7/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_72(
+ [_FN1] = LAYOUT_ansi_72(
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_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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_ansi_72(
+ [_FN3] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q7/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q7/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/q7/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q7/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q7/ansi/keymaps/via/config.h b/keyboards/keychron/q7/ansi/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q7/ansi/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/ansi/keymaps/via/keymap.c b/keyboards/keychron/q7/ansi/keymaps/via/keymap.c
index 169f512f55c6..4fb2e861ca00 100644
--- a/keyboards/keychron/q7/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q7/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_72(
- KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, , RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG,
+ [_FN1] = LAYOUT_ansi_72(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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_ansi_72(
+ [_FN3] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q7/ansi/rules.mk b/keyboards/keychron/q7/ansi/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/q7/ansi/rules.mk
+++ b/keyboards/keychron/q7/ansi/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q7/config.h b/keyboards/keychron/q7/config.h
index ec8060f25f28..0ea9ee5f4689 100644
--- a/keyboards/keychron/q7/config.h
+++ b/keyboards/keychron/q7/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,12 +30,11 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define SCAN_PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80, 0xF8, 0xF8, 0x80 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
+#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -43,6 +42,8 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -79,13 +80,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -100,6 +97,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(2)
-#define FN_KEY2 MO(3)
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/q7/iso/config.h b/keyboards/keychron/q7/iso/config.h
index e9da747ab154..dc9813f6e8a5 100644
--- a/keyboards/keychron/q7/iso/config.h
+++ b/keyboards/keychron/q7/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q7/iso/info.json b/keyboards/keychron/q7/iso/info.json
index c5c3692b0f73..27262eb4f368 100644
--- a/keyboards/keychron/q7/iso/info.json
+++ b/keyboards/keychron/q7/iso/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0172",
- "device_version": "1.0.4"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "B5"],
@@ -32,83 +21,83 @@
"layouts": {
"LAYOUT_iso_73": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix":[0,14], "x":15, "y":0},
- {"matrix":[0,15], "x":16, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"matrix": [0, 14], "x": 15, "y": 0},
+ {"matrix": [0, 15], "x": 16, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix":[1,14], "x":15, "y":1},
- {"matrix":[1,15], "x":16, "y":1},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 14], "x": 15, "y": 1},
+ {"matrix": [1, 15], "x": 16, "y": 1},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2},
- {"matrix":[1,13], "x":13.75, "y":1, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15, "y":2},
- {"matrix":[2,15], "x":16, "y":2},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2},
+ {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15, "y": 2},
+ {"matrix": [2, 15], "x": 16, "y": 2},
- {"matrix":[3, 0], "x":0, "y":3, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix":[3,14], "x":15, "y":3},
- {"matrix":[3,15], "x":16, "y":3},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix": [3, 14], "x": 15, "y": 3},
+ {"matrix": [3, 15], "x": 16, "y": 3},
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4, 9], "x":10, "y":4},
- {"matrix":[4,10], "x":11, "y":4},
- {"matrix":[4,11], "x":12, "y":4},
- {"matrix":[4,12], "x":13, "y":4},
- {"matrix":[4,13], "x":14, "y":4},
- {"matrix":[4,14], "x":15, "y":4},
- {"matrix":[4,15], "x":16, "y":4}
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+ {"matrix": [4, 9], "x": 10, "y": 4},
+ {"matrix": [4, 10], "x": 11, "y": 4},
+ {"matrix": [4, 11], "x": 12, "y": 4},
+ {"matrix": [4, 12], "x": 13, "y": 4},
+ {"matrix": [4, 13], "x": 14, "y": 4},
+ {"matrix": [4, 14], "x": 15, "y": 4},
+ {"matrix": [4, 15], "x": 16, "y": 4}
]
}
}
diff --git a/keyboards/keychron/q7/iso/iso.c b/keyboards/keychron/q7/iso/iso.c
index a03848f27064..039bd1383615 100644
--- a/keyboards/keychron/q7/iso/iso.c
+++ b/keyboards/keychron/q7/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -129,7 +129,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/q7/iso/keymaps/default/keymap.c b/keyboards/keychron/q7/iso/keymaps/default/keymap.c
index 6b57e8175b70..afb0aae445ca 100644
--- a/keyboards/keychron/q7/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q7/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_73(
- 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,
+ [_FN1] = LAYOUT_iso_73(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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_iso_73(
+ [_FN3] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q7/iso/keymaps/keychron/config.h b/keyboards/keychron/q7/iso/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q7/iso/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q7/iso/keymaps/keychron/keymap.c
index 1bf476eb3698..52bec9699abb 100644
--- a/keyboards/keychron/q7/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q7/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_73(
+ [_FN1] = LAYOUT_iso_73(
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_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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_iso_73(
+ [_FN3] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q7/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q7/iso/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/q7/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q7/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q7/iso/keymaps/via/config.h b/keyboards/keychron/q7/iso/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q7/iso/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q7/iso/keymaps/via/keymap.c b/keyboards/keychron/q7/iso/keymaps/via/keymap.c
index 6b57e8175b70..afb0aae445ca 100644
--- a/keyboards/keychron/q7/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q7/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_73(
- 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,
+ [_FN1] = LAYOUT_iso_73(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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_iso_73(
+ [_FN3] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q7/iso/rules.mk b/keyboards/keychron/q7/iso/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/q7/iso/rules.mk
+++ b/keyboards/keychron/q7/iso/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q7/q7.c b/keyboards/keychron/q7/q7.c
index 0cb6a646a50b..abd4ac11f030 100644
--- a/keyboards/keychron/q7/q7.c
+++ b/keyboards/keychron/q7/q7.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,49 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
+
+#endif // DIP_SWITCH_ENABLE
+
+#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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q7/readme.md b/keyboards/keychron/q7/readme.md
index 33b8f92017a1..ea4846422264 100644
--- a/keyboards/keychron/q7/readme.md
+++ b/keyboards/keychron/q7/readme.md
@@ -1,22 +1,18 @@
# Keychron Q7
-![Keychron Q7](https://i.imgur.com/dMnFpx0.jpg)
-
A customizable 70% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q7
-* Hardware Availability: [Keychron Q7 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q7-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/q7/ansi:default
- make keychron/q7/iso:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/q7/ansi:default:flash
- make keychron/q7/iso:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q8/ansi/ansi.c b/keyboards/keychron/q8/ansi/ansi.c
index 7743a9acbdb7..e9c4edeb3e57 100644
--- a/keyboards/keychron/q8/ansi/ansi.c
+++ b/keyboards/keychron/q8/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q8/ansi/config.h b/keyboards/keychron/q8/ansi/config.h
index b818d1d8d30d..cd2d037bb369 100644
--- a/keyboards/keychron/q8/ansi/config.h
+++ b/keyboards/keychron/q8/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q8/ansi/info.json b/keyboards/keychron/q8/ansi/info.json
index d54c58d1ae8b..7ee5b6c21f3e 100644
--- a/keyboards/keychron/q8/ansi/info.json
+++ b/keyboards/keychron/q8/ansi/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0180",
- "device_version": "1.0.7"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -32,79 +21,79 @@
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
- {"matrix":[0, 0], "x":0.75, "y":0.25},
- {"matrix":[0, 1], "x":1.75, "y":0.25},
- {"matrix":[0, 2], "x":2.75, "y":0},
- {"matrix":[0, 3], "x":3.75, "y":0.25},
- {"matrix":[0, 4], "x":4.75, "y":0.25},
- {"matrix":[0, 5], "x":5.75, "y":0.25},
- {"matrix":[0, 6], "x":6.75, "y":0.25},
- {"matrix":[0, 7], "x":9.5, "y":0.25},
- {"matrix":[0, 8], "x":10.5, "y":0.25},
- {"matrix":[0, 9], "x":11.5, "y":0.25},
- {"matrix":[0,10], "x":12.5, "y":0.25},
- {"matrix":[0,11], "x":13.5, "y":0},
- {"matrix":[0,12], "x":14.5, "y":0.25},
- {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
- {"matrix":[0,14], "x":18, "y":0},
+ {"matrix": [0, 0], "x": 0.75, "y": 0.25},
+ {"matrix": [0, 1], "x": 1.75, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.75, "y": 0},
+ {"matrix": [0, 3], "x": 3.75, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.75, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.75, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.75, "y": 0.25},
+ {"matrix": [0, 7], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 13.5, "y": 0},
+ {"matrix": [0, 12], "x": 14.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 18, "y": 0},
- {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":2, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":9, "y":1.25},
- {"matrix":[1, 7], "x":10, "y":1.25},
- {"matrix":[1, 8], "x":11, "y":1.25},
- {"matrix":[1, 9], "x":12, "y":1.25},
- {"matrix":[1,10], "x":13.25, "y":1.25},
- {"matrix":[1,11], "x":14.25, "y":1.25},
- {"matrix":[1,12], "x":15.25, "y":1.25},
- {"matrix":[1,13], "x":16.25, "y":1.25, "w":1.5},
- {"matrix":[1,14], "x":18.25, "y":1.5},
+ {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 2, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 9, "y": 1.25},
+ {"matrix": [1, 7], "x": 10, "y": 1.25},
+ {"matrix": [1, 8], "x": 11, "y": 1.25},
+ {"matrix": [1, 9], "x": 12, "y": 1.25},
+ {"matrix": [1, 10], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 13], "x": 16.25, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 14], "x": 18.25, "y": 1.5},
- {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":2, "y":2.25},
- {"matrix":[2, 2], "x":3.5, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":9.25, "y":2.25},
- {"matrix":[2, 8], "x":10.25, "y":2.25},
- {"matrix":[2, 9], "x":11.25, "y":2.25},
- {"matrix":[2,10], "x":12.25, "y":2.25},
- {"matrix":[2,11], "x":13.75, "y":2.25},
- {"matrix":[2,12], "x":14.75, "y":2.25},
- {"matrix":[2,13], "x":15.75, "y":2.25, "w":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.5},
+ {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 2, "y": 2.25},
+ {"matrix": [2, 2], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 13.75, "y": 2.25},
+ {"matrix": [2, 12], "x": 14.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 15.75, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":8.5, "y":3.25},
- {"matrix":[3, 8], "x":9.5, "y":3.25},
- {"matrix":[3, 9], "x":10.5, "y":3.25},
- {"matrix":[3,10], "x":11.5, "y":3.25},
- {"matrix":[3,11], "x":12.5, "y":3.25},
- {"matrix":[3,12], "x":14.25, "y":3.25},
- {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 8.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 9.5, "y": 3.25},
+ {"matrix": [3, 9], "x": 10.5, "y": 3.25},
+ {"matrix": [3, 10], "x": 11.5, "y": 3.25},
+ {"matrix": [3, 11], "x": 12.5, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
- {"matrix":[4, 6], "x":7.25, "y":4.25},
- {"matrix":[4, 7], "x":8.75, "y":4.25},
- {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
- {"matrix":[4, 9], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":16.25, "y":4.5},
- {"matrix":[4,13], "x":17.25, "y":4.5},
- {"matrix":[4,14], "x":18.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 8.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 9], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.5},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 18.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/q8/ansi/keymaps/default/keymap.c b/keyboards/keychron/q8/ansi/keymaps/default/keymap.c
index 15806904e6e9..fa67e871440d 100644
--- a/keyboards/keychron/q8/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q8/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
- 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_69(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q8/ansi/keymaps/keychron/config.h b/keyboards/keychron/q8/ansi/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q8/ansi/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q8/ansi/keymaps/keychron/keymap.c
index b14dbd1cd490..490b6b4617b4 100644
--- a/keyboards/keychron/q8/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q8/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
+ [_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -69,17 +68,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q8/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q8/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/q8/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q8/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q8/ansi/keymaps/via/config.h b/keyboards/keychron/q8/ansi/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q8/ansi/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/ansi/keymaps/via/keymap.c b/keyboards/keychron/q8/ansi/keymaps/via/keymap.c
index 9296c5eb1045..2522eff2b9d4 100644
--- a/keyboards/keychron/q8/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q8/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
- 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_69(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q8/ansi/readme.md b/keyboards/keychron/q8/ansi/readme.md
new file mode 100644
index 000000000000..0d803d4475d9
--- /dev/null
+++ b/keyboards/keychron/q8/ansi/readme.md
@@ -0,0 +1 @@
+# The ANSI variant of the Keychron Q8
diff --git a/keyboards/keychron/q8/ansi/rules.mk b/keyboards/keychron/q8/ansi/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/q8/ansi/rules.mk
+++ b/keyboards/keychron/q8/ansi/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
index 7743a9acbdb7..e9c4edeb3e57 100644
--- a/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q8/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q8/ansi_encoder/info.json b/keyboards/keychron/q8/ansi_encoder/info.json
index 88510d47982b..a4c3ac77e13a 100644
--- a/keyboards/keychron/q8/ansi_encoder/info.json
+++ b/keyboards/keychron/q8/ansi_encoder/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0181",
- "device_version": "1.0.7"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -37,79 +26,79 @@
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
- {"matrix":[0, 0], "x":0.75, "y":0.25},
- {"matrix":[0, 1], "x":1.75, "y":0.25},
- {"matrix":[0, 2], "x":2.75, "y":0},
- {"matrix":[0, 3], "x":3.75, "y":0.25},
- {"matrix":[0, 4], "x":4.75, "y":0.25},
- {"matrix":[0, 5], "x":5.75, "y":0.25},
- {"matrix":[0, 6], "x":6.75, "y":0.25},
- {"matrix":[0, 7], "x":9.5, "y":0.25},
- {"matrix":[0, 8], "x":10.5, "y":0.25},
- {"matrix":[0, 9], "x":11.5, "y":0.25},
- {"matrix":[0,10], "x":12.5, "y":0.25},
- {"matrix":[0,11], "x":13.5, "y":0},
- {"matrix":[0,12], "x":14.5, "y":0.25},
- {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
- {"matrix":[0,14], "x":18, "y":0},
+ {"matrix": [0, 0], "x": 0.75, "y": 0.25},
+ {"matrix": [0, 1], "x": 1.75, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.75, "y": 0},
+ {"matrix": [0, 3], "x": 3.75, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.75, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.75, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.75, "y": 0.25},
+ {"matrix": [0, 7], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 13.5, "y": 0},
+ {"matrix": [0, 12], "x": 14.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 18, "y": 0},
- {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":2, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":9, "y":1.25},
- {"matrix":[1, 7], "x":10, "y":1.25},
- {"matrix":[1, 8], "x":11, "y":1.25},
- {"matrix":[1, 9], "x":12, "y":1.25},
- {"matrix":[1,10], "x":13.25, "y":1.25},
- {"matrix":[1,11], "x":14.25, "y":1.25},
- {"matrix":[1,12], "x":15.25, "y":1.25},
- {"matrix":[1,13], "x":16.25, "y":1.25, "w":1.5},
- {"matrix":[1,14], "x":18.25, "y":1.5},
+ {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 2, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 9, "y": 1.25},
+ {"matrix": [1, 7], "x": 10, "y": 1.25},
+ {"matrix": [1, 8], "x": 11, "y": 1.25},
+ {"matrix": [1, 9], "x": 12, "y": 1.25},
+ {"matrix": [1, 10], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 13], "x": 16.25, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 14], "x": 18.25, "y": 1.5},
- {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":2, "y":2.25},
- {"matrix":[2, 2], "x":3.5, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":9.25, "y":2.25},
- {"matrix":[2, 8], "x":10.25, "y":2.25},
- {"matrix":[2, 9], "x":11.25, "y":2.25},
- {"matrix":[2,10], "x":12.25, "y":2.25},
- {"matrix":[2,11], "x":13.75, "y":2.25},
- {"matrix":[2,12], "x":14.75, "y":2.25},
- {"matrix":[2,13], "x":15.75, "y":2.25, "w":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.5},
+ {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 2, "y": 2.25},
+ {"matrix": [2, 2], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 13.75, "y": 2.25},
+ {"matrix": [2, 12], "x": 14.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 15.75, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":8.5, "y":3.25},
- {"matrix":[3, 8], "x":9.5, "y":3.25},
- {"matrix":[3, 9], "x":10.5, "y":3.25},
- {"matrix":[3,10], "x":11.5, "y":3.25},
- {"matrix":[3,11], "x":12.5, "y":3.25},
- {"matrix":[3,12], "x":14.25, "y":3.25},
- {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 8.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 9.5, "y": 3.25},
+ {"matrix": [3, 9], "x": 10.5, "y": 3.25},
+ {"matrix": [3, 10], "x": 11.5, "y": 3.25},
+ {"matrix": [3, 11], "x": 12.5, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
- {"matrix":[4, 6], "x":7.25, "y":4.25},
- {"matrix":[4, 7], "x":8.75, "y":4.25},
- {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
- {"matrix":[4, 9], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":16.25, "y":4.5},
- {"matrix":[4,13], "x":17.25, "y":4.5},
- {"matrix":[4,14], "x":18.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 8.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 9], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.5},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 18.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q8/ansi_encoder/keymaps/default/keymap.c
index 863fc66d4a33..a86ae6d8cf25 100644
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
- 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,
+ [_FN1] = LAYOUT_ansi_69(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/keymap.c
index e4725cec51d2..bb5c406046dc 100644
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
+ [_FN1] = LAYOUT_ansi_69(
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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,12 +65,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
@@ -79,17 +78,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q8/ansi_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q8/ansi_encoder/keymaps/via/keymap.c
index 863fc66d4a33..a86ae6d8cf25 100644
--- a/keyboards/keychron/q8/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q8/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
- 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,
+ [_FN1] = LAYOUT_ansi_69(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q8/ansi_encoder/readme.md b/keyboards/keychron/q8/ansi_encoder/readme.md
new file mode 100644
index 000000000000..74609975c96a
--- /dev/null
+++ b/keyboards/keychron/q8/ansi_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ANSI variant of the Keychron Q8
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q8/ansi_encoder/rules.mk b/keyboards/keychron/q8/ansi_encoder/rules.mk
index 4bc1e23a57a0..5091fe94148b 100644
--- a/keyboards/keychron/q8/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q8/ansi_encoder/rules.mk
@@ -1,8 +1,18 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q8/config.h b/keyboards/keychron/q8/config.h
index 5e506a004e86..e0f6c673a539 100644
--- a/keyboards/keychron/q8/config.h
+++ b/keyboards/keychron/q8/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -33,13 +33,11 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {4, 4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -50,6 +48,7 @@
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
@@ -83,13 +82,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -104,6 +99,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(2)
-#define FN_KEY2 MO(3)
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/q8/halconf.h b/keyboards/keychron/q8/halconf.h
index 463d177eabc7..41bddcb2799b 100644
--- a/keyboards/keychron/q8/halconf.h
+++ b/keyboards/keychron/q8/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/q8/iso/config.h b/keyboards/keychron/q8/iso/config.h
index 3a62cba38eb6..99ba64d7134d 100644
--- a/keyboards/keychron/q8/iso/config.h
+++ b/keyboards/keychron/q8/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q8/iso/info.json b/keyboards/keychron/q8/iso/info.json
index 41d53fc281a4..03a6cd1fddcb 100644
--- a/keyboards/keychron/q8/iso/info.json
+++ b/keyboards/keychron/q8/iso/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0182",
- "device_version": "1.0.5"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -32,80 +21,80 @@
"layouts": {
"LAYOUT_iso_70": {
"layout": [
- {"matrix":[0, 0], "x":0.75, "y":0.25},
- {"matrix":[0, 1], "x":1.75, "y":0.25},
- {"matrix":[0, 2], "x":2.75, "y":0},
- {"matrix":[0, 3], "x":3.75, "y":0.25},
- {"matrix":[0, 4], "x":4.75, "y":0.25},
- {"matrix":[0, 5], "x":5.75, "y":0.25},
- {"matrix":[0, 6], "x":6.75, "y":0.25},
- {"matrix":[0, 7], "x":9.5, "y":0.25},
- {"matrix":[0, 8], "x":10.5, "y":0.25},
- {"matrix":[0, 9], "x":11.5, "y":0.25},
- {"matrix":[0,10], "x":12.5, "y":0.25},
- {"matrix":[0,11], "x":13.5, "y":0},
- {"matrix":[0,12], "x":14.5, "y":0.25},
- {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
- {"matrix":[0,14], "x":18, "y":0.25},
+ {"matrix": [0, 0], "x": 0.75, "y": 0.25},
+ {"matrix": [0, 1], "x": 1.75, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.75, "y": 0},
+ {"matrix": [0, 3], "x": 3.75, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.75, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.75, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.75, "y": 0.25},
+ {"matrix": [0, 7], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 13.5, "y": 0},
+ {"matrix": [0, 12], "x": 14.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 18, "y": 0.25},
- {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":2, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":9, "y":1.25},
- {"matrix":[1, 7], "x":10, "y":1.25},
- {"matrix":[1, 8], "x":11, "y":1.25},
- {"matrix":[1, 9], "x":12, "y":1.25},
- {"matrix":[1,10], "x":13.25, "y":1.25},
- {"matrix":[1,11], "x":14.25, "y":1.25},
- {"matrix":[1,12], "x":15.25, "y":1.25},
- {"matrix":[1,14], "x":18.25, "y":1.5},
+ {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 2, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 9, "y": 1.25},
+ {"matrix": [1, 7], "x": 10, "y": 1.25},
+ {"matrix": [1, 8], "x": 11, "y": 1.25},
+ {"matrix": [1, 9], "x": 12, "y": 1.25},
+ {"matrix": [1, 10], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 14], "x": 18.25, "y": 1.5},
- {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":2, "y":2.25},
- {"matrix":[2, 2], "x":3.5, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":9.25, "y":2.25},
- {"matrix":[2, 8], "x":10.25, "y":2.25},
- {"matrix":[2, 9], "x":11.25, "y":2.25},
- {"matrix":[2,10], "x":12.25, "y":2.25},
- {"matrix":[2,11], "x":13.5, "y":2.25},
- {"matrix":[2,12], "x":14.5, "y":2.25},
- {"matrix":[2,13], "x":15.5, "y":2.25},
- {"matrix":[1,13], "x":16.5, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":18.5, "y":2.5},
+ {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 2, "y": 2.25},
+ {"matrix": [2, 2], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 13.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 14.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 15.5, "y": 2.25},
+ {"matrix": [1, 13], "x": 16.5, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":8.5, "y":3.25},
- {"matrix":[3, 8], "x":9.5, "y":3.25},
- {"matrix":[3, 9], "x":10.5, "y":3.25},
- {"matrix":[3,10], "x":11.5, "y":3.25},
- {"matrix":[3,11], "x":12.5, "y":3.25},
- {"matrix":[3,12], "x":14.25, "y":3.25},
- {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 8.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 9.5, "y": 3.25},
+ {"matrix": [3, 9], "x": 10.5, "y": 3.25},
+ {"matrix": [3, 10], "x": 11.5, "y": 3.25},
+ {"matrix": [3, 11], "x": 12.5, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
- {"matrix":[4, 6], "x":7.25, "y":4.25},
- {"matrix":[4, 7], "x":8.75, "y":4.25},
- {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
- {"matrix":[4, 9], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":16.25, "y":4.5},
- {"matrix":[4,13], "x":17.25, "y":4.5},
- {"matrix":[4,14], "x":18.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 8.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 9], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.5},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 18.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/q8/iso/iso.c b/keyboards/keychron/q8/iso/iso.c
index 6686ab22c151..205989383e3f 100644
--- a/keyboards/keychron/q8/iso/iso.c
+++ b/keyboards/keychron/q8/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q8/iso/keymaps/default/keymap.c b/keyboards/keychron/q8/iso/keymaps/default/keymap.c
index aa4601e52068..e999d0406269 100644
--- a/keyboards/keychron/q8/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q8/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q8/iso/keymaps/keychron/config.h b/keyboards/keychron/q8/iso/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q8/iso/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q8/iso/keymaps/keychron/keymap.c
index b284ef9ac712..c5bc9c787ef5 100644
--- a/keyboards/keychron/q8/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q8/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
+ [_FN1] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,17 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q8/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q8/iso/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/q8/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q8/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q8/iso/keymaps/via/config.h b/keyboards/keychron/q8/iso/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q8/iso/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/iso/keymaps/via/keymap.c b/keyboards/keychron/q8/iso/keymaps/via/keymap.c
index aa4601e52068..e999d0406269 100644
--- a/keyboards/keychron/q8/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q8/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q8/iso/readme.md b/keyboards/keychron/q8/iso/readme.md
new file mode 100644
index 000000000000..1a38fdf8aae6
--- /dev/null
+++ b/keyboards/keychron/q8/iso/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q8
diff --git a/keyboards/keychron/q8/iso/rules.mk b/keyboards/keychron/q8/iso/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/q8/iso/rules.mk
+++ b/keyboards/keychron/q8/iso/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q8/iso_encoder/config.h b/keyboards/keychron/q8/iso_encoder/config.h
index 0bb4fbf8217e..cdda41df5d09 100644
--- a/keyboards/keychron/q8/iso_encoder/config.h
+++ b/keyboards/keychron/q8/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q8/iso_encoder/info.json b/keyboards/keychron/q8/iso_encoder/info.json
index ea421afac581..eb9dc22503b6 100644
--- a/keyboards/keychron/q8/iso_encoder/info.json
+++ b/keyboards/keychron/q8/iso_encoder/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0183",
- "device_version": "1.0.5"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -37,80 +26,80 @@
"layouts": {
"LAYOUT_iso_70": {
"layout": [
- {"matrix":[0, 0], "x":0.75, "y":0.25},
- {"matrix":[0, 1], "x":1.75, "y":0.25},
- {"matrix":[0, 2], "x":2.75, "y":0},
- {"matrix":[0, 3], "x":3.75, "y":0.25},
- {"matrix":[0, 4], "x":4.75, "y":0.25},
- {"matrix":[0, 5], "x":5.75, "y":0.25},
- {"matrix":[0, 6], "x":6.75, "y":0.25},
- {"matrix":[0, 7], "x":9.5, "y":0.25},
- {"matrix":[0, 8], "x":10.5, "y":0.25},
- {"matrix":[0, 9], "x":11.5, "y":0.25},
- {"matrix":[0,10], "x":12.5, "y":0.25},
- {"matrix":[0,11], "x":13.5, "y":0},
- {"matrix":[0,12], "x":14.5, "y":0.25},
- {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
- {"matrix":[0,14], "x":18, "y":0.25},
+ {"matrix": [0, 0], "x": 0.75, "y": 0.25},
+ {"matrix": [0, 1], "x": 1.75, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.75, "y": 0},
+ {"matrix": [0, 3], "x": 3.75, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.75, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.75, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.75, "y": 0.25},
+ {"matrix": [0, 7], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 13.5, "y": 0},
+ {"matrix": [0, 12], "x": 14.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 18, "y": 0.25},
- {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":2, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":9, "y":1.25},
- {"matrix":[1, 7], "x":10, "y":1.25},
- {"matrix":[1, 8], "x":11, "y":1.25},
- {"matrix":[1, 9], "x":12, "y":1.25},
- {"matrix":[1,10], "x":13.25, "y":1.25},
- {"matrix":[1,11], "x":14.25, "y":1.25},
- {"matrix":[1,12], "x":15.25, "y":1.25},
- {"matrix":[1,14], "x":18.25, "y":1.5},
+ {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 2, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 9, "y": 1.25},
+ {"matrix": [1, 7], "x": 10, "y": 1.25},
+ {"matrix": [1, 8], "x": 11, "y": 1.25},
+ {"matrix": [1, 9], "x": 12, "y": 1.25},
+ {"matrix": [1, 10], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 14], "x": 18.25, "y": 1.5},
- {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":2, "y":2.25},
- {"matrix":[2, 2], "x":3.5, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":9.25, "y":2.25},
- {"matrix":[2, 8], "x":10.25, "y":2.25},
- {"matrix":[2, 9], "x":11.25, "y":2.25},
- {"matrix":[2,10], "x":12.25, "y":2.25},
- {"matrix":[2,11], "x":13.5, "y":2.25},
- {"matrix":[2,12], "x":14.5, "y":2.25},
- {"matrix":[2,13], "x":15.5, "y":2.25},
- {"matrix":[1,13], "x":16.5, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":18.5, "y":2.5},
+ {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 2, "y": 2.25},
+ {"matrix": [2, 2], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 13.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 14.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 15.5, "y": 2.25},
+ {"matrix": [1, 13], "x": 16.5, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":8.5, "y":3.25},
- {"matrix":[3, 8], "x":9.5, "y":3.25},
- {"matrix":[3, 9], "x":10.5, "y":3.25},
- {"matrix":[3,10], "x":11.5, "y":3.25},
- {"matrix":[3,11], "x":12.5, "y":3.25},
- {"matrix":[3,12], "x":14.25, "y":3.25},
- {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 8.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 9.5, "y": 3.25},
+ {"matrix": [3, 9], "x": 10.5, "y": 3.25},
+ {"matrix": [3, 10], "x": 11.5, "y": 3.25},
+ {"matrix": [3, 11], "x": 12.5, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
- {"matrix":[4, 6], "x":7.25, "y":4.25},
- {"matrix":[4, 7], "x":8.75, "y":4.25},
- {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
- {"matrix":[4, 9], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":16.25, "y":4.5},
- {"matrix":[4,13], "x":17.25, "y":4.5},
- {"matrix":[4,14], "x":18.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 8.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 9], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.5},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 18.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/q8/iso_encoder/iso_encoder.c b/keyboards/keychron/q8/iso_encoder/iso_encoder.c
index 6686ab22c151..205989383e3f 100644
--- a/keyboards/keychron/q8/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q8/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q8/iso_encoder/keymaps/default/keymap.c
index eaeb32052251..7db63d4118bf 100644
--- a/keyboards/keychron/q8/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/keymap.c
index e0182fde1766..b3abda29754c 100644
--- a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
+ [_FN1] = LAYOUT_iso_70(
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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,28 +65,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
+// clang-format on
+
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/q8/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/via/config.h b/keyboards/keychron/q8/iso_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q8/iso_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q8/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q8/iso_encoder/keymaps/via/keymap.c
index ad73d3618eef..8b66a40c6bb5 100644
--- a/keyboards/keychron/q8/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q8/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_70(
- 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, _______, _______,
+ [_FN2] = LAYOUT_iso_70(
+ 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_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q8/iso_encoder/readme.md b/keyboards/keychron/q8/iso_encoder/readme.md
new file mode 100644
index 000000000000..6c46b50397f3
--- /dev/null
+++ b/keyboards/keychron/q8/iso_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ISO variant of the Keychron Q8
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q8/iso_encoder/rules.mk b/keyboards/keychron/q8/iso_encoder/rules.mk
index 4bc1e23a57a0..5091fe94148b 100644
--- a/keyboards/keychron/q8/iso_encoder/rules.mk
+++ b/keyboards/keychron/q8/iso_encoder/rules.mk
@@ -1,8 +1,18 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q8/q8.c b/keyboards/keychron/q8/q8.c
index e903b1f70ae8..a653bdc8b934 100644
--- a/keyboards/keychron/q8/q8.c
+++ b/keyboards/keychron/q8/q8.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,50 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
+
+#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;
+ }
+
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q8/readme.md b/keyboards/keychron/q8/readme.md
index 8dcb89a84a17..da200e2c1879 100644
--- a/keyboards/keychron/q8/readme.md
+++ b/keyboards/keychron/q8/readme.md
@@ -1,26 +1,18 @@
# Keychron Q8
-![Keychron Q8](https://i.imgur.com/FQnOwRr.jpg)
-
A customizable 65% Alice layout keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q8
-* Hardware Availability: [Keychron Q8 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q8-alice-layout-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/q8/ansi:default
- make keychron/q8/ansi_encoder:default
- make keychron/q8/iso:default
- make keychron/q8/iso_encoder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/q8/ansi:default:flash
- make keychron/q8/ansi_encoder:default:flash
- make keychron/q8/iso:default:flash
- make keychron/q8/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/q9/ansi/ansi.c b/keyboards/keychron/q9/ansi/ansi.c
index eec0651693f7..b98149a5f894 100644
--- a/keyboards/keychron/q9/ansi/ansi.c
+++ b/keyboards/keychron/q9/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -106,8 +106,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q9/ansi/config.h b/keyboards/keychron/q9/ansi/config.h
index 553c5830418f..f9565bd6f0ee 100644
--- a/keyboards/keychron/q9/ansi/config.h
+++ b/keyboards/keychron/q9/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q9/ansi/info.json b/keyboards/keychron/q9/ansi/info.json
index 55ca51fc46c6..952d3158c813 100644
--- a/keyboards/keychron/q9/ansi/info.json
+++ b/keyboards/keychron/q9/ansi/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0190",
- "device_version": "1.0.4"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -32,61 +21,61 @@
"layouts": {
"LAYOUT_ansi_52": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25, "w":1.5},
- {"matrix":[0, 1], "x":1.5, "y":0.25},
- {"matrix":[0, 2], "x":2.5, "y":0.25},
- {"matrix":[0, 3], "x":3.5, "y":0.25},
- {"matrix":[0, 4], "x":4.5, "y":0.25},
- {"matrix":[0, 5], "x":5.5, "y":0.25},
- {"matrix":[0, 6], "x":6.5, "y":0.25},
- {"matrix":[0, 7], "x":7.5, "y":0.25},
- {"matrix":[0, 8], "x":8.5, "y":0.25},
- {"matrix":[0, 9], "x":9.5, "y":0.25},
- {"matrix":[0,10], "x":10.5, "y":0.25},
- {"matrix":[0,11], "x":11.5, "y":0.25},
- {"matrix":[0,12], "x":12.5, "y":0.25},
- {"matrix":[0,13], "x":13.5, "y":0.25, "w":1.5},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25, "w": 1.5},
+ {"matrix": [0, 1], "x": 1.5, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.5, "y": 0.25},
+ {"matrix": [0, 3], "x": 3.5, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.5, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.5, "y": 0.25},
+ {"matrix": [0, 7], "x": 7.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 8.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 12], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 13.5, "y": 0.25, "w": 1.5},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.75},
- {"matrix":[1, 1], "x":1.75, "y":1.25},
- {"matrix":[1, 2], "x":2.75, "y":1.25},
- {"matrix":[1, 3], "x":3.75, "y":1.25},
- {"matrix":[1, 4], "x":4.75, "y":1.25},
- {"matrix":[1, 5], "x":5.75, "y":1.25},
- {"matrix":[1, 6], "x":6.75, "y":1.25},
- {"matrix":[1, 7], "x":7.75, "y":1.25},
- {"matrix":[1, 8], "x":8.75, "y":1.25},
- {"matrix":[1, 9], "x":9.75, "y":1.25},
- {"matrix":[1,10], "x":10.75, "y":1.25},
- {"matrix":[1,11], "x":11.75, "y":1.25},
- {"matrix":[1,13], "x":12.75, "y":1.25, "w":2.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.75},
+ {"matrix": [1, 1], "x": 1.75, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.75, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.75, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.75, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.75, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.75, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.75, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.75, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.75, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.75, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.75, "y": 1.25},
+ {"matrix": [1, 13], "x": 12.75, "y": 1.25, "w": 2.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":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},
- {"matrix":[2, 5], "x":5.25, "y":2.25},
- {"matrix":[2, 6], "x":6.25, "y":2.25},
- {"matrix":[2, 7], "x":7.25, "y":2.25},
- {"matrix":[2, 8], "x":8.25, "y":2.25},
- {"matrix":[2, 9], "x":9.25, "y":2.25},
- {"matrix":[2,10], "x":10.25, "y":2.25},
- {"matrix":[2,11], "x":11.25, "y":2.25},
- {"matrix":[2,13], "x":12.25, "y":2.25, "w":1.75},
- {"matrix":[2,14], "x":14.25, "y":2.5},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 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},
+ {"matrix": [2, 5], "x": 5.25, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.25, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 14], "x": 14.25, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3.25, "w":1.25},
- {"matrix":[3, 2], "x":2.5, "y":3.25, "w":1.25},
- {"matrix":[3, 6], "x":3.75, "y":3.25, "w":6.25},
- {"matrix":[3,10], "x":10, "y":3.25},
- {"matrix":[3,11], "x":11, "y":3.25},
- {"matrix":[3,12], "x":12, "y":3.25},
- {"matrix":[3,13], "x":13.25, "y":3.5},
- {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix":[1,12], "x":15.25, "y":3.5}
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 2], "x": 2.5, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 6], "x": 3.75, "y": 3.25, "w": 6.25},
+ {"matrix": [3, 10], "x": 10, "y": 3.25},
+ {"matrix": [3, 11], "x": 11, "y": 3.25},
+ {"matrix": [3, 12], "x": 12, "y": 3.25},
+ {"matrix": [3, 13], "x": 13.25, "y": 3.5},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix": [1, 12], "x": 15.25, "y": 3.5}
]
}
}
diff --git a/keyboards/keychron/q9/ansi/keymaps/default/keymap.c b/keyboards/keychron/q9/ansi/keymaps/default/keymap.c
index 195f4cdb850f..1c2d017284d8 100644
--- a/keyboards/keychron/q9/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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_DEL,
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_52(
- 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_52(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [_FN3] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q9/ansi/keymaps/keychron/config.h b/keyboards/keychron/q9/ansi/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q9/ansi/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/q9/ansi/keymaps/keychron/keymap.c
index 966951e16890..f6592924f736 100644
--- a/keyboards/keychron/q9/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,27 +32,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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_DEL,
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_52(
+ [_FN1] = LAYOUT_ansi_52(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [_FN3] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,19 +61,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q9/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/q9/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/q9/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q9/ansi/keymaps/via/config.h b/keyboards/keychron/q9/ansi/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q9/ansi/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/ansi/keymaps/via/keymap.c b/keyboards/keychron/q9/ansi/keymaps/via/keymap.c
index 195f4cdb850f..1c2d017284d8 100644
--- a/keyboards/keychron/q9/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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_DEL,
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_52(
- 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_52(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [_FN3] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q9/ansi/readme.md b/keyboards/keychron/q9/ansi/readme.md
new file mode 100644
index 000000000000..95eac692a6d3
--- /dev/null
+++ b/keyboards/keychron/q9/ansi/readme.md
@@ -0,0 +1 @@
+# The ANSI variant of the Keychron Q9
diff --git a/keyboards/keychron/q9/ansi/rules.mk b/keyboards/keychron/q9/ansi/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/q9/ansi/rules.mk
+++ b/keyboards/keychron/q9/ansi/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
index be991f8426e1..de0eda1c023a 100644
--- a/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q9/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -106,8 +106,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q9/ansi_encoder/config.h b/keyboards/keychron/q9/ansi_encoder/config.h
index a2e2ed4f9d99..6850e5c2d67d 100644
--- a/keyboards/keychron/q9/ansi_encoder/config.h
+++ b/keyboards/keychron/q9/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q9/ansi_encoder/info.json b/keyboards/keychron/q9/ansi_encoder/info.json
index a11eb3b91361..4fd5352638a0 100644
--- a/keyboards/keychron/q9/ansi_encoder/info.json
+++ b/keyboards/keychron/q9/ansi_encoder/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0191",
- "device_version": "1.0.4"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -37,61 +26,61 @@
"layouts": {
"LAYOUT_ansi_52": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25, "w":1.5},
- {"matrix":[0, 1], "x":1.5, "y":0.25},
- {"matrix":[0, 2], "x":2.5, "y":0.25},
- {"matrix":[0, 3], "x":3.5, "y":0.25},
- {"matrix":[0, 4], "x":4.5, "y":0.25},
- {"matrix":[0, 5], "x":5.5, "y":0.25},
- {"matrix":[0, 6], "x":6.5, "y":0.25},
- {"matrix":[0, 7], "x":7.5, "y":0.25},
- {"matrix":[0, 8], "x":8.5, "y":0.25},
- {"matrix":[0, 9], "x":9.5, "y":0.25},
- {"matrix":[0,10], "x":10.5, "y":0.25},
- {"matrix":[0,11], "x":11.5, "y":0.25},
- {"matrix":[0,12], "x":12.5, "y":0.25},
- {"matrix":[0,13], "x":13.5, "y":0.25, "w":1.5},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25, "w": 1.5},
+ {"matrix": [0, 1], "x": 1.5, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.5, "y": 0.25},
+ {"matrix": [0, 3], "x": 3.5, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.5, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.5, "y": 0.25},
+ {"matrix": [0, 7], "x": 7.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 8.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 12], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 13.5, "y": 0.25, "w": 1.5},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.75},
- {"matrix":[1, 1], "x":1.75, "y":1.25},
- {"matrix":[1, 2], "x":2.75, "y":1.25},
- {"matrix":[1, 3], "x":3.75, "y":1.25},
- {"matrix":[1, 4], "x":4.75, "y":1.25},
- {"matrix":[1, 5], "x":5.75, "y":1.25},
- {"matrix":[1, 6], "x":6.75, "y":1.25},
- {"matrix":[1, 7], "x":7.75, "y":1.25},
- {"matrix":[1, 8], "x":8.75, "y":1.25},
- {"matrix":[1, 9], "x":9.75, "y":1.25},
- {"matrix":[1,10], "x":10.75, "y":1.25},
- {"matrix":[1,11], "x":11.75, "y":1.25},
- {"matrix":[1,13], "x":12.75, "y":1.25, "w":2.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.75},
+ {"matrix": [1, 1], "x": 1.75, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.75, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.75, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.75, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.75, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.75, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.75, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.75, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.75, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.75, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.75, "y": 1.25},
+ {"matrix": [1, 13], "x": 12.75, "y": 1.25, "w": 2.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":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},
- {"matrix":[2, 5], "x":5.25, "y":2.25},
- {"matrix":[2, 6], "x":6.25, "y":2.25},
- {"matrix":[2, 7], "x":7.25, "y":2.25},
- {"matrix":[2, 8], "x":8.25, "y":2.25},
- {"matrix":[2, 9], "x":9.25, "y":2.25},
- {"matrix":[2,10], "x":10.25, "y":2.25},
- {"matrix":[2,11], "x":11.25, "y":2.25},
- {"matrix":[2,13], "x":12.25, "y":2.25, "w":1.75},
- {"matrix":[2,14], "x":14.25, "y":2.5},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 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},
+ {"matrix": [2, 5], "x": 5.25, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.25, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 14], "x": 14.25, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3.25, "w":1.25},
- {"matrix":[3, 2], "x":2.5, "y":3.25, "w":1.25},
- {"matrix":[3, 6], "x":3.75, "y":3.25, "w":6.25},
- {"matrix":[3,10], "x":10, "y":3.25},
- {"matrix":[3,11], "x":11, "y":3.25},
- {"matrix":[3,12], "x":12, "y":3.25},
- {"matrix":[3,13], "x":13.25, "y":3.5},
- {"matrix":[3,14], "x":14.25, "y":3.5},
- {"matrix":[1,12], "x":15.25, "y":3.5}
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 2], "x": 2.5, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 6], "x": 3.75, "y": 3.25, "w": 6.25},
+ {"matrix": [3, 10], "x": 10, "y": 3.25},
+ {"matrix": [3, 11], "x": 11, "y": 3.25},
+ {"matrix": [3, 12], "x": 12, "y": 3.25},
+ {"matrix": [3, 13], "x": 13.25, "y": 3.5},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
+ {"matrix": [1, 12], "x": 15.25, "y": 3.5}
]
}
}
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q9/ansi_encoder/keymaps/default/keymap.c
index d20ed4cea3ad..eb5a5fa3b3e4 100644
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_52(
- 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,
+ [_FN1] = LAYOUT_ansi_52(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_52(
- 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,
+ [_FN2] = LAYOUT_ansi_52(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [_FN3] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/keymap.c
index a9bfa25aff5e..c8718da22879 100644
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,21 +32,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_52(
+ [_FN1] = LAYOUT_ansi_52(
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_ansi_52(
+ [_FN2] = LAYOUT_ansi_52(
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, _______, _______, _______, _______, _______, _______,
@@ -61,30 +60,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/q9/ansi_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q9/ansi_encoder/keymaps/via/keymap.c
index d20ed4cea3ad..eb5a5fa3b3e4 100644
--- a/keyboards/keychron/q9/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_52(
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_52(
- 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,
+ [_FN1] = LAYOUT_ansi_52(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_52(
- 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,
+ [_FN2] = LAYOUT_ansi_52(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_52(
+ [_FN3] = LAYOUT_ansi_52(
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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9/ansi_encoder/readme.md b/keyboards/keychron/q9/ansi_encoder/readme.md
new file mode 100644
index 000000000000..492aaf47dc27
--- /dev/null
+++ b/keyboards/keychron/q9/ansi_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ANSI variant of the Keychron Q9
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q9/ansi_encoder/rules.mk b/keyboards/keychron/q9/ansi_encoder/rules.mk
index 4bc1e23a57a0..911c497043a0 100644
--- a/keyboards/keychron/q9/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q9/ansi_encoder/rules.mk
@@ -1,8 +1,19 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+ENCODER_MAP_ENBALE = no
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q9/config.h b/keyboards/keychron/q9/config.h
index 1902ef588326..742dde3ff27e 100644
--- a/keyboards/keychron/q9/config.h
+++ b/keyboards/keychron/q9/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,6 @@
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { { 3, 4 } }
-#define SCAN_COUNT_MAX 100
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 1
@@ -34,13 +33,14 @@
#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
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -77,13 +77,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -98,5 +94,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(4)
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/q9/halconf.h b/keyboards/keychron/q9/halconf.h
index 463d177eabc7..41bddcb2799b 100644
--- a/keyboards/keychron/q9/halconf.h
+++ b/keyboards/keychron/q9/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/q9/iso/config.h b/keyboards/keychron/q9/iso/config.h
index 761110688420..eba60f456252 100644
--- a/keyboards/keychron/q9/iso/config.h
+++ b/keyboards/keychron/q9/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q9/iso/info.json b/keyboards/keychron/q9/iso/info.json
index 0e13b382c7c1..3e9a7690c18a 100644
--- a/keyboards/keychron/q9/iso/info.json
+++ b/keyboards/keychron/q9/iso/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0192",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -32,62 +21,62 @@
"layouts": {
"LAYOUT_iso_53": {
"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,14], "x":15.25, "y":0},
+ {"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, 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},
- {"matrix":[0,13], "x":13.75, "y":0, "w":1.25, "h":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"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},
+ {"matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.25, "h": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.25},
- {"matrix":[2, 1], "x":1.25, "y":2},
- {"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": [2, 0], "x": 0, "y": 2, "w": 1.25},
+ {"matrix": [2, 1], "x": 1.25, "y": 2},
+ {"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, 6], "x":3.75, "y":3, "w":6.25},
- {"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}
+ {"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, 6], "x": 3.75, "y": 3, "w": 6.25},
+ {"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}
]
}
}
diff --git a/keyboards/keychron/q9/iso/iso.c b/keyboards/keychron/q9/iso/iso.c
index 661653580546..0e258e8c6399 100644
--- a/keyboards/keychron/q9/iso/iso.c
+++ b/keyboards/keychron/q9/iso/iso.c
@@ -21,12 +21,12 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, L_16, J_16, K_16}, // Tab
{0, L_15, J_15, K_15}, // Q
{0, L_14, J_14, K_14}, // W
@@ -107,8 +107,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q9/iso/keymaps/default/keymap.c b/keyboards/keychron/q9/iso/keymaps/default/keymap.c
index 08ac2fdf71f2..0724304e78f5 100644
--- a/keyboards/keychron/q9/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9/iso/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_53(
+ [_FN1] = LAYOUT_iso_53(
KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______,
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_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_53(
+ [_FN3] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q9/iso/keymaps/keychron/config.h b/keyboards/keychron/q9/iso/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q9/iso/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q9/iso/keymaps/keychron/keymap.c
index 1f9df82db2c3..0ee0fb695965 100644
--- a/keyboards/keychron/q9/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9/iso/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,27 +32,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_53(
+ [_FN1] = LAYOUT_iso_53(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_53(
+ [_FN3] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,19 +61,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q9/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q9/iso/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/q9/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q9/iso/keymaps/via/config.h b/keyboards/keychron/q9/iso/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q9/iso/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso/keymaps/via/keymap.c b/keyboards/keychron/q9/iso/keymaps/via/keymap.c
index 08ac2fdf71f2..0724304e78f5 100644
--- a/keyboards/keychron/q9/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9/iso/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_53(
+ [_FN1] = LAYOUT_iso_53(
KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______,
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_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_53(
+ [_FN3] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/q9/iso/readme.md b/keyboards/keychron/q9/iso/readme.md
new file mode 100644
index 000000000000..72c4324575cf
--- /dev/null
+++ b/keyboards/keychron/q9/iso/readme.md
@@ -0,0 +1 @@
+# The ISO variant of the Keychron Q9
diff --git a/keyboards/keychron/q9/iso/rules.mk b/keyboards/keychron/q9/iso/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/q9/iso/rules.mk
+++ b/keyboards/keychron/q9/iso/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q9/iso_encoder/config.h b/keyboards/keychron/q9/iso_encoder/config.h
index b56185f2b148..65d7ad770824 100644
--- a/keyboards/keychron/q9/iso_encoder/config.h
+++ b/keyboards/keychron/q9/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/q9/iso_encoder/info.json b/keyboards/keychron/q9/iso_encoder/info.json
index 479cb853e169..ecf944744d82 100644
--- a/keyboards/keychron/q9/iso_encoder/info.json
+++ b/keyboards/keychron/q9/iso_encoder/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0193",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -37,62 +26,62 @@
"layouts": {
"LAYOUT_iso_53": {
"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,14], "x":15.25, "y":0},
+ {"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, 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},
- {"matrix":[0,13], "x":13.75, "y":0, "w":1.25, "h":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"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},
+ {"matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.25, "h": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.25},
- {"matrix":[2, 1], "x":1.25, "y":2},
- {"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": [2, 0], "x": 0, "y": 2, "w": 1.25},
+ {"matrix": [2, 1], "x": 1.25, "y": 2},
+ {"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, 6], "x":3.75, "y":3, "w":6.25},
- {"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}
+ {"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, 6], "x": 3.75, "y": 3, "w": 6.25},
+ {"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}
]
}
}
diff --git a/keyboards/keychron/q9/iso_encoder/iso_encoder.c b/keyboards/keychron/q9/iso_encoder/iso_encoder.c
index aff90cb9b330..0804f33671fc 100644
--- a/keyboards/keychron/q9/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q9/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,12 +21,12 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, L_16, J_16, K_16}, // Tab
{0, L_15, J_15, K_15}, // Q
{0, L_14, J_14, K_14}, // W
@@ -107,8 +107,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/q9/iso_encoder/keymaps/default/keymap.c
index 27f27efb0ec9..3541851973b1 100644
--- a/keyboards/keychron/q9/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_53(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG,
+ [_FN1] = LAYOUT_iso_53(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______,
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_iso_53(
- 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,
+ [_FN2] = LAYOUT_iso_53(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_53(
+ [_FN3] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/keymap.c
index b91472957344..2eab2923895b 100644
--- a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,27 +32,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_53(
+ [_FN1] = LAYOUT_iso_53(
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_iso_53(
+ [_FN2] = LAYOUT_iso_53(
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_iso_53(
+ [_FN3] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,30 +60,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/q9/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/via/config.h b/keyboards/keychron/q9/iso_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/q9/iso_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/q9/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/q9/iso_encoder/keymaps/via/keymap.c
index 27f27efb0ec9..94b160f1c89a 100644
--- a/keyboards/keychron/q9/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9/iso_encoder/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,27 +34,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_53(
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_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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_53(
- KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_TOG,
+ [_FN1] = LAYOUT_iso_53(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______,
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_iso_53(
- 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,
+ [_FN2] = LAYOUT_iso_53(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_53(
+ [_FN3] = LAYOUT_iso_53(
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_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_BSPC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +62,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/q9/iso_encoder/readme.md b/keyboards/keychron/q9/iso_encoder/readme.md
new file mode 100644
index 000000000000..0ebe5dfc0adc
--- /dev/null
+++ b/keyboards/keychron/q9/iso_encoder/readme.md
@@ -0,0 +1,5 @@
+# The ISO variant of the Keychron Q9
+
+- Enable EC11 rotary encoder.
+- Turn clockwise to increase volume and turn anti-clockwise to decrease volume.
+- Press top right key pushbutton to mute.
diff --git a/keyboards/keychron/q9/iso_encoder/rules.mk b/keyboards/keychron/q9/iso_encoder/rules.mk
index 4bc1e23a57a0..911c497043a0 100644
--- a/keyboards/keychron/q9/iso_encoder/rules.mk
+++ b/keyboards/keychron/q9/iso_encoder/rules.mk
@@ -1,8 +1,19 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+ENCODER_MAP_ENBALE = no
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/q9/q9.c b/keyboards/keychron/q9/q9.c
index a1ebd1ddb215..51dea886f1ca 100644
--- a/keyboards/keychron/q9/q9.c
+++ b/keyboards/keychron/q9/q9.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -24,6 +24,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -31,4 +32,49 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
+
+#endif // DIP_SWITCH_ENABLE
+
+#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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q9/readme.md b/keyboards/keychron/q9/readme.md
index 754634fb6394..e2368ff75873 100644
--- a/keyboards/keychron/q9/readme.md
+++ b/keyboards/keychron/q9/readme.md
@@ -1,27 +1,19 @@
# Keychron Q9
-![Keychron Q9](https://i.imgur.com/G8xJ4TR.jpg)
-
A customizable 40% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q9
-* Hardware Availability: [Keychron Q9 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-q9-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/q9/ansi:default
- make keychron/q9/ansi_encoder:default
- make keychron/q9/iso:default
- make keychron/q9/iso_enocder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/q9/ansi:default:flash
- make keychron/q9/ansi_encoder:default:flash
- make keychron/q9/iso:default:flash
- make keychron/q9/iso_encoder:default:flash
-**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+**Reset Key**: Hold down the key located at *K00*, which 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).
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
old mode 100644
new mode 100755
index 7ff63fd8896d..c0b4b3a32ddb
--- a/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/ansi_encoder.c
@@ -17,7 +17,6 @@
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
-// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -81,32 +80,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{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}
-};
-
-#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, 11, 12, 13, __ },
- { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 52, 26, 27 },
- { 28, __, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, __, 39, 40 },
- { 41, 42, 43, 44, __, __, 45, __, __, 46, 47, 48, 49, 50, 51 },
- },
- {
- // LED Index to Physical Position
- {2,0}, {20,0}, {35,0}, {50,0}, {65,0}, {80,0}, {94,0}, {109,0}, {124,0}, {139,0}, {154,0}, {168,0}, {183,0}, {202,0},
- {4,21}, {24,21}, {39,21}, {54,21}, {68,21}, {83,21}, {98,21}, {113,21}, {128,21}, {142,21}, {157,21}, {172,21}, {196,21}, {224,27},
- {7,43}, {31,43}, {46,43}, {61,43}, {76,43}, {91,43}, {105,43}, {120,43}, {135,43}, {150,43}, {165,43}, {185,43}, {205,43},
- {0,64}, {18,64}, {37,64}, {55,64}, {81,64}, {118,64}, {146,64}, {161,64}, {176,64}, {190,64}, {205,64}, {220,64},
- },
- {
- // RGB LED Index to Flag
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 1, 4, 4, 1, 1, 1,
- }
+ {0, C_4, A_4, B_4},
};
#endif
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/config.h b/keyboards/keychron/q9_plus/ansi_encoder/config.h
old mode 100644
new mode 100755
index e88f3d8252e4..1943a0fb2755
--- a/keyboards/keychron/q9_plus/ansi_encoder/config.h
+++ b/keyboards/keychron/q9_plus/ansi_encoder/config.h
@@ -17,8 +17,7 @@
#pragma once
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 54
-#define RGB_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL
+#define RGB_MATRIX_LED_COUNT 53
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/info.json b/keyboards/keychron/q9_plus/ansi_encoder/info.json
old mode 100644
new mode 100755
index 21bc9be2f228..c465071ca14a
--- a/keyboards/keychron/q9_plus/ansi_encoder/info.json
+++ b/keyboards/keychron/q9_plus/ansi_encoder/info.json
@@ -1,100 +1,66 @@
{
- "keyboard_name": "Keychron Q9 Plus",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0194",
"device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "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"}
- ]
- },
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT": {
- "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},
+ "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], "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":[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], "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":[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], "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}
- ]
- }
+ {"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}
+ ]
}
}
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
old mode 100644
new mode 100755
index abeafa492272..06c43f6929d7
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,45 +16,44 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
WIN_BASE,
MAC_FN1,
WIN_FN1,
- FN2
+ 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(
+ [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(
+ [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(
+ [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(
+ [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(
+ [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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +61,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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 // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
old mode 100644
new mode 100755
index ee325681483f..f1adcab005e8
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/default/rules.mk
@@ -1 +1,2 @@
+VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
old mode 100644
new mode 100755
index c8a4f2e2720f..bf995fca2b25
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,44 +16,42 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
-
-// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
MAC_FN1,
WIN_FN1,
- FN2
+ FN2,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT(
+ [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(
+ [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(
+ [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(
+ [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(
+ [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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,30 +59,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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 // ENCODER_MAP_ENABLE
-
-// clang-format on
+#endif
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
old mode 100644
new mode 100755
index 88c27a468a8b..9cf1a9b56cba
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
old mode 100644
new mode 100755
index abeafa492272..06c43f6929d7
--- a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,45 +16,44 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
WIN_BASE,
MAC_FN1,
WIN_FN1,
- FN2
+ 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(
+ [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(
+ [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(
+ [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(
+ [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(
+ [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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,11 +61,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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 // ENCODER_MAP_ENABLE
+#endif
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/keymaps/via/rules.mk
old mode 100644
new mode 100755
diff --git a/keyboards/keychron/q9_plus/ansi_encoder/rules.mk b/keyboards/keychron/q9_plus/ansi_encoder/rules.mk
old mode 100644
new mode 100755
index bbe678bed5d4..e69de29bb2d1
--- a/keyboards/keychron/q9_plus/ansi_encoder/rules.mk
+++ b/keyboards/keychron/q9_plus/ansi_encoder/rules.mk
@@ -1,8 +0,0 @@
-# Build Options
-# change yes to no to disable
-#
-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
diff --git a/keyboards/keychron/q9_plus/config.h b/keyboards/keychron/q9_plus/config.h
old mode 100644
new mode 100755
index 6dea4a646494..a8cba07e9028
--- a/keyboards/keychron/q9_plus/config.h
+++ b/keyboards/keychron/q9_plus/config.h
@@ -20,8 +20,7 @@
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 3, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID {{ 3, 4 }}
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 1
@@ -48,55 +47,8 @@
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(4)
+/* Old default behavior of mod-taps */
+#define HOLD_ON_OTHER_KEY_PRESS
diff --git a/keyboards/keychron/q9_plus/halconf.h b/keyboards/keychron/q9_plus/halconf.h
old mode 100644
new mode 100755
index 463d177eabc7..41bddcb2799b
--- a/keyboards/keychron/q9_plus/halconf.h
+++ b/keyboards/keychron/q9_plus/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/q9_plus/info.json b/keyboards/keychron/q9_plus/info.json
new file mode 100755
index 000000000000..c56650cb1dca
--- /dev/null
+++ b/keyboards/keychron/q9_plus/info.json
@@ -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
+ }
+ }
+}
diff --git a/keyboards/keychron/q9_plus/mcuconf.h b/keyboards/keychron/q9_plus/mcuconf.h
old mode 100644
new mode 100755
diff --git a/keyboards/keychron/q9_plus/q9_plus.c b/keyboards/keychron/q9_plus/q9_plus.c
old mode 100644
new mode 100755
index 1c742a26adab..848117d323be
--- a/keyboards/keychron/q9_plus/q9_plus.c
+++ b/keyboards/keychron/q9_plus/q9_plus.c
@@ -25,10 +25,57 @@ const matrix_row_t matrix_mask[] = {
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {
- if (!dip_switch_update_user(index, active)) { return false;}
+ 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;
+ }
+
+ 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
diff --git a/keyboards/keychron/q9_plus/readme.md b/keyboards/keychron/q9_plus/readme.md
old mode 100644
new mode 100755
index 174cf8c2328f..d0ab58e13c3a
--- a/keyboards/keychron/q9_plus/readme.md
+++ b/keyboards/keychron/q9_plus/readme.md
@@ -1,20 +1,20 @@
# Keychron Q9 Plus
-![Keychron Q9 Plus]()
+![Keychron Q9 Plus](https://i.imgur.com/Yp9K7Gsh.jpg)
A customizable 40% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron Q9 Plus
-* Hardware Availability: []()
+* 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/ansi_encoder:default
+ make keychron/q9_plus/ansi_encoder:default
-Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
+Flashing example for this keyboard:
- make keychron/q9/ansi:default:flash
+ make keychron/q9_plus/ansi:default:flash
**Reset Key**: Hold down the key located at *K00*, programmed as *TAB* while plugging in the keyboard.
diff --git a/keyboards/keychron/s1/ansi/rgb/config.h b/keyboards/keychron/s1/ansi/rgb/config.h
index b0d214f331e2..9cf8df3b8243 100644
--- a/keyboards/keychron/s1/ansi/rgb/config.h
+++ b/keyboards/keychron/s1/ansi/rgb/config.h
@@ -26,7 +26,6 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48, 0xA0, 0xA0, 0x48 }
@@ -68,13 +67,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -88,3 +83,6 @@
// #define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keychron/s1/ansi/rgb/info.json b/keyboards/keychron/s1/ansi/rgb/info.json
index 822f8f252170..3bef5f343c30 100644
--- a/keyboards/keychron/s1/ansi/rgb/info.json
+++ b/keyboards/keychron/s1/ansi/rgb/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0410",
- "device_version": "1.0.5"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -29,98 +18,102 @@
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
+ "layout_aliases": {
+ "LAYOUT_ansi_84": "LAYOUT_75_ansi"
+ },
+ "community_layouts": ["75_ansi"],
"layouts": {
"LAYOUT_75_ansi": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[3,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [3, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15, "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":[1, 4], "x":4, "y":1},
- {"matrix":[1, 5], "x":5, "y":1},
- {"matrix":[1, 6], "x":6, "y":1},
- {"matrix":[1, 7], "x":7, "y":1},
- {"matrix":[1, 8], "x":8, "y":1},
- {"matrix":[1, 9], "x":9, "y":1},
- {"matrix":[1,10], "x":10, "y":1},
- {"matrix":[1,11], "x":11, "y":1},
- {"matrix":[1,12], "x":12, "y":1},
- {"matrix":[1,13], "x":13, "y":1, "w":2},
- {"matrix":[1,14], "x":15, "y":1},
+ {"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": [1, 4], "x": 4, "y": 1},
+ {"matrix": [1, 5], "x": 5, "y": 1},
+ {"matrix": [1, 6], "x": 6, "y": 1},
+ {"matrix": [1, 7], "x": 7, "y": 1},
+ {"matrix": [1, 8], "x": 8, "y": 1},
+ {"matrix": [1, 9], "x": 9, "y": 1},
+ {"matrix": [1, 10], "x": 10, "y": 1},
+ {"matrix": [1, 11], "x": 11, "y": 1},
+ {"matrix": [1, 12], "x": 12, "y": 1},
+ {"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
+ {"matrix": [1, 14], "x": 15, "y": 1},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2},
- {"matrix":[2, 2], "x":2.5, "y":2},
- {"matrix":[2, 3], "x":3.5, "y":2},
- {"matrix":[2, 4], "x":4.5, "y":2},
- {"matrix":[2, 5], "x":5.5, "y":2},
- {"matrix":[2, 6], "x":6.5, "y":2},
- {"matrix":[2, 7], "x":7.5, "y":2},
- {"matrix":[2, 8], "x":8.5, "y":2},
- {"matrix":[2, 9], "x":9.5, "y":2},
- {"matrix":[2,10], "x":10.5, "y":2},
- {"matrix":[2,11], "x":11.5, "y":2},
- {"matrix":[2,12], "x":12.5, "y":2},
- {"matrix":[2,13], "x":13.5, "y":2, "w":1.5},
- {"matrix":[2,14], "x":15, "y":2},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2},
+ {"matrix": [2, 2], "x": 2.5, "y": 2},
+ {"matrix": [2, 3], "x": 3.5, "y": 2},
+ {"matrix": [2, 4], "x": 4.5, "y": 2},
+ {"matrix": [2, 5], "x": 5.5, "y": 2},
+ {"matrix": [2, 6], "x": 6.5, "y": 2},
+ {"matrix": [2, 7], "x": 7.5, "y": 2},
+ {"matrix": [2, 8], "x": 8.5, "y": 2},
+ {"matrix": [2, 9], "x": 9.5, "y": 2},
+ {"matrix": [2, 10], "x": 10.5, "y": 2},
+ {"matrix": [2, 11], "x": 11.5, "y": 2},
+ {"matrix": [2, 12], "x": 12.5, "y": 2},
+ {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
+ {"matrix": [2, 14], "x": 15, "y": 2},
- {"matrix":[3, 0], "x":0, "y":3, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3},
- {"matrix":[3, 2], "x":2.75, "y":3},
- {"matrix":[3, 3], "x":3.75, "y":3},
- {"matrix":[3, 4], "x":4.75, "y":3},
- {"matrix":[3, 5], "x":5.75, "y":3},
- {"matrix":[3, 6], "x":6.75, "y":3},
- {"matrix":[3, 7], "x":7.75, "y":3},
- {"matrix":[3, 8], "x":8.75, "y":3},
- {"matrix":[3, 9], "x":9.75, "y":3},
- {"matrix":[3,10], "x":10.75, "y":3},
- {"matrix":[3,11], "x":11.75, "y":3},
- {"matrix":[3,13], "x":12.75, "y":3, "w":2.25},
- {"matrix":[3,14], "x":15, "y":3},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3},
+ {"matrix": [3, 2], "x": 2.75, "y": 3},
+ {"matrix": [3, 3], "x": 3.75, "y": 3},
+ {"matrix": [3, 4], "x": 4.75, "y": 3},
+ {"matrix": [3, 5], "x": 5.75, "y": 3},
+ {"matrix": [3, 6], "x": 6.75, "y": 3},
+ {"matrix": [3, 7], "x": 7.75, "y": 3},
+ {"matrix": [3, 8], "x": 8.75, "y": 3},
+ {"matrix": [3, 9], "x": 9.75, "y": 3},
+ {"matrix": [3, 10], "x": 10.75, "y": 3},
+ {"matrix": [3, 11], "x": 11.75, "y": 3},
+ {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
+ {"matrix": [3, 14], "x": 15, "y": 3},
- {"matrix":[4, 0], "x":0, "y":4, "w":2.25},
- {"matrix":[4, 2], "x":2.25, "y":4},
- {"matrix":[4, 3], "x":3.25, "y":4},
- {"matrix":[4, 4], "x":4.25, "y":4},
- {"matrix":[4, 5], "x":5.25, "y":4},
- {"matrix":[4, 6], "x":6.25, "y":4},
- {"matrix":[4, 7], "x":7.25, "y":4},
- {"matrix":[4, 8], "x":8.25, "y":4},
- {"matrix":[4, 9], "x":9.25, "y":4},
- {"matrix":[4,10], "x":10.25, "y":4},
- {"matrix":[4,11], "x":11.25, "y":4},
- {"matrix":[4,12], "x":12.25, "y":4, "w":1.75},
- {"matrix":[4,13], "x":14, "y":4},
- {"matrix":[4,14], "x":15, "y":4},
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4},
+ {"matrix": [4, 3], "x": 3.25, "y": 4},
+ {"matrix": [4, 4], "x": 4.25, "y": 4},
+ {"matrix": [4, 5], "x": 5.25, "y": 4},
+ {"matrix": [4, 6], "x": 6.25, "y": 4},
+ {"matrix": [4, 7], "x": 7.25, "y": 4},
+ {"matrix": [4, 8], "x": 8.25, "y": 4},
+ {"matrix": [4, 9], "x": 9.25, "y": 4},
+ {"matrix": [4, 10], "x": 10.25, "y": 4},
+ {"matrix": [4, 11], "x": 11.25, "y": 4},
+ {"matrix": [4, 12], "x": 12.25, "y": 4, "w": 1.75},
+ {"matrix": [4, 13], "x": 14, "y": 4},
+ {"matrix": [4, 14], "x": 15, "y": 4},
- {"matrix":[5, 0], "x":0, "y":5, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5, "w":6.25},
- {"matrix":[5, 9], "x":10, "y":5},
- {"matrix":[5,10], "x":11, "y":5},
- {"matrix":[5,11], "x":12, "y":5},
- {"matrix":[5,12], "x":13, "y":5},
- {"matrix":[5,13], "x":14, "y":5},
- {"matrix":[5,14], "x":15, "y":5}
+ {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
+ {"matrix": [5, 9], "x": 10, "y": 5},
+ {"matrix": [5, 10], "x": 11, "y": 5},
+ {"matrix": [5, 11], "x": 12, "y": 5},
+ {"matrix": [5, 12], "x": 13, "y": 5},
+ {"matrix": [5, 13], "x": 14, "y": 5},
+ {"matrix": [5, 14], "x": 15, "y": 5}
]
}
}
diff --git a/keyboards/keychron/s1/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/s1/ansi/rgb/keymaps/default/keymap.c
index 46a18690600c..68a5434bed70 100644
--- a/keyboards/keychron/s1/ansi/rgb/keymaps/default/keymap.c
+++ b/keyboards/keychron/s1/ansi/rgb/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_75_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/keymap.c
index 833d745549b0..3a91b3cf7c44 100644
--- a/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -63,19 +62,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+bool process_record_user(uint16_t keycode, keyrecord_t * record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/s1/ansi/rgb/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/s1/ansi/rgb/keymaps/via/keymap.c b/keyboards/keychron/s1/ansi/rgb/keymaps/via/keymap.c
index 62df94d330ec..869d359a1e82 100644
--- a/keyboards/keychron/s1/ansi/rgb/keymaps/via/keymap.c
+++ b/keyboards/keychron/s1/ansi/rgb/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_75_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/s1/ansi/rgb/rgb.c b/keyboards/keychron/s1/ansi/rgb/rgb.c
index 045fa0bd7952..a0a2d25f94d2 100644
--- a/keyboards/keychron/s1/ansi/rgb/rgb.c
+++ b/keyboards/keychron/s1/ansi/rgb/rgb.c
@@ -24,9 +24,9 @@ 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
- * | | | | */
+ * | | G location
+ * | | | B location
+ * | | | | */
{0, I_1, G_1, H_1}, // esc
{0, I_2, G_2, H_2}, // f1
{0, I_3, G_3, H_3}, // f2
@@ -142,11 +142,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/s1/ansi/rgb/rules.mk b/keyboards/keychron/s1/ansi/rgb/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/s1/ansi/rgb/rules.mk
+++ b/keyboards/keychron/s1/ansi/rgb/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/s1/ansi/white/config.h b/keyboards/keychron/s1/ansi/white/config.h
index fc361daa426b..65a79726ca77 100644
--- a/keyboards/keychron/s1/ansi/white/config.h
+++ b/keyboards/keychron/s1/ansi/white/config.h
@@ -24,42 +24,44 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_6CHANNEL
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 } // 250mA
-// { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 } // 127mA
+ // { 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 } // 127mA
/* Disable LED lighting when PC is in suspend */
#define LED_DISABLE_WHEN_USB_SUSPENDED
+/* Enable caps-lock LED */
+#define CAPS_LOCK_LED_INDEX 46
+
// LED Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
#define ENABLE_LED_MATRIX_NONE
-#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
+#define ENABLE_LED_MATRIX_SOLID // Static single val, no speed support
// #define ENABLE_LED_MATRIX_ALPHAS_MODS // Static dual val, speed is val for LEDs marked as modifiers
-#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
+#define ENABLE_LED_MATRIX_BREATHING // Cycling brightness animation
// #define ENABLE_LED_MATRIX_BAND // Band fading brightness scrolling left to right
-#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
-#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
-#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
-#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
-#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
-#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+#define ENABLE_LED_MATRIX_BAND_PINWHEEL // 3 blade spinning pinwheel fades brightness
+#define ENABLE_LED_MATRIX_BAND_SPIRAL // Spinning spiral fades brightness
+#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+#define ENABLE_LED_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+#define ENABLE_LED_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
#define LED_MATRIX_KEYPRESSES
#define LED_MATRIX_KEYRELEASES
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit then fades out
// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE // Value pulses near a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE // Value pulses near multiple key hits then fades out
+#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS // Value pulses the same column and row of a single key hit then fades out
// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS // Value pulses the same column and row of multiple key hits then fades out
// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS // Value pulses away on the same column and row of a single key hit then fades out
// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS // Value pulses away on the same column and row of multiple key hits then fades out
-#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
-#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
+#define ENABLE_LED_MATRIX_SOLID_SPLASH // Value pulses away from a single key hit then fades out
+#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH // Value pulses away from multiple key hits then fades out
// #endif
-#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
-#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
+#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT // Sine wave scrolling from left to right
+#define ENBALE_LED_MATRIX_WAVE_UP_DOWN // Sine wave scrolling from up to down
// #define ENABLE_LED_MATRIX_EFFECT_MAX
diff --git a/keyboards/keychron/s1/ansi/white/info.json b/keyboards/keychron/s1/ansi/white/info.json
index 8f0c49197350..ff0a6b69cbb6 100644
--- a/keyboards/keychron/s1/ansi/white/info.json
+++ b/keyboards/keychron/s1/ansi/white/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0411",
- "device_version": "1.0.3"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
+ "led_matrix": {
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0", "C15", "C14"],
@@ -29,98 +18,102 @@
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
+ "layout_aliases": {
+ "LAYOUT_ansi_84": "LAYOUT_75_ansi"
+ },
+ "community_layouts": ["75_ansi"],
"layouts": {
"LAYOUT_75_ansi": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[3,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [3, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15, "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":[1, 4], "x":4, "y":1},
- {"matrix":[1, 5], "x":5, "y":1},
- {"matrix":[1, 6], "x":6, "y":1},
- {"matrix":[1, 7], "x":7, "y":1},
- {"matrix":[1, 8], "x":8, "y":1},
- {"matrix":[1, 9], "x":9, "y":1},
- {"matrix":[1,10], "x":10, "y":1},
- {"matrix":[1,11], "x":11, "y":1},
- {"matrix":[1,12], "x":12, "y":1},
- {"matrix":[1,13], "x":13, "y":1, "w":2},
- {"matrix":[1,14], "x":15, "y":1},
+ {"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": [1, 4], "x": 4, "y": 1},
+ {"matrix": [1, 5], "x": 5, "y": 1},
+ {"matrix": [1, 6], "x": 6, "y": 1},
+ {"matrix": [1, 7], "x": 7, "y": 1},
+ {"matrix": [1, 8], "x": 8, "y": 1},
+ {"matrix": [1, 9], "x": 9, "y": 1},
+ {"matrix": [1, 10], "x": 10, "y": 1},
+ {"matrix": [1, 11], "x": 11, "y": 1},
+ {"matrix": [1, 12], "x": 12, "y": 1},
+ {"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
+ {"matrix": [1, 14], "x": 15, "y": 1},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2},
- {"matrix":[2, 2], "x":2.5, "y":2},
- {"matrix":[2, 3], "x":3.5, "y":2},
- {"matrix":[2, 4], "x":4.5, "y":2},
- {"matrix":[2, 5], "x":5.5, "y":2},
- {"matrix":[2, 6], "x":6.5, "y":2},
- {"matrix":[2, 7], "x":7.5, "y":2},
- {"matrix":[2, 8], "x":8.5, "y":2},
- {"matrix":[2, 9], "x":9.5, "y":2},
- {"matrix":[2,10], "x":10.5, "y":2},
- {"matrix":[2,11], "x":11.5, "y":2},
- {"matrix":[2,12], "x":12.5, "y":2},
- {"matrix":[2,13], "x":13.5, "y":2, "w":1.5},
- {"matrix":[2,14], "x":15, "y":2},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2},
+ {"matrix": [2, 2], "x": 2.5, "y": 2},
+ {"matrix": [2, 3], "x": 3.5, "y": 2},
+ {"matrix": [2, 4], "x": 4.5, "y": 2},
+ {"matrix": [2, 5], "x": 5.5, "y": 2},
+ {"matrix": [2, 6], "x": 6.5, "y": 2},
+ {"matrix": [2, 7], "x": 7.5, "y": 2},
+ {"matrix": [2, 8], "x": 8.5, "y": 2},
+ {"matrix": [2, 9], "x": 9.5, "y": 2},
+ {"matrix": [2, 10], "x": 10.5, "y": 2},
+ {"matrix": [2, 11], "x": 11.5, "y": 2},
+ {"matrix": [2, 12], "x": 12.5, "y": 2},
+ {"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
+ {"matrix": [2, 14], "x": 15, "y": 2},
- {"matrix":[3, 0], "x":0, "y":3, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3},
- {"matrix":[3, 2], "x":2.75, "y":3},
- {"matrix":[3, 3], "x":3.75, "y":3},
- {"matrix":[3, 4], "x":4.75, "y":3},
- {"matrix":[3, 5], "x":5.75, "y":3},
- {"matrix":[3, 6], "x":6.75, "y":3},
- {"matrix":[3, 7], "x":7.75, "y":3},
- {"matrix":[3, 8], "x":8.75, "y":3},
- {"matrix":[3, 9], "x":9.75, "y":3},
- {"matrix":[3,10], "x":10.75, "y":3},
- {"matrix":[3,11], "x":11.75, "y":3},
- {"matrix":[3,13], "x":12.75, "y":3, "w":2.25},
- {"matrix":[3,14], "x":15, "y":3},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3},
+ {"matrix": [3, 2], "x": 2.75, "y": 3},
+ {"matrix": [3, 3], "x": 3.75, "y": 3},
+ {"matrix": [3, 4], "x": 4.75, "y": 3},
+ {"matrix": [3, 5], "x": 5.75, "y": 3},
+ {"matrix": [3, 6], "x": 6.75, "y": 3},
+ {"matrix": [3, 7], "x": 7.75, "y": 3},
+ {"matrix": [3, 8], "x": 8.75, "y": 3},
+ {"matrix": [3, 9], "x": 9.75, "y": 3},
+ {"matrix": [3, 10], "x": 10.75, "y": 3},
+ {"matrix": [3, 11], "x": 11.75, "y": 3},
+ {"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
+ {"matrix": [3, 14], "x": 15, "y": 3},
- {"matrix":[4, 0], "x":0, "y":4, "w":2.25},
- {"matrix":[4, 2], "x":2.25, "y":4},
- {"matrix":[4, 3], "x":3.25, "y":4},
- {"matrix":[4, 4], "x":4.25, "y":4},
- {"matrix":[4, 5], "x":5.25, "y":4},
- {"matrix":[4, 6], "x":6.25, "y":4},
- {"matrix":[4, 7], "x":7.25, "y":4},
- {"matrix":[4, 8], "x":8.25, "y":4},
- {"matrix":[4, 9], "x":9.25, "y":4},
- {"matrix":[4,10], "x":10.25, "y":4},
- {"matrix":[4,11], "x":11.25, "y":4},
- {"matrix":[4,12], "x":12.25, "y":4, "w":1.75},
- {"matrix":[4,13], "x":14, "y":4},
- {"matrix":[4,14], "x":15, "y":4},
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4},
+ {"matrix": [4, 3], "x": 3.25, "y": 4},
+ {"matrix": [4, 4], "x": 4.25, "y": 4},
+ {"matrix": [4, 5], "x": 5.25, "y": 4},
+ {"matrix": [4, 6], "x": 6.25, "y": 4},
+ {"matrix": [4, 7], "x": 7.25, "y": 4},
+ {"matrix": [4, 8], "x": 8.25, "y": 4},
+ {"matrix": [4, 9], "x": 9.25, "y": 4},
+ {"matrix": [4, 10], "x": 10.25, "y": 4},
+ {"matrix": [4, 11], "x": 11.25, "y": 4},
+ {"matrix": [4, 12], "x": 12.25, "y": 4, "w": 1.75},
+ {"matrix": [4, 13], "x": 14, "y": 4},
+ {"matrix": [4, 14], "x": 15, "y": 4},
- {"matrix":[5, 0], "x":0, "y":5, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5, "w":6.25},
- {"matrix":[5, 9], "x":10, "y":5},
- {"matrix":[5,10], "x":11, "y":5},
- {"matrix":[5,11], "x":12, "y":5},
- {"matrix":[5,12], "x":13, "y":5},
- {"matrix":[5,13], "x":14, "y":5},
- {"matrix":[5,14], "x":15, "y":5}
+ {"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5, "w": 6.25},
+ {"matrix": [5, 9], "x": 10, "y": 5},
+ {"matrix": [5, 10], "x": 11, "y": 5},
+ {"matrix": [5, 11], "x": 12, "y": 5},
+ {"matrix": [5, 12], "x": 13, "y": 5},
+ {"matrix": [5, 13], "x": 14, "y": 5},
+ {"matrix": [5, 14], "x": 15, "y": 5}
]
}
}
diff --git a/keyboards/keychron/s1/ansi/white/keymaps/default/keymap.c b/keyboards/keychron/s1/ansi/white/keymaps/default/keymap.c
index 75b81b5c60ef..00dc1c07793b 100644
--- a/keyboards/keychron/s1/ansi/white/keymaps/default/keymap.c
+++ b/keyboards/keychron/s1/ansi/white/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_75_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, BL_STEP,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/s1/ansi/white/keymaps/keychron/keymap.c b/keyboards/keychron/s1/ansi/white/keymaps/keychron/keymap.c
index 6df74d18e4d1..baced4f97c73 100644
--- a/keyboards/keychron/s1/ansi/white/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/s1/ansi/white/keymaps/keychron/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -63,19 +62,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/s1/ansi/white/keymaps/keychron/rules.mk b/keyboards/keychron/s1/ansi/white/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/s1/ansi/white/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/s1/ansi/white/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/s1/ansi/white/keymaps/via/keymap.c b/keyboards/keychron/s1/ansi/white/keymaps/via/keymap.c
index bf45ace9b3e0..10d2e08aef34 100644
--- a/keyboards/keychron/s1/ansi/white/keymaps/via/keymap.c
+++ b/keyboards/keychron/s1/ansi/white/keymaps/via/keymap.c
@@ -30,7 +30,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_75_ansi(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, BL_STEP,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_DEL, BL_STEP,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/s1/ansi/white/rules.mk b/keyboards/keychron/s1/ansi/white/rules.mk
index 4bc1e23a57a0..cb70ced9173b 100644
--- a/keyboards/keychron/s1/ansi/white/rules.mk
+++ b/keyboards/keychron/s1/ansi/white/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+LED_MATRIX_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
diff --git a/keyboards/keychron/s1/ansi/white/white.c b/keyboards/keychron/s1/ansi/white/white.c
index 89d5991119cb..e41ba06401ca 100644
--- a/keyboards/keychron/s1/ansi/white/white.c
+++ b/keyboards/keychron/s1/ansi/white/white.c
@@ -16,8 +16,10 @@
#include "quantum.h"
-// clang-format off
#ifdef LED_MATRIX_ENABLE
+
+// clang-format off
+
const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
/* Refer to CKLED2001 manual for these locations
* driver
@@ -138,11 +140,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/s1/config.h b/keyboards/keychron/s1/config.h
index c74e0b4a4977..8c9838952272 100644
--- a/keyboards/keychron/s1/config.h
+++ b/keyboards/keychron/s1/config.h
@@ -20,8 +20,7 @@
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {5,4} }
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
@@ -33,7 +32,3 @@
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/s1/readme.md b/keyboards/keychron/s1/readme.md
index 864d3815a841..ddb616fceae9 100644
--- a/keyboards/keychron/s1/readme.md
+++ b/keyboards/keychron/s1/readme.md
@@ -1,20 +1,38 @@
# Keychron S1
-![Keychron S1](https://i.imgur.com/X1GFlYK.jpg)
-
-A customizable 75% keyboard.
+A customizable 75% keyboard with RGB backlight and White backlight.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron S1
-* Hardware Availability: [Keychron S1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-s1-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
- make keychron/s1/ansi/rgb:default
+* For RGB backlight version:
+
+```bash
+make keychron/s1/ansi/rgb:default
+```
+
+* For White backlight version:
+
+```bash
+make keychron/s1/ansi/white:default
+```
Flashing example for this keyboard:
- make keychron/s1/ansi/rgb:default:flash
+* For RGB backlight version:
+
+```bash
+make keychron/s1/ansi/rgb:default:flash
+```
+
+* For White backlight version:
+
+```bash
+make keychron/s1/ansi/white:default:flash
+```
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/s1/s1.c b/keyboards/keychron/s1/s1.c
index 72e5ac4845be..d8488dd6ea6f 100644
--- a/keyboards/keychron/s1/s1.c
+++ b/keyboards/keychron/s1/s1.c
@@ -16,7 +16,6 @@
#include "quantum.h"
-// clang-format off
const matrix_row_t matrix_mask[] = {
0b111111111111111,
0b111111111111111,
@@ -25,16 +24,103 @@ const matrix_row_t matrix_mask[] = {
0b111111111111111,
0b111111111101111,
};
-// clang-format on
#ifdef DIP_SWITCH_ENABLE
+
bool dip_switch_update_kb(uint8_t index, bool active) {
- if (!dip_switch_update_user(index, active)) {
- return false;
- }
+ if (!dip_switch_update_user(index, active)) { return false; }
if (index == 0) {
default_layer_set(1UL << (active ? 2 : 0));
}
return true;
}
+
+#endif // DIP_SWITCH_ENABLE
+
+#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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
#endif
+ }
+ 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 // RGB_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX
+
+#if defined(LED_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) {
+#ifdef LED_MATRIX_ENABLE
+ case BL_TOGG:
+ if (record->event.pressed) {
+ switch (led_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ led_matrix_set_flags(LED_FLAG_NONE);
+ led_matrix_set_value_all(0);
+ } break;
+ default: {
+ led_matrix_set_flags(LED_FLAG_ALL);
+ } break;
+ }
+ }
+ if (!led_matrix_is_enabled()) {
+ led_matrix_set_flags(LED_FLAG_ALL);
+ led_matrix_enable();
+ }
+ return false;
+#endif
+ }
+ return true;
+}
+
+bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ if (!led_matrix_indicators_advanced_user(led_min, led_max)) { return false; }
+
+ if (host_keyboard_led_state().caps_lock) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 255);
+
+ } else {
+ if (!led_matrix_get_flags()) {
+ led_matrix_set_value(CAPS_LOCK_LED_INDEX, 0);
+ }
+ }
+ return true;
+}
+
+#endif // LED_MATRIX_ENABLE && CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q1/iso_atmega32u4_encoder/config.h b/keyboards/keychron/switch_pad/config.h
old mode 100644
new mode 100755
similarity index 52%
rename from keyboards/keychron/q1/iso_atmega32u4_encoder/config.h
rename to keyboards/keychron/switch_pad/config.h
index 32d644366469..278c2ce43682
--- a/keyboards/keychron/q1/iso_atmega32u4_encoder/config.h
+++ b/keyboards/keychron/switch_pad/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,22 +16,28 @@
#pragma once
-/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 0, 1 } }
-#define SCAN_COUNT_MAX 100
-
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
-#define DRIVER_ADDR_1 0b1010000
-#define DRIVER_ADDR_2 0b1011111
+#define DRIVER_ADDR_1 0b1110111
+#define DRIVER_ADDR_2 0b1110100
/* RGB Matrix Configuration */
-#define DRIVER_1_LED_TOTAL 59
-#define DRIVER_2_LED_TOTAL 24
-#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT 100
+
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }
-/* Encoder Configuration */
-#define ENCODER_DEFAULT_POS 0x3
+/* Disable RGB lighting when PC is in suspend */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* 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_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 44
+/* HC595 Driver Configuration */
+#define HC595_START_INDEX 9
+#define HC595_END_INDEX 16
diff --git a/keyboards/keychron/q0/q0.c b/keyboards/keychron/switch_pad/halconf.h
old mode 100644
new mode 100755
similarity index 88%
rename from keyboards/keychron/q0/q0.c
rename to keyboards/keychron/switch_pad/halconf.h
index 6131d01c0ebc..41bddcb2799b
--- a/keyboards/keychron/q0/q0.c
+++ b/keyboards/keychron/switch_pad/halconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -14,4 +14,8 @@
* along with this program. If not, see .
*/
-#include "quantum.h"
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/keychron/switch_pad/info.json b/keyboards/keychron/switch_pad/info.json
new file mode 100755
index 000000000000..cdeb1e7573f8
--- /dev/null
+++ b/keyboards/keychron/switch_pad/info.json
@@ -0,0 +1,263 @@
+{
+ "keyboard_name": "Keychron Switch Pad",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32L432",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0480",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "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
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":4, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":4, "x":25, "y":0},
+ {"matrix":[0, 2], "flags":4, "x":50, "y":0},
+ {"matrix":[0, 3], "flags":4, "x":75, "y":0},
+ {"matrix":[0, 4], "flags":4, "x":100, "y":0},
+ {"matrix":[0, 5], "flags":4, "x":124, "y":0},
+ {"matrix":[0, 6], "flags":4, "x":149, "y":0},
+ {"matrix":[0, 7], "flags":4, "x":174, "y":0},
+ {"matrix":[0, 8], "flags":4, "x":199, "y":0},
+ {"matrix":[0, 9], "flags":4, "x":224, "y":0},
+ {"matrix":[0, 10], "flags":4, "x":0, "y":7},
+ {"matrix":[0, 11], "flags":4, "x":25, "y":7},
+ {"matrix":[0, 12], "flags":4, "x":50, "y":7},
+ {"matrix":[0, 13], "flags":4, "x":75, "y":7},
+ {"matrix":[0, 14], "flags":4, "x":100, "y":7},
+ {"matrix":[0, 15], "flags":4, "x":124, "y":7},
+ {"matrix":[0, 16], "flags":4, "x":149, "y":7},
+ {"matrix":[1, 13], "flags":4, "x":174, "y":7},
+ {"matrix":[1, 14], "flags":4, "x":199, "y":7},
+ {"matrix":[1, 15], "flags":4, "x":224, "y":7},
+ {"matrix":[1, 0], "flags":4, "x":0, "y":14},
+ {"matrix":[1, 1], "flags":4, "x":25, "y":14},
+ {"matrix":[1, 2], "flags":4, "x":50, "y":14},
+ {"matrix":[1, 3], "flags":4, "x":75, "y":14},
+ {"matrix":[1, 4], "flags":4, "x":100, "y":14},
+ {"matrix":[1, 5], "flags":4, "x":124, "y":14},
+ {"matrix":[1, 6], "flags":4, "x":149, "y":14},
+ {"matrix":[1, 7], "flags":4, "x":174, "y":14},
+ {"matrix":[1, 8], "flags":4, "x":199, "y":14},
+ {"matrix":[1, 9], "flags":4, "x":224, "y":14},
+ {"matrix":[1, 10], "flags":4, "x":0, "y":21},
+ {"matrix":[1, 11], "flags":4, "x":25, "y":21},
+ {"matrix":[1, 12], "flags":4, "x":50, "y":21},
+ {"matrix":[2, 13], "flags":4, "x":75, "y":21},
+ {"matrix":[2, 14], "flags":4, "x":100, "y":21},
+ {"matrix":[2, 15], "flags":4, "x":124, "y":21},
+ {"matrix":[2, 10], "flags":4, "x":149, "y":21},
+ {"matrix":[2, 11], "flags":4, "x":174, "y":21},
+ {"matrix":[2, 12], "flags":4, "x":199, "y":21},
+ {"matrix":[2, 16], "flags":4, "x":224, "y":21},
+ {"matrix":[2, 0], "flags":4, "x":0, "y":28},
+ {"matrix":[2, 1], "flags":4, "x":25, "y":28},
+ {"matrix":[2, 2], "flags":4, "x":50, "y":28},
+ {"matrix":[2, 3], "flags":4, "x":75, "y":28},
+ {"matrix":[2, 4], "flags":4, "x":100, "y":28},
+ {"matrix":[2, 5], "flags":4, "x":124, "y":28},
+ {"matrix":[2, 6], "flags":4, "x":149, "y":28},
+ {"matrix":[2, 7], "flags":4, "x":174, "y":28},
+ {"matrix":[2, 8], "flags":4, "x":199, "y":28},
+ {"matrix":[2, 9], "flags":4, "x":224, "y":28},
+ {"matrix":[3, 0], "flags":4, "x":0, "y":36},
+ {"matrix":[3, 1], "flags":4, "x":25, "y":36},
+ {"matrix":[3, 2], "flags":4, "x":50, "y":36},
+ {"matrix":[3, 3], "flags":4, "x":75, "y":36},
+ {"matrix":[3, 4], "flags":4, "x":100, "y":36},
+ {"matrix":[3, 5], "flags":4, "x":124, "y":36},
+ {"matrix":[3, 6], "flags":4, "x":149, "y":36},
+ {"matrix":[3, 7], "flags":4, "x":174, "y":36},
+ {"matrix":[3, 8], "flags":4, "x":199, "y":36},
+ {"matrix":[3, 9], "flags":4, "x":224, "y":36},
+ {"matrix":[3, 10], "flags":4, "x":0, "y":43},
+ {"matrix":[3, 11], "flags":4, "x":25, "y":43},
+ {"matrix":[3, 12], "flags":4, "x":50, "y":43},
+ {"matrix":[3, 13], "flags":4, "x":75, "y":43},
+ {"matrix":[3, 14], "flags":4, "x":100, "y":43},
+ {"matrix":[3, 15], "flags":4, "x":124, "y":43},
+ {"matrix":[3, 16], "flags":4, "x":149, "y":43},
+ {"matrix":[4, 13], "flags":4, "x":174, "y":43},
+ {"matrix":[4, 14], "flags":4, "x":199, "y":43},
+ {"matrix":[4, 15], "flags":4, "x":224, "y":43},
+ {"matrix":[4, 0], "flags":4, "x":0, "y":50},
+ {"matrix":[4, 1], "flags":4, "x":25, "y":50},
+ {"matrix":[4, 2], "flags":4, "x":50, "y":50},
+ {"matrix":[4, 3], "flags":4, "x":75, "y":50},
+ {"matrix":[4, 4], "flags":4, "x":100, "y":50},
+ {"matrix":[4, 5], "flags":4, "x":124, "y":50},
+ {"matrix":[4, 6], "flags":4, "x":149, "y":50},
+ {"matrix":[4, 7], "flags":4, "x":174, "y":50},
+ {"matrix":[4, 8], "flags":4, "x":199, "y":50},
+ {"matrix":[4, 9], "flags":4, "x":224, "y":50},
+ {"matrix":[4, 10], "flags":4, "x":0, "y":57},
+ {"matrix":[4, 11], "flags":4, "x":25, "y":57},
+ {"matrix":[4, 12], "flags":4, "x":50, "y":57},
+ {"matrix":[5, 13], "flags":4, "x":75, "y":57},
+ {"matrix":[5, 14], "flags":4, "x":100, "y":57},
+ {"matrix":[5, 15], "flags":4, "x":124, "y":57},
+ {"matrix":[5, 10], "flags":4, "x":149, "y":57},
+ {"matrix":[5, 11], "flags":4, "x":194, "y":57},
+ {"matrix":[5, 12], "flags":4, "x":199, "y":57},
+ {"matrix":[5, 16], "flags":4, "x":224, "y":57},
+ {"matrix":[5, 0], "flags":4, "x":0, "y":64},
+ {"matrix":[5, 1], "flags":4, "x":25, "y":64},
+ {"matrix":[5, 2], "flags":4, "x":50, "y":64},
+ {"matrix":[5, 3], "flags":4, "x":75, "y":64},
+ {"matrix":[5, 4], "flags":4, "x":100, "y":64},
+ {"matrix":[5, 5], "flags":4, "x":124, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":149, "y":64},
+ {"matrix":[5, 7], "flags":4, "x":174, "y":64},
+ {"matrix":[5, 8], "flags":4, "x":199, "y":64},
+ {"matrix":[5, 9], "flags":4, "x":224, "y":64}
+ ]
+ },
+ "matrix_pins": {
+ "cols": ["B1", "A6", "A5", "A4", "A3", "A2", "A0", "C15", "C14", null, null, null, null, null, null, null, null],
+ "rows": ["A13", "A14", "A15", "B3", "B4", "B5"],
+ "custom": true,
+ "custom_lite": true
+ },
+ "diode_direction": "ROW2COL",
+ "layouts": {
+ "LAYOUT": {
+ "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":[0,4], "x":4, "y":0},
+ {"matrix":[0,5], "x":5, "y":0},
+ {"matrix":[0,6], "x":6, "y":0},
+ {"matrix":[0,7], "x":7, "y":0},
+ {"matrix":[0,8], "x":8, "y":0},
+ {"matrix":[0,9], "x":9, "y":0},
+ {"matrix":[0,10], "x":0, "y":1},
+ {"matrix":[0,11], "x":1, "y":1},
+ {"matrix":[0,12], "x":2, "y":1},
+ {"matrix":[0,13], "x":3, "y":1},
+ {"matrix":[0,14], "x":4, "y":1},
+ {"matrix":[0,15], "x":5, "y":1},
+ {"matrix":[0,16], "x":6, "y":1},
+ {"matrix":[1,13], "x":7, "y":1},
+ {"matrix":[1,14], "x":8, "y":1},
+ {"matrix":[1,15], "x":9, "y":1},
+ {"matrix":[1,0], "x":0, "y":2},
+ {"matrix":[1,1], "x":1, "y":2},
+ {"matrix":[1,2], "x":2, "y":2},
+ {"matrix":[1,3], "x":3, "y":2},
+ {"matrix":[1,4], "x":4, "y":2},
+ {"matrix":[1,5], "x":5, "y":2},
+ {"matrix":[1,6], "x":6, "y":2},
+ {"matrix":[1,7], "x":7, "y":2},
+ {"matrix":[1,8], "x":8, "y":2},
+ {"matrix":[1,9], "x":9, "y":2},
+ {"matrix":[1,10], "x":0, "y":3},
+ {"matrix":[1,11], "x":1, "y":3},
+ {"matrix":[1,12], "x":2, "y":3},
+ {"matrix":[2,13], "x":3, "y":3},
+ {"matrix":[2,14], "x":4, "y":3},
+ {"matrix":[2,15], "x":5, "y":3},
+ {"matrix":[2,10], "x":6, "y":3},
+ {"matrix":[2,11], "x":7, "y":3},
+ {"matrix":[2,12], "x":8, "y":3},
+ {"matrix":[2,16], "x":9, "y":3},
+ {"matrix":[2,0], "x":0, "y":4},
+ {"matrix":[2,1], "x":1, "y":4},
+ {"matrix":[2,2], "x":2, "y":4},
+ {"matrix":[2,3], "x":3, "y":4},
+ {"matrix":[2,4], "x":4, "y":4},
+ {"matrix":[2,5], "x":5, "y":4},
+ {"matrix":[2,6], "x":6, "y":4},
+ {"matrix":[2,7], "x":7, "y":4},
+ {"matrix":[2,8], "x":8, "y":4},
+ {"matrix":[2,9], "x":9, "y":4},
+ {"matrix":[3,0], "x":0, "y":5},
+ {"matrix":[3,1], "x":1, "y":5},
+ {"matrix":[3,2], "x":2, "y":5},
+ {"matrix":[3,3], "x":3, "y":5},
+ {"matrix":[3,4], "x":4, "y":5},
+ {"matrix":[3,5], "x":5, "y":5},
+ {"matrix":[3,6], "x":6, "y":5},
+ {"matrix":[3,7], "x":7, "y":5},
+ {"matrix":[3,8], "x":8, "y":5},
+ {"matrix":[3,9], "x":9, "y":5},
+ {"matrix":[3,10], "x":0, "y":6},
+ {"matrix":[3,11], "x":1, "y":6},
+ {"matrix":[3,12], "x":2, "y":6},
+ {"matrix":[3,13], "x":3, "y":6},
+ {"matrix":[3,14], "x":4, "y":6},
+ {"matrix":[3,15], "x":5, "y":6},
+ {"matrix":[3,16], "x":6, "y":6},
+ {"matrix":[4,13], "x":7, "y":6},
+ {"matrix":[4,14], "x":8, "y":6},
+ {"matrix":[4,15], "x":9, "y":6},
+ {"matrix":[4,0], "x":0, "y":7},
+ {"matrix":[4,1], "x":1, "y":7},
+ {"matrix":[4,2], "x":2, "y":7},
+ {"matrix":[4,3], "x":3, "y":7},
+ {"matrix":[4,4], "x":4, "y":7},
+ {"matrix":[4,5], "x":5, "y":7},
+ {"matrix":[4,6], "x":6, "y":7},
+ {"matrix":[4,7], "x":7, "y":7},
+ {"matrix":[4,8], "x":8, "y":7},
+ {"matrix":[4,9], "x":9, "y":7},
+ {"matrix":[4,10], "x":0, "y":8},
+ {"matrix":[4,11], "x":1, "y":8},
+ {"matrix":[4,12], "x":2, "y":8},
+ {"matrix":[5,13], "x":3, "y":8},
+ {"matrix":[5,14], "x":4, "y":8},
+ {"matrix":[5,15], "x":5, "y":8},
+ {"matrix":[5,10], "x":6, "y":8},
+ {"matrix":[5,11], "x":7, "y":8},
+ {"matrix":[5,12], "x":8, "y":8},
+ {"matrix":[5,16], "x":9, "y":8},
+ {"matrix":[5,0], "x":0, "y":9},
+ {"matrix":[5,1], "x":1, "y":9},
+ {"matrix":[5,2], "x":2, "y":9},
+ {"matrix":[5,3], "x":3, "y":9},
+ {"matrix":[5,4], "x":4, "y":9},
+ {"matrix":[5,5], "x":5, "y":9},
+ {"matrix":[5,6], "x":6, "y":9},
+ {"matrix":[5,7], "x":7, "y":9},
+ {"matrix":[5,8], "x":8, "y":9},
+ {"matrix":[5,9], "x":9, "y":9}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/switch_pad/keymaps/default/keymap.c b/keyboards/keychron/switch_pad/keymaps/default/keymap.c
new file mode 100755
index 000000000000..e5de9de41266
--- /dev/null
+++ b/keyboards/keychron/switch_pad/keymaps/default/keymap.c
@@ -0,0 +1,76 @@
+/* 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
+
+enum layers{
+ BASE,
+ L1,
+ L2,
+ L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT(
+ RGB_MOD, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, RGB_RMOD
+ ),
+ [L1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [L2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [L3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/keychron/switch_pad/keymaps/keychron/keymap.c b/keyboards/keychron/switch_pad/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..81f9db29074e
--- /dev/null
+++ b/keyboards/keychron/switch_pad/keymaps/keychron/keymap.c
@@ -0,0 +1,99 @@
+/* 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"
+
+enum layers {
+ BASE,
+ L1,
+ L2,
+ L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT(
+ RGB_MOD, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, RGB_RMOD
+ ),
+ [L1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [L2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [L3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+// 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;
+}
+
+void keyboard_post_init_user(void) {
+ // Customise these values to desired behaviour
+ debug_enable = true;
+ debug_matrix = true;
+ debug_keyboard=true;
+ // debug_mouse=true;
+}
diff --git a/keyboards/keychron/switch_pad/keymaps/keychron/rules.mk b/keyboards/keychron/switch_pad/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..112affea1666
--- /dev/null
+++ b/keyboards/keychron/switch_pad/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+SRC += keychron_common.c
diff --git a/keyboards/keychron/switch_pad/keymaps/via/keymap.c b/keyboards/keychron/switch_pad/keymaps/via/keymap.c
new file mode 100755
index 000000000000..be9e81c03870
--- /dev/null
+++ b/keyboards/keychron/switch_pad/keymaps/via/keymap.c
@@ -0,0 +1,76 @@
+/* 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
+
+enum layers {
+ BASE,
+ L1,
+ L2,
+ L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT(
+ RGB_MOD, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9,
+ KC_P0, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, RGB_RMOD
+ ),
+ [L1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [L2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [L3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/keychron/q4/ansi_v1/keymaps/via/rules.mk b/keyboards/keychron/switch_pad/keymaps/via/rules.mk
old mode 100644
new mode 100755
similarity index 100%
rename from keyboards/keychron/q4/ansi_v1/keymaps/via/rules.mk
rename to keyboards/keychron/switch_pad/keymaps/via/rules.mk
diff --git a/keyboards/keychron/q2/ansi/keymaps/keychron/config.h b/keyboards/keychron/switch_pad/mcuconf.h
old mode 100644
new mode 100755
similarity index 84%
rename from keyboards/keychron/q2/ansi/keymaps/keychron/config.h
rename to keyboards/keychron/switch_pad/mcuconf.h
index 54bbaf673fed..0ca8c64850f4
--- a/keyboards/keychron/q2/ansi/keymaps/keychron/config.h
+++ b/keyboards/keychron/switch_pad/mcuconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -14,4 +14,9 @@
* along with this program. If not, see .
*/
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+#pragma once
+
+#include_next
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/switch_pad/readme.md b/keyboards/keychron/switch_pad/readme.md
new file mode 100755
index 000000000000..864d3815a841
--- /dev/null
+++ b/keyboards/keychron/switch_pad/readme.md
@@ -0,0 +1,21 @@
+# Keychron S1
+
+![Keychron S1](https://i.imgur.com/X1GFlYK.jpg)
+
+A customizable 75% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Keychron S1
+* Hardware Availability: [Keychron S1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-s1-qmk-custom-mechanical-keyboard)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/s1/ansi/rgb:default
+
+Flashing example for this keyboard:
+
+ make keychron/s1/ansi/rgb:default:flash
+
+**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* 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).
diff --git a/keyboards/keychron/switch_pad/rules.mk b/keyboards/keychron/switch_pad/rules.mk
new file mode 100755
index 000000000000..2f2902b17297
--- /dev/null
+++ b/keyboards/keychron/switch_pad/rules.mk
@@ -0,0 +1,2 @@
+VPATH += keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/switch_pad/switch_pad.c b/keyboards/keychron/switch_pad/switch_pad.c
new file mode 100755
index 000000000000..bfdf272e2dba
--- /dev/null
+++ b/keyboards/keychron/switch_pad/switch_pad.c
@@ -0,0 +1,294 @@
+/* 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 "quantum.h"
+
+// clang-format off
+#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, I_1, G_1, H_1},
+ {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, 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, I_10, G_10, H_10},
+
+ {0, I_11, G_11, H_11},
+ {0, I_12, G_12, H_12},
+ {0, I_13, G_13, H_13},
+ {0, I_14, G_14, H_14},
+ {0, I_15, G_15, H_15},
+ {0, I_16, G_16, H_16},
+ {1, L_6, J_6, K_6},
+ {0, C_14, A_14, B_14},
+ {0, C_15, A_15, B_15},
+ {0, C_16, A_16, B_16},
+
+ {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, 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, C_11, A_11, B_11},
+ {0, C_12, A_12, B_12},
+ {0, C_13, A_13, B_13},
+ {0, F_14, D_14, E_14},
+ {0, F_15, D_15, E_15},
+ {0, F_16, D_16, E_16},
+ {0, F_11, D_11, E_11},
+ {0, F_12, D_12, E_12},
+ {0, F_13, D_13, E_13},
+ {0, F_10, D_10, E_10},
+
+ {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, F_6, D_6, E_6},
+ {0, F_7, D_7, E_7},
+ {0, F_8, D_8, E_8},
+ {0, F_9, D_9, E_9},
+ {1, L_7, J_7, K_7},
+
+ {1, I_1, G_1, H_1},
+ {1, I_2, G_2, H_2},
+ {1, I_3, G_3, H_3},
+ {1, I_4, G_4, H_4},
+ {1, I_5, G_5, H_5},
+ {1, I_6, G_6, H_6},
+ {1, I_7, G_7, H_7},
+ {1, I_8, G_8, H_8},
+ {1, I_9, G_9, H_9},
+ {1, I_10, G_10, H_10},
+
+ {1, I_11, G_11, H_11},
+ {1, I_12, G_12, H_12},
+ {1, I_13, G_13, H_13},
+ {1, I_14, G_14, H_14},
+ {1, I_15, G_15, H_15},
+ {1, I_16, G_16, H_16},
+ {1, L_8, J_8, K_8},
+ {1, C_14, A_14, B_14},
+ {1, C_15, A_15, B_15},
+ {1, C_16, A_16, B_16},
+
+ {1, C_1, A_1, B_1},
+ {1, C_2, A_2, B_2},
+ {1, C_3, A_3, B_3},
+ {1, C_4, A_4, B_4},
+ {1, C_5, A_5, B_5},
+ {1, C_6, A_6, B_6},
+ {1, C_7, A_7, B_7},
+ {1, C_8, A_8, B_8},
+ {1, C_9, A_9, B_9},
+ {1, C_10, A_10, B_10},
+
+ {1, C_11, A_11, B_11},
+ {1, C_12, A_12, B_12},
+ {1, C_13, A_13, B_13},
+ {1, F_14, D_14, E_14},
+ {1, F_15, D_15, E_15},
+ {1, F_16, D_16, E_16},
+ {1, F_11, D_11, E_11},
+ {1, F_12, D_12, E_12},
+ {1, F_13, D_13, E_13},
+ {1, F_10, D_10, E_10},
+
+ {1, F_1, D_1, E_1},
+ {1, F_2, D_2, E_2},
+ {1, F_3, D_3, E_3},
+ {1, F_4, D_4, E_4},
+ {1, F_5, D_5, E_5},
+ {1, F_6, D_6, E_6},
+ {1, F_7, D_7, E_7},
+ {1, F_8, D_8, E_8},
+ {1, F_9, D_9, E_9},
+ {1, L_9, J_9, K_9},
+};
+#endif
+
+// clang-format on
+uint8_t row1 = 1;
+uint8_t row2 = 2;
+uint8_t row3 = 4;
+uint8_t col = 9;
+
+uint8_t key_press_status = 0;
+uint8_t factory_reset_count = 0;
+uint32_t factory_reset_buffer = 0;
+uint32_t indicator_buffer = 0;
+
+#define KEY_PRESS_STEP_0 (0x1 << 0)
+#define KEY_PRESS_STEP_1 (0x1 << 1)
+#define KEY_PRESS_STEP_2 (0x1 << 2)
+#define KEY_PRESS_STEP_3 (0x1 << 3)
+#define KEY_PRESS_STEP_4 (0x1 << 4)
+#define KEY_PRESS_FACTORY_RESET (KEY_PRESS_STEP_0 | KEY_PRESS_STEP_1)
+#define KEY_PRESS_LIGHT_TEST (KEY_PRESS_STEP_2 | KEY_PRESS_STEP_3 | KEY_PRESS_STEP_4)
+
+enum {
+ LED_TEST_MODE_OFF,
+ LED_TEST_MODE_WHITE,
+ LED_TEST_MODE_RED,
+ LED_TEST_MODE_GREEN,
+ LED_TEST_MODE_BLUE,
+ LED_TEST_MODE_MAX,
+} led_test_mode;
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+
+ switch (keycode) {
+ case RGB_MOD:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_0;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ factory_reset_buffer = timer_read32();
+ }
+ } else {
+ rgb_matrix_step();
+ key_press_status &= ~KEY_PRESS_STEP_0;
+ factory_reset_buffer = 0;
+ }
+ return false;
+ case RGB_RMOD:
+ if (record->event.pressed) {
+ key_press_status |= KEY_PRESS_STEP_1;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ factory_reset_buffer = timer_read32();
+ }
+ } else {
+ rgb_matrix_step_reverse();
+ key_press_status &= ~KEY_PRESS_STEP_1;
+ factory_reset_buffer = 0;
+ }
+ return false;
+ case KC_P9:
+ if (record->event.pressed) {
+ if (matrix_get_row(row1) & (1 << col)) {
+ key_press_status |= KEY_PRESS_STEP_2;
+ }
+ if (matrix_get_row(row2) & (1 << col)) {
+ key_press_status |= KEY_PRESS_STEP_3;
+ if (led_test_mode) {
+ if (++led_test_mode >= LED_TEST_MODE_MAX) {
+ led_test_mode = LED_TEST_MODE_WHITE;
+ }
+ }
+ }
+ if (matrix_get_row(row3) & (1 << col)) {
+ key_press_status |= KEY_PRESS_STEP_4;
+ if (led_test_mode) {
+ led_test_mode = LED_TEST_MODE_OFF;
+ }
+ }
+ if (key_press_status == KEY_PRESS_LIGHT_TEST) {
+ factory_reset_buffer = timer_read32();
+ }
+ } else {
+ key_press_status &= ~KEY_PRESS_LIGHT_TEST;
+ factory_reset_buffer = 0;
+ }
+ return true;
+ }
+
+ return true;
+}
+
+void housekeeping_task_kb(void) {
+ if (factory_reset_buffer && (timer_elapsed32(factory_reset_buffer) > 4000)) {
+ factory_reset_buffer = 0;
+ if (key_press_status == KEY_PRESS_FACTORY_RESET) {
+ indicator_buffer = timer_read32();
+ factory_reset_count++;
+ eeconfig_init();
+ if (!rgb_matrix_is_enabled()) {
+ rgb_matrix_enable();
+ }
+ rgb_matrix_init();
+ } else if (key_press_status == KEY_PRESS_LIGHT_TEST) {
+ led_test_mode = LED_TEST_MODE_WHITE;
+ if (!rgb_matrix_is_enabled()) {
+ rgb_matrix_enable();
+ }
+ }
+ key_press_status = 0;
+ }
+
+ if (indicator_buffer && (timer_elapsed32(indicator_buffer) > 300)) {
+ if (factory_reset_count++ > 6) {
+ indicator_buffer = 0;
+ factory_reset_count = 0;
+ } else {
+ indicator_buffer = timer_read32();
+ }
+ }
+}
+
+bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ if (factory_reset_count) {
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, factory_reset_count % 2 ? 0 : RGB_RED);
+ }
+ }
+
+ if (led_test_mode) {
+ switch (led_test_mode) {
+ case LED_TEST_MODE_WHITE:
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, RGB_WHITE);
+ }
+ break;
+ case LED_TEST_MODE_RED:
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, RGB_RED);
+ }
+ break;
+ case LED_TEST_MODE_GREEN:
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, RGB_GREEN);
+ }
+ break;
+ case LED_TEST_MODE_BLUE:
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ rgb_matrix_set_color(i, RGB_BLUE);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ return true;
+}
diff --git a/keyboards/keychron/v1/ansi/ansi.c b/keyboards/keychron/v1/ansi/ansi.c
index 839e4e8bb65a..dc488d1b7359 100644
--- a/keyboards/keychron/v1/ansi/ansi.c
+++ b/keyboards/keychron/v1/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -140,11 +140,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v1/ansi/config.h b/keyboards/keychron/v1/ansi/config.h
index f539f861e514..143042076db1 100644
--- a/keyboards/keychron/v1/ansi/config.h
+++ b/keyboards/keychron/v1/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,5 +21,8 @@
#define DRIVER_2_LED_TOTAL 37
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
+
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/v1/ansi/info.json b/keyboards/keychron/v1/ansi/info.json
index 1bd2a3b7e6b3..f4c526bfdcbc 100644
--- a/keyboards/keychron/v1/ansi/info.json
+++ b/keyboards/keychron/v1/ansi/info.json
@@ -6,119 +6,103 @@
"usb": {
"vid": "0x3434",
"pid": "0x0310",
- "device_version": "1.0.7"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_82": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.25, "y": 1.25},
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 15], "x": 15.25, "y": 2.25},
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 15], "x": 15.25, "y": 3.25},
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/v1/ansi/keymaps/default/keymap.c b/keyboards/keychron/v1/ansi/keymaps/default/keymap.c
index 42292f385123..da0ffcdafb47 100644
--- a/keyboards/keychron/v1/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
index 429ea2e24bc0..4653954d7e9d 100644
--- a/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -65,17 +64,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v1/ansi/keymaps/via/keymap.c b/keyboards/keychron/v1/ansi/keymaps/via/keymap.c
index 42292f385123..da0ffcdafb47 100644
--- a/keyboards/keychron/v1/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
diff --git a/keyboards/keychron/v1/ansi/keymaps/vnmm/keymap.c b/keyboards/keychron/v1/ansi/keymaps/vnmm/keymap.c
new file mode 100644
index 000000000000..6f26cc8729c2
--- /dev/null
+++ b/keyboards/keychron/v1/ansi/keymaps/vnmm/keymap.c
@@ -0,0 +1,54 @@
+/* Copyright 2021 @ 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 "vnmm.h"
+
+// clang-format off
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RCMD, MAC_F, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
+ _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
+ EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
+
+ [WIN_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, WIN_F, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
+ _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
+ EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
+};
diff --git a/keyboards/keychron/v1/ansi/keymaps/vnmm/readme.md b/keyboards/keychron/v1/ansi/keymaps/vnmm/readme.md
new file mode 100644
index 000000000000..1ee0e0b117bc
--- /dev/null
+++ b/keyboards/keychron/v1/ansi/keymaps/vnmm/readme.md
@@ -0,0 +1,10 @@
+# Vnmm's Keychron V1 ansi layout
+
+This keymap builds on the default but with some extras I use on all my keyboards
+
+## Features
+
+- Alphabet keys light up red when caps lock is on or shift is pressed
+- Pressing either FN shows keys that have a definition
+- Via enabled
+- Reset to bootloader with FN+Space
diff --git a/keyboards/keychron/q4/ansi_v2/keymaps/via/rules.mk b/keyboards/keychron/v1/ansi/keymaps/vnmm/rules.mk
similarity index 100%
rename from keyboards/keychron/q4/ansi_v2/keymaps/via/rules.mk
rename to keyboards/keychron/v1/ansi/keymaps/vnmm/rules.mk
diff --git a/keyboards/keychron/v1/ansi/rules.mk b/keyboards/keychron/v1/ansi/rules.mk
index aa286a161677..e859eb9c34c6 100644
--- a/keyboards/keychron/v1/ansi/rules.mk
+++ b/keyboards/keychron/v1/ansi/rules.mk
@@ -1,14 +1,21 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
index 6b72f111ad2d..dc488d1b7359 100644
--- a/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v1/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -140,12 +140,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v1/ansi_encoder/config.h b/keyboards/keychron/v1/ansi_encoder/config.h
index 610e8261b8cc..c32e4d104a37 100644
--- a/keyboards/keychron/v1/ansi_encoder/config.h
+++ b/keyboards/keychron/v1/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,6 +21,9 @@
#define DRIVER_2_LED_TOTAL 37
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
+
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v1/ansi_encoder/info.json b/keyboards/keychron/v1/ansi_encoder/info.json
index 38ef3c764a8a..9beffb9f6a18 100644
--- a/keyboards/keychron/v1/ansi_encoder/info.json
+++ b/keyboards/keychron/v1/ansi_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0311",
- "device_version": "1.0.7"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -37,93 +21,93 @@
"layouts": {
"LAYOUT_ansi_82": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.25, "y": 1.25},
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 15], "x": 15.25, "y": 2.25},
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 15], "x": 15.25, "y": 3.25},
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v1/ansi_encoder/keymaps/default/keymap.c
index b21f1aef75e2..a5eed7de198c 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_82(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LCMD, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_82(
- _______, 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,
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
index f47f1f25c644..f5e6247ca6ab 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -64,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -72,19 +71,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
};
#endif // ENCODER_MAP_ENABLE
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
+// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v1/ansi_encoder/keymaps/via/keymap.c
index ad6cec2d426b..2ff15e873dea 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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,
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/via/rules.mk b/keyboards/keychron/v1/ansi_encoder/keymaps/via/rules.mk
index ee325681483f..f1adcab005e8 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/via/rules.mk
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/via/rules.mk
@@ -1 +1,2 @@
+VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/v1/ansi_encoder/rules.mk b/keyboards/keychron/v1/ansi_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v1/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v1/ansi_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/config.h b/keyboards/keychron/v1/config.h
index afddf76d1706..e5b82a143dae 100644
--- a/keyboards/keychron/v1/config.h
+++ b/keyboards/keychron/v1/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron(https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,12 +16,20 @@
#pragma once
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {5,4} }
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
@@ -37,9 +45,6 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
@@ -80,13 +85,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -101,10 +102,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
-
-#define HC595_STCP B0
-#define HC595_SHCP B1
-#define HC595_DS A7
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keychron/v1/halconf.h b/keyboards/keychron/v1/halconf.h
index 463d177eabc7..41bddcb2799b 100644
--- a/keyboards/keychron/v1/halconf.h
+++ b/keyboards/keychron/v1/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/v1/iso/config.h b/keyboards/keychron/v1/iso/config.h
index 219b77db85d7..13ebd695f363 100644
--- a/keyboards/keychron/v1/iso/config.h
+++ b/keyboards/keychron/v1/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,5 +21,8 @@
#define DRIVER_2_LED_TOTAL 38
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
+
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 44
diff --git a/keyboards/keychron/v1/iso/info.json b/keyboards/keychron/v1/iso/info.json
index 1d6988e04783..5a4c74234c15 100644
--- a/keyboards/keychron/v1/iso/info.json
+++ b/keyboards/keychron/v1/iso/info.json
@@ -6,120 +6,104 @@
"usb": {
"vid": "0x3434",
"pid": "0x0312",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_83": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 15], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 15.25, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/v1/iso/iso.c b/keyboards/keychron/v1/iso/iso.c
index 8fb5b7a1c260..1d9ef7699718 100644
--- a/keyboards/keychron/v1/iso/iso.c
+++ b/keyboards/keychron/v1/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -141,11 +141,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v1/iso/keymaps/default/keymap.c b/keyboards/keychron/v1/iso/keymaps/default/keymap.c
index f37a37658ea5..e222112d2a1d 100644
--- a/keyboards/keychron/v1/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
diff --git a/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
index 45c2c74acac6..351b426571cc 100644
--- a/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -63,19 +62,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
index 65df6fb72655..495e8907b48c 100644
--- a/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
@@ -1,3 +1,4 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v1/iso/keymaps/via/keymap.c b/keyboards/keychron/v1/iso/keymaps/via/keymap.c
index f37a37658ea5..e222112d2a1d 100644
--- a/keyboards/keychron/v1/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
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_PGDN,
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_NUHS, KC_ENT, KC_HOME,
diff --git a/keyboards/keychron/v1/iso/rules.mk b/keyboards/keychron/v1/iso/rules.mk
index aa286a161677..e859eb9c34c6 100644
--- a/keyboards/keychron/v1/iso/rules.mk
+++ b/keyboards/keychron/v1/iso/rules.mk
@@ -1,14 +1,21 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/iso_encoder/config.h b/keyboards/keychron/v1/iso_encoder/config.h
index ef25a4a54497..fd231aa98a18 100644
--- a/keyboards/keychron/v1/iso_encoder/config.h
+++ b/keyboards/keychron/v1/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,6 +21,9 @@
#define DRIVER_2_LED_TOTAL 38
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50, 0xA6, 0xA6, 0x50 }
+
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v1/iso_encoder/info.json b/keyboards/keychron/v1/iso_encoder/info.json
index 22869526d01d..106b43b5e794 100644
--- a/keyboards/keychron/v1/iso_encoder/info.json
+++ b/keyboards/keychron/v1/iso_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0313",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -37,94 +21,94 @@
"layouts": {
"LAYOUT_iso_83": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 15], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 15.25, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/v1/iso_encoder/iso_encoder.c b/keyboards/keychron/v1/iso_encoder/iso_encoder.c
index 32d3989861d0..1d9ef7699718 100644
--- a/keyboards/keychron/v1/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v1/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -141,12 +141,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v1/iso_encoder/keymaps/default/keymap.c
index c12e21a7ee6d..2667e16d5ee7 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,40 +30,40 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
index 664d5585c542..52e1a316546c 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -29,42 +28,42 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -72,19 +71,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
};
#endif // ENCODER_MAP_ENABLE
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
+// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v1/iso_encoder/keymaps/via/keymap.c
index c12e21a7ee6d..2667e16d5ee7 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,40 +30,40 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_iso_83(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
- KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_83(
- _______, 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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/iso_encoder/rules.mk b/keyboards/keychron/v1/iso_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v1/iso_encoder/rules.mk
+++ b/keyboards/keychron/v1/iso_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/jis/config.h b/keyboards/keychron/v1/jis/config.h
index 8fb01a1409e1..300beba867da 100644
--- a/keyboards/keychron/v1/jis/config.h
+++ b/keyboards/keychron/v1/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -26,5 +26,8 @@
#define DRIVER_2_LED_TOTAL 40
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D }
+
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 45
diff --git a/keyboards/keychron/v1/jis/info.json b/keyboards/keychron/v1/jis/info.json
index cb8f773a8ae4..16365ccd9eec 100644
--- a/keyboards/keychron/v1/jis/info.json
+++ b/keyboards/keychron/v1/jis/info.json
@@ -6,123 +6,107 @@
"usb": {
"vid": "0x3434",
"pid": "0x0314",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_jis_86": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.251},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[1,14], "x":14, "y":1.25},
- {"matrix":[1,15], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.251},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25},
+ {"matrix": [1, 14], "x": 14, "y": 1.25},
+ {"matrix": [1, 15], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 15], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 15.25, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25},
- {"matrix":[5,11], "x":11.25, "y":5.25},
- {"matrix":[5,12], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.25},
- {"matrix":[5,14], "x":14.25, "y":5.25},
- {"matrix":[5,15], "x":15.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25},
+ {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 3.5, "y": 5.25},
+ {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
+ {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25},
+ {"matrix": [5, 12], "x": 12.25, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.25},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.25}
]
}
}
diff --git a/keyboards/keychron/v1/jis/jis.c b/keyboards/keychron/v1/jis/jis.c
index dbef48c10a34..7f2f02bfa5e2 100644
--- a/keyboards/keychron/v1/jis/jis.c
+++ b/keyboards/keychron/v1/jis/jis.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v1/jis/keymaps/default/keymap.c b/keyboards/keychron/v1/jis/keymaps/default/keymap.c
index 86fb9f7303dd..95784d077a28 100644
--- a/keyboards/keychron/v1/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,34 +30,34 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
index 933c589a8a9d..126288b7f087 100644
--- a/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -29,53 +28,43 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk b/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
index 65df6fb72655..495e8907b48c 100644
--- a/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
@@ -1,3 +1,4 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v1/jis/keymaps/via/keymap.c b/keyboards/keychron/v1/jis/keymaps/via/keymap.c
index 86fb9f7303dd..95784d077a28 100644
--- a/keyboards/keychron/v1/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,34 +30,34 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v1/jis/rules.mk b/keyboards/keychron/v1/jis/rules.mk
index aa286a161677..e859eb9c34c6 100644
--- a/keyboards/keychron/v1/jis/rules.mk
+++ b/keyboards/keychron/v1/jis/rules.mk
@@ -1,14 +1,21 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/jis_encoder/config.h b/keyboards/keychron/v1/jis_encoder/config.h
index f5a549cd493a..93d2a72d98a6 100644
--- a/keyboards/keychron/v1/jis_encoder/config.h
+++ b/keyboards/keychron/v1/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,6 +21,9 @@
#define DRIVER_2_LED_TOTAL 40
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D, 0xA0, 0xA0, 0x4D }
+
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v1/jis_encoder/info.json b/keyboards/keychron/v1/jis_encoder/info.json
index e69049c1d76f..702e57975800 100644
--- a/keyboards/keychron/v1/jis_encoder/info.json
+++ b/keyboards/keychron/v1/jis_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0315",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -37,97 +21,97 @@
"layouts": {
"LAYOUT_jis_86": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.251},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[1,14], "x":14, "y":1.25},
- {"matrix":[1,15], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.251},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25},
+ {"matrix": [1, 14], "x": 14, "y": 1.25},
+ {"matrix": [1, 15], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 15], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 15.25, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[4,14], "x":14.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25},
- {"matrix":[5,11], "x":11.25, "y":5.25},
- {"matrix":[5,12], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.25},
- {"matrix":[5,14], "x":14.25, "y":5.25},
- {"matrix":[5,15], "x":15.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25},
+ {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 3.5, "y": 5.25},
+ {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
+ {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25},
+ {"matrix": [5, 12], "x": 12.25, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.25},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.25}
]
}
}
diff --git a/keyboards/keychron/v1/jis_encoder/jis_encoder.c b/keyboards/keychron/v1/jis_encoder/jis_encoder.c
index dbef48c10a34..7f2f02bfa5e2 100644
--- a/keyboards/keychron/v1/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v1/jis_encoder/jis_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
index 0086534adc1b..05f0d38846ef 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,40 +30,40 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
index 3fd9bcf8f093..bef69ccea8ec 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -29,42 +28,42 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -74,19 +73,9 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
index 0086534adc1b..05f0d38846ef 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,40 +30,40 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_86(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, 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_BASE] = LAYOUT_jis_86(
- KC_ESC, 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_DEL, KC_MUTE,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
- 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_PGDN,
- 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_NUHS, 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_INT1, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_86(
- _______, 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, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v1/jis_encoder/rules.mk b/keyboards/keychron/v1/jis_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v1/jis_encoder/rules.mk
+++ b/keyboards/keychron/v1/jis_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v1/matrix.c b/keyboards/keychron/v1/matrix.c
new file mode 100644
index 000000000000..82a883834f82
--- /dev/null
+++ b/keyboards/keychron/v1/matrix.c
@@ -0,0 +1,222 @@
+/* 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 .
+ */
+
+#include "matrix.h"
+#include "quantum.h"
+
+// Pin connected to DS of 74HC595
+#define DATA_PIN A7
+// Pin connected to SH_CP of 74HC595
+#define CLOCK_PIN B1
+// Pin connected to ST_CP of 74HC595
+#define LATCH_PIN B0
+
+#ifdef MATRIX_ROW_PINS
+static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+#endif // MATRIX_ROW_PINS
+#ifdef MATRIX_COL_PINS
+static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif // MATRIX_COL_PINS
+
+#define ROWS_PER_HAND MATRIX_ROWS
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinLow(pin);
+ }
+}
+
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinHigh(pin);
+ }
+}
+
+static inline void setPinInputHigh_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinInputHigh(pin);
+ }
+}
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+// At 3.6V input, three nops (37.5ns) should be enough for all signals
+#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
+#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
+
+static void shiftOut(uint8_t dataOut) {
+ ATOMIC_BLOCK_FORCEON {
+ for (uint8_t i = 0; i < 8; i++) {
+ compiler_barrier();
+ if (dataOut & 0x1) {
+ writePinHigh(DATA_PIN);
+ } else {
+ writePinLow(DATA_PIN);
+ }
+ dataOut = dataOut >> 1;
+ compiler_barrier();
+ writePinHigh(CLOCK_PIN);
+ small_delay();
+ writePinLow(CLOCK_PIN);
+ }
+ compiler_barrier();
+ writePinHigh(LATCH_PIN);
+ small_delay();
+ writePinLow(LATCH_PIN);
+ compiler_barrier();
+ }
+}
+
+static void shiftOut_single(uint8_t data) {
+ ATOMIC_BLOCK_FORCEON {
+ compiler_barrier();
+ if (data & 0x1) {
+ writePinHigh(DATA_PIN);
+ } else {
+ writePinLow(DATA_PIN);
+ }
+ compiler_barrier();
+ writePinHigh(CLOCK_PIN);
+ small_delay();
+ writePinLow(CLOCK_PIN);
+ compiler_barrier();
+ writePinHigh(LATCH_PIN);
+ small_delay();
+ writePinLow(LATCH_PIN);
+ compiler_barrier();
+ }
+}
+
+static bool select_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+ setPinOutput_writeLow(pin);
+ return true;
+ } else {
+ if (col == 8) {
+ shiftOut_single(0x00);
+ }
+ return true;
+ }
+ return false;
+}
+
+static void unselect_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ shiftOut_single(0x01);
+ }
+}
+
+static void unselect_cols(void) {
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ pin_t pin = col_pins[x];
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ if (x == 8)
+ // unselect shift Register
+ shiftOut(0xFF);
+ }
+ }
+}
+
+static void matrix_init_pins(void) {
+ setPinOutput(DATA_PIN);
+ setPinOutput(CLOCK_PIN);
+ setPinOutput(LATCH_PIN);
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ if (col_pins[x] != NO_PIN) {
+ setPinOutput(col_pins[x]);
+ }
+ }
+#endif
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ if (row_pins[x] != NO_PIN) {
+ setPinInputHigh_atomic(row_pins[x]);
+ }
+ }
+}
+
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ bool key_pressed = false;
+
+ // Select col
+ if (!select_col(current_col)) { // select col
+ return; // skip NO_PIN col
+ }
+
+ matrix_output_select_delay();
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
+ // Check row pin state
+ if (readMatrixPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= row_shifter;
+ key_pressed = true;
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~row_shifter;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+ matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ matrix_init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
+
+ // Set col, read rows
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
+ matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
+ }
+
+ bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
+ if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
+
+ return changed;
+}
diff --git a/keyboards/keychron/v1/readme.md b/keyboards/keychron/v1/readme.md
index 4115295023c1..d68a34230726 100644
--- a/keyboards/keychron/v1/readme.md
+++ b/keyboards/keychron/v1/readme.md
@@ -1,30 +1,18 @@
# Keychron V1
-![Keychron V1](https://i.imgur.com/zTnj6IV.jpg)
-
A customizable 75% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V1
-* Hardware Availability: [Keychron V1 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v1-qmk-via-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/v1/ansi:default
- make keychron/v1/ansi_encoder:default
- make keychron/v1/iso:default
- make keychron/v1/iso_encoder:default
- make keychron/v1/jis:default
- make keychron/v1/jis_encoder:default
Flashing example for this keyboard:
make keychron/v1/ansi:default:flash
- make keychron/v1/ansi_encoder:default:flash
- make keychron/v1/iso:default:flash
- make keychron/v1/iso_encoder:default:flash
- make keychron/v1/jis:default:flash
- make keychron/v1/jis_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v1/v1.c b/keyboards/keychron/v1/v1.c
index 374a80e09a5a..79c591917475 100644
--- a/keyboards/keychron/v1/v1.c
+++ b/keyboards/keychron/v1/v1.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -26,6 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
+
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -35,4 +36,49 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
+#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
index 4a8384cdae4b..bada8af6e98f 100644
--- a/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v10/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -146,12 +146,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v10/ansi_encoder/config.h b/keyboards/keychron/v10/ansi_encoder/config.h
index 9012abd4f75c..8b5595e4d6c6 100644
--- a/keyboards/keychron/v10/ansi_encoder/config.h
+++ b/keyboards/keychron/v10/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/v10/ansi_encoder/info.json b/keyboards/keychron/v10/ansi_encoder/info.json
index 0ae97be49187..2a7dc307cb03 100644
--- a/keyboards/keychron/v10/ansi_encoder/info.json
+++ b/keyboards/keychron/v10/ansi_encoder/info.json
@@ -5,28 +5,12 @@
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
- "pid": "0x01A1",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "pid": "0x03A1",
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -40,100 +24,100 @@
"layouts": {
"LAYOUT_ansi_89": {
"layout": [
- {"matrix":[0, 0], "x":0.25, "y":0},
- {"matrix":[0, 1], "x":1.75, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6, "y":0},
- {"matrix":[0, 6], "x":7.25, "y":0},
- {"matrix":[0, 7], "x":8.25, "y":0},
- {"matrix":[0, 8], "x":11, "y":0},
- {"matrix":[0, 9], "x":12, "y":0},
- {"matrix":[0,10], "x":13.25, "y":0},
- {"matrix":[0,11], "x":14.25, "y":0},
- {"matrix":[0,12], "x":15.25, "y":0},
- {"matrix":[0,13], "x":16.25, "y":0},
- {"matrix":[0,14], "x":17.5, "y":0},
- {"matrix":[0,15], "x":18.75, "y":0},
+ {"matrix": [0, 0], "x": 0.25, "y": 0},
+ {"matrix": [0, 1], "x": 1.75, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6, "y": 0},
+ {"matrix": [0, 6], "x": 7.25, "y": 0},
+ {"matrix": [0, 7], "x": 8.25, "y": 0},
+ {"matrix": [0, 8], "x": 11, "y": 0},
+ {"matrix": [0, 9], "x": 12, "y": 0},
+ {"matrix": [0, 10], "x": 13.25, "y": 0},
+ {"matrix": [0, 11], "x": 14.25, "y": 0},
+ {"matrix": [0, 12], "x": 15.25, "y": 0},
+ {"matrix": [0, 13], "x": 16.25, "y": 0},
+ {"matrix": [0, 14], "x": 17.5, "y": 0},
+ {"matrix": [0, 15], "x": 18.75, "y": 0},
- {"matrix":[1, 0], "x":0.75, "y":1.25},
- {"matrix":[1, 1], "x":2.25, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":7.25, "y":1.25},
- {"matrix":[1, 7], "x":8.25, "y":1.25},
- {"matrix":[1, 8], "x":10.5, "y":1.25},
- {"matrix":[1, 9], "x":11.5, "y":1.25},
- {"matrix":[1,10], "x":12.5, "y":1.25},
- {"matrix":[1,11], "x":13.5, "y":1.25},
- {"matrix":[1,12], "x":14.5, "y":1.25},
- {"matrix":[1,13], "x":15.5, "y":1.25},
- {"matrix":[1,14], "x":16.5, "y":1.25, "w":2},
- {"matrix":[1,15], "x":19, "y":1.25},
+ {"matrix": [1, 0], "x": 0.75, "y": 1.25},
+ {"matrix": [1, 1], "x": 2.25, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 7.25, "y": 1.25},
+ {"matrix": [1, 7], "x": 8.25, "y": 1.25},
+ {"matrix": [1, 8], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 13.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 14.5, "y": 1.25},
+ {"matrix": [1, 13], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 16.5, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 19, "y": 1.25},
- {"matrix":[2, 0], "x":0.5, "y":2.25},
- {"matrix":[2, 1], "x":1.75, "y":2.25, "w":1.5},
- {"matrix":[2, 2], "x":3.25, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 6], "x":7.5, "y":2.25},
- {"matrix":[2, 7], "x":10, "y":2.25},
- {"matrix":[2, 8], "x":11, "y":2.25},
- {"matrix":[2, 9], "x":12, "y":2.25},
- {"matrix":[2,10], "x":13, "y":2.25},
- {"matrix":[2,11], "x":14, "y":2.25},
- {"matrix":[2,12], "x":15.25, "y":2.25},
- {"matrix":[2,13], "x":16.25, "y":2.25},
- {"matrix":[2,14], "x":17.25, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":19.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0.5, "y": 2.25},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 2], "x": 3.25, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 10, "y": 2.25},
+ {"matrix": [2, 8], "x": 11, "y": 2.25},
+ {"matrix": [2, 9], "x": 12, "y": 2.25},
+ {"matrix": [2, 10], "x": 13, "y": 2.25},
+ {"matrix": [2, 11], "x": 14, "y": 2.25},
+ {"matrix": [2, 12], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 13], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 14], "x": 17.25, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 15], "x": 19.25, "y": 2.25},
- {"matrix":[3, 0], "x":0.25, "y":3.25},
- {"matrix":[3, 1], "x":1.5, "y":3.25, "w":1.75},
- {"matrix":[3, 2], "x":3.25, "y":3.25},
- {"matrix":[3, 3], "x":4.5, "y":3.25},
- {"matrix":[3, 4], "x":5.5, "y":3.25},
- {"matrix":[3, 5], "x":6.5, "y":3.25},
- {"matrix":[3, 6], "x":7.5, "y":3.25},
- {"matrix":[3, 8], "x":10.25, "y":3.25},
- {"matrix":[3, 9], "x":11.25, "y":3.25},
- {"matrix":[3,10], "x":12.25, "y":3.25},
- {"matrix":[3,11], "x":13.25, "y":3.25},
- {"matrix":[3,12], "x":14.75, "y":3.25},
- {"matrix":[3,13], "x":15.75, "y":3.25},
- {"matrix":[3,14], "x":16.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":19.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0.25, "y": 3.25},
+ {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 2], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 4.5, "y": 3.25},
+ {"matrix": [3, 4], "x": 5.5, "y": 3.25},
+ {"matrix": [3, 5], "x": 6.5, "y": 3.25},
+ {"matrix": [3, 6], "x": 7.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 13.25, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.75, "y": 3.25},
+ {"matrix": [3, 14], "x": 16.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 15], "x": 19.5, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25},
- {"matrix":[4, 1], "x":1.5, "y":4.25, "w":2.25},
- {"matrix":[4, 3], "x":3.5, "y":4.25},
- {"matrix":[4, 4], "x":4.75, "y":4.25},
- {"matrix":[4, 5], "x":5.75, "y":4.25},
- {"matrix":[4, 6], "x":6.75, "y":4.25},
- {"matrix":[4, 7], "x":7.75, "y":4.25},
- {"matrix":[4, 8], "x":9.5, "y":4.25},
- {"matrix":[4, 9], "x":10.5, "y":4.25},
- {"matrix":[4,10], "x":11.5, "y":4.25},
- {"matrix":[4,11], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":13.5, "y":4.25},
- {"matrix":[4,13], "x":15.25, "y":4.25},
- {"matrix":[4,14], "x":16.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":18.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25},
+ {"matrix": [4, 1], "x": 1.5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 4], "x": 4.75, "y": 4.25},
+ {"matrix": [4, 5], "x": 5.75, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.75, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.5, "y": 4.25},
+ {"matrix": [4, 9], "x": 10.5, "y": 4.25},
+ {"matrix": [4, 10], "x": 11.5, "y": 4.25},
+ {"matrix": [4, 11], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 13.5, "y": 4.25},
+ {"matrix": [4, 13], "x": 15.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 16.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 15], "x": 18.25, "y": 4.5},
- {"matrix":[5, 0], "x":0, "y":5.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":4.75, "y":5.25, "w":1.25},
- {"matrix":[5, 4], "x":6, "y":5.25, "w":2.25},
- {"matrix":[5, 7], "x":8.25, "y":5.25},
- {"matrix":[5, 8], "x":9.5, "y":5.25, "w":2.75},
- {"matrix":[5, 9], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":17.25, "y":5.5},
- {"matrix":[5,14], "x":18.25, "y":5.5},
- {"matrix":[5,15], "x":19.25, "y":5.5}
+ {"matrix": [5, 0], "x": 0, "y": 5.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 4.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 4], "x": 6, "y": 5.25, "w": 2.25},
+ {"matrix": [5, 7], "x": 8.25, "y": 5.25},
+ {"matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 2.75},
+ {"matrix": [5, 9], "x": 12.25, "y": 5.25},
+ {"matrix": [5, 13], "x": 17.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 18.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 19.25, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/v10/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v10/ansi_encoder/keymaps/default/keymap.c
index b16cf5407fca..85daf6fb52fb 100644
--- a/keyboards/keychron/v10/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v10/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
_______, 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,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/keymap.c
index c9c8d1da0668..888d9cf75453 100644
--- a/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -29,7 +28,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -37,15 +36,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_89(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL,
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -53,16 +52,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_89(
- RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -74,17 +73,11 @@ const uint16_t PROGMEM encoder_map[][1][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v10/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v10/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v10/ansi_encoder/keymaps/via/keymap.c
index 4fb15a686e55..939edd9548c5 100644
--- a/keyboards/keychron/v10/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v10/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -38,15 +38,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_ansi_89(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_BASE] = LAYOUT_ansi_89(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL,
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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,
@@ -54,16 +54,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_ansi_89(
- RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v10/ansi_encoder/rules.mk b/keyboards/keychron/v10/ansi_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v10/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v10/ansi_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v10/config.h b/keyboards/keychron/v10/config.h
index 1895c52910dd..9bc5d0f55985 100644
--- a/keyboards/keychron/v10/config.h
+++ b/keyboards/keychron/v10/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron(https://www.keychron.com)
+/* 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
@@ -16,6 +16,20 @@
#pragma once
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
+/* Pin connected to DS of 74HC595 */
+#define DATA_PIN_74HC595 A7
+/* Pin connected to SH_CP of 74HC595 */
+#define CLOCK_PIN_74HC595 B1
+/* Pin connected to ST_CP of 74HC595 */
+#define LATCH_PIN_74HC595 B0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -30,13 +44,10 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A }
+#define CKLED2001_CURRENT_TUNE { 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A, 0x98, 0x98, 0x4A }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 5 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {5,5} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -80,13 +91,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -101,10 +108,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
-
-#define HC595_STCP B0
-#define HC595_SHCP B1
-#define HC595_DS A7
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keychron/v10/halconf.h b/keyboards/keychron/v10/halconf.h
index 463d177eabc7..e490b49e005a 100644
--- a/keyboards/keychron/v10/halconf.h
+++ b/keyboards/keychron/v10/halconf.h
@@ -17,8 +17,6 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
+#define PAL_USE_CALLBACKS TRUE
#include_next
diff --git a/keyboards/keychron/v10/iso_encoder/info.json b/keyboards/keychron/v10/iso_encoder/info.json
index bbd102aedded..455b375472b3 100644
--- a/keyboards/keychron/v10/iso_encoder/info.json
+++ b/keyboards/keychron/v10/iso_encoder/info.json
@@ -8,25 +8,9 @@
"pid": "0x03A3",
"device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -40,101 +24,101 @@
"layouts": {
"LAYOUT_iso_90": {
"layout": [
- {"matrix":[0, 0], "x":0.25, "y":0},
- {"matrix":[0, 1], "x":1.75, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6, "y":0},
- {"matrix":[0, 6], "x":7.25, "y":0},
- {"matrix":[0, 7], "x":8.25, "y":0},
- {"matrix":[0, 8], "x":11, "y":0},
- {"matrix":[0, 9], "x":12, "y":0},
- {"matrix":[0,10], "x":13.25, "y":0},
- {"matrix":[0,11], "x":14.25, "y":0},
- {"matrix":[0,12], "x":15.25, "y":0},
- {"matrix":[0,13], "x":16.25, "y":0},
- {"matrix":[0,14], "x":17.5, "y":0},
- {"matrix":[0,15], "x":18.75, "y":0},
+ {"matrix": [0, 0], "x": 0.25, "y": 0},
+ {"matrix": [0, 1], "x": 1.75, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6, "y": 0},
+ {"matrix": [0, 6], "x": 7.25, "y": 0},
+ {"matrix": [0, 7], "x": 8.25, "y": 0},
+ {"matrix": [0, 8], "x": 11, "y": 0},
+ {"matrix": [0, 9], "x": 12, "y": 0},
+ {"matrix": [0, 10], "x": 13.25, "y": 0},
+ {"matrix": [0, 11], "x": 14.25, "y": 0},
+ {"matrix": [0, 12], "x": 15.25, "y": 0},
+ {"matrix": [0, 13], "x": 16.25, "y": 0},
+ {"matrix": [0, 14], "x": 17.5, "y": 0},
+ {"matrix": [0, 15], "x": 18.75, "y": 0},
- {"matrix":[1, 0], "x":0.75, "y":1.25},
- {"matrix":[1, 1], "x":2.25, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":7.25, "y":1.25},
- {"matrix":[1, 7], "x":8.25, "y":1.25},
- {"matrix":[1, 8], "x":10.5, "y":1.25},
- {"matrix":[1, 9], "x":11.5, "y":1.25},
- {"matrix":[1,10], "x":12.5, "y":1.25},
- {"matrix":[1,11], "x":13.5, "y":1.25},
- {"matrix":[1,12], "x":14.5, "y":1.25},
- {"matrix":[1,13], "x":15.5, "y":1.25},
- {"matrix":[1,14], "x":16.5, "y":1.25, "w":2},
- {"matrix":[1,15], "x":19, "y":1.25},
+ {"matrix": [1, 0], "x": 0.75, "y": 1.25},
+ {"matrix": [1, 1], "x": 2.25, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 7.25, "y": 1.25},
+ {"matrix": [1, 7], "x": 8.25, "y": 1.25},
+ {"matrix": [1, 8], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 13.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 14.5, "y": 1.25},
+ {"matrix": [1, 13], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 16.5, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 19, "y": 1.25},
- {"matrix":[2, 0], "x":0.5, "y":2.25},
- {"matrix":[2, 1], "x":1.75, "y":2.25, "w":1.5},
- {"matrix":[2, 2], "x":3.25, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 6], "x":7.5, "y":2.25},
- {"matrix":[2, 7], "x":10, "y":2.25},
- {"matrix":[2, 8], "x":11, "y":2.25},
- {"matrix":[2, 9], "x":12, "y":2.25},
- {"matrix":[2,10], "x":13, "y":2.25},
- {"matrix":[2,11], "x":14, "y":2.25},
- {"matrix":[2,12], "x":15.25, "y":2.25},
- {"matrix":[2,13], "x":16.25, "y":2.25},
- {"matrix":[2,15], "x":19.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0.5, "y": 2.25},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 2], "x": 3.25, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 10, "y": 2.25},
+ {"matrix": [2, 8], "x": 11, "y": 2.25},
+ {"matrix": [2, 9], "x": 12, "y": 2.25},
+ {"matrix": [2, 10], "x": 13, "y": 2.25},
+ {"matrix": [2, 11], "x": 14, "y": 2.25},
+ {"matrix": [2, 12], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 13], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 19.25, "y": 2.25},
- {"matrix":[3, 0], "x":0.25, "y":3.25},
- {"matrix":[3, 1], "x":1.5, "y":3.25, "w":1.75},
- {"matrix":[3, 2], "x":3.25, "y":3.25},
- {"matrix":[3, 3], "x":4.5, "y":3.25},
- {"matrix":[3, 4], "x":5.5, "y":3.25},
- {"matrix":[3, 5], "x":6.5, "y":3.25},
- {"matrix":[3, 6], "x":7.5, "y":3.25},
- {"matrix":[3, 8], "x":10.25, "y":3.25},
- {"matrix":[3, 9], "x":11.25, "y":3.25},
- {"matrix":[3,10], "x":12.25, "y":3.25},
- {"matrix":[3,11], "x":13.25, "y":3.25},
- {"matrix":[3,12], "x":14.75, "y":3.25},
- {"matrix":[3,13], "x":15.75, "y":3.25},
- {"matrix":[3,14], "x":16.75, "y":3.25},
- {"matrix":[2,14], "x":17.75, "y":3.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":19.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0.25, "y": 3.25},
+ {"matrix": [3, 1], "x": 1.5, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 2], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 4.5, "y": 3.25},
+ {"matrix": [3, 4], "x": 5.5, "y": 3.25},
+ {"matrix": [3, 5], "x": 6.5, "y": 3.25},
+ {"matrix": [3, 6], "x": 7.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 13.25, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.75, "y": 3.25},
+ {"matrix": [3, 14], "x": 16.75, "y": 3.25},
+ {"matrix": [2, 14], "x": 17.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 19.5, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25},
- {"matrix":[4, 1], "x":1.5, "y":4.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25},
- {"matrix":[4, 3], "x":3.5, "y":4.25},
- {"matrix":[4, 4], "x":4.75, "y":4.25},
- {"matrix":[4, 5], "x":5.75, "y":4.25},
- {"matrix":[4, 6], "x":6.75, "y":4.25},
- {"matrix":[4, 7], "x":7.75, "y":4.25},
- {"matrix":[4, 8], "x":9.5, "y":4.25},
- {"matrix":[4, 9], "x":10.5, "y":4.25},
- {"matrix":[4,10], "x":11.5, "y":4.25},
- {"matrix":[4,11], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":13.5, "y":4.25},
- {"matrix":[4,13], "x":15.25, "y":4.25},
- {"matrix":[4,14], "x":16.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":18.25, "y":4.5},
+ {"matrix": [4, 0], "x": 0, "y": 4.25},
+ {"matrix": [4, 1], "x": 1.5, "y": 4.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 4], "x": 4.75, "y": 4.25},
+ {"matrix": [4, 5], "x": 5.75, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.75, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.5, "y": 4.25},
+ {"matrix": [4, 9], "x": 10.5, "y": 4.25},
+ {"matrix": [4, 10], "x": 11.5, "y": 4.25},
+ {"matrix": [4, 11], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 13.5, "y": 4.25},
+ {"matrix": [4, 13], "x": 15.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 16.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 15], "x": 18.25, "y": 4.5},
- {"matrix":[5, 0], "x":0, "y":5.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":4.75, "y":5.25, "w":1.25},
- {"matrix":[5, 4], "x":6, "y":5.25, "w":2.25},
- {"matrix":[5, 7], "x":8.25, "y":5.25},
- {"matrix":[5, 8], "x":9.5, "y":5.25, "w":2.75},
- {"matrix":[5, 9], "x":12.25, "y":5.25},
- {"matrix":[5,13], "x":17.25, "y":5.5},
- {"matrix":[5,14], "x":18.25, "y":5.5},
- {"matrix":[5,15], "x":19.25, "y":5.5}
+ {"matrix": [5, 0], "x": 0, "y": 5.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 4.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 4], "x": 6, "y": 5.25, "w": 2.25},
+ {"matrix": [5, 7], "x": 8.25, "y": 5.25},
+ {"matrix": [5, 8], "x": 9.5, "y": 5.25, "w": 2.75},
+ {"matrix": [5, 9], "x": 12.25, "y": 5.25},
+ {"matrix": [5, 13], "x": 17.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 18.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 19.25, "y": 5.5}
]
}
}
diff --git a/keyboards/keychron/v10/iso_encoder/iso_encoder.c b/keyboards/keychron/v10/iso_encoder/iso_encoder.c
index a6f2fde9314a..070a01a8a828 100644
--- a/keyboards/keychron/v10/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v10/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -147,7 +147,7 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
@@ -155,4 +155,4 @@ led_config_t g_led_config = {
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v10/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v10/iso_encoder/keymaps/default/keymap.c
index 1997eb4b391e..40046cc69d82 100644
--- a/keyboards/keychron/v10/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v10/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
_______, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
_______, 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_PGDN,
_______, 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_NUHS, KC_ENT, KC_HOME,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v10/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v10/iso_encoder/keymaps/keychron/keymap.c
index 8e2367615428..0db9e3783183 100644
--- a/keyboards/keychron/v10/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v10/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -29,7 +28,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -37,15 +36,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_90(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL,
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -53,16 +52,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_90(
- RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -70,19 +69,15 @@ const uint16_t PROGMEM encoder_map[][1][2] = {
};
#endif // ENCODER_MAP_ENABLE
+// clang-format on
+
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v10/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v10/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v10/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v10/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v10/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v10/iso_encoder/keymaps/via/keymap.c
index 65a6586ae111..66545f8b1874 100644
--- a/keyboards/keychron/v10/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v10/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
+ KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -38,15 +38,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_90(
- RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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_BASE] = LAYOUT_iso_90(
- KC_MUTE, KC_ESC, 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_INS, KC_DEL,
+ KC_MUTE, KC_ESC, 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_INS, KC_DEL,
MC_1, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
MC_2, 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_PGDN,
MC_3, 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_NUHS, KC_ENT, KC_HOME,
@@ -54,16 +54,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MC_5, KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_iso_90(
- RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v10/iso_encoder/rules.mk b/keyboards/keychron/v10/iso_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v10/iso_encoder/rules.mk
+++ b/keyboards/keychron/v10/iso_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/q5/matrix.c b/keyboards/keychron/v10/matrix.c
similarity index 71%
rename from keyboards/keychron/q5/matrix.c
rename to keyboards/keychron/v10/matrix.c
index 081ee6346cf0..9269fed8d669 100644
--- a/keyboards/keychron/q5/matrix.c
+++ b/keyboards/keychron/v10/matrix.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* 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
@@ -14,12 +14,22 @@
* along with this program. If not, see .
*/
+#include "matrix.h"
#include "quantum.h"
+#ifndef PIN_USED_74HC595
+# define PIN_USED_74HC595 8
+#endif
+#ifndef PIN_START_74HC595
+# define PIN_START_74HC595 8
+#endif
-
-pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#ifdef MATRIX_ROW_PINS
+static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+#endif // MATRIX_ROW_PINS
+#ifdef MATRIX_COL_PINS
+static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif // MATRIX_COL_PINS
#define ROWS_PER_HAND (MATRIX_ROWS)
@@ -51,44 +61,42 @@ static inline uint8_t readMatrixPin(pin_t pin) {
}
}
-static inline void HC595_delay(uint16_t n) {
- while (n-- > 0) {
- asm volatile("nop" ::: "memory");
- };
+void small_delay(volatile uint8_t timeout) {
+ while (timeout--);
}
-static void HC595_output(uint8_t data) {
+static void shiftOut(uint16_t dataOut) {
ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < 8; i++) {
- if (data & 0x1) {
- writePinHigh(HC595_DS);
+ for (uint8_t i = 0; i < PIN_USED_74HC595; i++) {
+ if (dataOut & 0x1) {
+ writePinHigh(DATA_PIN_74HC595);
} else {
- writePinLow(HC595_DS);
+ writePinLow(DATA_PIN_74HC595);
}
- data = data >> 1;
- writePinHigh(HC595_SHCP);
- HC595_delay(3);
- writePinLow(HC595_SHCP);
+ dataOut = dataOut >> 1;
+ writePinHigh(CLOCK_PIN_74HC595);
+ small_delay(2);
+ writePinLow(CLOCK_PIN_74HC595);
}
- writePinHigh(HC595_STCP);
- HC595_delay(3);
- writePinLow(HC595_STCP);
+ writePinHigh(LATCH_PIN_74HC595);
+ small_delay(2);
+ writePinLow(LATCH_PIN_74HC595);
}
}
-static void HC595_output_bit(uint8_t data) {
+static void shiftOut_single(uint8_t data) {
ATOMIC_BLOCK_FORCEON {
if (data & 0x1) {
- writePinHigh(HC595_DS);
+ writePinHigh(DATA_PIN_74HC595);
} else {
- writePinLow(HC595_DS);
+ writePinLow(DATA_PIN_74HC595);
}
- writePinHigh(HC595_SHCP);
- HC595_delay(3);
- writePinLow(HC595_SHCP);
- writePinHigh(HC595_STCP);
- HC595_delay(3);
- writePinLow(HC595_STCP);
+ writePinHigh(CLOCK_PIN_74HC595);
+ small_delay(2);
+ writePinLow(CLOCK_PIN_74HC595);
+ writePinHigh(LATCH_PIN_74HC595);
+ small_delay(2);
+ writePinLow(LATCH_PIN_74HC595);
}
}
@@ -99,8 +107,8 @@ static bool select_col(uint8_t col) {
setPinOutput_writeLow(pin);
return true;
} else {
- if (col == 10) {
- HC595_output_bit(0x00);
+ if (col == PIN_START_74HC595) {
+ shiftOut_single(0x00);
}
return true;
}
@@ -117,7 +125,7 @@ static void unselect_col(uint8_t col) {
setPinInputHigh_atomic(pin);
#endif
} else {
- HC595_output_bit(0x01);
+ shiftOut_single(0x01);
}
}
@@ -133,15 +141,16 @@ static void unselect_cols(void) {
setPinInputHigh_atomic(pin);
#endif
}
- if (x == 10)
- HC595_output(0xFF);
+ if (x == PIN_START_74HC595)
+ // unselect Shift Register
+ shiftOut(0xFFFF);
}
}
static void matrix_init_pins(void) {
- setPinOutput(HC595_DS);
- setPinOutput(HC595_SHCP);
- setPinOutput(HC595_STCP);
+ setPinOutput(DATA_PIN_74HC595);
+ setPinOutput(CLOCK_PIN_74HC595);
+ setPinOutput(LATCH_PIN_74HC595);
#ifdef MATRIX_UNSELECT_DRIVE_HIGH
for (uint8_t x = 0; x < MATRIX_COLS; x++) {
if (col_pins[x] != NO_PIN) {
diff --git a/keyboards/keychron/v10/readme.md b/keyboards/keychron/v10/readme.md
index 60f1d4ea801f..248ec375210f 100644
--- a/keyboards/keychron/v10/readme.md
+++ b/keyboards/keychron/v10/readme.md
@@ -1,12 +1,10 @@
# Keychron V10
-![Keychron V10](https://i.imgur.com/Dh1WLdD.jpg)
-
A customizable 75% ergonomic keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V10
-* Hardware Availability: [Keychron V10 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v10-alice-layout-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/keychron/v10/v10.c b/keyboards/keychron/v10/v10.c
index 66c66afd863f..2e1e3f090f03 100644
--- a/keyboards/keychron/v10/v10.c
+++ b/keyboards/keychron/v10/v10.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -26,6 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
+
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -35,4 +36,51 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
+
+#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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v2/ansi/ansi.c b/keyboards/keychron/v2/ansi/ansi.c
index e93cf8798161..a2524d36cce4 100644
--- a/keyboards/keychron/v2/ansi/ansi.c
+++ b/keyboards/keychron/v2/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -109,7 +109,7 @@ led_config_t g_led_config = {
{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
{ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 65, 42, 43 },
{ 44, __, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, __, 55, 56 },
- { 57, 58, 59, __, __, __, 60, __, __, __, 61, 62, 63, 64, 66 },
+ { 57, 58, 59, __, __, __, 60, __, __, __, 61, 62, 63, 64, 66 }
},
{
// LED Index to Physical Position
@@ -117,15 +117,15 @@ led_config_t g_led_config = {
{4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {202,15}, {224,15},
{6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30}, {196,30}, {224,30},
{9,45}, {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45}, {185,45}, {209,49},
- {2,60}, {20,60}, {39,60}, {94,60}, {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64},
+ {2,60}, {20,60}, {39,60}, {94,60}, {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64}
},
{
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v2/ansi/config.h b/keyboards/keychron/v2/ansi/config.h
index 88d86a5a7f95..b6c31201a79b 100644
--- a/keyboards/keychron/v2/ansi/config.h
+++ b/keyboards/keychron/v2/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,5 +21,8 @@
#define DRIVER_2_LED_TOTAL 33
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
+
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/v2/ansi/info.json b/keyboards/keychron/v2/ansi/info.json
index 49fa470f1a28..d07fba97b864 100644
--- a/keyboards/keychron/v2/ansi/info.json
+++ b/keyboards/keychron/v2/ansi/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0320",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -32,77 +21,77 @@
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25, "w":2},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 13], "x": 13.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.25, "y":3.25},
- {"matrix":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4.25},
- {"matrix":[4,11], "x":11, "y":4.25},
- {"matrix":[4,12], "x":12, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.5},
- {"matrix":[2,12], "x":14.25, "y":4.5},
- {"matrix":[4,14], "x":15.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4.25},
+ {"matrix": [4, 11], "x": 11, "y": 4.25},
+ {"matrix": [4, 12], "x": 12, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.5},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/v2/ansi/keymaps/default/keymap.c b/keyboards/keychron/v2/ansi/keymaps/default/keymap.c
index fa10916396d3..39c169dddb61 100644
--- a/keyboards/keychron/v2/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
- 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [_FN3] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/ansi/keymaps/keychron/config.h b/keyboards/keychron/v2/ansi/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/ansi/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v2/ansi/keymaps/keychron/keymap.c
index ea2d8880fa31..f3e766c86919 100644
--- a/keyboards/keychron/v2/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
+ [_FN1] = LAYOUT_ansi_67(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [_FN3] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v2/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v2/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v2/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v2/ansi/keymaps/via/config.h b/keyboards/keychron/v2/ansi/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/ansi/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/ansi/keymaps/via/keymap.c b/keyboards/keychron/v2/ansi/keymaps/via/keymap.c
index fa10916396d3..39c169dddb61 100644
--- a/keyboards/keychron/v2/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
- 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [_FN3] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/ansi/keymaps/vnmm/keymap.c b/keyboards/keychron/v2/ansi/keymaps/vnmm/keymap.c
new file mode 100644
index 000000000000..8e93b07639aa
--- /dev/null
+++ b/keyboards/keychron/v2/ansi/keymaps/vnmm/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 @ 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 "vnmm.h"
+
+// clang-format off
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_67(
+ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RCMD, MAC_F, EXT_F, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_ansi_67(
+ QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
+ 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_DEL,
+ 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, KC_SPC, KC_RALT, WIN_F, EXT_F, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
+ EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
+
+ [WIN_FN] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
+ EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
+
+ [EXTRA_FN] = LAYOUT_ansi_67(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/keychron/v2/ansi/keymaps/vnmm/readme.md b/keyboards/keychron/v2/ansi/keymaps/vnmm/readme.md
new file mode 100644
index 000000000000..c4fd5e9d017b
--- /dev/null
+++ b/keyboards/keychron/v2/ansi/keymaps/vnmm/readme.md
@@ -0,0 +1,10 @@
+# Vnmm's Keychron V2 ansi layout
+
+This keymap builds on the default but with some extras I use on all my keyboards
+
+## Features
+
+- Alphabet keys light up red when caps lock is on or shift is pressed
+- Pressing either FN shows keys that have a definition
+- Via enabled
+- Reset to bootloader with FN+Space
diff --git a/keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk b/keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk
new file mode 100644
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/v2/ansi/keymaps/vnmm/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/v2/ansi/rules.mk b/keyboards/keychron/v2/ansi/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/v2/ansi/rules.mk
+++ b/keyboards/keychron/v2/ansi/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
index 1ebdc6f4bde3..2c9fe0e8e28e 100644
--- a/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v2/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -125,8 +125,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v2/ansi_encoder/config.h b/keyboards/keychron/v2/ansi_encoder/config.h
index 17d0d125de1b..6ee6d1e7c66e 100644
--- a/keyboards/keychron/v2/ansi_encoder/config.h
+++ b/keyboards/keychron/v2/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/v2/ansi_encoder/info.json b/keyboards/keychron/v2/ansi_encoder/info.json
index 37eb953fbf9e..c733b389e685 100644
--- a/keyboards/keychron/v2/ansi_encoder/info.json
+++ b/keyboards/keychron/v2/ansi_encoder/info.json
@@ -1,26 +1,15 @@
{
- "keyboard_name": "Keychron V2",
+ "keyboard_name": "V2",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0321",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -37,77 +26,77 @@
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25, "w":2},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 13], "x": 13.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.25, "y":3.25},
- {"matrix":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4.25},
- {"matrix":[4,11], "x":11, "y":4.25},
- {"matrix":[4,12], "x":12, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.5},
- {"matrix":[2,12], "x":14.25, "y":4.5},
- {"matrix":[4,14], "x":15.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4.25},
+ {"matrix": [4, 11], "x": 11, "y": 4.25},
+ {"matrix": [4, 12], "x": 12, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.5},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v2/ansi_encoder/keymaps/default/keymap.c
index 4c2df8554722..71da961daccc 100644
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
- 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,
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_67(
- 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,
+ [_FN2] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [_FN3] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/keymap.c
index 484b2dd6c1a8..5aa3a1feccca 100644
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
+ [_FN1] = LAYOUT_ansi_67(
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_ansi_67(
+ [_FN2] = LAYOUT_ansi_67(
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_ansi_67(
+ [_FN3] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -68,28 +67,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/v2/ansi_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v2/ansi_encoder/keymaps/via/keymap.c
index 4c2df8554722..71da961daccc 100644
--- a/keyboards/keychron/v2/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_67(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_67(
- 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,
+ [_FN1] = LAYOUT_ansi_67(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_67(
- 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,
+ [_FN2] = LAYOUT_ansi_67(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_67(
+ [_FN3] = LAYOUT_ansi_67(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/ansi_encoder/rules.mk b/keyboards/keychron/v2/ansi_encoder/rules.mk
index 4bc1e23a57a0..5091fe94148b 100644
--- a/keyboards/keychron/v2/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v2/ansi_encoder/rules.mk
@@ -1,8 +1,18 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/config.h b/keyboards/keychron/v2/config.h
index 11b41476fb62..08cc5b8e8412 100644
--- a/keyboards/keychron/v2/config.h
+++ b/keyboards/keychron/v2/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -33,20 +33,18 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60, 0xCA, 0xCA, 0x60 }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -83,13 +81,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -104,6 +98,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(2)
-#define FN_KEY2 MO(3)
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keychron/v2/halconf.h b/keyboards/keychron/v2/halconf.h
index 463d177eabc7..41bddcb2799b 100644
--- a/keyboards/keychron/v2/halconf.h
+++ b/keyboards/keychron/v2/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/v2/iso/config.h b/keyboards/keychron/v2/iso/config.h
index 1ea629f68067..b952607d83ef 100644
--- a/keyboards/keychron/v2/iso/config.h
+++ b/keyboards/keychron/v2/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/v2/iso/info.json b/keyboards/keychron/v2/iso/info.json
index 60bb1e6daac2..0d8376f7b76e 100644
--- a/keyboards/keychron/v2/iso/info.json
+++ b/keyboards/keychron/v2/iso/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0322",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -32,78 +21,78 @@
"layouts": {
"LAYOUT_iso_68": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25, "w":2},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25},
- {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25},
+ {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.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":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.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": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4.25},
- {"matrix":[4,11], "x":11, "y":4.25},
- {"matrix":[4,12], "x":12, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.5},
- {"matrix":[2,12], "x":14.25, "y":4.5},
- {"matrix":[4,14], "x":15.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4.25},
+ {"matrix": [4, 11], "x": 11, "y": 4.25},
+ {"matrix": [4, 12], "x": 12, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.5},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/v2/iso/iso.c b/keyboards/keychron/v2/iso/iso.c
index 9f6a274167c0..385f5662524b 100644
--- a/keyboards/keychron/v2/iso/iso.c
+++ b/keyboards/keychron/v2/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -126,7 +126,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v2/iso/keymaps/default/keymap.c b/keyboards/keychron/v2/iso/keymaps/default/keymap.c
index 3401266132fc..bdee4ad8fd5a 100644
--- a/keyboards/keychron/v2/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [_FN3] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/iso/keymaps/keychron/config.h b/keyboards/keychron/v2/iso/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/iso/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v2/iso/keymaps/keychron/keymap.c
index 5a61f3f06bb5..f96ce108bea7 100644
--- a/keyboards/keychron/v2/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
+ [_FN1] = LAYOUT_iso_68(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [_FN3] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v2/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v2/iso/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v2/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v2/iso/keymaps/via/config.h b/keyboards/keychron/v2/iso/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/iso/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso/keymaps/via/keymap.c b/keyboards/keychron/v2/iso/keymaps/via/keymap.c
index 3401266132fc..bdee4ad8fd5a 100644
--- a/keyboards/keychron/v2/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [_FN3] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/iso/rules.mk b/keyboards/keychron/v2/iso/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/v2/iso/rules.mk
+++ b/keyboards/keychron/v2/iso/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/iso_encoder/config.h b/keyboards/keychron/v2/iso_encoder/config.h
index 2f97b868b9dc..f69d6834538d 100644
--- a/keyboards/keychron/v2/iso_encoder/config.h
+++ b/keyboards/keychron/v2/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/v2/iso_encoder/info.json b/keyboards/keychron/v2/iso_encoder/info.json
index 7291bebf2918..0241cdb21e30 100644
--- a/keyboards/keychron/v2/iso_encoder/info.json
+++ b/keyboards/keychron/v2/iso_encoder/info.json
@@ -1,25 +1,15 @@
-{ "keyboard_name": "Keychron V2",
+{
+ "keyboard_name": "Keychron V2",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0323",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -36,78 +26,78 @@
"layouts": {
"LAYOUT_iso_68": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25, "w":2},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25},
- {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25},
+ {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.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":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":14.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.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": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4.25},
- {"matrix":[4,11], "x":11, "y":4.25},
- {"matrix":[4,12], "x":12, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.5},
- {"matrix":[2,12], "x":14.25, "y":4.5},
- {"matrix":[4,14], "x":15.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4.25, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4.25},
+ {"matrix": [4, 11], "x": 11, "y": 4.25},
+ {"matrix": [4, 12], "x": 12, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.5},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/v2/iso_encoder/iso_encoder.c b/keyboards/keychron/v2/iso_encoder/iso_encoder.c
index 82dd116e79ec..385f5662524b 100644
--- a/keyboards/keychron/v2/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v2/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -126,8 +126,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 4, 4, 1, 1, 1
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v2/iso_encoder/keymaps/default/keymap.c
index cc408fea0e1a..585b6bb6cb02 100644
--- a/keyboards/keychron/v2/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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,
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_68(
- 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,
+ [_FN2] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [_FN3] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/keymap.c
index e7279ae461eb..8057fd7a1bed 100644
--- a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
+ [_FN1] = LAYOUT_iso_68(
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_iso_68(
+ [_FN2] = LAYOUT_iso_68(
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_iso_68(
+ [_FN3] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -68,28 +67,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/v2/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/via/config.h b/keyboards/keychron/v2/iso_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/iso_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v2/iso_encoder/keymaps/via/keymap.c
index cc408fea0e1a..585b6bb6cb02 100644
--- a/keyboards/keychron/v2/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_68(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_68(
- 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,
+ [_FN1] = LAYOUT_iso_68(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_68(
- 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,
+ [_FN2] = LAYOUT_iso_68(
+ 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_68(
+ [_FN3] = LAYOUT_iso_68(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/iso_encoder/rules.mk b/keyboards/keychron/v2/iso_encoder/rules.mk
index 4bc1e23a57a0..5091fe94148b 100644
--- a/keyboards/keychron/v2/iso_encoder/rules.mk
+++ b/keyboards/keychron/v2/iso_encoder/rules.mk
@@ -1,8 +1,18 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/jis/config.h b/keyboards/keychron/v2/jis/config.h
index e6d9bff37597..f258f9edd16e 100644
--- a/keyboards/keychron/v2/jis/config.h
+++ b/keyboards/keychron/v2/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,5 +21,8 @@
#define DRIVER_2_LED_TOTAL 36
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D }
+
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 30
diff --git a/keyboards/keychron/v2/jis/info.json b/keyboards/keychron/v2/jis/info.json
index c051b0063641..f65e2b51d2ac 100644
--- a/keyboards/keychron/v2/jis/info.json
+++ b/keyboards/keychron/v2/jis/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0324",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -32,81 +21,81 @@
"layouts": {
"LAYOUT_jis_71": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25},
- {"matrix":[3, 1], "x":14, "y":0.25},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25},
+ {"matrix": [3, 1], "x": 14, "y": 0.25},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25},
- {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25},
+ {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.25, "y":3.25},
- {"matrix":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,12], "x":12.25, "y":3.25},
- {"matrix":[3,13], "x":13.25, "y":3.25},
- {"matrix":[3,14], "x":14.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 12], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 13.25, "y": 3.25},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25},
- {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":3.5, "y":4.25},
- {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5},
- {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[2,12], "x":14.25, "y":4.25},
- {"matrix":[4,14], "x":15.25, "y":4.25}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 6], "x": 4.5, "y": 4.25, "w": 4.5},
+ {"matrix": [4, 9], "x": 9, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.25}
]
}
}
diff --git a/keyboards/keychron/v2/jis/jis.c b/keyboards/keychron/v2/jis/jis.c
index c84f2d107622..b9060cafb2bb 100644
--- a/keyboards/keychron/v2/jis/jis.c
+++ b/keyboards/keychron/v2/jis/jis.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -127,7 +127,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1
+ 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1
}
};
diff --git a/keyboards/keychron/v2/jis/keymaps/default/keymap.c b/keyboards/keychron/v2/jis/keymaps/default/keymap.c
index cf85a0ebe58e..30e83b21a624 100644
--- a/keyboards/keychron/v2/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
- 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, _______, _______, _______,
+ [_FN1] = LAYOUT_jis_71(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/jis/keymaps/keychron/config.h b/keyboards/keychron/v2/jis/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/jis/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
index cd4c0b419204..68c399a18b65 100644
--- a/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
+ [_FN1] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v2/jis/keymaps/keychron/rules.mk b/keyboards/keychron/v2/jis/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v2/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v2/jis/keymaps/via/config.h b/keyboards/keychron/v2/jis/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/jis/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/jis/keymaps/via/keymap.c b/keyboards/keychron/v2/jis/keymaps/via/keymap.c
index cf85a0ebe58e..30e83b21a624 100644
--- a/keyboards/keychron/v2/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
- 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, _______, _______, _______,
+ [_FN1] = LAYOUT_jis_71(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v2/jis/rules.mk b/keyboards/keychron/v2/jis/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/v2/jis/rules.mk
+++ b/keyboards/keychron/v2/jis/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/jis_encoder/config.h b/keyboards/keychron/v2/jis_encoder/config.h
index fc961ea2dbb2..a9a3438ab759 100644
--- a/keyboards/keychron/v2/jis_encoder/config.h
+++ b/keyboards/keychron/v2/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,6 +21,9 @@
#define DRIVER_2_LED_TOTAL 36
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D, 0xBD, 0xBD, 0x5D }
+
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v2/jis_encoder/info.json b/keyboards/keychron/v2/jis_encoder/info.json
index 0dfaac90ed17..263e403167c6 100644
--- a/keyboards/keychron/v2/jis_encoder/info.json
+++ b/keyboards/keychron/v2/jis_encoder/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0325",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -37,81 +26,81 @@
"layouts": {
"LAYOUT_jis_71": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0.25},
- {"matrix":[0, 1], "x":1, "y":0.25},
- {"matrix":[0, 2], "x":2, "y":0.25},
- {"matrix":[0, 3], "x":3, "y":0.25},
- {"matrix":[0, 4], "x":4, "y":0.25},
- {"matrix":[0, 5], "x":5, "y":0.25},
- {"matrix":[0, 6], "x":6, "y":0.25},
- {"matrix":[0, 7], "x":7, "y":0.25},
- {"matrix":[0, 8], "x":8, "y":0.25},
- {"matrix":[0, 9], "x":9, "y":0.25},
- {"matrix":[0,10], "x":10, "y":0.25},
- {"matrix":[0,11], "x":11, "y":0.25},
- {"matrix":[0,12], "x":12, "y":0.25},
- {"matrix":[0,13], "x":13, "y":0.25},
- {"matrix":[3, 1], "x":14, "y":0.25},
- {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0.25},
+ {"matrix": [0, 1], "x": 1, "y": 0.25},
+ {"matrix": [0, 2], "x": 2, "y": 0.25},
+ {"matrix": [0, 3], "x": 3, "y": 0.25},
+ {"matrix": [0, 4], "x": 4, "y": 0.25},
+ {"matrix": [0, 5], "x": 5, "y": 0.25},
+ {"matrix": [0, 6], "x": 6, "y": 0.25},
+ {"matrix": [0, 7], "x": 7, "y": 0.25},
+ {"matrix": [0, 8], "x": 8, "y": 0.25},
+ {"matrix": [0, 9], "x": 9, "y": 0.25},
+ {"matrix": [0, 10], "x": 10, "y": 0.25},
+ {"matrix": [0, 11], "x": 11, "y": 0.25},
+ {"matrix": [0, 12], "x": 12, "y": 0.25},
+ {"matrix": [0, 13], "x": 13, "y": 0.25},
+ {"matrix": [3, 1], "x": 14, "y": 0.25},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1.25},
- {"matrix":[1, 2], "x":2.5, "y":1.25},
- {"matrix":[1, 3], "x":3.5, "y":1.25},
- {"matrix":[1, 4], "x":4.5, "y":1.25},
- {"matrix":[1, 5], "x":5.5, "y":1.25},
- {"matrix":[1, 6], "x":6.5, "y":1.25},
- {"matrix":[1, 7], "x":7.5, "y":1.25},
- {"matrix":[1, 8], "x":8.5, "y":1.25},
- {"matrix":[1, 9], "x":9.5, "y":1.25},
- {"matrix":[1,10], "x":10.5, "y":1.25},
- {"matrix":[1,11], "x":11.5, "y":1.25},
- {"matrix":[1,12], "x":12.5, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1.25},
+ {"matrix": [1, 2], "x": 2.5, "y": 1.25},
+ {"matrix": [1, 3], "x": 3.5, "y": 1.25},
+ {"matrix": [1, 4], "x": 4.5, "y": 1.25},
+ {"matrix": [1, 5], "x": 5.5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6.5, "y": 1.25},
+ {"matrix": [1, 7], "x": 7.5, "y": 1.25},
+ {"matrix": [1, 8], "x": 8.5, "y": 1.25},
+ {"matrix": [1, 9], "x": 9.5, "y": 1.25},
+ {"matrix": [1, 10], "x": 10.5, "y": 1.25},
+ {"matrix": [1, 11], "x": 11.5, "y": 1.25},
+ {"matrix": [1, 12], "x": 12.5, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2.25},
- {"matrix":[2, 2], "x":2.75, "y":2.25},
- {"matrix":[2, 3], "x":3.75, "y":2.25},
- {"matrix":[2, 4], "x":4.75, "y":2.25},
- {"matrix":[2, 5], "x":5.75, "y":2.25},
- {"matrix":[2, 6], "x":6.75, "y":2.25},
- {"matrix":[2, 7], "x":7.75, "y":2.25},
- {"matrix":[2, 8], "x":8.75, "y":2.25},
- {"matrix":[2, 9], "x":9.75, "y":2.25},
- {"matrix":[2,10], "x":10.75, "y":2.25},
- {"matrix":[2,11], "x":11.75, "y":2.25},
- {"matrix":[2,13], "x":12.75, "y":2.25},
- {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.75, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.75, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.75, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.75, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.75, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.75, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.75, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.75, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.75, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 12.75, "y": 2.25},
+ {"matrix": [1, 13], "x": 13.75, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.25, "y":3.25},
- {"matrix":[3, 4], "x":4.25, "y":3.25},
- {"matrix":[3, 5], "x":5.25, "y":3.25},
- {"matrix":[3, 6], "x":6.25, "y":3.25},
- {"matrix":[3, 7], "x":7.25, "y":3.25},
- {"matrix":[3, 8], "x":8.25, "y":3.25},
- {"matrix":[3, 9], "x":9.25, "y":3.25},
- {"matrix":[3,10], "x":10.25, "y":3.25},
- {"matrix":[3,11], "x":11.25, "y":3.25},
- {"matrix":[3,12], "x":12.25, "y":3.25},
- {"matrix":[3,13], "x":13.25, "y":3.25},
- {"matrix":[3,14], "x":14.25, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.25, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.25, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.25, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.25, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.25, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.25, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.25, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.25, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.25, "y": 3.25},
+ {"matrix": [3, 12], "x": 12.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 13.25, "y": 3.25},
+ {"matrix": [3, 14], "x": 14.25, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25},
- {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":3.5, "y":4.25},
- {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5},
- {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25},
- {"matrix":[2,12], "x":14.25, "y":4.25},
- {"matrix":[4,14], "x":15.25, "y":4.25}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 3.5, "y": 4.25},
+ {"matrix": [4, 6], "x": 4.5, "y": 4.25, "w": 4.5},
+ {"matrix": [4, 9], "x": 9, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25},
+ {"matrix": [2, 12], "x": 14.25, "y": 4.25},
+ {"matrix": [4, 14], "x": 15.25, "y": 4.25}
]
}
}
diff --git a/keyboards/keychron/v2/jis_encoder/jis_encoder.c b/keyboards/keychron/v2/jis_encoder/jis_encoder.c
index 71d4f0af8e11..661ee0c1d65f 100644
--- a/keyboards/keychron/v2/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v2/jis_encoder/jis_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -127,8 +127,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
index 8d11a8a0ea98..68ca97e791b4 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
- 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,
+ [_FN1] = LAYOUT_jis_71(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/config.h b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
index a55d05f873da..49bdca2fd121 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
+ [_FN1] = LAYOUT_jis_71(
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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -68,28 +67,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/via/config.h b/keyboards/keychron/v2/jis_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v2/jis_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
index c6d2c5262b3e..68ca97e791b4 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, 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_INT1, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_jis_71(
+ [_FN1] = LAYOUT_jis_71(
KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_jis_71(
+ [_FN2] = LAYOUT_jis_71(
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_jis_71(
+ [_FN3] = LAYOUT_jis_71(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = { ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v2/jis_encoder/rules.mk b/keyboards/keychron/v2/jis_encoder/rules.mk
index 4bc1e23a57a0..5091fe94148b 100644
--- a/keyboards/keychron/v2/jis_encoder/rules.mk
+++ b/keyboards/keychron/v2/jis_encoder/rules.mk
@@ -1,8 +1,18 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v2/readme.md b/keyboards/keychron/v2/readme.md
index 03c36a064ea6..7836a457fbd9 100644
--- a/keyboards/keychron/v2/readme.md
+++ b/keyboards/keychron/v2/readme.md
@@ -1,30 +1,18 @@
# Keychron V2
-![Keychron V2](https://i.imgur.com/mEZWo30.jpg)
-
A customizable 65% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V2
-* Hardware Availability: [Keychron V2 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v2-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/v2/ansi:default
- make keychron/v2/ansi_encoder:default
- make keychron/v2/iso:default
- make keychron/v2/iso_encoder:default
- make keychron/v2/jis:default
- make keychron/v2/jis_encoder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/v2/ansi:default:flash
- make keychron/v2/ansi_encoder:default:flash
- make keychron/v2/iso:default:flash
- make keychron/v2/iso_encoder:default:flash
- make keychron/v2/jis:default:flash
- make keychron/v2/jis_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v2/v2.c b/keyboards/keychron/v2/v2.c
index e903b1f70ae8..7703c280df08 100644
--- a/keyboards/keychron/v2/v2.c
+++ b/keyboards/keychron/v2/v2.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,48 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
+
+#endif // DIP_SWITCH_ENABLE
+
+#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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v3/ansi/ansi.c b/keyboards/keychron/v3/ansi/ansi.c
index fc6d20f0a875..6d56122c5249 100644
--- a/keyboards/keychron/v3/ansi/ansi.c
+++ b/keyboards/keychron/v3/ansi/ansi.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -143,11 +143,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v3/ansi/config.h b/keyboards/keychron/v3/ansi/config.h
index 9e3a2704cf65..ff756dc04656 100644
--- a/keyboards/keychron/v3/ansi/config.h
+++ b/keyboards/keychron/v3/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,10 +16,22 @@
#pragma once
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
+
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 39
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0x95, 0x95, 0x55, 0x95, 0x95, 0x55, 0x95, 0x95, 0x55, 0x95, 0x95, 0x55 }
+
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
diff --git a/keyboards/keychron/v3/ansi/info.json b/keyboards/keychron/v3/ansi/info.json
index 1c26ca175016..65720663291a 100644
--- a/keyboards/keychron/v3/ansi/info.json
+++ b/keyboards/keychron/v3/ansi/info.json
@@ -6,124 +6,108 @@
"usb": {
"vid": "0x3434",
"pid": "0x0330",
- "device_version": "1.0.4"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
- "LAYOUT_ansi_87": {
+ "LAYOUT_tkl_ansi": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
}
diff --git a/keyboards/keychron/v3/ansi/keymaps/default/keymap.c b/keyboards/keychron/v3/ansi/keymaps/default/keymap.c
index 314593c5e1f8..4a986de4df04 100644
--- a/keyboards/keychron/v3/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_87(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v3/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v3/ansi/keymaps/keychron/keymap.c
index a61b0b9ca750..9673bf32f15a 100644
--- a/keyboards/keychron/v3/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -28,7 +27,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_87(
+ [MAC_BASE] = LAYOUT_tkl_ansi(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -36,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -52,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -65,17 +64,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v3/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v3/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v3/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v3/ansi/keymaps/via/keymap.c b/keyboards/keychron/v3/ansi/keymaps/via/keymap.c
index 314593c5e1f8..4a986de4df04 100644
--- a/keyboards/keychron/v3/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_87(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_87(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_87(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_87(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v3/ansi/rules.mk b/keyboards/keychron/v3/ansi/rules.mk
index 4bc1e23a57a0..c37beecb9ec1 100644
--- a/keyboards/keychron/v3/ansi/rules.mk
+++ b/keyboards/keychron/v3/ansi/rules.mk
@@ -1,8 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
index b513c15ed422..5ed38074e3de 100644
--- a/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v3/ansi_encoder/ansi_encoder.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v3/ansi_encoder/config.h b/keyboards/keychron/v3/ansi_encoder/config.h
index 6ecb3a5cf9f9..6310f181a08c 100644
--- a/keyboards/keychron/v3/ansi_encoder/config.h
+++ b/keyboards/keychron/v3/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,6 +16,12 @@
#pragma once
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 39
diff --git a/keyboards/keychron/v3/ansi_encoder/info.json b/keyboards/keychron/v3/ansi_encoder/info.json
index e52a53c6a2df..cffbc851581c 100644
--- a/keyboards/keychron/v3/ansi_encoder/info.json
+++ b/keyboards/keychron/v3/ansi_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0331",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -35,101 +19,101 @@
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
- "LAYOUT_ansi_88": {
+ "LAYOUT_tkl_f13_ansi": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
}
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v3/ansi_encoder/keymaps/default/keymap.c
index ccaee932d967..1d3b2a2d4651 100644
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_88(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_f13_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_88(
+ [MAC_FN] = LAYOUT_tkl_f13_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_88(
+ [WIN_BASE] = LAYOUT_tkl_f13_ansi(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_88(
+ [WIN_FN] = LAYOUT_tkl_f13_ansi(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/keymap.c
index 3a60cc8dda97..1cae15b737c2 100644
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -28,7 +27,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_88(
+ [MAC_BASE] = LAYOUT_tkl_f13_ansi(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -36,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_88(
+ [MAC_FN] = LAYOUT_tkl_f13_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_88(
+ [WIN_BASE] = LAYOUT_tkl_f13_ansi(
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -52,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_88(
+ [WIN_FN] = LAYOUT_tkl_f13_ansi(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -62,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -74,17 +73,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v3/ansi_encoder/keymaps/via/keymap.c
index ccaee932d967..1d3b2a2d4651 100644
--- a/keyboards/keychron/v3/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_88(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_f13_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_ansi_88(
+ [MAC_FN] = LAYOUT_tkl_f13_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_ansi_88(
+ [WIN_BASE] = LAYOUT_tkl_f13_ansi(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_ansi_88(
+ [WIN_FN] = LAYOUT_tkl_f13_ansi(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/keymap.c b/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/keymap.c
new file mode 100644
index 000000000000..e32c683016fd
--- /dev/null
+++ b/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/keymap.c
@@ -0,0 +1,77 @@
+/* Copyright 2021 @ 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 "vnmm.h"
+
+// clang-format off
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_tkl_f13_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_BASE] = LAYOUT_tkl_f13_ansi(
+ KC_ESC, 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_MUTE, KC_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_tkl_f13_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_MPRV, _______, KC_MNXT),
+
+ [WIN_FN] = LAYOUT_tkl_f13_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_SPI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_SPD, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ EE_CLR, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_MPRV, _______, KC_MNXT),
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+};
+#endif // ENCODER_MAP_ENABLE
+
+#ifdef DIP_SWITCH_ENABLE
+
+bool dip_switch_update_user(uint8_t index, bool active) {
+ if (index == 0) {
+ default_layer_set(1UL << (active ? 1 : 0));
+ }
+ return false;
+}
+
+#endif // DIP_SWITCH_ENABLE
\ No newline at end of file
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/via/rules.mk b/keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/rules.mk
similarity index 100%
rename from keyboards/keychron/v6/jis_encoder/keymaps/via/rules.mk
rename to keyboards/keychron/v3/ansi_encoder/keymaps/vnmm/rules.mk
diff --git a/keyboards/keychron/v3/ansi_encoder/rules.mk b/keyboards/keychron/v3/ansi_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v3/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v3/ansi_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v3/config.h b/keyboards/keychron/v3/config.h
index 10f2c6cebb2a..87ab3c866753 100644
--- a/keyboards/keychron/v3/config.h
+++ b/keyboards/keychron/v3/config.h
@@ -16,8 +16,8 @@
#pragma once
-/* If PH3 used with a stronger pull resistor then the following definition needs be included */
-// #define MATRIX_UNSELECT_DRIVE_HIGH
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
@@ -33,14 +33,9 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0x98, 0x98, 0x44, 0x98, 0x98, 0x44, 0x98, 0x98, 0x44, 0x98, 0x98, 0x44 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
-#define OS_SWITCH_REVERSE
+#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -84,13 +79,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -105,10 +96,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
-
-#define HC595_STCP B0
-#define HC595_SHCP B1
-#define HC595_DS A7
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/v3/halconf.h b/keyboards/keychron/v3/halconf.h
index a3b80ff51749..41bddcb2799b 100644
--- a/keyboards/keychron/v3/halconf.h
+++ b/keyboards/keychron/v3/halconf.h
@@ -14,9 +14,8 @@
* along with this program. If not, see .
*/
+#pragma once
+
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/v3/iso/config.h b/keyboards/keychron/v3/iso/config.h
index 2f7f39ad9517..ca0a03a71023 100644
--- a/keyboards/keychron/v3/iso/config.h
+++ b/keyboards/keychron/v3/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,6 +16,15 @@
#pragma once
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
+
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 40
diff --git a/keyboards/keychron/v3/iso/info.json b/keyboards/keychron/v3/iso/info.json
index ca24e67e4a65..18c73a8f5821 100644
--- a/keyboards/keychron/v3/iso/info.json
+++ b/keyboards/keychron/v3/iso/info.json
@@ -6,125 +6,109 @@
"usb": {
"vid": "0x3434",
"pid": "0x0332",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
- "LAYOUT_iso_88": {
+ "LAYOUT_tkl_iso": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
}
diff --git a/keyboards/keychron/v3/iso/iso.c b/keyboards/keychron/v3/iso/iso.c
index d648ecf46e49..95b324d11b2c 100644
--- a/keyboards/keychron/v3/iso/iso.c
+++ b/keyboards/keychron/v3/iso/iso.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -144,11 +144,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v3/iso/keymaps/default/keymap.c b/keyboards/keychron/v3/iso/keymaps/default/keymap.c
index 0b0255078e15..e50315c1fd60 100644
--- a/keyboards/keychron/v3/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -27,15 +27,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_88(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_iso(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_88(
+ [MAC_FN] = LAYOUT_tkl_iso(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_88(
+ [WIN_BASE] = LAYOUT_tkl_iso(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_88(
+ [WIN_FN] = LAYOUT_tkl_iso(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v3/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v3/iso/keymaps/keychron/keymap.c
index 8a4d678d33e4..b1e5b98bfa8d 100644
--- a/keyboards/keychron/v3/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,7 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
+
enum layers{
MAC_BASE,
@@ -26,7 +26,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_88(
+ [MAC_BASE] = LAYOUT_tkl_iso(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_88(
+ [MAC_FN] = LAYOUT_tkl_iso(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_88(
+ [WIN_BASE] = LAYOUT_tkl_iso(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_88(
+ [WIN_FN] = LAYOUT_tkl_iso(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -61,17 +61,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v3/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v3/iso/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v3/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v3/iso/keymaps/via/keymap.c b/keyboards/keychron/v3/iso/keymaps/via/keymap.c
index 0b0255078e15..e50315c1fd60 100644
--- a/keyboards/keychron/v3/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -27,15 +27,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_88(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_iso(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_88(
+ [MAC_FN] = LAYOUT_tkl_iso(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_88(
+ [WIN_BASE] = LAYOUT_tkl_iso(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_88(
+ [WIN_FN] = LAYOUT_tkl_iso(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v3/iso/rules.mk b/keyboards/keychron/v3/iso/rules.mk
index 9077e5e2e345..2eadfbded904 100644
--- a/keyboards/keychron/v3/iso/rules.mk
+++ b/keyboards/keychron/v3/iso/rules.mk
@@ -1,10 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes # 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 = yes
+RGB_MATRIX_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
-
-VPATH += keyboards/keychron/common
diff --git a/keyboards/keychron/v3/iso_encoder/config.h b/keyboards/keychron/v3/iso_encoder/config.h
index 7c9eb0a32e67..7033a2093aa4 100644
--- a/keyboards/keychron/v3/iso_encoder/config.h
+++ b/keyboards/keychron/v3/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,6 +16,12 @@
#pragma once
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 40
diff --git a/keyboards/keychron/v3/iso_encoder/info.json b/keyboards/keychron/v3/iso_encoder/info.json
index 6e48497ee6df..60c56a6b87bb 100644
--- a/keyboards/keychron/v3/iso_encoder/info.json
+++ b/keyboards/keychron/v3/iso_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0333",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -35,102 +19,102 @@
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
- "LAYOUT_iso_89": {
+ "LAYOUT_tkl_f13_iso": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
}
diff --git a/keyboards/keychron/v3/iso_encoder/iso_encoder.c b/keyboards/keychron/v3/iso_encoder/iso_encoder.c
index a213a7637aee..6231172fde56 100644
--- a/keyboards/keychron/v3/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v3/iso_encoder/iso_encoder.c
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -144,12 +144,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v3/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v3/iso_encoder/keymaps/default/keymap.c
index 0a99c4c2880b..9d9286552822 100644
--- a/keyboards/keychron/v3/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_89(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_f13_iso(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_89(
+ [MAC_FN] = LAYOUT_tkl_f13_iso(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_89(
+ [WIN_BASE] = LAYOUT_tkl_f13_iso(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_89(
+ [WIN_FN] = LAYOUT_tkl_f13_iso(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v3/iso_encoder/keymaps/keychron/keymap.c
index 03715140eeb3..3f28e23e31d7 100644
--- a/keyboards/keychron/v3/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -28,7 +27,7 @@ enum layers{
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_89(
+ [MAC_BASE] = LAYOUT_tkl_f13_iso(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -36,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMMD, KC_ROPTN,MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_89(
+ [MAC_FN] = LAYOUT_tkl_f13_iso(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_89(
+ [WIN_BASE] = LAYOUT_tkl_f13_iso(
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -52,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_89(
+ [WIN_FN] = LAYOUT_tkl_f13_iso(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -64,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -76,17 +75,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v3/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v3/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v3/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v3/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v3/iso_encoder/keymaps/via/keymap.c
index 0a99c4c2880b..9d9286552822 100644
--- a/keyboards/keychron/v3/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -29,15 +29,15 @@ enum layers{
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_89(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ [MAC_BASE] = LAYOUT_tkl_f13_iso(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, 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, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_iso_89(
+ [MAC_FN] = LAYOUT_tkl_f13_iso(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_iso_89(
+ [WIN_BASE] = LAYOUT_tkl_f13_iso(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, 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_LCMD, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_iso_89(
+ [WIN_FN] = LAYOUT_tkl_f13_iso(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/iso_encoder/rules.mk b/keyboards/keychron/v3/iso_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v3/iso_encoder/rules.mk
+++ b/keyboards/keychron/v3/iso_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v3/jis/config.h b/keyboards/keychron/v3/jis/config.h
index ae247da3ee89..f19e7538c29e 100644
--- a/keyboards/keychron/v3/jis/config.h
+++ b/keyboards/keychron/v3/jis/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,10 +16,23 @@
#pragma once
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { C14, C15, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, A8, A9, A10, H3 }
+
+/* If PH3 used with a stronger pull resistor then the following definition needs be included */
+// #define MATRIX_UNSELECT_DRIVE_HIGH
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 48
#define DRIVER_2_LED_TOTAL 43
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44 }
+
/* Enable CapsLcok LED */
#define CAPS_LOCK_LED_INDEX 50
+
diff --git a/keyboards/keychron/v3/jis/info.json b/keyboards/keychron/v3/jis/info.json
index 3088496b8b2a..9b97707b2f7d 100644
--- a/keyboards/keychron/v3/jis/info.json
+++ b/keyboards/keychron/v3/jis/info.json
@@ -6,128 +6,112 @@
"usb": {
"vid": "0x3434",
"pid": "0x0334",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "H3"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_jis_91": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[0,13], "x":13, "y":1.25},
- {"matrix":[1,13], "x":14, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [0, 13], "x": 13, "y": 1.25},
+ {"matrix": [1, 13], "x": 14, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.75, "y":5.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25},
+ {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 3.5, "y": 5.25},
+ {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
+ {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
}
diff --git a/keyboards/keychron/v3/jis/jis.c b/keyboards/keychron/v3/jis/jis.c
index 0066c5222ed0..7e05aa406374 100644
--- a/keyboards/keychron/v3/jis/jis.c
+++ b/keyboards/keychron/v3/jis/jis.c
@@ -19,21 +19,21 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, I_1, G_1, H_1}, // ESC
- {0, I_2, G_2, H_2}, // F1
- {0, I_3, G_3, H_3}, // F2
- {0, I_4, G_4, H_4}, // F3
- {0, I_5, G_5, H_5}, // F4
- {0, I_6, G_6, H_6}, // F5
- {0, I_7, G_7, H_7}, // F6
- {0, I_8, G_8, H_8}, // F7
- {0, I_9, G_9, H_9}, // F8
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, I_1, G_1, H_1}, // ESC
+ {0, I_2, G_2, H_2}, // F1
+ {0, I_3, G_3, H_3}, // F2
+ {0, I_4, G_4, H_4}, // F3
+ {0, I_5, G_5, H_5}, // F4
+ {0, I_6, G_6, H_6}, // F5
+ {0, I_7, G_7, H_7}, // F6
+ {0, I_8, G_8, H_8}, // F7
+ {0, I_9, G_9, H_9}, // F8
{0, I_10, G_10, H_10}, // F9
{0, I_11, G_11, H_11}, // F10
{0, I_12, G_12, H_12}, // F11
@@ -42,15 +42,15 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, I_16, G_16, H_16}, // Cortana
{1, I_15, G_15, H_15}, // Light
- {0, C_1, A_1, B_1}, // `~
- {0, C_2, A_2, B_2}, // 1!
- {0, C_3, A_3, B_3}, // 2@
- {0, C_4, A_4, B_4}, // 3#
- {0, C_5, A_5, B_5}, // 4$
- {0, C_6, A_6, B_6}, // 5%
- {0, C_7, A_7, B_7}, // 6^
- {0, C_8, A_8, B_8}, // 7&
- {0, C_9, A_9, B_9}, // 8*
+ {0, C_1, A_1, B_1}, // `~
+ {0, C_2, A_2, B_2}, // 1!
+ {0, C_3, A_3, B_3}, // 2@
+ {0, C_4, A_4, B_4}, // 3#
+ {0, C_5, A_5, B_5}, // 4$
+ {0, C_6, A_6, B_6}, // 5%
+ {0, C_7, A_7, B_7}, // 6^
+ {0, C_8, A_8, B_8}, // 7&
+ {0, C_9, A_9, B_9}, // 8*
{0, C_10, A_10, B_10}, // 9()
{0, C_11, A_11, B_11}, // 0)
{0, C_12, A_12, B_12}, // -_
@@ -61,15 +61,15 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, C_16, A_16, B_16}, // Home
{1, I_16, G_16, H_16}, // Page Up
- {0, F_1, D_1, E_1}, // tab
- {0, F_2, D_2, E_2}, // Q
- {0, F_3, D_3, E_3}, // W
- {0, F_4, D_4, E_4}, // E
- {0, F_5, D_5, E_5}, // R
- {0, F_6, D_6, E_6}, // T
- {0, F_7, D_7, E_7}, // Y
- {0, F_8, D_8, E_8}, // U
- {0, F_9, D_9, E_9}, // I
+ {0, F_1, D_1, E_1}, // tab
+ {0, F_2, D_2, E_2}, // Q
+ {0, F_3, D_3, E_3}, // W
+ {0, F_4, D_4, E_4}, // E
+ {0, F_5, D_5, E_5}, // R
+ {0, F_6, D_6, E_6}, // T
+ {0, F_7, D_7, E_7}, // Y
+ {0, F_8, D_8, E_8}, // U
+ {0, F_9, D_9, E_9}, // I
{0, F_10, D_10, E_10}, // O
{0, F_11, D_11, E_11}, // P
{0, F_12, D_12, E_12}, // [{
@@ -78,29 +78,29 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_16, D_16, E_16}, // End
{1, I_13, G_13, H_13}, // Page Down
- {1, I_1, G_1, H_1}, // Cpas
- {1, I_2, G_2, H_2}, // A
- {1, I_3, G_3, H_3}, // S
- {1, I_4, G_4, H_4}, // D
- {1, I_5, G_5, H_5}, // F
- {1, I_6, G_6, H_6}, // G
- {1, I_7, G_7, H_7}, // H
- {1, I_8, G_8, H_8}, // J
- {1, I_9, G_9, H_9}, // K
+ {1, I_1, G_1, H_1}, // Cpas
+ {1, I_2, G_2, H_2}, // A
+ {1, I_3, G_3, H_3}, // S
+ {1, I_4, G_4, H_4}, // D
+ {1, I_5, G_5, H_5}, // F
+ {1, I_6, G_6, H_6}, // G
+ {1, I_7, G_7, H_7}, // H
+ {1, I_8, G_8, H_8}, // J
+ {1, I_9, G_9, H_9}, // K
{1, I_10, G_10, H_10}, // L
{1, I_11, G_11, H_11}, // ;
{1, I_12, G_12, H_12}, // :
{1, I_14, G_14, H_14}, // #~
{0, F_14, D_14, E_14}, // Enter
- {1, C_1, A_1, B_1}, // LShift
- {1, C_3, A_3, B_3}, // Z
- {1, C_4, A_4, B_4}, // X
- {1, C_5, A_5, B_5}, // C
- {1, C_6, A_6, B_6}, // V
- {1, C_7, A_7, B_7}, // B
- {1, C_8, A_8, B_8}, // N
- {1, C_9, A_9, B_9}, // M
+ {1, C_1, A_1, B_1}, // LShift
+ {1, C_3, A_3, B_3}, // Z
+ {1, C_4, A_4, B_4}, // X
+ {1, C_5, A_5, B_5}, // C
+ {1, C_6, A_6, B_6}, // V
+ {1, C_7, A_7, B_7}, // B
+ {1, C_8, A_8, B_8}, // N
+ {1, C_9, A_9, B_9}, // M
{1, C_10, A_10, B_10}, // ,<
{1, C_11, A_11, B_11}, // .>
{1, C_12, A_12, B_12}, // /?
@@ -108,11 +108,11 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_14, A_14, B_14}, // RShift
{1, C_16, A_16, B_16}, // Up
- {1, F_1, D_1, E_1}, // LCtrl
- {1, F_2, D_2, E_2}, // LWin
- {1, F_3, D_3, E_3}, // LAlt
- {1, F_4, D_4, E_4}, // NUm
- {1, F_7, D_7, E_7}, // Space
+ {1, F_1, D_1, E_1}, // LCtrl
+ {1, F_2, D_2, E_2}, // LWin
+ {1, F_3, D_3, E_3}, // LAlt
+ {1, F_4, D_4, E_4}, // NUm
+ {1, F_7, D_7, E_7}, // Space
{1, F_10, D_10, E_10}, // Jap
{1, F_11, D_11, E_11}, // RAlt
{1, F_12, D_12, E_12}, // RWin
@@ -147,11 +147,11 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v3/jis/keymaps/default/keymap.c b/keyboards/keychron/v3/jis/keymaps/default/keymap.c
index c56c21938ec4..7fa980bb0864 100644
--- a/keyboards/keychron/v3/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_91(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
diff --git a/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
index 925988e42f25..38c93f505acf 100644
--- a/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -65,17 +64,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v3/jis/keymaps/keychron/rules.mk b/keyboards/keychron/v3/jis/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v3/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v3/jis/keymaps/via/keymap.c b/keyboards/keychron/v3/jis/keymaps/via/keymap.c
index c56c21938ec4..7fa980bb0864 100644
--- a/keyboards/keychron/v3/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_91(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
diff --git a/keyboards/keychron/v3/jis/rules.mk b/keyboards/keychron/v3/jis/rules.mk
index 9077e5e2e345..c37beecb9ec1 100644
--- a/keyboards/keychron/v3/jis/rules.mk
+++ b/keyboards/keychron/v3/jis/rules.mk
@@ -1,10 +1,17 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
-
-VPATH += keyboards/keychron/common
diff --git a/keyboards/keychron/v3/jis_encoder/config.h b/keyboards/keychron/v3/jis_encoder/config.h
index 59f888a4c3ab..5f67d6a870d8 100644
--- a/keyboards/keychron/v3/jis_encoder/config.h
+++ b/keyboards/keychron/v3/jis_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,11 +16,20 @@
#pragma once
+/* key matrix pins */
+#define MATRIX_ROW_PINS \
+ { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS \
+ { C14, C15, A0, A1, A2, A3, A4, A5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 49
#define DRIVER_2_LED_TOTAL 43
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+#define CKLED2001_CURRENT_TUNE \
+ { 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44, 0x94, 0x94, 0x44 }
+
/* Encoder Configuration */
#define ENCODER_DEFAULT_POS 0x3
diff --git a/keyboards/keychron/v3/jis_encoder/info.json b/keyboards/keychron/v3/jis_encoder/info.json
index 37444f7cccc5..585cf4519e01 100644
--- a/keyboards/keychron/v3/jis_encoder/info.json
+++ b/keyboards/keychron/v3/jis_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0335",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "A10", "pin_b": "A8"}
@@ -37,103 +21,103 @@
"layouts": {
"LAYOUT_jis_92": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[3,14], "x":17.25, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [3, 14], "x": 17.25, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25},
- {"matrix":[5, 5], "x":14, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[3,15], "x":17.25, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25},
+ {"matrix": [5, 5], "x": 14, "y": 1.25},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [3, 15], "x": 17.25, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[3,12], "x":17.25, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [3, 12], "x": 17.25, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 13.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25},
- {"matrix":[5, 2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5, 3], "x":3.5, "y":5.25},
- {"matrix":[5, 6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5, 9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.75, "y":5.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[4,14], "x":17.25, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25},
+ {"matrix": [5, 2], "x": 2.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 3], "x": 3.5, "y": 5.25},
+ {"matrix": [5, 6], "x": 4.5, "y": 5.25, "w": 4.5},
+ {"matrix": [5, 9], "x": 9, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 10], "x": 10.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.75, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [4, 14], "x": 17.25, "y": 5.25}
]
}
}
diff --git a/keyboards/keychron/v3/jis_encoder/jis_encoder.c b/keyboards/keychron/v3/jis_encoder/jis_encoder.c
index b9a3c5eb92f9..41b1c1e5af50 100644
--- a/keyboards/keychron/v3/jis_encoder/jis_encoder.c
+++ b/keyboards/keychron/v3/jis_encoder/jis_encoder.c
@@ -22,18 +22,18 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
- * | | G location
- * | | | B location
- * | | | | */
- {0, I_1, G_1, H_1}, // ESC
- {0, I_2, G_2, H_2}, // F1
- {0, I_3, G_3, H_3}, // F2
- {0, I_4, G_4, H_4}, // F3
- {0, I_5, G_5, H_5}, // F4
- {0, I_6, G_6, H_6}, // F5
- {0, I_7, G_7, H_7}, // F6
- {0, I_8, G_8, H_8}, // F7
- {0, I_9, G_9, H_9}, // F8
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, I_1, G_1, H_1}, // ESC
+ {0, I_2, G_2, H_2}, // F1
+ {0, I_3, G_3, H_3}, // F2
+ {0, I_4, G_4, H_4}, // F3
+ {0, I_5, G_5, H_5}, // F4
+ {0, I_6, G_6, H_6}, // F5
+ {0, I_7, G_7, H_7}, // F6
+ {0, I_8, G_8, H_8}, // F7
+ {0, I_9, G_9, H_9}, // F8
{0, I_10, G_10, H_10}, // F9
{0, I_11, G_11, H_11}, // F10
{0, I_12, G_12, H_12}, // F11
@@ -43,34 +43,34 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, I_16, G_16, H_16}, // Cortana
{1, I_15, G_15, H_15}, // Light
- {0, C_1, A_1, B_1}, // `~
- {0, C_2, A_2, B_2}, // 1!
- {0, C_3, A_3, B_3}, // 2@
- {0, C_4, A_4, B_4}, // 3#
- {0, C_5, A_5, B_5}, // 4$
- {0, C_6, A_6, B_6}, // 5%
- {0, C_7, A_7, B_7}, // 6^
- {0, C_8, A_8, B_8}, // 7&
- {0, C_9, A_9, B_9}, // 8*
+ {0, C_1, A_1, B_1}, // `~
+ {0, C_2, A_2, B_2}, // 1!
+ {0, C_3, A_3, B_3}, // 2@
+ {0, C_4, A_4, B_4}, // 3#
+ {0, C_5, A_5, B_5}, // 4$
+ {0, C_6, A_6, B_6}, // 5%
+ {0, C_7, A_7, B_7}, // 6^
+ {0, C_8, A_8, B_8}, // 7&
+ {0, C_9, A_9, B_9}, // 8*
{0, C_10, A_10, B_10}, // 9()
{0, C_11, A_11, B_11}, // 0)
{0, C_12, A_12, B_12}, // -_
{0, C_13, A_13, B_13}, // =+
{0, C_14, A_14, B_14}, // |
- {1, F_6, D_6, E_6}, // Backspace
+ {1, F_6, D_6, E_6}, // Backspace
{0, C_15, A_15, B_15}, // Ins
{0, C_16, A_16, B_16}, // Home
{1, I_16, G_16, H_16}, // Page Up
- {0, F_1, D_1, E_1}, // tab
- {0, F_2, D_2, E_2}, // Q
- {0, F_3, D_3, E_3}, // W
- {0, F_4, D_4, E_4}, // E
- {0, F_5, D_5, E_5}, // R
- {0, F_6, D_6, E_6}, // T
- {0, F_7, D_7, E_7}, // Y
- {0, F_8, D_8, E_8}, // U
- {0, F_9, D_9, E_9}, // I
+ {0, F_1, D_1, E_1}, // tab
+ {0, F_2, D_2, E_2}, // Q
+ {0, F_3, D_3, E_3}, // W
+ {0, F_4, D_4, E_4}, // E
+ {0, F_5, D_5, E_5}, // R
+ {0, F_6, D_6, E_6}, // T
+ {0, F_7, D_7, E_7}, // Y
+ {0, F_8, D_8, E_8}, // U
+ {0, F_9, D_9, E_9}, // I
{0, F_10, D_10, E_10}, // O
{0, F_11, D_11, E_11}, // P
{0, F_12, D_12, E_12}, // [{
@@ -79,29 +79,29 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_16, D_16, E_16}, // End
{1, I_13, G_13, H_13}, // Page Down
- {1, I_1, G_1, H_1}, // Cpas
- {1, I_2, G_2, H_2}, // A
- {1, I_3, G_3, H_3}, // S
- {1, I_4, G_4, H_4}, // D
- {1, I_5, G_5, H_5}, // F
- {1, I_6, G_6, H_6}, // G
- {1, I_7, G_7, H_7}, // H
- {1, I_8, G_8, H_8}, // J
- {1, I_9, G_9, H_9}, // K
+ {1, I_1, G_1, H_1}, // Cpas
+ {1, I_2, G_2, H_2}, // A
+ {1, I_3, G_3, H_3}, // S
+ {1, I_4, G_4, H_4}, // D
+ {1, I_5, G_5, H_5}, // F
+ {1, I_6, G_6, H_6}, // G
+ {1, I_7, G_7, H_7}, // H
+ {1, I_8, G_8, H_8}, // J
+ {1, I_9, G_9, H_9}, // K
{1, I_10, G_10, H_10}, // L
{1, I_11, G_11, H_11}, // ;
{1, I_12, G_12, H_12}, // :
{1, I_14, G_14, H_14}, // #~
{0, F_14, D_14, E_14}, // Enter
- {1, C_1, A_1, B_1}, // LShift
- {1, C_3, A_3, B_3}, // Z
- {1, C_4, A_4, B_4}, // X
- {1, C_5, A_5, B_5}, // C
- {1, C_6, A_6, B_6}, // V
- {1, C_7, A_7, B_7}, // B
- {1, C_8, A_8, B_8}, // N
- {1, C_9, A_9, B_9}, // M
+ {1, C_1, A_1, B_1}, // LShift
+ {1, C_3, A_3, B_3}, // Z
+ {1, C_4, A_4, B_4}, // X
+ {1, C_5, A_5, B_5}, // C
+ {1, C_6, A_6, B_6}, // V
+ {1, C_7, A_7, B_7}, // B
+ {1, C_8, A_8, B_8}, // N
+ {1, C_9, A_9, B_9}, // M
{1, C_10, A_10, B_10}, // ,<
{1, C_11, A_11, B_11}, // .>
{1, C_12, A_12, B_12}, // /?
@@ -109,11 +109,11 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_14, A_14, B_14}, // RShift
{1, C_16, A_16, B_16}, // Up
- {1, F_1, D_1, E_1}, // LCtrl
- {1, F_2, D_2, E_2}, // LWin
- {1, F_3, D_3, E_3}, // LAlt
- {1, F_4, D_4, E_4}, // NUm
- {1, F_7, D_7, E_7}, // Space
+ {1, F_1, D_1, E_1}, // LCtrl
+ {1, F_2, D_2, E_2}, // LWin
+ {1, F_3, D_3, E_3}, // LAlt
+ {1, F_4, D_4, E_4}, // NUm
+ {1, F_7, D_7, E_7}, // Space
{1, F_10, D_10, E_10}, // Jap
{1, F_11, D_11, E_11}, // RAlt
{1, F_12, D_12, E_12}, // RWin
@@ -148,12 +148,12 @@ led_config_t g_led_config = {
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
index f92035cc32f6..18c17da4fd4b 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_92(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_92(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_92(
- _______, 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,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
index a3b15bc99fd4..9b69c9443c81 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -64,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -76,17 +75,11 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
index f92035cc32f6..18c17da4fd4b 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,7 +30,7 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_92(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
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_NUHS, KC_ENT,
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_jis_92(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_jis_92(
- _______, 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,
+ _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v3/jis_encoder/rules.mk b/keyboards/keychron/v3/jis_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v3/jis_encoder/rules.mk
+++ b/keyboards/keychron/v3/jis_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v3/matrix.c b/keyboards/keychron/v3/matrix.c
new file mode 100644
index 000000000000..44a1676afa99
--- /dev/null
+++ b/keyboards/keychron/v3/matrix.c
@@ -0,0 +1,222 @@
+/* Copyright 2021 @ 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 "matrix.h"
+#include "quantum.h"
+
+// Pin connected to DS of 74HC595
+#define DATA_PIN A7
+// Pin connected to SH_CP of 74HC595
+#define CLOCK_PIN B1
+// Pin connected to ST_CP of 74HC595
+#define LATCH_PIN B0
+
+#ifdef MATRIX_ROW_PINS
+static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+#endif // MATRIX_ROW_PINS
+#ifdef MATRIX_COL_PINS
+static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif // MATRIX_COL_PINS
+
+#define ROWS_PER_HAND (MATRIX_ROWS)
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinLow(pin);
+ }
+}
+
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinHigh(pin);
+ }
+}
+
+static inline void setPinInputHigh_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinInputHigh(pin);
+ }
+}
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+// At 3.6V input, three nops (37.5ns) should be enough for all signals
+#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
+#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
+
+static void shiftOut(uint8_t dataOut) {
+ ATOMIC_BLOCK_FORCEON {
+ for (uint8_t i = 0; i < 8; i++) {
+ compiler_barrier();
+ if (dataOut & 0x1) {
+ writePinHigh(DATA_PIN);
+ } else {
+ writePinLow(DATA_PIN);
+ }
+ dataOut = dataOut >> 1;
+ compiler_barrier();
+ writePinHigh(CLOCK_PIN);
+ small_delay();
+ writePinLow(CLOCK_PIN);
+ }
+ compiler_barrier();
+ writePinHigh(LATCH_PIN);
+ small_delay();
+ writePinLow(LATCH_PIN);
+ compiler_barrier();
+ }
+}
+
+static void shiftOut_single(uint8_t data) {
+ ATOMIC_BLOCK_FORCEON {
+ compiler_barrier();
+ if (data & 0x1) {
+ writePinHigh(DATA_PIN);
+ } else {
+ writePinLow(DATA_PIN);
+ }
+ compiler_barrier();
+ writePinHigh(CLOCK_PIN);
+ small_delay();
+ writePinLow(CLOCK_PIN);
+ compiler_barrier();
+ writePinHigh(LATCH_PIN);
+ small_delay();
+ writePinLow(LATCH_PIN);
+ compiler_barrier();
+ }
+}
+
+static bool select_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+ setPinOutput_writeLow(pin);
+ return true;
+ } else {
+ if (col == 8) {
+ shiftOut_single(0x00);
+ }
+ return true;
+ }
+ return false;
+}
+
+static void unselect_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ shiftOut_single(0x01);
+ }
+}
+
+static void unselect_cols(void) {
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ pin_t pin = col_pins[x];
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ if (x == 8)
+ // unselect shift Register
+ shiftOut(0xFF);
+ }
+ }
+}
+
+static void matrix_init_pins(void) {
+ setPinOutput(DATA_PIN);
+ setPinOutput(CLOCK_PIN);
+ setPinOutput(LATCH_PIN);
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ if (col_pins[x] != NO_PIN) {
+ setPinOutput(col_pins[x]);
+ }
+ }
+#endif
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ if (row_pins[x] != NO_PIN) {
+ setPinInputHigh_atomic(row_pins[x]);
+ }
+ }
+}
+
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ bool key_pressed = false;
+
+ // Select col
+ if (!select_col(current_col)) { // select col
+ return; // skip NO_PIN col
+ }
+
+ matrix_output_select_delay();
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
+ // Check row pin state
+ if (readMatrixPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= row_shifter;
+ key_pressed = true;
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~row_shifter;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+ matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ matrix_init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
+
+ // Set col, read rows
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
+ matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
+ }
+
+ bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
+ if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
+
+ return changed;
+}
diff --git a/keyboards/keychron/v3/readme.md b/keyboards/keychron/v3/readme.md
index 5e188b0f2fdb..658118882489 100644
--- a/keyboards/keychron/v3/readme.md
+++ b/keyboards/keychron/v3/readme.md
@@ -1,30 +1,18 @@
# Keychron V3
-![Keychron V3](https://i.imgur.com/AIrmjVk.jpg)
-
A customizable 80% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V3
-* Hardware Availability: [Keychron V3 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v3-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/v3/ansi:default
- make keychron/v3/ansi_encoder:default
- make keychron/v3/iso:default
- make keychron/v3/iso_encoder:default
- make keychron/v3/jis:default
- make keychron/v3/jis_encoder:default
Flashing example for this keyboard:
make keychron/v3/ansi:default:flash
- make keychron/v3/ansi_encoder:default:flash
- make keychron/v3/iso:default:flash
- make keychron/v3/iso_encoder:default:flash
- make keychron/v3/jis:default:flash
- make keychron/v3/jis_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v3/v3.c b/keyboards/keychron/v3/v3.c
index 2d9d7921f0bc..17ea8f0e9790 100644
--- a/keyboards/keychron/v3/v3.c
+++ b/keyboards/keychron/v3/v3.c
@@ -30,17 +30,59 @@ const matrix_row_t matrix_mask[] = {
// clang-format on
#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) {
-# if defined(OS_SWITCH_REVERSE)
- default_layer_set(1UL << (!active ? 2 : 0));
-# else
- default_layer_set(1UL << (active ? 2 : 0));
-# endif
+ default_layer_set(1UL << (active ? 0 : 2));
}
return true;
}
+
+#endif // DIP_SWITCH_ENABLE
+
+#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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v4/ansi/ansi.c b/keyboards/keychron/v4/ansi/ansi.c
index 8d0b6c35b11c..44056459f96f 100644
--- a/keyboards/keychron/v4/ansi/ansi.c
+++ b/keyboards/keychron/v4/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -119,7 +119,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 4, 4, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v4/ansi/config.h b/keyboards/keychron/v4/ansi/config.h
index d9a9892279ec..3cbec7238732 100644
--- a/keyboards/keychron/v4/ansi/config.h
+++ b/keyboards/keychron/v4/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/v4/ansi/info.json b/keyboards/keychron/v4/ansi/info.json
index f5a82bafb667..812aec53a71a 100644
--- a/keyboards/keychron/v4/ansi/info.json
+++ b/keyboards/keychron/v4/ansi/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0340",
- "device_version": "1.0.4"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -29,74 +18,78 @@
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
+ "layout_aliases": {
+ "LAYOUT_ansi_61": "LAYOUT_60_ansi"
+ },
+ "community_layouts": ["60_ansi"],
"layouts": {
- "LAYOUT_ansi_61": {
+ "LAYOUT_60_ansi": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
- {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4, "w":1.25},
- {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
- {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
- {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
}
}
diff --git a/keyboards/keychron/v4/ansi/keymaps/default/keymap.c b/keyboards/keychron/v4/ansi/keymaps/default/keymap.c
index 1e0084850d75..b23029bee48a 100644
--- a/keyboards/keychron/v4/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v4/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,44 +21,44 @@
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_61(
+ [MAC_BASE] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
- [WIN_BASE] = LAYOUT_ansi_61(
+ [WIN_BASE] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_ansi_61(
- 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_MOD,
+ [_FN1] = LAYOUT_60_ansi(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_60_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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
+ [_FN3] = LAYOUT_60_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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v4/ansi/keymaps/keychron/config.h b/keyboards/keychron/v4/ansi/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v4/ansi/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v4/ansi/keymaps/keychron/keymap.c
index 261c78ddbc9b..50a5fd4267eb 100644
--- a/keyboards/keychron/v4/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v4/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,48 +16,47 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_61(
+ [MAC_BASE] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_RCTL),
- [WIN_BASE] = LAYOUT_ansi_61(
+ [WIN_BASE] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_ansi_61(
+ [_FN1] = LAYOUT_60_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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_60_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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
+ [_FN3] = LAYOUT_60_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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v4/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v4/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v4/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v4/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v4/ansi/keymaps/via/config.h b/keyboards/keychron/v4/ansi/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v4/ansi/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/ansi/keymaps/via/keymap.c b/keyboards/keychron/v4/ansi/keymaps/via/keymap.c
index 1e0084850d75..b23029bee48a 100644
--- a/keyboards/keychron/v4/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v4/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,44 +21,44 @@
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_ansi_61(
+ [MAC_BASE] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
- [WIN_BASE] = LAYOUT_ansi_61(
+ [WIN_BASE] = LAYOUT_60_ansi(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_ansi_61(
- 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_MOD,
+ [_FN1] = LAYOUT_60_ansi(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_61(
+ [_FN2] = LAYOUT_60_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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_61(
+ [_FN3] = LAYOUT_60_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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v4/ansi/rules.mk b/keyboards/keychron/v4/ansi/rules.mk
index 4bc1e23a57a0..46f5aef144b4 100644
--- a/keyboards/keychron/v4/ansi/rules.mk
+++ b/keyboards/keychron/v4/ansi/rules.mk
@@ -1,8 +1,17 @@
# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v4/config.h b/keyboards/keychron/v4/config.h
index 9e7d9f29d14f..8d92219f205c 100644
--- a/keyboards/keychron/v4/config.h
+++ b/keyboards/keychron/v4/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -25,15 +25,13 @@
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
-#define I2C1_TIMINGR_SCLL 30U
+#define I2C1_TIMINGR_SCLL 51U
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
{ 0xD0, 0xD0, 0x60, 0xD0, 0xD0, 0x60, 0xD0, 0xD0, 0x60, 0xD0, 0xD0, 0x60 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -41,6 +39,8 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -77,13 +77,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -98,6 +94,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(2)
-#define FN_KEY2 MO(3)
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/v4/iso/config.h b/keyboards/keychron/v4/iso/config.h
index d20264e0b749..db18729155d4 100644
--- a/keyboards/keychron/v4/iso/config.h
+++ b/keyboards/keychron/v4/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
diff --git a/keyboards/keychron/v4/iso/info.json b/keyboards/keychron/v4/iso/info.json
index 4a22280fd99e..7d4a8eae1d29 100644
--- a/keyboards/keychron/v4/iso/info.json
+++ b/keyboards/keychron/v4/iso/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0342",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9"],
@@ -29,75 +18,79 @@
"diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
+ "layout_aliases": {
+ "LAYOUT_iso_62": "LAYOUT_60_iso"
+ },
+ "community_layouts": ["60_iso"],
"layouts": {
- "LAYOUT_iso_62": {
+ "LAYOUT_60_iso": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2},
- {"matrix":[1,13], "x":13.75, "y":1, "w":1.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2},
+ {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
- {"matrix":[3, 0], "x":0, "y":3, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3.25},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4,10], "x":10, "y":4, "w":1.25},
- {"matrix":[4,11], "x":11.25, "y":4, "w":1.25},
- {"matrix":[4,12], "x":12.5, "y":4, "w":1.25},
- {"matrix":[4,13], "x":13.75, "y":4, "w":1.25}
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+ {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
}
}
diff --git a/keyboards/keychron/v4/iso/iso.c b/keyboards/keychron/v4/iso/iso.c
index fb7ff251e42a..8f86aa04980f 100644
--- a/keyboards/keychron/v4/iso/iso.c
+++ b/keyboards/keychron/v4/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -120,7 +120,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 4, 1, 4, 4, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v4/iso/keymaps/default/keymap.c b/keyboards/keychron/v4/iso/keymaps/default/keymap.c
index 1e8156581556..1569e513cf80 100644
--- a/keyboards/keychron/v4/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v4/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,44 +21,44 @@
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_62(
+ [MAC_BASE] = LAYOUT_60_iso(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
- [WIN_BASE] = LAYOUT_iso_62(
+ [WIN_BASE] = LAYOUT_60_iso(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_iso_62(
- 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_MOD,
+ [_FN1] = LAYOUT_60_iso(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_60_iso(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
+ [_FN3] = LAYOUT_60_iso(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v4/iso/keymaps/keychron/config.h b/keyboards/keychron/v4/iso/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v4/iso/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v4/iso/keymaps/keychron/keymap.c
index 4cf623c73da6..0bc8e995dc68 100644
--- a/keyboards/keychron/v4/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v4/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,48 +16,47 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_62(
+ [MAC_BASE] = LAYOUT_60_iso(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(_FN1), MO(_FN3), KC_RCTL),
- [WIN_BASE] = LAYOUT_iso_62(
+ [WIN_BASE] = LAYOUT_60_iso(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_iso_62(
+ [_FN1] = LAYOUT_60_iso(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_SNAP, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_60_iso(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
+ [_FN3] = LAYOUT_60_iso(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v4/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v4/iso/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v4/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v4/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v4/iso/keymaps/via/config.h b/keyboards/keychron/v4/iso/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v4/iso/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v4/iso/keymaps/via/keymap.c b/keyboards/keychron/v4/iso/keymaps/via/keymap.c
index 1e8156581556..1569e513cf80 100644
--- a/keyboards/keychron/v4/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v4/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,44 +21,44 @@
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_iso_62(
+ [MAC_BASE] = LAYOUT_60_iso(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(_FN1), MO(_FN3), KC_RCTL),
- [WIN_BASE] = LAYOUT_iso_62(
+ [WIN_BASE] = LAYOUT_60_iso(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN1), MO(_FN2), KC_RCTL),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(_FN2), MO(_FN3), KC_RCTL),
- [MAC_FN1] = LAYOUT_iso_62(
- 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_MOD,
+ [_FN1] = LAYOUT_60_iso(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, _______, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_iso_62(
+ [_FN2] = LAYOUT_60_iso(
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_MOD,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, KC_APP, KC_SCRL, KC_INS, KC_PGUP, KC_HOME,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, KC_UP, KC_PSCR, KC_PGDN, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_62(
+ [_FN3] = LAYOUT_60_iso(
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, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v4/iso/rules.mk b/keyboards/keychron/v4/iso/rules.mk
index 4bc1e23a57a0..46f5aef144b4 100644
--- a/keyboards/keychron/v4/iso/rules.mk
+++ b/keyboards/keychron/v4/iso/rules.mk
@@ -1,8 +1,17 @@
# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v4/readme.md b/keyboards/keychron/v4/readme.md
index db55f85f4658..62846a5e70a0 100644
--- a/keyboards/keychron/v4/readme.md
+++ b/keyboards/keychron/v4/readme.md
@@ -1,12 +1,10 @@
# Keychron V4
-![Keychron V4](https://i.imgur.com/I8XYxlb.jpg)
-
A customizable 60% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V4
-* Hardware Availability: [Keychron V4 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v4-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/keychron/v4/v4.c b/keyboards/keychron/v4/v4.c
index 1c40e430ea7c..402eadf2d77a 100644
--- a/keyboards/keychron/v4/v4.c
+++ b/keyboards/keychron/v4/v4.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,49 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
+
+#endif // DIP_SWITCH_ENABLE
+
+#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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v5/ansi/ansi.c b/keyboards/keychron/v5/ansi/ansi.c
index 8791ad4fa845..336c07c81a0f 100644
--- a/keyboards/keychron/v5/ansi/ansi.c
+++ b/keyboards/keychron/v5/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -19,9 +19,8 @@
#ifdef RGB_MATRIX_ENABLE
// clang-format off
-
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -133,37 +132,4 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
};
-
-#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, 11, 12, 13, 14, 15, 16, 17 },
- { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
- { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 54, 51, 52, 53 },
- { 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 18, 67, 68, 69, 70 },
- { 71, __, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, __, 82, 83, 84, 85, 86 },
- { 88, 89, 90, __, __, 87, 91, __, __, __, 92, 93, 94, 95, 96, 97, 98, 99 }
- },
- {
- // LED Index to Physical Position
- {0,0}, {12,0}, {24,0}, {36,0}, {48,0}, {60,0}, {72,0}, {84,0}, {97,0}, {109,0}, {121,0}, {133,0}, {145,0}, {157,0}, {169,0}, {188,0}, {200,0}, {212,0}, {224,0},
- {0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {84,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26}, {224,32},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38},
- {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-
#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v5/ansi/config.h b/keyboards/keychron/v5/ansi/config.h
index 7e3a2e9911ac..3a3ba4fd6bff 100644
--- a/keyboards/keychron/v5/ansi/config.h
+++ b/keyboards/keychron/v5/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,8 +21,6 @@
#define DRIVER_2_LED_TOTAL 45
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
-/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 55
-
-/* Enable num-lock LED */
-#define NUM_LOCK_LED_INDEX 33
+/* Indication Led Index */
+#define CAPS_LOCK_INDEX 55
+#define NUM_LOCK_INDEX 33
diff --git a/keyboards/keychron/v5/ansi/info.json b/keyboards/keychron/v5/ansi/info.json
index a9a6df9a8223..009048de68d8 100644
--- a/keyboards/keychron/v5/ansi/info.json
+++ b/keyboards/keychron/v5/ansi/info.json
@@ -1,143 +1,226 @@
{
- "keyboard_name": "Keychron V5",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
"usb": {
- "vid": "0x3434",
"pid": "0x0350",
- "device_version": "1.0.2"
+ "device_version": "1.0.0"
},
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_100": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[0,14], "x":14, "y":0},
- {"matrix":[0,15], "x":15.5, "y":0},
- {"matrix":[0,16], "x":16.5, "y":0},
- {"matrix":[0,17], "x":17.5, "y":0},
- {"matrix":[3,12], "x":18.5, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.5, "y": 0},
+ {"matrix": [0, 16], "x": 16.5, "y": 0},
+ {"matrix": [0, 17], "x": 17.5, "y": 0},
+ {"matrix": [3, 12], "x": 18.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.5, "y":1.25},
- {"matrix":[1,16], "x":16.5, "y":1.25},
- {"matrix":[1,17], "x":17.5, "y":1.25},
- {"matrix":[3,14], "x":18.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 16], "x": 16.5, "y": 1.25},
+ {"matrix": [1, 17], "x": 17.5, "y": 1.25},
+ {"matrix": [3, 14], "x": 18.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.5, "y":2.25},
- {"matrix":[2,16], "x":16.5, "y":2.25},
- {"matrix":[2,17], "x":17.5, "y":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 15], "x": 15.5, "y": 2.25},
+ {"matrix": [2, 16], "x": 16.5, "y": 2.25},
+ {"matrix": [2, 17], "x": 17.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.5, "y":3.25},
- {"matrix":[3,16], "x":16.5, "y":3.25},
- {"matrix":[3,17], "x":17.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 15], "x": 15.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 16.5, "y": 3.25},
+ {"matrix": [3, 17], "x": 17.5, "y": 3.25},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix":[4,15], "x":15.5, "y":4.25},
- {"matrix":[4,16], "x":16.5, "y":4.25},
- {"matrix":[4,17], "x":17.5, "y":4.25},
- {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 15], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 16], "x": 16.5, "y": 4.25},
+ {"matrix": [4, 17], "x": 17.5, "y": 4.25},
+ {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5},
- {"matrix":[5,16], "x":16.5, "y":5.25},
- {"matrix":[5,17], "x":17.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 16.5, "y": 5.25},
+ {"matrix": [5, 17], "x": 17.5, "y": 5.25}
]
}
+ },
+ "rgb_matrix": {
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":12, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":24, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":36, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":60, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":72, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":84, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":97, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":109, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":121, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":133, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":145, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":169, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":188, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":188, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":200, "y":0},
+ {"matrix":[0, 17], "flags":1, "x":212, "y":0},
+ {"matrix":[3, 12], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":24, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":36, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":48, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":60, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":72, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":84, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":91, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":109, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":121, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":133, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":145, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":163, "y":15},
+ {"matrix":[1, 15], "flags":8, "x":188, "y":15},
+ {"matrix":[1, 16], "flags":4, "x":200, "y":15},
+ {"matrix":[1, 17], "flags":4, "x":212, "y":15},
+ {"matrix":[3, 14], "flags":4, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":18, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":30, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":42, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":54, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":78, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":91, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":103, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":115, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":127, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":139, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":151, "y":26},
+ {"matrix":[2, 13], "flags":1, "x":166, "y":26},
+ {"matrix":[2, 15], "flags":4, "x":188, "y":26},
+ {"matrix":[2, 16], "flags":4, "x":200, "y":26},
+ {"matrix":[2, 17], "flags":4, "x":212, "y":26},
+ {"matrix":[2, 14], "flags":4, "x":224, "y":32},
+
+ {"matrix":[3, 0], "flags":8, "x":5, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":21, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":33, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":45, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":57, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":69, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":81, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":94, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":106, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":118, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":130, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":142, "y":38},
+ {"matrix":[3, 13], "flags":4, "x":161, "y":38},
+ {"matrix":[3, 15], "flags":1, "x":188, "y":38},
+ {"matrix":[3, 16], "flags":4, "x":212, "y":38},
+ {"matrix":[3, 17], "flags":4, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":8, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":27, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":39, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":51, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":63, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":75, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":88, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":100, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":112, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":124, "y":49},
+ {"matrix":[4, 11], "flags":1, "x":136, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":152, "y":49},
+ {"matrix":[4, 14], "flags":4, "x":172, "y":49},
+ {"matrix":[4, 15], "flags":4, "x":188, "y":49},
+ {"matrix":[4, 16], "flags":4, "x":200, "y":49},
+ {"matrix":[4, 17], "flags":4, "x":212, "y":49},
+ {"matrix":[5, 5], "flags":4, "x":224, "y":55},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":17, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":32, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":77, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":121, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":133, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":145, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":160, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":172, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":184, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":200, "y":64},
+ {"matrix":[5, 17], "flags":4, "x":212, "y":61}
+ ]
}
}
diff --git a/keyboards/keychron/v5/ansi/keymaps/default/keymap.c b/keyboards/keychron/v5/ansi/keymaps/default/keymap.c
index 1de732fe29ca..655756c2d7d7 100644
--- a/keyboards/keychron/v5/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v5/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v5/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v5/ansi/keymaps/keychron/keymap.c
index 39d14d2b950b..a6c491ed31f0 100644
--- a/keyboards/keychron/v5/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v5/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -18,44 +18,43 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
// clang-format on
@@ -69,10 +68,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
if (!process_record_keychron_ft(keycode, record)) {
return false;
}
-
return true;
}
diff --git a/keyboards/keychron/v5/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v5/ansi/keymaps/keychron/rules.mk
index 65df6fb72655..1e5b99807cb7 100644
--- a/keyboards/keychron/v5/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v5/ansi/keymaps/keychron/rules.mk
@@ -1,3 +1 @@
VIA_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v5/ansi/keymaps/via/keymap.c b/keyboards/keychron/v5/ansi/keymaps/via/keymap.c
index 1de732fe29ca..655756c2d7d7 100644
--- a/keyboards/keychron/v5/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v5/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_100(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_100(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_100(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_100(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v5/ansi/rules.mk b/keyboards/keychron/v5/ansi/rules.mk
index aa286a161677..6e7633bfe015 100644
--- a/keyboards/keychron/v5/ansi/rules.mk
+++ b/keyboards/keychron/v5/ansi/rules.mk
@@ -1,14 +1 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
+# This file intentionally left blank
diff --git a/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
index 0a6d48decff4..1e3b3038964f 100644
--- a/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v5/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -83,7 +83,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
- {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -101,6 +100,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
+ {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -118,7 +118,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
- {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -132,6 +131,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
+ {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -141,29 +141,29 @@ led_config_t g_led_config = {
// Key Matrix to LED Index
{ 0, __, 1, 2, 3, 4, __, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
{ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 52, 49, 50, 51 },
- { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 16, 65, 34, 66, 67, 68 },
+ { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 68, 49, 50, 51 },
+ { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 16, 64, 34, 65, 66, 67 },
{ 69, __, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, __, 80, 81, 82, 83, 84 },
- { 86, 87, 88, __, __, 85, 89, __, __, __, 90, 91, 92, 93, 94, 95, 96, 97 }
+ { 85, 86, 87, __, __, 97, 88, __, __, __, 89, 90, 91, 92, 93, 94, 95, 96 }
},
{
// LED Index to Physical Position
{0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {103,0}, {115,0}, {133,0}, {145,0}, {157,0}, {169,0}, {184,0}, {196,0}, {208,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26}, {224,32},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38},
- {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {166,26}, {188,26}, {200,26}, {212,26},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {161,38}, {188,38}, {200,38}, {212,38}, {224,32},
+ {8,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 4, 4, 1
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v5/ansi_encoder/config.h b/keyboards/keychron/v5/ansi_encoder/config.h
index 13cb7cfb969c..6ce87e63ab84 100644
--- a/keyboards/keychron/v5/ansi_encoder/config.h
+++ b/keyboards/keychron/v5/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -25,7 +25,4 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 53
-
-/* Enable num-lock LED */
-#define NUM_LOCK_LED_INDEX 31
+#define CAPS_LOCK_LED_INDEX 52
diff --git a/keyboards/keychron/v5/ansi_encoder/info.json b/keyboards/keychron/v5/ansi_encoder/info.json
index 9e16e5dbc5b8..8a4aec4e3660 100644
--- a/keyboards/keychron/v5/ansi_encoder/info.json
+++ b/keyboards/keychron/v5/ansi_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0351",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -37,109 +21,109 @@
"layouts": {
"LAYOUT_ansi_98": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 2], "x":2, "y":0},
- {"matrix":[0, 3], "x":3, "y":0},
- {"matrix":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 7], "x":6.5, "y":0},
- {"matrix":[0, 8], "x":7.5, "y":0},
- {"matrix":[0, 9], "x":8.5, "y":0},
- {"matrix":[0,10], "x":9.5, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[0,14], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix":[0,16], "x":16.25, "y":0},
- {"matrix":[0,17], "x":17.25, "y":0},
- {"matrix":[3,12], "x":18.5, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 7], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [0, 9], "x": 8.5, "y": 0},
+ {"matrix": [0, 10], "x": 9.5, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"matrix": [0, 16], "x": 16.25, "y": 0},
+ {"matrix": [0, 17], "x": 17.25, "y": 0},
+ {"matrix": [3, 12], "x": 18.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.5, "y":1.25},
- {"matrix":[1,16], "x":16.5, "y":1.25},
- {"matrix":[1,17], "x":17.5, "y":1.25},
- {"matrix":[3,14], "x":18.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 16], "x": 16.5, "y": 1.25},
+ {"matrix": [1, 17], "x": 17.5, "y": 1.25},
+ {"matrix": [3, 14], "x": 18.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,15], "x":15.5, "y":2.25},
- {"matrix":[2,16], "x":16.5, "y":2.25},
- {"matrix":[2,17], "x":17.5, "y":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 15], "x": 15.5, "y": 2.25},
+ {"matrix": [2, 16], "x": 16.5, "y": 2.25},
+ {"matrix": [2, 17], "x": 17.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,15], "x":15.5, "y":3.25},
- {"matrix":[3,16], "x":16.5, "y":3.25},
- {"matrix":[3,17], "x":17.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 15], "x": 15.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 16.5, "y": 3.25},
+ {"matrix": [3, 17], "x": 17.5, "y": 3.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix":[4,15], "x":15.5, "y":4.25},
- {"matrix":[4,16], "x":16.5, "y":4.25},
- {"matrix":[4,17], "x":17.5, "y":4.25},
- {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 15], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 16], "x": 16.5, "y": 4.25},
+ {"matrix": [4, 17], "x": 17.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5},
- {"matrix":[5,16], "x":16.5, "y":5.25},
- {"matrix":[5,17], "x":17.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 16.5, "y": 5.25},
+ {"matrix": [5, 17], "x": 17.5, "y": 5.25},
+ {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
]
}
}
diff --git a/keyboards/keychron/v5/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v5/ansi_encoder/keymaps/default/keymap.c
index 7b2980979456..c48e7036bea7 100644
--- a/keyboards/keychron/v5/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v5/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_98(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_98(
- _______, 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,
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/keymap.c
index b650e4733de2..b2ec70c09574 100644
--- a/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -31,37 +30,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_98(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_98(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -71,19 +70,9 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v5/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v5/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v5/ansi_encoder/keymaps/via/keymap.c
index 7b2980979456..c48e7036bea7 100644
--- a/keyboards/keychron/v5/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v5/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_98(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_98(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_98(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_98(
- _______, 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,
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v5/ansi_encoder/rules.mk b/keyboards/keychron/v5/ansi_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v5/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v5/ansi_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v5/config.h b/keyboards/keychron/v5/config.h
index edf2414bd310..a1ea302d4128 100644
--- a/keyboards/keychron/v5/config.h
+++ b/keyboards/keychron/v5/config.h
@@ -28,13 +28,14 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* Set LED driver current */
#define CKLED2001_CURRENT_TUNE \
- { 0xB0, 0xB0, 0x56, 0xB0, 0xB0, 0x56, 0xB0, 0xB0, 0x56, 0xB0, 0xB0, 0x56 }
+ { 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56, 0xB6, 0xB6, 0x56 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID \
+ { \
+ { 5, 4 } \
+ }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -45,67 +46,22 @@
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+#define EECONFIG_USER_DATA_SIZE 8
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
-// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
-// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
-// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_BREATHING
-// #define ENABLE_RGB_MATRIX_BAND_SAT
-// #define ENABLE_RGB_MATRIX_BAND_VAL
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
-#define ENABLE_RGB_MATRIX_CYCLE_ALL
-#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
-#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
-#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-#define ENABLE_RGB_MATRIX_DUAL_BEACON
-#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
-// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-// #define ENABLE_RGB_MATRIX_RAINDROPS
-#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-// #define ENABLE_RGB_MATRIX_HUE_BREATHING
-// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
-// #define ENABLE_RGB_MATRIX_HUE_WAVE
-#define ENABLE_RGB_MATRIX_PIXEL_RAIN
-// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
-// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
#define RGB_MATRIX_KEYPRESSES
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
-#define ENABLE_RGB_MATRIX_SPLASH
-// #define ENABLE_RGB_MATRIX_MULTISPLASH
-#define ENABLE_RGB_MATRIX_SOLID_SPLASH
-// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
-
-#define HC595_DS C15
-#define HC595_SHCP A1
+/* HC595 Driver Configuration */
#define HC595_STCP A0
+#define HC595_SHCP A1
+#define HC595_DS C15
+#define HC595_START_INDEX 10
+#define HC595_END_INDEX 17
-#define SHIFT_COL_START 10
-#define SHIFT_COL_END 17
+/* Factory Reset Key Definition */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/v5/halconf.h b/keyboards/keychron/v5/halconf.h
index 463d177eabc7..41bddcb2799b 100644
--- a/keyboards/keychron/v5/halconf.h
+++ b/keyboards/keychron/v5/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/v5/info.json b/keyboards/keychron/v5/info.json
new file mode 100644
index 000000000000..3cc863ceda57
--- /dev/null
+++ b/keyboards/keychron/v5/info.json
@@ -0,0 +1,54 @@
+{
+ "keyboard_name": "Keychron V5",
+ "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,
+ "nkro": true,
+ "rgb_matrix": true,
+ "dip_switch": true
+ },
+ "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
+ }
+ },
+ "matrix_pins": {
+ "cols":["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
+ "rows": ["B5", "B4", "B3", "A15", "A14", "A13"],
+ "custom": true,
+ "custom_lite": true
+ },
+ "diode_direction": "ROW2COL"
+}
diff --git a/keyboards/keychron/v5/iso/config.h b/keyboards/keychron/v5/iso/config.h
index 8a10f742925e..5074f47a8f1f 100644
--- a/keyboards/keychron/v5/iso/config.h
+++ b/keyboards/keychron/v5/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -22,7 +22,4 @@
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 54
-
-/* Enable num-lock LED */
-#define NUM_LOCK_LED_INDEX 33
+#define CAPS_LOCK_LED_INDEX 53
diff --git a/keyboards/keychron/v5/iso/info.json b/keyboards/keychron/v5/iso/info.json
index 6f5aad7e6011..02db87e9ac25 100644
--- a/keyboards/keychron/v5/iso/info.json
+++ b/keyboards/keychron/v5/iso/info.json
@@ -6,138 +6,122 @@
"usb": {
"vid": "0x3434",
"pid": "0x0352",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_101": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[0,14], "x":14, "y":0},
- {"matrix":[0,15], "x":15.5, "y":0},
- {"matrix":[0,16], "x":16.5, "y":0},
- {"matrix":[0,17], "x":17.5, "y":0},
- {"matrix":[3,12], "x":18.5, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.5, "y": 0},
+ {"matrix": [0, 16], "x": 16.5, "y": 0},
+ {"matrix": [0, 17], "x": 17.5, "y": 0},
+ {"matrix": [3, 12], "x": 18.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.5, "y":1.25},
- {"matrix":[1,16], "x":16.5, "y":1.25},
- {"matrix":[1,17], "x":17.5, "y":1.25},
- {"matrix":[3,14], "x":18.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 16], "x": 16.5, "y": 1.25},
+ {"matrix": [1, 17], "x": 17.5, "y": 1.25},
+ {"matrix": [3, 14], "x": 18.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.5, "y":2.25},
- {"matrix":[2,16], "x":16.5, "y":2.25},
- {"matrix":[2,17], "x":17.5, "y":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 15], "x": 15.5, "y": 2.25},
+ {"matrix": [2, 16], "x": 16.5, "y": 2.25},
+ {"matrix": [2, 17], "x": 17.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.5, "y":3.25},
- {"matrix":[3,16], "x":16.5, "y":3.25},
- {"matrix":[3,17], "x":17.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 15.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 16.5, "y": 3.25},
+ {"matrix": [3, 17], "x": 17.5, "y": 3.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix":[4,15], "x":15.5, "y":4.25},
- {"matrix":[4,16], "x":16.5, "y":4.25},
- {"matrix":[4,17], "x":17.5, "y":4.25},
- {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 15], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 16], "x": 16.5, "y": 4.25},
+ {"matrix": [4, 17], "x": 17.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5},
- {"matrix":[5,16], "x":16.5, "y":5.25},
- {"matrix":[5,17], "x":17.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 16.5, "y": 5.25},
+ {"matrix": [5, 17], "x": 17.5, "y": 5.25},
+ {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
]
}
}
diff --git a/keyboards/keychron/v5/iso/iso.c b/keyboards/keychron/v5/iso/iso.c
index 7fe24c2c95e8..d67be2d530a2 100644
--- a/keyboards/keychron/v5/iso/iso.c
+++ b/keyboards/keychron/v5/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -82,7 +82,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
- {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -101,6 +100,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
+ {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -119,7 +119,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
- {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -133,6 +132,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
+ {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -140,31 +140,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
- { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
- { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 67, 53, 50, 51, 52 },
- { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 18, 66, 36, 68, 69, 70 },
- { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, __, 83, 84, 85, 86, 87 },
- { 89, 90, 91, __, __, 88, 92, __, __, __, 93, 94, 95, 96, 97, 98, 99, 100 },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 },
+ { 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, __, 33, 34, 35 },
+ { 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 66, 70, 50, 51, 52 },
+ { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 18, 65, 36, 67, 68, 69 },
+ { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, __, 83, 84, 85, 86, 87 },
+ { 88, 89, 90, __, __, 100, 91, __, __, __, 92, 93, 94, 95, 96, 97, 98, 99 },
},
{
// LED Index to Physical Position
{0,0}, {12,0}, {24,0}, {36,0}, {48,0}, {60,0}, {72,0}, {85,0}, {97,0}, {109,0}, {121,0}, {133,0}, {145,0}, {157,0}, {169,0}, {188,0}, {200,0}, {212,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26}, {224,32},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38},
- {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38}, {224,32},
+ {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v5/iso/keymaps/default/keymap.c b/keyboards/keychron/v5/iso/keymaps/default/keymap.c
index d756b8542278..0635b7d866f4 100644
--- a/keyboards/keychron/v5/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v5/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v5/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v5/iso/keymaps/keychron/keymap.c
index 67aa61d21732..90ce349f1b50 100644
--- a/keyboards/keychron/v5/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v5/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -31,48 +30,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v5/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v5/iso/keymaps/keychron/rules.mk
index 65df6fb72655..495e8907b48c 100644
--- a/keyboards/keychron/v5/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v5/iso/keymaps/keychron/rules.mk
@@ -1,3 +1,4 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v5/iso/keymaps/via/keymap.c b/keyboards/keychron/v5/iso/keymaps/via/keymap.c
index d756b8542278..0635b7d866f4 100644
--- a/keyboards/keychron/v5/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v5/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_101(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_101(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_101(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_101(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v5/iso/rules.mk b/keyboards/keychron/v5/iso/rules.mk
index aa286a161677..e859eb9c34c6 100644
--- a/keyboards/keychron/v5/iso/rules.mk
+++ b/keyboards/keychron/v5/iso/rules.mk
@@ -1,14 +1,21 @@
# Build Options
-# change yes to no to disable.
+# 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 = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v5/iso_encoder/config.h b/keyboards/keychron/v5/iso_encoder/config.h
index ab5453e4dac2..dab565612eb3 100644
--- a/keyboards/keychron/v5/iso_encoder/config.h
+++ b/keyboards/keychron/v5/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -25,7 +25,4 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
-#define CAPS_LOCK_LED_INDEX 52
-
-/* Enable num-lock LED */
-#define NUM_LOCK_LED_INDEX 31
+#define CAPS_LOCK_LED_INDEX 51
diff --git a/keyboards/keychron/v5/iso_encoder/info.json b/keyboards/keychron/v5/iso_encoder/info.json
index f41f333860e9..b0be43fc502f 100644
--- a/keyboards/keychron/v5/iso_encoder/info.json
+++ b/keyboards/keychron/v5/iso_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0353",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -37,110 +21,110 @@
"layouts": {
"LAYOUT_iso_99": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 2], "x":2, "y":0},
- {"matrix":[0, 3], "x":3, "y":0},
- {"matrix":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 7], "x":6.5, "y":0},
- {"matrix":[0, 8], "x":7.5, "y":0},
- {"matrix":[0, 9], "x":8.5, "y":0},
- {"matrix":[0,10], "x":9.5, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0},
- {"matrix":[0,14], "x":14, "y":0},
- {"matrix":[0,15], "x":15.25, "y":0},
- {"matrix":[0,16], "x":16.25, "y":0},
- {"matrix":[0,17], "x":17.25, "y":0},
- {"matrix":[3,12], "x":18.5, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 7], "x": 6.5, "y": 0},
+ {"matrix": [0, 8], "x": 7.5, "y": 0},
+ {"matrix": [0, 9], "x": 8.5, "y": 0},
+ {"matrix": [0, 10], "x": 9.5, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0},
+ {"matrix": [0, 14], "x": 14, "y": 0},
+ {"matrix": [0, 15], "x": 15.25, "y": 0},
+ {"matrix": [0, 16], "x": 16.25, "y": 0},
+ {"matrix": [0, 17], "x": 17.25, "y": 0},
+ {"matrix": [3, 12], "x": 18.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,15], "x":15.5, "y":1.25},
- {"matrix":[1,16], "x":16.5, "y":1.25},
- {"matrix":[1,17], "x":17.5, "y":1.25},
- {"matrix":[3,14], "x":18.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 15], "x": 15.5, "y": 1.25},
+ {"matrix": [1, 16], "x": 16.5, "y": 1.25},
+ {"matrix": [1, 17], "x": 17.5, "y": 1.25},
+ {"matrix": [3, 14], "x": 18.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,15], "x":15.5, "y":2.25},
- {"matrix":[2,16], "x":16.5, "y":2.25},
- {"matrix":[2,17], "x":17.5, "y":2.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 15], "x": 15.5, "y": 2.25},
+ {"matrix": [2, 16], "x": 16.5, "y": 2.25},
+ {"matrix": [2, 17], "x": 17.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,15], "x":15.5, "y":3.25},
- {"matrix":[3,16], "x":16.5, "y":3.25},
- {"matrix":[3,17], "x":17.5, "y":3.25},
- {"matrix":[2,14], "x":18.5, "y":2.25, "h":2},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 15], "x": 15.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 16.5, "y": 3.25},
+ {"matrix": [3, 17], "x": 17.5, "y": 3.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
- {"matrix":[4,14], "x":14.25, "y":4.5},
- {"matrix":[4,15], "x":15.5, "y":4.25},
- {"matrix":[4,16], "x":16.5, "y":4.25},
- {"matrix":[4,17], "x":17.5, "y":4.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 14], "x": 14.25, "y": 4.5},
+ {"matrix": [4, 15], "x": 15.5, "y": 4.25},
+ {"matrix": [4, 16], "x": 16.5, "y": 4.25},
+ {"matrix": [4, 17], "x": 17.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25},
- {"matrix":[5,11], "x":11, "y":5.25},
- {"matrix":[5,12], "x":12, "y":5.25},
- {"matrix":[5,13], "x":13.25, "y":5.5},
- {"matrix":[5,14], "x":14.25, "y":5.5},
- {"matrix":[5,15], "x":15.25, "y":5.5},
- {"matrix":[5,16], "x":16.5, "y":5.25},
- {"matrix":[5,17], "x":17.5, "y":5.25},
- {"matrix":[5, 5], "x":18.5, "y":4.25, "h":2}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25},
+ {"matrix": [5, 11], "x": 11, "y": 5.25},
+ {"matrix": [5, 12], "x": 12, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 16.5, "y": 5.25},
+ {"matrix": [5, 17], "x": 17.5, "y": 5.25},
+ {"matrix": [5, 5], "x": 18.5, "y": 4.25, "h": 2}
]
}
}
diff --git a/keyboards/keychron/v5/iso_encoder/iso_encoder.c b/keyboards/keychron/v5/iso_encoder/iso_encoder.c
index 8da6cfc499d2..5719da5e3495 100644
--- a/keyboards/keychron/v5/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v5/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -80,7 +80,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, F_15, D_15, E_15},
{0, F_16, D_16, E_16},
{0, L_15, J_15, K_15},
- {0, L_16, J_16, K_16},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -99,6 +98,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, C_1, A_1, B_1},
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
+ {0, L_16, J_16, K_16},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -117,7 +117,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, I_1, G_1, H_1},
{1, L_5, J_5, K_5},
{1, L_6, J_6, K_6},
- {1, L_7, J_7, K_7},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -131,6 +130,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, F_1, D_1, E_1},
{1, L_1, J_1, K_1},
{1, L_2, J_2, K_2},
+ {1, L_7, J_7, K_7}
};
#define __ NO_LED
@@ -140,29 +140,29 @@ led_config_t g_led_config = {
// Key Matrix to LED Index
{ 0, __, 1, 2, 3, 4, __, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
{ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, __, 31, 32, 33 },
- { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 65, 51, 48, 49, 50 },
- { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 16, 64, 34, 66, 67, 68 },
+ { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 64, 68, 48, 49, 50 },
+ { 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 16, 63, 34, 65, 66, 67 },
{ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, __, 81, 82, 83, 84, 85 },
- { 87, 88, 89, __, __, 86, 90, __, __, __, 91, 92, 93, 94, 95, 96, 97, 98 },
+ { 86, 87, 88, __, __, 98, 89, __, __, __, 90, 91, 92, 93, 94, 95, 96, 97 },
},
{
// LED Index to Physical Position
{0,0}, {24,0}, {36,0}, {48,0}, {60,0}, {78,0}, {90,0}, {103,0}, {115,0}, {133,0}, {145,0}, {157,0}, {169,0}, {184,0}, {196,0}, {208,0}, {224,0},
{0,15}, {12,15}, {24,15}, {36,15}, {48,15}, {60,15}, {72,15}, {85,15}, {97,15}, {109,15}, {121,15}, {133,15}, {145,15}, {163,15}, {188,15}, {200,15}, {212,15}, {224,15},
- {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26}, {224,32},
- {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38},
- {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55},
- {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61},
+ {3,26}, {18,26}, {30,26}, {42,26}, {54,26}, {66,26}, {78,26}, {91,26}, {103,26}, {115,26}, {127,26}, {139,26}, {151,26}, {188,26}, {200,26}, {212,26},
+ {5,38}, {21,38}, {33,38}, {45,38}, {57,38}, {69,38}, {81,38}, {94,38}, {106,38}, {118,38}, {130,38}, {142,38}, {154,38}, {170,34}, {188,38}, {200,38}, {212,38}, {224,32},
+ {3,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {88,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49},
+ {1,61}, {17,61}, {32,61}, {77,61}, {121,61}, {133,61}, {145,61}, {160,64}, {172,64}, {184,64}, {200,61}, {212,61}, {224,55},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 4, 1, 1, 1, 1, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 4, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v5/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v5/iso_encoder/keymaps/default/keymap.c
index af54e00cbc17..7defc8c79a7f 100644
--- a/keyboards/keychron/v5/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v5/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_99(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_99(
- _______, 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,
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v5/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v5/iso_encoder/keymaps/keychron/keymap.c
index 5dc34610e641..fe61219034f5 100644
--- a/keyboards/keychron/v5/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v5/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -31,37 +30,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_99(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_99(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format off
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -71,19 +70,9 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v5/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v5/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v5/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v5/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v5/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v5/iso_encoder/keymaps/via/keymap.c
index af54e00cbc17..7defc8c79a7f 100644
--- a/keyboards/keychron/v5/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v5/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* Copyright 2021 @ 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_99(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_99(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, RGB_TOG,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_99(
KC_ESC, 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_DEL, KC_HOME, KC_END, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_99(
- _______, 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,
+ _______, 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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
diff --git a/keyboards/keychron/v5/iso_encoder/rules.mk b/keyboards/keychron/v5/iso_encoder/rules.mk
index aa286a161677..7da353fbd162 100644
--- a/keyboards/keychron/v5/iso_encoder/rules.mk
+++ b/keyboards/keychron/v5/iso_encoder/rules.mk
@@ -1,14 +1,22 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v5/matrix.c b/keyboards/keychron/v5/matrix.c
new file mode 100644
index 000000000000..ced844288188
--- /dev/null
+++ b/keyboards/keychron/v5/matrix.c
@@ -0,0 +1,222 @@
+/* Copyright 2021 @ 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 "matrix.h"
+#include "quantum.h"
+
+// Pin connected to DS of 74HC595
+#define DATA_PIN C15
+// Pin connected to SH_CP of 74HC595
+#define CLOCK_PIN A1
+// Pin connected to ST_CP of 74HC595
+#define LATCH_PIN A0
+
+#ifdef MATRIX_ROW_PINS
+static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+#endif // MATRIX_ROW_PINS
+#ifdef MATRIX_COL_PINS
+static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif // MATRIX_COL_PINS
+
+#define ROWS_PER_HAND (MATRIX_ROWS)
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinLow(pin);
+ }
+}
+
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinHigh(pin);
+ }
+}
+
+static inline void setPinInputHigh_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinInputHigh(pin);
+ }
+}
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+// At 3.6V input, three nops (37.5ns) should be enough for all signals
+#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
+#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
+
+static void shiftOut(uint8_t dataOut) {
+ ATOMIC_BLOCK_FORCEON {
+ for (uint8_t i = 0; i < 8; i++) {
+ compiler_barrier();
+ if (dataOut & 0x1) {
+ writePinHigh(DATA_PIN);
+ } else {
+ writePinLow(DATA_PIN);
+ }
+ dataOut = dataOut >> 1;
+ compiler_barrier();
+ writePinHigh(CLOCK_PIN);
+ small_delay();
+ writePinLow(CLOCK_PIN);
+ }
+ compiler_barrier();
+ writePinHigh(LATCH_PIN);
+ small_delay();
+ writePinLow(LATCH_PIN);
+ compiler_barrier();
+ }
+}
+
+static void shiftOut_single(uint8_t data) {
+ ATOMIC_BLOCK_FORCEON {
+ compiler_barrier();
+ if (data & 0x1) {
+ writePinHigh(DATA_PIN);
+ } else {
+ writePinLow(DATA_PIN);
+ }
+ compiler_barrier();
+ writePinHigh(CLOCK_PIN);
+ small_delay();
+ writePinLow(CLOCK_PIN);
+ compiler_barrier();
+ writePinHigh(LATCH_PIN);
+ small_delay();
+ writePinLow(LATCH_PIN);
+ compiler_barrier();
+ }
+}
+
+static bool select_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+ setPinOutput_writeLow(pin);
+ return true;
+ } else {
+ if (col == 10) {
+ shiftOut_single(0x00);
+ }
+ return true;
+ }
+ return false;
+}
+
+static void unselect_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ shiftOut_single(0x01);
+ }
+}
+
+static void unselect_cols(void) {
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ pin_t pin = col_pins[x];
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ if (x == 10)
+ // unselect shift Register
+ shiftOut(0xFF);
+ }
+ }
+}
+
+static void matrix_init_pins(void) {
+ setPinOutput(DATA_PIN);
+ setPinOutput(CLOCK_PIN);
+ setPinOutput(LATCH_PIN);
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ if (col_pins[x] != NO_PIN) {
+ setPinOutput(col_pins[x]);
+ }
+ }
+#endif
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ if (row_pins[x] != NO_PIN) {
+ setPinInputHigh_atomic(row_pins[x]);
+ }
+ }
+}
+
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ bool key_pressed = false;
+
+ // Select col
+ if (!select_col(current_col)) { // select col
+ return; // skip NO_PIN col
+ }
+
+ matrix_output_select_delay();
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
+ // Check row pin state
+ if (readMatrixPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= row_shifter;
+ key_pressed = true;
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~row_shifter;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+ matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ matrix_init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
+
+ // Set col, read rows
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
+ matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
+ }
+
+ bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
+ if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
+
+ return changed;
+}
diff --git a/keyboards/keychron/v5/readme.md b/keyboards/keychron/v5/readme.md
index e54aec5ed833..2fac219f2c3e 100644
--- a/keyboards/keychron/v5/readme.md
+++ b/keyboards/keychron/v5/readme.md
@@ -1,26 +1,18 @@
# Keychron V5
-[Keychron V5](https://i.imgur.com/5aT9lhP.jpg)
-
A customizable 96% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V5
-* Hardware Availability: [Keychron V5 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v5-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/v5/ansi:default
- make keychron/v5/ansi_encoder:default
- make keychron/v5/iso:default
- make keychron/v5/iso_encoder:default
Flashing example for this keyboard:
make keychron/v5/ansi:default:flash
- make keychron/v5/ansi_encoder:default:flash
- make keychron/v5/iso:default:flash
- make keychron/v5/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v5/rules.mk b/keyboards/keychron/v5/rules.mk
new file mode 100644
index 000000000000..23c407488a57
--- /dev/null
+++ b/keyboards/keychron/v5/rules.mk
@@ -0,0 +1 @@
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/v5/v5.c b/keyboards/keychron/v5/v5.c
index 883f7c573b84..9e8a093d9a2b 100644
--- a/keyboards/keychron/v5/v5.c
+++ b/keyboards/keychron/v5/v5.c
@@ -26,6 +26,7 @@ const matrix_row_t matrix_mask[] = {
};
#ifdef DIP_SWITCH_ENABLE
+
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
@@ -35,4 +36,5 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
diff --git a/keyboards/keychron/v6/ansi/ansi.c b/keyboards/keychron/v6/ansi/ansi.c
index 523090bd74cd..40115298831e 100644
--- a/keyboards/keychron/v6/ansi/ansi.c
+++ b/keyboards/keychron/v6/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -19,7 +19,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -88,7 +88,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -106,6 +105,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
+ {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -123,7 +123,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -138,37 +137,35 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
+ {1, L_9, J_9, K_9},
};
#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, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
+ { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 60, 77, 76, 74, 75, 19 },
+ { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 107, 91, 92, __ },
+ { 94, 95, 96, __, __, __, 97, __, __, __, 98, 99, 100, 101, 102, 103, 104, 105, 106, __ },
},
{
- // LED Index to Physical Position
{0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40}, {224,34},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
},
{
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
}
};
diff --git a/keyboards/keychron/v6/ansi/config.h b/keyboards/keychron/v6/ansi/config.h
index 0a017f9e767d..fa9d7e48b314 100644
--- a/keyboards/keychron/v6/ansi/config.h
+++ b/keyboards/keychron/v6/ansi/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,16 +16,26 @@
#pragma once
+/* Key matrix pins */
+#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, A2, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, C14 }
+
+/* Pin connected to DS of 74HC595 */
+#define DATA_PIN_74HC595 C15
+/* Pin connected to SH_CP of 74HC595 */
+#define CLOCK_PIN_74HC595 A1
+/* Pin connected to ST_CP of 74HC595 */
+#define LATCH_PIN_74HC595 A0
+/* Pin used index start of 74HC595 */
+#define PIN_START_74HC595 11
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 62
+#define CAPS_LOCK_LED_INDEX 61
/* Enable NUM_LOCK_LED_INDEX */
-#define NUM_LOCK_LED_INDEX 37
-
-#define SHIFT_COL_START 11
-#define SHIFT_COL_END 18
+// #define NUM_LOCK_LED_INDEX 37
diff --git a/keyboards/keychron/v6/ansi/info.json b/keyboards/keychron/v6/ansi/info.json
index ec361856876e..3f12305f06a5 100644
--- a/keyboards/keychron/v6/ansi/info.json
+++ b/keyboards/keychron/v6/ansi/info.json
@@ -6,145 +6,129 @@
"usb": {
"vid": "0x3434",
"pid": "0x0360",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_108": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [0, 19], "x": 18.5, "y": 0},
+ {"matrix": [1, 19], "x": 19.5, "y": 0},
+ {"matrix": [2, 19], "x": 20.5, "y": 0},
+ {"matrix": [3, 19], "x": 21.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.25},
+ {"matrix": [0, 17], "x": 20.5, "y": 1.25},
+ {"matrix": [0, 18], "x": 21.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.25},
+ {"matrix": [3, 14], "x": 20.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 20.5, "y": 3.25},
+ {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.25},
+ {"matrix": [4, 14], "x": 20.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.25},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
+ {"matrix": [5, 18], "x": 20.5, "y": 5.25},
+ {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
]
}
}
diff --git a/keyboards/keychron/v6/ansi/keymaps/default/keymap.c b/keyboards/keychron/v6/ansi/keymaps/default/keymap.c
index 3f63412300bd..8eac2214bbff 100644
--- a/keyboards/keychron/v6/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v6/ansi/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -14,6 +14,7 @@
* along with this program. If not, see .
*/
+#include "keycode.h"
#include QMK_KEYBOARD_H
// clang-format off
@@ -30,31 +31,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v6/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v6/ansi/keymaps/keychron/keymap.c
index c1e36ce850cf..21ce25564306 100644
--- a/keyboards/keychron/v6/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v6/ansi/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -31,48 +30,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+}
diff --git a/keyboards/keychron/v6/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v6/ansi/keymaps/keychron/rules.mk
index 65df6fb72655..495e8907b48c 100644
--- a/keyboards/keychron/v6/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v6/ansi/keymaps/keychron/rules.mk
@@ -1,3 +1,4 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v6/ansi/keymaps/via/keymap.c b/keyboards/keychron/v6/ansi/keymaps/via/keymap.c
index 60311ba42c03..bedb5b9ea1ce 100644
--- a/keyboards/keychron/v6/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v6/ansi/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,31 +30,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_108(
- KC_ESC, KC_BRID, KC_BRIU, KC_LPAD, RGB_VAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_108(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_108(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_108(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v6/ansi/rules.mk b/keyboards/keychron/v6/ansi/rules.mk
index aa286a161677..980311d3f2fe 100644
--- a/keyboards/keychron/v6/ansi/rules.mk
+++ b/keyboards/keychron/v6/ansi/rules.mk
@@ -1,14 +1,21 @@
# 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 = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
index fd59ba356a1e..91831bf3c161 100644
--- a/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v6/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -90,7 +90,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -108,6 +107,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
+ {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_14, G_14, H_14},
@@ -125,7 +125,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -140,6 +139,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
+ {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -147,31 +147,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
- { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 77, 75, 76, 19 },
- { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 94, 91, 92, __ },
- { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 18 },
+ { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 60, 77, 76, 74, 75, 19 },
+ { 78, __, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 93, 90, 107, 91, 92, __ },
+ { 94, 95, 96, __, __, __, 97, __, __, __, 98, 99, 100, 101, 102, 103, 104, 105, 106, __ },
},
{
// LED Index to Physical Position
{0,0}, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40}, {224,34},
+ {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v6/ansi_encoder/config.h b/keyboards/keychron/v6/ansi_encoder/config.h
index 099c3306f1df..0d8d843d2f34 100644
--- a/keyboards/keychron/v6/ansi_encoder/config.h
+++ b/keyboards/keychron/v6/ansi_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,21 @@
#pragma once
+/* Key matrix pins */
+#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
+/* Pin connected to DS of 74HC595 */
+#define DATA_PIN_74HC595 C15
+/* Pin connected to SH_CP of 74HC595 */
+#define CLOCK_PIN_74HC595 A1
+/* Pin connected to ST_CP of 74HC595 */
+#define LATCH_PIN_74HC595 A0
+/* Pin used number of 74HC595 */
+#define PIN_USED_74HC595 10
+/* Pin used index start of 74HC595 */
+#define PIN_START_74HC595 10
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 48
@@ -25,10 +40,7 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 62
+#define CAPS_LOCK_LED_INDEX 61
/* Enable NUM_LOCK_LED_INDEX */
-#define NUM_LOCK_LED_INDEX 37
-
-#define SHIFT_COL_START 10
-#define SHIFT_COL_END 19
+// #define NUM_LOCK_LED_INDEX 37
diff --git a/keyboards/keychron/v6/ansi_encoder/info.json b/keyboards/keychron/v6/ansi_encoder/info.json
index b62f21ca8187..ad0ea78318a3 100644
--- a/keyboards/keychron/v6/ansi_encoder/info.json
+++ b/keyboards/keychron/v6/ansi_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0361",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -37,120 +21,120 @@
"layouts": {
"LAYOUT_ansi_109": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[4,19], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [4, 19], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [0, 19], "x": 18.5, "y": 0},
+ {"matrix": [1, 19], "x": 19.5, "y": 0},
+ {"matrix": [2, 19], "x": 20.5, "y": 0},
+ {"matrix": [3, 19], "x": 21.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.25},
+ {"matrix": [0, 17], "x": 20.5, "y": 1.25},
+ {"matrix": [0, 18], "x": 21.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.25},
+ {"matrix": [3, 14], "x": 20.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 20.5, "y": 3.25},
+ {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.25},
+ {"matrix": [4, 14], "x": 20.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.25},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
+ {"matrix": [5, 18], "x": 20.5, "y": 5.25},
+ {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
]
}
}
diff --git a/keyboards/keychron/v6/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v6/ansi_encoder/keymaps/default/keymap.c
index f57e544b2608..b51ea1a09c70 100644
--- a/keyboards/keychron/v6/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v6/ansi_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,8 +16,6 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -30,37 +28,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/keymap.c
index f853d49596bd..058ec0dcc9a1 100644
--- a/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -31,35 +30,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -69,19 +68,13 @@ const uint16_t PROGMEM encoder_map[][1][2] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+}
diff --git a/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v6/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v6/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v6/ansi_encoder/keymaps/via/keymap.c
index f57e544b2608..b51ea1a09c70 100644
--- a/keyboards/keychron/v6/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v6/ansi_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,8 +16,6 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -30,37 +28,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_ansi_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_ansi_109(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_ansi_109(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v6/ansi_encoder/rules.mk b/keyboards/keychron/v6/ansi_encoder/rules.mk
index aa286a161677..80a3f300bd22 100644
--- a/keyboards/keychron/v6/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v6/ansi_encoder/rules.mk
@@ -1,14 +1,22 @@
# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v6/config.h b/keyboards/keychron/v6/config.h
index 6c902e824c86..38cff19e6b56 100644
--- a/keyboards/keychron/v6/config.h
+++ b/keyboards/keychron/v6/config.h
@@ -16,6 +16,9 @@
#pragma once
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
@@ -28,12 +31,11 @@
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48 }
+/* Limit the maximum brigtness current of colour white to 500mA */
+#define CKLED2001_CURRENT_TUNE { 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48, 0xA8, 0xA8, 0x48 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 5, 4 } }
+#define DIP_SWITCH_MATRIX_GRID { {5, 4} }
#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
@@ -78,13 +80,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -99,10 +97,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
-
-#define HC595_DS C15
-#define HC595_SHCP A1
-#define HC595_STCP A0
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/v6/halconf.h b/keyboards/keychron/v6/halconf.h
index 463d177eabc7..e490b49e005a 100644
--- a/keyboards/keychron/v6/halconf.h
+++ b/keyboards/keychron/v6/halconf.h
@@ -17,8 +17,6 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
+#define PAL_USE_CALLBACKS TRUE
#include_next
diff --git a/keyboards/keychron/v6/iso/config.h b/keyboards/keychron/v6/iso/config.h
index d46fda6d9f9c..0a9528d03be3 100644
--- a/keyboards/keychron/v6/iso/config.h
+++ b/keyboards/keychron/v6/iso/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,16 +16,26 @@
#pragma once
+/* Key matrix pins */
+#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, A2, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, C14 }
+
+/* Pin connected to DS of 74HC595 */
+#define DATA_PIN_74HC595 C15
+/* Pin connected to SH_CP of 74HC595 */
+#define CLOCK_PIN_74HC595 A1
+/* Pin connected to ST_CP of 74HC595 */
+#define LATCH_PIN_74HC595 A0
+/* Pin used index start of 74HC595 */
+#define PIN_START_74HC595 11
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 49
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 61
+#define CAPS_LOCK_LED_INDEX 60
/* Enable NUM_LOCK_LED_INDEX */
-#define NUM_LOCK_LED_INDEX 37
-
-#define SHIFT_COL_START 11
-#define SHIFT_COL_END 18
+// #define NUM_LOCK_LED_INDEX 37
diff --git a/keyboards/keychron/v6/iso/info.json b/keyboards/keychron/v6/iso/info.json
index c1c389ff9433..0840ee9cc8e9 100644
--- a/keyboards/keychron/v6/iso/info.json
+++ b/keyboards/keychron/v6/iso/info.json
@@ -6,146 +6,130 @@
"usb": {
"vid": "0x3434",
"pid": "0x0362",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- }
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", null, null, null, null, null, null, null, null, "C14"],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_109": {
"layout": [
- {"matrix":[0, 0], "x":0, "y":0},
- {"matrix":[0, 1], "x":2, "y":0},
- {"matrix":[0, 2], "x":3, "y":0},
- {"matrix":[0, 3], "x":4, "y":0},
- {"matrix":[0, 4], "x":5, "y":0},
- {"matrix":[0, 5], "x":6.5, "y":0},
- {"matrix":[0, 6], "x":7.5, "y":0},
- {"matrix":[0, 7], "x":8.5, "y":0},
- {"matrix":[0, 8], "x":9.5, "y":0},
- {"matrix":[0, 9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [0, 19], "x": 18.5, "y": 0},
+ {"matrix": [1, 19], "x": 19.5, "y": 0},
+ {"matrix": [2, 19], "x": 20.5, "y": 0},
+ {"matrix": [3, 19], "x": 21.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.25},
+ {"matrix": [0, 17], "x": 20.5, "y": 1.25},
+ {"matrix": [0, 18], "x": 21.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.25},
+ {"matrix": [3, 14], "x": 20.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 20.5, "y": 3.25},
+ {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.25},
+ {"matrix": [4, 14], "x": 20.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.25},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
+ {"matrix": [5, 18], "x": 20.5, "y": 5.25},
+ {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
]
}
}
diff --git a/keyboards/keychron/v6/iso/iso.c b/keyboards/keychron/v6/iso/iso.c
index d270da68e1e5..5c0e2fa39671 100644
--- a/keyboards/keychron/v6/iso/iso.c
+++ b/keyboards/keychron/v6/iso/iso.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -89,7 +89,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -108,6 +107,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
+ {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -126,7 +126,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -141,6 +140,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
+ {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -148,30 +148,30 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 54, 55, 56, 57, 58, 18 },
- { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 59, 60, 77, 75, 76, 19 },
- { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 95, 92, 93, __ },
- { 96, 97, 98, __, __, __, 99, __, __, __, 100, 101, 102, 103, 104, 105, 106, 107, 108, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 73, 54, 55, 56, 57, 58, 18 },
+ { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, __, 72, 59, 77, 76, 74, 75, 19 },
+ { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 108, 92, 93, __ },
+ { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
},
{
// LED Index to Physical Position
{0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
- {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40}, {224,34},
+ {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
}
};
diff --git a/keyboards/keychron/v6/iso/keymaps/default/keymap.c b/keyboards/keychron/v6/iso/keymaps/default/keymap.c
index 754831db3335..c1463b3060b1 100644
--- a/keyboards/keychron/v6/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v6/iso/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,8 +16,6 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -30,31 +28,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v6/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v6/iso/keymaps/keychron/keymap.c
index 2dbd2e23e8bf..07199e2a070f 100644
--- a/keyboards/keychron/v6/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v6/iso/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -31,48 +30,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+}
diff --git a/keyboards/keychron/v6/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v6/iso/keymaps/keychron/rules.mk
index 65df6fb72655..495e8907b48c 100644
--- a/keyboards/keychron/v6/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v6/iso/keymaps/keychron/rules.mk
@@ -1,3 +1,4 @@
VIA_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v6/iso/keymaps/via/keymap.c b/keyboards/keychron/v6/iso/keymaps/via/keymap.c
index 754831db3335..c1463b3060b1 100644
--- a/keyboards/keychron/v6/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v6/iso/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,8 +16,6 @@
#include QMK_KEYBOARD_H
-// clang-format off
-
enum layers{
MAC_BASE,
MAC_FN,
@@ -30,31 +28,31 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_109(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_109(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_109(
KC_ESC, 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_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_109(
_______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/keychron/v6/iso/rules.mk b/keyboards/keychron/v6/iso/rules.mk
index aa286a161677..980311d3f2fe 100644
--- a/keyboards/keychron/v6/iso/rules.mk
+++ b/keyboards/keychron/v6/iso/rules.mk
@@ -1,14 +1,21 @@
# 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 = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v6/iso_encoder/config.h b/keyboards/keychron/v6/iso_encoder/config.h
index cf287b19859a..6e8069f7ece3 100644
--- a/keyboards/keychron/v6/iso_encoder/config.h
+++ b/keyboards/keychron/v6/iso_encoder/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,6 +16,21 @@
#pragma once
+/* Key matrix pins */
+#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS { A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
+
+/* Pin connected to DS of 74HC595 */
+#define DATA_PIN_74HC595 C15
+/* Pin connected to SH_CP of 74HC595 */
+#define CLOCK_PIN_74HC595 A1
+/* Pin connected to ST_CP of 74HC595 */
+#define LATCH_PIN_74HC595 A0
+/* Pin used number of 74HC595 */
+#define PIN_USED_74HC595 10
+/* Pin used index start of 74HC595 */
+#define PIN_START_74HC595 10
+
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 60
#define DRIVER_2_LED_TOTAL 49
@@ -25,10 +40,7 @@
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED*/
-#define CAPS_LOCK_LED_INDEX 61
+#define CAPS_LOCK_LED_INDEX 60
/* Enable NUM_LOCK_LED_INDEX */
-#define NUM_LOCK_LED_INDEX 37
-
-#define SHIFT_COL_START 10
-#define SHIFT_COL_END 19
+// #define NUM_LOCK_LED_INDEX 37
diff --git a/keyboards/keychron/v6/iso_encoder/info.json b/keyboards/keychron/v6/iso_encoder/info.json
index 976a551ab97f..a40d4d66b62e 100644
--- a/keyboards/keychron/v6/iso_encoder/info.json
+++ b/keyboards/keychron/v6/iso_encoder/info.json
@@ -6,27 +6,11 @@
"usb": {
"vid": "0x3434",
"pid": "0x0363",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
+ "driver": "ckled2001"
},
- "diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "C14", "pin_b": "A2"}
@@ -37,121 +21,121 @@
"layouts": {
"LAYOUT_iso_110": {
"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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[4,19], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
+ {"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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [4, 19], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [0, 19], "x": 18.5, "y": 0},
+ {"matrix": [1, 19], "x": 19.5, "y": 0},
+ {"matrix": [2, 19], "x": 20.5, "y": 0},
+ {"matrix": [3, 19], "x": 21.5, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1.25},
- {"matrix":[1, 1], "x":1, "y":1.25},
- {"matrix":[1, 2], "x":2, "y":1.25},
- {"matrix":[1, 3], "x":3, "y":1.25},
- {"matrix":[1, 4], "x":4, "y":1.25},
- {"matrix":[1, 5], "x":5, "y":1.25},
- {"matrix":[1, 6], "x":6, "y":1.25},
- {"matrix":[1, 7], "x":7, "y":1.25},
- {"matrix":[1, 8], "x":8, "y":1.25},
- {"matrix":[1, 9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [1, 17], "x": 18.5, "y": 1.25},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.25},
+ {"matrix": [0, 17], "x": 20.5, "y": 1.25},
+ {"matrix": [0, 18], "x": 21.5, "y": 1.25},
- {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2, 1], "x":1.5, "y":2.25},
- {"matrix":[2, 2], "x":2.5, "y":2.25},
- {"matrix":[2, 3], "x":3.5, "y":2.25},
- {"matrix":[2, 4], "x":4.5, "y":2.25},
- {"matrix":[2, 5], "x":5.5, "y":2.25},
- {"matrix":[2, 6], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":7.5, "y":2.25},
- {"matrix":[2, 8], "x":8.5, "y":2.25},
- {"matrix":[2, 9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+ {"matrix": [2, 17], "x": 18.5, "y": 2.25},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.25},
+ {"matrix": [3, 14], "x": 20.5, "y": 2.25},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3, 1], "x":1.75, "y":3.25},
- {"matrix":[3, 2], "x":2.75, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":7.75, "y":3.25},
- {"matrix":[3, 8], "x":8.75, "y":3.25},
- {"matrix":[3, 9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25},
+ {"matrix": [2, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
+ {"matrix": [3, 17], "x": 18.5, "y": 3.25},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.25},
+ {"matrix": [3, 16], "x": 20.5, "y": 3.25},
+ {"matrix": [3, 15], "x": 21.5, "y": 2.25, "h": 2},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":2.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},
- {"matrix":[4, 5], "x":5.25, "y":4.25},
- {"matrix":[4, 6], "x":6.25, "y":4.25},
- {"matrix":[4, 7], "x":7.25, "y":4.25},
- {"matrix":[4, 8], "x":8.25, "y":4.25},
- {"matrix":[4, 9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix": [4, 17], "x": 18.5, "y": 4.25},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.25},
+ {"matrix": [4, 14], "x": 20.5, "y": 4.25},
- {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.25},
+ {"matrix": [5, 17], "x": 18.5, "y": 5.25, "w": 2},
+ {"matrix": [5, 18], "x": 20.5, "y": 5.25},
+ {"matrix": [4, 16], "x": 21.5, "y": 4.25, "h": 2}
]
}
}
diff --git a/keyboards/keychron/v6/iso_encoder/iso_encoder.c b/keyboards/keychron/v6/iso_encoder/iso_encoder.c
index f406a83392c8..8268e5b0a9ac 100644
--- a/keyboards/keychron/v6/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v6/iso_encoder/iso_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
@@ -89,7 +89,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{0, L_15, J_15, K_15},
{0, L_16, J_16, K_16},
{1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
{1, C_16, A_16, B_16},
{1, C_15, A_15, B_15},
@@ -108,6 +107,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_3, J_3, K_3},
{1, L_4, J_4, K_4},
{1, L_5, J_5, K_5},
+ {1, L_2, J_2, K_2},
{1, I_16, G_16, H_16},
{1, I_15, G_15, H_15},
@@ -126,7 +126,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_6, J_6, K_6},
{1, L_7, J_7, K_7},
{1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
{1, F_16, D_16, E_16},
{1, F_15, D_15, E_15},
@@ -141,6 +140,7 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
{1, L_10, J_10, K_10},
{1, L_11, J_11, K_11},
{1, L_12, J_12, K_12},
+ {1, L_9, J_9, K_9},
};
#define __ NO_LED
@@ -148,31 +148,31 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
led_config_t g_led_config = {
{
// Key Matrix to LED Index
- { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
- { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 74, 54, 55, 56, 57, 58, 18 },
- { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, 59, 60, 77, 75, 76, 19 },
- { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 95, 92, 93, __ },
- { 96, 97, 98, __, __, __, 99, __, __, __, 100, 101, 102, 103, 104, 105, 106, 107, 108, __ },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, __, 13, 14, 15, 39, 40, 16 },
+ { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 17 },
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 73, 54, 55, 56, 57, 58, 18 },
+ { 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, __, 72, 59, 77, 76, 74, 75, 19 },
+ { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, 94, 91, 108, 92, 93, __ },
+ { 95, 96, 97, __, __, __, 98, __, __, __, 99, 100, 101, 102, 103, 104, 105, 106, 107, __ },
},
{
// LED Index to Physical Position
{0,0}, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
- {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
+ {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27},
+ {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40}, {224,34},
+ {1,52}, {13,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52},
+ {1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64}, {224,58},
},
{
// RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1, 4, 4,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v6/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v6/iso_encoder/keymaps/default/keymap.c
index 790538586efb..73b0c5778684 100644
--- a/keyboards/keychron/v6/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v6/iso_encoder/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_110(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_110(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_110(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v6/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v6/iso_encoder/keymaps/keychron/keymap.c
index c61a163b4edc..bef0b61bac08 100644
--- a/keyboards/keychron/v6/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v6/iso_encoder/keymaps/keychron/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,6 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
@@ -29,37 +28,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_110(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_iso_110(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_110(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
@@ -69,19 +68,13 @@ const uint16_t PROGMEM encoder_map[][1][2] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+}
diff --git a/keyboards/keychron/v6/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v6/iso_encoder/keymaps/keychron/rules.mk
index 340c028b389c..9cf1a9b56cba 100644
--- a/keyboards/keychron/v6/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v6/iso_encoder/keymaps/keychron/rules.mk
@@ -1,4 +1,5 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-SRC += keychron_common.c keychron_ft_common.c
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v6/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v6/iso_encoder/keymaps/via/keymap.c
index 790538586efb..73b0c5778684 100644
--- a/keyboards/keychron/v6/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v6/iso_encoder/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -30,37 +30,37 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_110(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[MAC_FN] = LAYOUT_iso_110(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ 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_BASE] = LAYOUT_iso_110(
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9,
+ 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[WIN_FN] = LAYOUT_iso_110(
_______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
diff --git a/keyboards/keychron/v6/iso_encoder/rules.mk b/keyboards/keychron/v6/iso_encoder/rules.mk
index aa286a161677..986772495755 100644
--- a/keyboards/keychron/v6/iso_encoder/rules.mk
+++ b/keyboards/keychron/v6/iso_encoder/rules.mk
@@ -1,14 +1,23 @@
# 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
+ENCODER_ENABLE = yes # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
-
# custom matrix setup
CUSTOM_MATRIX = lite
-VPATH += keyboards/keychron/common
+VPATH ?= keyboards/keychron/common
SRC += matrix.c
diff --git a/keyboards/keychron/v6/jis_encoder/info.json b/keyboards/keychron/v6/jis_encoder/info.json
deleted file mode 100644
index 262b74e448b3..000000000000
--- a/keyboards/keychron/v6/jis_encoder/info.json
+++ /dev/null
@@ -1,161 +0,0 @@
-{
- "keyboard_name": "Keychron V6",
- "manufacturer": "Keychron",
- "url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
- "usb": {
- "vid": "0x3434",
- "pid": "0x0365",
- "device_version": "1.0.0"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
- },
- "rgb_matrix": {
- "driver": "CKLED2001"
- },
- "matrix_pins": {
- "cols": ["A10", "A9", "A8", "B1", "B0", "A7", "A6", "A5", "A4", "A3", null, null, null, null, null, null, null, null, null, null],
- "rows": ["B5", "B4", "B3", "A15", "A14", "A13"]
- },
- "diode_direction": "ROW2COL",
- "encoder": {
- "rotary": [
- {"pin_a": "C14", "pin_b": "A2"}
- ]
- },
- "processor": "STM32L432",
- "bootloader": "stm32-dfu",
- "layouts": {
- "LAYOUT_jis_113": {
- "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":[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.75, "y":0},
- {"matrix":[0,10], "x":10.75, "y":0},
- {"matrix":[0,11], "x":11.75, "y":0},
- {"matrix":[0,12], "x":12.75, "y":0},
- {"matrix":[4,19], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
- {"matrix":[0,19], "x":18.5, "y":0},
- {"matrix":[1,19], "x":19.5, "y":0},
- {"matrix":[2,19], "x":20.5, "y":0},
- {"matrix":[3,19], "x":21.5, "y":0},
-
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":14, "y":1.25},
- {"matrix":[0,13], "x":13, "y":1.25},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
- {"matrix":[1,17], "x":18.5, "y":1.25},
- {"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[0,17], "x":20.5, "y":1.25},
- {"matrix":[0,18], "x":21.5, "y":1.25},
-
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
- {"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[3,14], "x":20.5, "y":2.25},
- {"matrix":[3,15], "x":21.5, "y":2.25, "h":2},
-
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25},
- {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
- {"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,16], "x":20.5, "y":3.25},
-
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,12], "x":12.25, "y":4.25},
- {"matrix":[4,13], "x":13.25, "y":4.25, "w":1.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
- {"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,14], "x":20.5, "y":4.25},
- {"matrix":[4,16], "x":21.5, "y":4.25, "h":2},
-
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25},
- {"matrix":[5,2], "x":2.25, "y":5.25, "w":1.25},
- {"matrix":[5,3], "x":3.5, "y":5.25},
- {"matrix":[5,6], "x":4.5, "y":5.25, "w":4.5},
- {"matrix":[5,9], "x":9, "y":5.25, "w":1.25},
- {"matrix":[5,10], "x":10.25, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.5, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.75, "y":5.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keychron/v6/jis_encoder/jis_encoder.c b/keyboards/keychron/v6/jis_encoder/jis_encoder.c
deleted file mode 100644
index ecb3537447f7..000000000000
--- a/keyboards/keychron/v6/jis_encoder/jis_encoder.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/* 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 .
- */
-
-#include "quantum.h"
-
-// clang-format off
-#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, I_1, G_1, H_1},
- {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, 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, I_10, G_10, H_10},
- {0, I_11, G_11, H_11},
- {0, I_12, G_12, H_12},
- {0, I_13, G_13, H_13},
- {0, I_15, G_15, H_15},
- {0, I_16, G_16, H_16},
- {0, L_5, J_5, K_5},
- {0, L_6, J_6, K_6},
- {0, L_7, J_7, K_7},
- {0, L_8, J_8, K_8},
- {0, L_4, J_4, K_4},
-
- {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, 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, C_11, A_11, B_11},
- {0, C_12, A_12, B_12},
- {0, C_13, A_13, B_13},
- {0, I_14, G_14, H_14},
- {0, C_14, A_14, B_14},
- {0, C_15, A_15, B_15},
- {0, C_16, A_16, B_16},
- {0, L_9, J_9, K_9},
- {0, L_10, J_10, K_10},
- {0, L_11, J_11, K_11},
- {0, L_12, J_12, K_12},
- {0, L_13, J_13, K_13},
-
- {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, F_6, D_6, E_6},
- {0, F_7, D_7, E_7},
- {0, F_8, D_8, E_8},
- {0, F_9, D_9, E_9},
- {0, F_10, D_10, E_10},
- {0, F_11, D_11, E_11},
- {0, F_12, D_12, E_12},
- {0, F_13, D_13, E_13},
- {0, F_15, D_15, E_15},
- {0, F_16, D_16, E_16},
- {0, L_14, J_14, K_14},
- {0, L_15, J_15, K_15},
- {0, L_16, J_16, K_16},
- {1, L_1, J_1, K_1},
- {1, L_2, J_2, K_2},
-
- {1, C_16, A_16, B_16},
- {1, C_15, A_15, B_15},
- {1, C_14, A_14, B_14},
- {1, C_13, A_13, B_13},
- {1, C_12, A_12, B_12},
- {1, C_11, A_11, B_11},
- {1, C_10, A_10, B_10},
- {1, C_9, A_9, B_9},
- {1, C_8, A_8, B_8},
- {1, C_7, A_7, B_7},
- {1, C_6, A_6, B_6},
- {1, C_5, A_5, B_5},
- {1, C_3, A_3, B_3},
- {0, F_14, D_14, E_14},
- {1, L_3, J_3, K_3},
- {1, L_4, J_4, K_4},
- {1, L_5, J_5, K_5},
-
- {1, I_16, G_16, H_16},
- {1, I_14, G_14, H_14},
- {1, I_13, G_13, H_13},
- {1, I_12, G_12, H_12},
- {1, I_11, G_11, H_11},
- {1, I_10, G_10, H_10},
- {1, I_9, G_9, H_9},
- {1, I_8, G_8, H_8},
- {1, I_7, G_7, H_7},
- {1, I_6, G_6, H_6},
- {1, I_5, G_5, H_5},
- {1, I_4, G_4, H_4},
- {1, I_3, G_3, H_3},
- {1, I_1, G_1, H_1},
- {1, L_6, J_6, K_6},
- {1, L_7, J_7, K_7},
- {1, L_8, J_8, K_8},
- {1, L_9, J_9, K_9},
-
- {1, F_16, D_16, E_16},
- {1, F_15, D_15, E_15},
- {1, F_14, D_14, E_14},
- {1, F_13, D_13, E_13},
- {1, F_10, D_10, E_10},
- {1, F_7, D_7, E_7},
- {1, F_6, D_6, E_6},
- {1, F_5, D_5, E_5},
- {1, F_4, D_4, E_4},
- {1, F_3, D_3, E_3},
- {1, F_2, D_2, E_2},
- {1, F_1, D_1, E_1},
- {1, L_10, J_10, K_10},
- {1, L_11, J_11, K_11},
- {1, L_12, J_12, K_12},
-};
-
-#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, 11, 12, 33, 13, 14, 15, 40, 41, 16 },
- { 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 17 },
- { 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 75, 55, 56, 57, 58, 59, 18 },
- { 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, __, 74, 60, 61, 78, 76, 77, 19 },
- { 79, __, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 92, 96, 93, 94, __ },
- { 97, 98, 99, 100, __, __, 101, __, __, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, __ },
- },
- {
- // LED Index to Physical Position
- {0,0 }, {13,0}, {24,0}, {34,0}, {45,0}, {57,0}, {68,0}, {78,0}, {89,0}, {102,0}, {112,0}, {123,0}, {133,0}, {159,0}, {169,0}, {180,0}, {193,0}, {203,0}, {214,0}, {224,0},
- {0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {146,15}, {136,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
- {3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
- {4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {133,40}, {147,36}, {193,40}, {203,40}, {214,40},
- {7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {128,52}, {142,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
- {1,64}, {13,64}, {25,64}, {36,64}, {65,64}, {95,64}, {108,64}, {121,64}, {133,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
- },
- {
- // RGB LED Index to Flag
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 8, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 4, 4, 4,
- 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 4, 4,
- 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1, 4, 4,
- }
-};
-#endif
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v6/jis_encoder/keymaps/default/keymap.c
deleted file mode 100644
index cecfdce1a408..000000000000
--- a/keyboards/keychron/v6/jis_encoder/keymaps/default/keymap.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_jis_113(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT_jis_113(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_jis_113(
- KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT_jis_113(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
-};
-#endif
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/default/rules.mk b/keyboards/keychron/v6/jis_encoder/keymaps/default/rules.mk
deleted file mode 100644
index ee325681483f..000000000000
--- a/keyboards/keychron/v6/jis_encoder/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v6/jis_encoder/keymaps/keychron/keymap.c
deleted file mode 100644
index f2e5241137b3..000000000000
--- a/keyboards/keychron/v6/jis_encoder/keymaps/keychron/keymap.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-#include "keychron_common.h"
-#include "keychron_ft_common.h"
-
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_jis_113(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT_jis_113(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_jis_113(
- KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT_jis_113(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
-};
-#endif // ENCODER_MAP_ENABLE
-
-// clang-format on
-
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- if (!process_record_keychron(keycode, record)) {
- return false;
- }
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
- return true;
-}
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v6/jis_encoder/keymaps/keychron/rules.mk
deleted file mode 100644
index 340c028b389c..000000000000
--- a/keyboards/keychron/v6/jis_encoder/keymaps/keychron/rules.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
-
-SRC += keychron_common.c keychron_ft_common.c
diff --git a/keyboards/keychron/v6/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v6/jis_encoder/keymaps/via/keymap.c
deleted file mode 100644
index cecfdce1a408..000000000000
--- a/keyboards/keychron/v6/jis_encoder/keymaps/via/keymap.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* 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 .
- */
-
-#include QMK_KEYBOARD_H
-
-// clang-format off
-
-enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_jis_113(
- KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [MAC_FN] = LAYOUT_jis_113(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_TOG, _______, _______, 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_BASE] = LAYOUT_jis_113(
- KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD, _______, _______, _______, _______,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
- [WIN_FN] = LAYOUT_jis_113(
- _______, 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_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][1][2] = {
- [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
- [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
- [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }
-};
-#endif
diff --git a/keyboards/keychron/v6/jis_encoder/rules.mk b/keyboards/keychron/v6/jis_encoder/rules.mk
deleted file mode 100644
index aa286a161677..000000000000
--- a/keyboards/keychron/v6/jis_encoder/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-# Build Options
-# change yes to no to disable.
-#
-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
-
-# custom matrix setup
-CUSTOM_MATRIX = lite
-
-VPATH += keyboards/keychron/common
-SRC += matrix.c
diff --git a/keyboards/keychron/v6/matrix.c b/keyboards/keychron/v6/matrix.c
new file mode 100644
index 000000000000..9269fed8d669
--- /dev/null
+++ b/keyboards/keychron/v6/matrix.c
@@ -0,0 +1,215 @@
+/* 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 .
+ */
+
+#include "matrix.h"
+#include "quantum.h"
+
+#ifndef PIN_USED_74HC595
+# define PIN_USED_74HC595 8
+#endif
+#ifndef PIN_START_74HC595
+# define PIN_START_74HC595 8
+#endif
+
+#ifdef MATRIX_ROW_PINS
+static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+#endif // MATRIX_ROW_PINS
+#ifdef MATRIX_COL_PINS
+static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#endif // MATRIX_COL_PINS
+
+#define ROWS_PER_HAND (MATRIX_ROWS)
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinLow(pin);
+ }
+}
+
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinHigh(pin);
+ }
+}
+
+static inline void setPinInputHigh_atomic(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinInputHigh(pin);
+ }
+}
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+void small_delay(volatile uint8_t timeout) {
+ while (timeout--);
+}
+
+static void shiftOut(uint16_t dataOut) {
+ ATOMIC_BLOCK_FORCEON {
+ for (uint8_t i = 0; i < PIN_USED_74HC595; i++) {
+ if (dataOut & 0x1) {
+ writePinHigh(DATA_PIN_74HC595);
+ } else {
+ writePinLow(DATA_PIN_74HC595);
+ }
+ dataOut = dataOut >> 1;
+ writePinHigh(CLOCK_PIN_74HC595);
+ small_delay(2);
+ writePinLow(CLOCK_PIN_74HC595);
+ }
+ writePinHigh(LATCH_PIN_74HC595);
+ small_delay(2);
+ writePinLow(LATCH_PIN_74HC595);
+ }
+}
+
+static void shiftOut_single(uint8_t data) {
+ ATOMIC_BLOCK_FORCEON {
+ if (data & 0x1) {
+ writePinHigh(DATA_PIN_74HC595);
+ } else {
+ writePinLow(DATA_PIN_74HC595);
+ }
+ writePinHigh(CLOCK_PIN_74HC595);
+ small_delay(2);
+ writePinLow(CLOCK_PIN_74HC595);
+ writePinHigh(LATCH_PIN_74HC595);
+ small_delay(2);
+ writePinLow(LATCH_PIN_74HC595);
+ }
+}
+
+static bool select_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+ setPinOutput_writeLow(pin);
+ return true;
+ } else {
+ if (col == PIN_START_74HC595) {
+ shiftOut_single(0x00);
+ }
+ return true;
+ }
+ return false;
+}
+
+static void unselect_col(uint8_t col) {
+ pin_t pin = col_pins[col];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ } else {
+ shiftOut_single(0x01);
+ }
+}
+
+static void unselect_cols(void) {
+ // unselect column pins
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ pin_t pin = col_pins[x];
+
+ if (pin != NO_PIN) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(pin);
+#else
+ setPinInputHigh_atomic(pin);
+#endif
+ }
+ if (x == PIN_START_74HC595)
+ // unselect Shift Register
+ shiftOut(0xFFFF);
+ }
+}
+
+static void matrix_init_pins(void) {
+ setPinOutput(DATA_PIN_74HC595);
+ setPinOutput(CLOCK_PIN_74HC595);
+ setPinOutput(LATCH_PIN_74HC595);
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ if (col_pins[x] != NO_PIN) {
+ setPinOutput(col_pins[x]);
+ }
+ }
+#endif
+ unselect_cols();
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ if (row_pins[x] != NO_PIN) {
+ setPinInputHigh_atomic(row_pins[x]);
+ }
+ }
+}
+
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ bool key_pressed = false;
+
+ // Select col
+ if (!select_col(current_col)) { // select col
+ return; // skip NO_PIN col
+ }
+
+ matrix_output_select_delay();
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
+ // Check row pin state
+ if (readMatrixPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= row_shifter;
+ key_pressed = true;
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~row_shifter;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+ matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
+}
+
+void matrix_init_custom(void) {
+ // initialize key pins
+ matrix_init_pins();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
+
+ // Set col, read rows
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
+ matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
+ }
+
+ bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
+ if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
+
+ return changed;
+}
diff --git a/keyboards/keychron/v6/readme.md b/keyboards/keychron/v6/readme.md
index 082850665a6a..d8a68846bd85 100644
--- a/keyboards/keychron/v6/readme.md
+++ b/keyboards/keychron/v6/readme.md
@@ -1,26 +1,18 @@
# Keychron V6
-![Keychron V6](https://i.imgur.com/Os99bIL.jpg)
-
A customizable 100% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V6
-* Hardware Availability: [Keychron V6 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v6-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
- make keychron/v6/ansi:default
- make keychron/v6/ansi_encoder:default
- make keychron/v6/iso:default
- make keychron/v6/iso_encoder:default
+ make keychron/v6/v6_ansi_stm32l432:default
Flashing example for this keyboard:
- make keychron/v6/ansi:flash
- make keychron/v6/ansi_encoder:flash
- make keychron/v6/iso:flash
- make keychron/v6/iso_encoder:flash
+ make keychron/v6/v6_ansi_stm32l432:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v6/v6.c b/keyboards/keychron/v6/v6.c
index eeabe9800787..0f9305d2d05f 100644
--- a/keyboards/keychron/v6/v6.c
+++ b/keyboards/keychron/v6/v6.c
@@ -1,4 +1,4 @@
-/* Copyright 2022 @ Keychron (https://www.keychron.com)
+/* 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
@@ -16,7 +16,6 @@
#include "quantum.h"
-// clang-format off
const matrix_row_t matrix_mask[] = {
0b11111111111111111111,
0b11111111111111111111,
@@ -25,14 +24,15 @@ const matrix_row_t matrix_mask[] = {
0b11111111111111111111,
0b11111111111111101111,
};
-//clang-format on
+
#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) {
-# if defined(OS_SWITCH_INVERT)
+# if defined(OS_SWITCH_REVERT)
default_layer_set(1UL << (!active ? 2 : 0));
# else
default_layer_set(1UL << (active ? 2 : 0));
@@ -40,4 +40,61 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
-#endif
+
+#endif // DIP_SWITCH_ENABLE
+
+#if defined(RGB_MATRIX_ENABLE) && (defined(CAPS_LOCK_LED_INDEX) || defined(NUM_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 defined(CAPS_LOCK_LED_INDEX)
+ 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);
+ }
+ }
+# endif // CAPS_LOCK_LED_INDEX
+# if defined(NUM_LOCK_LED_INDEX)
+ if (host_keyboard_led_state().num_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 255, 255, 255);
+ } else {
+ if (!rgb_matrix_get_flags()) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(NUM_LOCK_LED_INDEX, 0, 0, 0);
+ }
+ }
+# endif // NUM_LOCK_LED_INDEX
+ return true;
+}
+
+#endif // RGB_MATRIX_ENABLE...
diff --git a/keyboards/keychron/v7/ansi/ansi.c b/keyboards/keychron/v7/ansi/ansi.c
index 920c826bd8ea..c0deea784518 100644
--- a/keyboards/keychron/v7/ansi/ansi.c
+++ b/keyboards/keychron/v7/ansi/ansi.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -130,7 +130,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v7/ansi/info.json b/keyboards/keychron/v7/ansi/info.json
index b56387cd006b..26f31786b5b8 100644
--- a/keyboards/keychron/v7/ansi/info.json
+++ b/keyboards/keychron/v7/ansi/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0370",
- "device_version": "1.0.3"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "B5"],
@@ -32,82 +21,82 @@
"layouts": {
"LAYOUT_ansi_72": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix":[0,14], "x":15, "y":0},
- {"matrix":[0,15], "x":16, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"matrix": [0, 14], "x": 15, "y": 0},
+ {"matrix": [0, 15], "x": 16, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix":[1,13], "x":13.5, "y":1, "w":1.5},
- {"matrix":[1,14], "x":15, "y":1},
- {"matrix":[1,15], "x":16, "y":1},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"matrix": [1, 14], "x": 15, "y": 1},
+ {"matrix": [1, 15], "x": 16, "y": 1},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2, "w":2.25},
- {"matrix":[2,14], "x":15, "y":2},
- {"matrix":[2,15], "x":16, "y":2},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"matrix": [2, 14], "x": 15, "y": 2},
+ {"matrix": [2, 15], "x": 16, "y": 2},
- {"matrix":[3, 0], "x":0, "y":3, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix":[3,14], "x":15, "y":3},
- {"matrix":[3,15], "x":16, "y":3},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix": [3, 14], "x": 15, "y": 3},
+ {"matrix": [3, 15], "x": 16, "y": 3},
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4, 9], "x":10, "y":4},
- {"matrix":[4,10], "x":11, "y":4},
- {"matrix":[4,11], "x":12, "y":4},
- {"matrix":[4,12], "x":13, "y":4},
- {"matrix":[4,13], "x":14, "y":4},
- {"matrix":[4,14], "x":15, "y":4},
- {"matrix":[4,15], "x":16, "y":4}
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+ {"matrix": [4, 9], "x": 10, "y": 4},
+ {"matrix": [4, 10], "x": 11, "y": 4},
+ {"matrix": [4, 11], "x": 12, "y": 4},
+ {"matrix": [4, 12], "x": 13, "y": 4},
+ {"matrix": [4, 13], "x": 14, "y": 4},
+ {"matrix": [4, 14], "x": 15, "y": 4},
+ {"matrix": [4, 15], "x": 16, "y": 4}
]
}
}
diff --git a/keyboards/keychron/v7/ansi/keymaps/default/keymap.c b/keyboards/keychron/v7/ansi/keymaps/default/keymap.c
index 79a2fa389dbc..5d5a0ea0b4a3 100644
--- a/keyboards/keychron/v7/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v7/ansi/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_72(
- 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,
+ [_FN1] = LAYOUT_ansi_72(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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_ansi_72(
+ [_FN3] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v7/ansi/keymaps/keychron/config.h b/keyboards/keychron/v7/ansi/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v7/ansi/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v7/ansi/keymaps/keychron/keymap.c
index 9773ffc11d82..46a0ca7912f9 100644
--- a/keyboards/keychron/v7/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v7/ansi/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_72(
+ [_FN1] = LAYOUT_ansi_72(
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_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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_ansi_72(
+ [_FN3] = LAYOUT_ansi_72(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v7/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v7/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v7/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v7/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v7/ansi/keymaps/via/config.h b/keyboards/keychron/v7/ansi/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v7/ansi/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/ansi/keymaps/via/keymap.c b/keyboards/keychron/v7/ansi/keymaps/via/keymap.c
index f53b6d853d93..5d5a0ea0b4a3 100644
--- a/keyboards/keychron/v7/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v7/ansi/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,23 +35,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_72(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_PGUP,
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_PGDN,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_72(
- 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,
+ [_FN1] = LAYOUT_ansi_72(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_ansi_72(
+ [_FN2] = LAYOUT_ansi_72(
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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v7/ansi/rules.mk b/keyboards/keychron/v7/ansi/rules.mk
index 4bc1e23a57a0..46f5aef144b4 100644
--- a/keyboards/keychron/v7/ansi/rules.mk
+++ b/keyboards/keychron/v7/ansi/rules.mk
@@ -1,8 +1,17 @@
# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v7/config.h b/keyboards/keychron/v7/config.h
index d71c95914453..c439a7e36615 100644
--- a/keyboards/keychron/v7/config.h
+++ b/keyboards/keychron/v7/config.h
@@ -30,13 +30,10 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define SCAN_PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70 } // v7 iso
+#define CKLED2001_CURRENT_TUNE { 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70, 0xFC, 0xFC, 0x70 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {4,4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -44,6 +41,8 @@
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -80,13 +79,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -101,6 +96,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(2)
-#define FN_KEY2 MO(3)
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
diff --git a/keyboards/keychron/v7/iso/info.json b/keyboards/keychron/v7/iso/info.json
index dd494245f4ff..f29d9d9a3261 100644
--- a/keyboards/keychron/v7/iso/info.json
+++ b/keyboards/keychron/v7/iso/info.json
@@ -6,24 +6,13 @@
"usb": {
"vid": "0x3434",
"pid": "0x0372",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
- "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "B5"],
+ "cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "A10", "B5"],
"rows": ["B4", "B3", "A15", "A14", "A13"]
},
"diode_direction": "ROW2COL",
@@ -32,83 +21,83 @@
"layouts": {
"LAYOUT_iso_73": {
"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":[0, 4], "x":4, "y":0},
- {"matrix":[0, 5], "x":5, "y":0},
- {"matrix":[0, 6], "x":6, "y":0},
- {"matrix":[0, 7], "x":7, "y":0},
- {"matrix":[0, 8], "x":8, "y":0},
- {"matrix":[0, 9], "x":9, "y":0},
- {"matrix":[0,10], "x":10, "y":0},
- {"matrix":[0,11], "x":11, "y":0},
- {"matrix":[0,12], "x":12, "y":0},
- {"matrix":[0,13], "x":13, "y":0, "w":2},
- {"matrix":[0,14], "x":15, "y":0},
- {"matrix":[0,15], "x":16, "y":0},
+ {"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": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [0, 12], "x": 12, "y": 0},
+ {"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"matrix": [0, 14], "x": 15, "y": 0},
+ {"matrix": [0, 15], "x": 16, "y": 0},
- {"matrix":[1, 0], "x":0, "y":1, "w":1.5},
- {"matrix":[1, 1], "x":1.5, "y":1},
- {"matrix":[1, 2], "x":2.5, "y":1},
- {"matrix":[1, 3], "x":3.5, "y":1},
- {"matrix":[1, 4], "x":4.5, "y":1},
- {"matrix":[1, 5], "x":5.5, "y":1},
- {"matrix":[1, 6], "x":6.5, "y":1},
- {"matrix":[1, 7], "x":7.5, "y":1},
- {"matrix":[1, 8], "x":8.5, "y":1},
- {"matrix":[1, 9], "x":9.5, "y":1},
- {"matrix":[1,10], "x":10.5, "y":1},
- {"matrix":[1,11], "x":11.5, "y":1},
- {"matrix":[1,12], "x":12.5, "y":1},
- {"matrix":[1,14], "x":15, "y":1},
- {"matrix":[1,15], "x":16, "y":1},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"matrix": [1, 1], "x": 1.5, "y": 1},
+ {"matrix": [1, 2], "x": 2.5, "y": 1},
+ {"matrix": [1, 3], "x": 3.5, "y": 1},
+ {"matrix": [1, 4], "x": 4.5, "y": 1},
+ {"matrix": [1, 5], "x": 5.5, "y": 1},
+ {"matrix": [1, 6], "x": 6.5, "y": 1},
+ {"matrix": [1, 7], "x": 7.5, "y": 1},
+ {"matrix": [1, 8], "x": 8.5, "y": 1},
+ {"matrix": [1, 9], "x": 9.5, "y": 1},
+ {"matrix": [1, 10], "x": 10.5, "y": 1},
+ {"matrix": [1, 11], "x": 11.5, "y": 1},
+ {"matrix": [1, 12], "x": 12.5, "y": 1},
+ {"matrix": [1, 14], "x": 15, "y": 1},
+ {"matrix": [1, 15], "x": 16, "y": 1},
- {"matrix":[2, 0], "x":0, "y":2, "w":1.75},
- {"matrix":[2, 1], "x":1.75, "y":2},
- {"matrix":[2, 2], "x":2.75, "y":2},
- {"matrix":[2, 3], "x":3.75, "y":2},
- {"matrix":[2, 4], "x":4.75, "y":2},
- {"matrix":[2, 5], "x":5.75, "y":2},
- {"matrix":[2, 6], "x":6.75, "y":2},
- {"matrix":[2, 7], "x":7.75, "y":2},
- {"matrix":[2, 8], "x":8.75, "y":2},
- {"matrix":[2, 9], "x":9.75, "y":2},
- {"matrix":[2,10], "x":10.75, "y":2},
- {"matrix":[2,11], "x":11.75, "y":2},
- {"matrix":[2,13], "x":12.75, "y":2},
- {"matrix":[1,13], "x":13.75, "y":1, "w":1.25, "h":2},
- {"matrix":[2,14], "x":15, "y":2},
- {"matrix":[2,15], "x":16, "y":2},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2},
+ {"matrix": [2, 10], "x": 10.75, "y": 2},
+ {"matrix": [2, 11], "x": 11.75, "y": 2},
+ {"matrix": [2, 13], "x": 12.75, "y": 2},
+ {"matrix": [1, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 15, "y": 2},
+ {"matrix": [2, 15], "x": 16, "y": 2},
- {"matrix":[3, 0], "x":0, "y":3, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3},
- {"matrix":[3, 2], "x":2.25, "y":3},
- {"matrix":[3, 3], "x":3.25, "y":3},
- {"matrix":[3, 4], "x":4.25, "y":3},
- {"matrix":[3, 5], "x":5.25, "y":3},
- {"matrix":[3, 6], "x":6.25, "y":3},
- {"matrix":[3, 7], "x":7.25, "y":3},
- {"matrix":[3, 8], "x":8.25, "y":3},
- {"matrix":[3, 9], "x":9.25, "y":3},
- {"matrix":[3,10], "x":10.25, "y":3},
- {"matrix":[3,11], "x":11.25, "y":3},
- {"matrix":[3,13], "x":12.25, "y":3, "w":2.75},
- {"matrix":[3,14], "x":15, "y":3},
- {"matrix":[3,15], "x":16, "y":3},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3},
+ {"matrix": [3, 3], "x": 3.25, "y": 3},
+ {"matrix": [3, 4], "x": 4.25, "y": 3},
+ {"matrix": [3, 5], "x": 5.25, "y": 3},
+ {"matrix": [3, 6], "x": 6.25, "y": 3},
+ {"matrix": [3, 7], "x": 7.25, "y": 3},
+ {"matrix": [3, 8], "x": 8.25, "y": 3},
+ {"matrix": [3, 9], "x": 9.25, "y": 3},
+ {"matrix": [3, 10], "x": 10.25, "y": 3},
+ {"matrix": [3, 11], "x": 11.25, "y": 3},
+ {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
+ {"matrix": [3, 14], "x": 15, "y": 3},
+ {"matrix": [3, 15], "x": 16, "y": 3},
- {"matrix":[4, 0], "x":0, "y":4, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4, "w":1.25},
- {"matrix":[4, 2], "x":2.5, "y":4, "w":1.25},
- {"matrix":[4, 6], "x":3.75, "y":4, "w":6.25},
- {"matrix":[4, 9], "x":10, "y":4},
- {"matrix":[4,10], "x":11, "y":4},
- {"matrix":[4,11], "x":12, "y":4},
- {"matrix":[4,12], "x":13, "y":4},
- {"matrix":[4,13], "x":14, "y":4},
- {"matrix":[4,14], "x":15, "y":4},
- {"matrix":[4,15], "x":16, "y":4}
+ {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
+ {"matrix": [4, 9], "x": 10, "y": 4},
+ {"matrix": [4, 10], "x": 11, "y": 4},
+ {"matrix": [4, 11], "x": 12, "y": 4},
+ {"matrix": [4, 12], "x": 13, "y": 4},
+ {"matrix": [4, 13], "x": 14, "y": 4},
+ {"matrix": [4, 14], "x": 15, "y": 4},
+ {"matrix": [4, 15], "x": 16, "y": 4}
]
}
}
diff --git a/keyboards/keychron/v7/iso/iso.c b/keyboards/keychron/v7/iso/iso.c
index 973c2cec474e..4630059be47e 100644
--- a/keyboards/keychron/v7/iso/iso.c
+++ b/keyboards/keychron/v7/iso/iso.c
@@ -131,7 +131,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
- 1, 1, 1, 4, 1, 1, 4, 4, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
}
};
diff --git a/keyboards/keychron/v7/iso/keymaps/default/keymap.c b/keyboards/keychron/v7/iso/keymaps/default/keymap.c
index 28a25450d2b9..d033ca6ab1ba 100644
--- a/keyboards/keychron/v7/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v7/iso/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_73(
- 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,
+ [_FN1] = LAYOUT_iso_73(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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_iso_73(
+ [_FN3] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v7/iso/keymaps/keychron/config.h b/keyboards/keychron/v7/iso/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v7/iso/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v7/iso/keymaps/keychron/keymap.c
index 4945a120a188..687957147d1f 100644
--- a/keyboards/keychron/v7/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v7/iso/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_73(
+ [_FN1] = LAYOUT_iso_73(
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_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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_iso_73(
+ [_FN3] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v7/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v7/iso/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v7/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v7/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v7/iso/keymaps/via/config.h b/keyboards/keychron/v7/iso/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v7/iso/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v7/iso/keymaps/via/keymap.c b/keyboards/keychron/v7/iso/keymaps/via/keymap.c
index 28a25450d2b9..d033ca6ab1ba 100644
--- a/keyboards/keychron/v7/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v7/iso/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(MAC_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_RCTL, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_73(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, RGB_MOD,
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_END, KC_DEL,
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_NUHS, KC_ENT, KC_HOME, KC_PGUP,
KC_LSFT, KC_NUBS, 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_PGDN,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(WIN_FN1), MO(_FN2), KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_73(
- 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,
+ [_FN1] = LAYOUT_iso_73(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_73(
+ [_FN2] = LAYOUT_iso_73(
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_iso_73(
+ [_FN3] = LAYOUT_iso_73(
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, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v7/iso/rules.mk b/keyboards/keychron/v7/iso/rules.mk
index 4bc1e23a57a0..46f5aef144b4 100644
--- a/keyboards/keychron/v7/iso/rules.mk
+++ b/keyboards/keychron/v7/iso/rules.mk
@@ -1,8 +1,17 @@
# 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 = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v7/readme.md b/keyboards/keychron/v7/readme.md
index 3eea44cf6751..2a156494429f 100644
--- a/keyboards/keychron/v7/readme.md
+++ b/keyboards/keychron/v7/readme.md
@@ -1,22 +1,18 @@
# Keychron V7
-![Keychron V7](https://i.imgur.com/5VLYOaX.jpg)
-
A customizable 70% keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V7
-* Hardware Availability: [Keychron V7 QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v7-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/v7/ansi:default
- make keychron/v7/iso:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/v7/ansi:default:flash
- make keychron/v7/iso:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v7/v7.c b/keyboards/keychron/v7/v7.c
index 0cb6a646a50b..e6b8309cae7c 100644
--- a/keyboards/keychron/v7/v7.c
+++ b/keyboards/keychron/v7/v7.c
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,49 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
+#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
diff --git a/keyboards/keychron/v8/ansi/ansi.c b/keyboards/keychron/v8/ansi/ansi.c
index 2f34d2099223..670ff2fbdbc0 100644
--- a/keyboards/keychron/v8/ansi/ansi.c
+++ b/keyboards/keychron/v8/ansi/ansi.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -126,10 +126,10 @@ led_config_t g_led_config = {
// RGB LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v8/ansi/info.json b/keyboards/keychron/v8/ansi/info.json
index 2c0fcd7c4011..02780ffcde4e 100644
--- a/keyboards/keychron/v8/ansi/info.json
+++ b/keyboards/keychron/v8/ansi/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0380",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -32,79 +21,79 @@
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
- {"matrix":[0, 0], "x":0.75, "y":0.25},
- {"matrix":[0, 1], "x":1.75, "y":0.25},
- {"matrix":[0, 2], "x":2.75, "y":0},
- {"matrix":[0, 3], "x":3.75, "y":0.25},
- {"matrix":[0, 4], "x":4.75, "y":0.25},
- {"matrix":[0, 5], "x":5.75, "y":0.25},
- {"matrix":[0, 6], "x":6.75, "y":0.25},
- {"matrix":[0, 7], "x":9.5, "y":0.25},
- {"matrix":[0, 8], "x":10.5, "y":0.25},
- {"matrix":[0, 9], "x":11.5, "y":0.25},
- {"matrix":[0,10], "x":12.5, "y":0.25},
- {"matrix":[0,11], "x":13.5, "y":0},
- {"matrix":[0,12], "x":14.5, "y":0.25},
- {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
- {"matrix":[0,14], "x":18, "y":0},
+ {"matrix": [0, 0], "x": 0.75, "y": 0.25},
+ {"matrix": [0, 1], "x": 1.75, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.75, "y": 0},
+ {"matrix": [0, 3], "x": 3.75, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.75, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.75, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.75, "y": 0.25},
+ {"matrix": [0, 7], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 13.5, "y": 0},
+ {"matrix": [0, 12], "x": 14.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 18, "y": 0},
- {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":2, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":9, "y":1.25},
- {"matrix":[1, 7], "x":10, "y":1.25},
- {"matrix":[1, 8], "x":11, "y":1.25},
- {"matrix":[1, 9], "x":12, "y":1.25},
- {"matrix":[1,10], "x":13.25, "y":1.25},
- {"matrix":[1,11], "x":14.25, "y":1.25},
- {"matrix":[1,12], "x":15.25, "y":1.25},
- {"matrix":[1,13], "x":16.25, "y":1.25, "w":1.5},
- {"matrix":[1,14], "x":18.25, "y":1.5},
+ {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 2, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 9, "y": 1.25},
+ {"matrix": [1, 7], "x": 10, "y": 1.25},
+ {"matrix": [1, 8], "x": 11, "y": 1.25},
+ {"matrix": [1, 9], "x": 12, "y": 1.25},
+ {"matrix": [1, 10], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 13], "x": 16.25, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 14], "x": 18.25, "y": 1.5},
- {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":2, "y":2.25},
- {"matrix":[2, 2], "x":3.5, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":9.25, "y":2.25},
- {"matrix":[2, 8], "x":10.25, "y":2.25},
- {"matrix":[2, 9], "x":11.25, "y":2.25},
- {"matrix":[2,10], "x":12.25, "y":2.25},
- {"matrix":[2,11], "x":13.75, "y":2.25},
- {"matrix":[2,12], "x":14.75, "y":2.25},
- {"matrix":[2,13], "x":15.75, "y":2.25, "w":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.5},
+ {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 2, "y": 2.25},
+ {"matrix": [2, 2], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 13.75, "y": 2.25},
+ {"matrix": [2, 12], "x": 14.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 15.75, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":8.5, "y":3.25},
- {"matrix":[3, 8], "x":9.5, "y":3.25},
- {"matrix":[3, 9], "x":10.5, "y":3.25},
- {"matrix":[3,10], "x":11.5, "y":3.25},
- {"matrix":[3,11], "x":12.5, "y":3.25},
- {"matrix":[3,12], "x":14.25, "y":3.25},
- {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 8.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 9.5, "y": 3.25},
+ {"matrix": [3, 9], "x": 10.5, "y": 3.25},
+ {"matrix": [3, 10], "x": 11.5, "y": 3.25},
+ {"matrix": [3, 11], "x": 12.5, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
- {"matrix":[4, 6], "x":7.25, "y":4.25},
- {"matrix":[4, 7], "x":8.75, "y":4.25},
- {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
- {"matrix":[4, 9], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":16.25, "y":4.5},
- {"matrix":[4,13], "x":17.25, "y":4.5},
- {"matrix":[4,14], "x":18.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 8.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 9], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.5},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 18.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/v8/ansi/keymaps/default/keymap.c b/keyboards/keychron/v8/ansi/keymaps/default/keymap.c
index 15806904e6e9..2f6f1311a958 100644
--- a/keyboards/keychron/v8/ansi/keymaps/default/keymap.c
+++ b/keyboards/keychron/v8/ansi/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
- 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_69(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v8/ansi/keymaps/keychron/config.h b/keyboards/keychron/v8/ansi/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v8/ansi/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v8/ansi/keymaps/keychron/keymap.c
index b14dbd1cd490..936420b06fb4 100644
--- a/keyboards/keychron/v8/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v8/ansi/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
+ [_FN1] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_FN1] = LAYOUT_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,19 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v8/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v8/ansi/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v8/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v8/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v8/ansi/keymaps/via/config.h b/keyboards/keychron/v8/ansi/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v8/ansi/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/ansi/keymaps/via/keymap.c b/keyboards/keychron/v8/ansi/keymaps/via/keymap.c
index 9296c5eb1045..71f8754316e5 100644
--- a/keyboards/keychron/v8/ansi/keymaps/via/keymap.c
+++ b/keyboards/keychron/v8/ansi/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
- 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, _______, _______,
+ [_FN1] = LAYOUT_ansi_69(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v8/ansi/rules.mk b/keyboards/keychron/v8/ansi/rules.mk
index 4bc1e23a57a0..e506e322d599 100644
--- a/keyboards/keychron/v8/ansi/rules.mk
+++ b/keyboards/keychron/v8/ansi/rules.mk
@@ -1,8 +1,19 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = no # Enable Encoder
+ENCODER_MAP_ENABLE = no
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c b/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
index ff13816e179a..670ff2fbdbc0 100644
--- a/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/v8/ansi_encoder/ansi_encoder.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 4, 1, 1, 4, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v8/ansi_encoder/info.json b/keyboards/keychron/v8/ansi_encoder/info.json
index 6269014261bb..c3fc389780be 100644
--- a/keyboards/keychron/v8/ansi_encoder/info.json
+++ b/keyboards/keychron/v8/ansi_encoder/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0381",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -29,7 +18,7 @@
"diode_direction": "ROW2COL",
"encoder": {
"rotary": [
- {"pin_a": "B5", "pin_b": "A10"}
+ {"pin_a": "A10", "pin_b": "B5"}
]
},
"processor": "STM32L432",
@@ -37,79 +26,79 @@
"layouts": {
"LAYOUT_ansi_69": {
"layout": [
- {"matrix":[0, 0], "x":0.75, "y":0.25},
- {"matrix":[0, 1], "x":1.75, "y":0.25},
- {"matrix":[0, 2], "x":2.75, "y":0},
- {"matrix":[0, 3], "x":3.75, "y":0.25},
- {"matrix":[0, 4], "x":4.75, "y":0.25},
- {"matrix":[0, 5], "x":5.75, "y":0.25},
- {"matrix":[0, 6], "x":6.75, "y":0.25},
- {"matrix":[0, 7], "x":9.5, "y":0.25},
- {"matrix":[0, 8], "x":10.5, "y":0.25},
- {"matrix":[0, 9], "x":11.5, "y":0.25},
- {"matrix":[0,10], "x":12.5, "y":0.25},
- {"matrix":[0,11], "x":13.5, "y":0},
- {"matrix":[0,12], "x":14.5, "y":0.25},
- {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
- {"matrix":[0,14], "x":18, "y":0},
+ {"matrix": [0, 0], "x": 0.75, "y": 0.25},
+ {"matrix": [0, 1], "x": 1.75, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.75, "y": 0},
+ {"matrix": [0, 3], "x": 3.75, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.75, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.75, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.75, "y": 0.25},
+ {"matrix": [0, 7], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 13.5, "y": 0},
+ {"matrix": [0, 12], "x": 14.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 18, "y": 0},
- {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":2, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":9, "y":1.25},
- {"matrix":[1, 7], "x":10, "y":1.25},
- {"matrix":[1, 8], "x":11, "y":1.25},
- {"matrix":[1, 9], "x":12, "y":1.25},
- {"matrix":[1,10], "x":13.25, "y":1.25},
- {"matrix":[1,11], "x":14.25, "y":1.25},
- {"matrix":[1,12], "x":15.25, "y":1.25},
- {"matrix":[1,13], "x":16.25, "y":1.25, "w":1.5},
- {"matrix":[1,14], "x":18.25, "y":1.5},
+ {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 2, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 9, "y": 1.25},
+ {"matrix": [1, 7], "x": 10, "y": 1.25},
+ {"matrix": [1, 8], "x": 11, "y": 1.25},
+ {"matrix": [1, 9], "x": 12, "y": 1.25},
+ {"matrix": [1, 10], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 13], "x": 16.25, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 14], "x": 18.25, "y": 1.5},
- {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":2, "y":2.25},
- {"matrix":[2, 2], "x":3.5, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":9.25, "y":2.25},
- {"matrix":[2, 8], "x":10.25, "y":2.25},
- {"matrix":[2, 9], "x":11.25, "y":2.25},
- {"matrix":[2,10], "x":12.25, "y":2.25},
- {"matrix":[2,11], "x":13.75, "y":2.25},
- {"matrix":[2,12], "x":14.75, "y":2.25},
- {"matrix":[2,13], "x":15.75, "y":2.25, "w":2.25},
- {"matrix":[2,14], "x":18.5, "y":2.5},
+ {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 2, "y": 2.25},
+ {"matrix": [2, 2], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 11], "x": 13.75, "y": 2.25},
+ {"matrix": [2, 12], "x": 14.75, "y": 2.25},
+ {"matrix": [2, 13], "x": 15.75, "y": 2.25, "w": 2.25},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":8.5, "y":3.25},
- {"matrix":[3, 8], "x":9.5, "y":3.25},
- {"matrix":[3, 9], "x":10.5, "y":3.25},
- {"matrix":[3,10], "x":11.5, "y":3.25},
- {"matrix":[3,11], "x":12.5, "y":3.25},
- {"matrix":[3,12], "x":14.25, "y":3.25},
- {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 8.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 9.5, "y": 3.25},
+ {"matrix": [3, 9], "x": 10.5, "y": 3.25},
+ {"matrix": [3, 10], "x": 11.5, "y": 3.25},
+ {"matrix": [3, 11], "x": 12.5, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
- {"matrix":[4, 6], "x":7.25, "y":4.25},
- {"matrix":[4, 7], "x":8.75, "y":4.25},
- {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
- {"matrix":[4, 9], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":16.25, "y":4.5},
- {"matrix":[4,13], "x":17.25, "y":4.5},
- {"matrix":[4,14], "x":18.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 8.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 9], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.5},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 18.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/default/keymap.c b/keyboards/keychron/v8/ansi_encoder/keymaps/default/keymap.c
index 863fc66d4a33..a128a54a0030 100644
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
- 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,
+ [_FN1] = LAYOUT_ansi_69(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/config.h b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/keymap.c
index e4725cec51d2..0058ebda38e4 100644
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
+ [_FN1] = LAYOUT_ansi_69(
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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,30 +65,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
// clang-format on
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
-
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/via/config.h b/keyboards/keychron/v8/ansi_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/v8/ansi_encoder/keymaps/via/keymap.c
index 863fc66d4a33..a128a54a0030 100644
--- a/keyboards/keychron/v8/ansi_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v8/ansi_encoder/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_ansi_69(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_ansi_69(
- 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,
+ [_FN1] = LAYOUT_ansi_69(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_ansi_69(
+ [_FN2] = LAYOUT_ansi_69(
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_ansi_69(
+ [_FN3] = LAYOUT_ansi_69(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v8/ansi_encoder/rules.mk b/keyboards/keychron/v8/ansi_encoder/rules.mk
index 4bc1e23a57a0..e3b0d8f03f18 100644
--- a/keyboards/keychron/v8/ansi_encoder/rules.mk
+++ b/keyboards/keychron/v8/ansi_encoder/rules.mk
@@ -1,8 +1,19 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+ENCODER_MAP_ENABLE = no
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v8/config.h b/keyboards/keychron/v8/config.h
index 03977b1b2e7c..7c6076e199b7 100644
--- a/keyboards/keychron/v8/config.h
+++ b/keyboards/keychron/v8/config.h
@@ -33,13 +33,10 @@
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define PHASE_CHANNEL MSKPHASE_9CHANNEL
-/* Set LED driver current */
-#define CKLED2001_CURRENT_TUNE \
- { 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60 }
+#define CKLED2001_CURRENT_TUNE { 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60, 0xC4, 0xC4, 0x60 }
/* DIP switch */
-#define DIP_SWITCH_MATRIX_GRID { { 4, 4 } }
-#define SCAN_COUNT_MAX 100
+#define DIP_SWITCH_MATRIX_GRID { {4, 4} }
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
@@ -47,6 +44,8 @@
/* Turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
/* EEPROM Driver Configuration */
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
@@ -83,13 +82,9 @@
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-
-#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
-
-#define RGB_MATRIX_KEYPRESSES
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
@@ -104,6 +99,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Factory test keys */
-#define FN_KEY1 MO(2)
-#define FN_KEY2 MO(3)
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/keychron/v8/halconf.h b/keyboards/keychron/v8/halconf.h
index 463d177eabc7..41bddcb2799b 100644
--- a/keyboards/keychron/v8/halconf.h
+++ b/keyboards/keychron/v8/halconf.h
@@ -17,8 +17,5 @@
#pragma once
#define HAL_USE_I2C TRUE
-#ifdef ENCODER_ENABLE
-# define PAL_USE_CALLBACKS TRUE
-#endif
#include_next
diff --git a/keyboards/keychron/v8/iso/info.json b/keyboards/keychron/v8/iso/info.json
index ba549e354a8c..5f30af5b1a8c 100644
--- a/keyboards/keychron/v8/iso/info.json
+++ b/keyboards/keychron/v8/iso/info.json
@@ -6,105 +6,95 @@
"usb": {
"vid": "0x3434",
"pid": "0x0382",
- "device_version": "1.0.1"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": false,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
"rows": ["B4", "B3", "A15", "A14", "A13"]
},
+ "diode_direction": "ROW2COL",
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_70": {
"layout": [
- {"matrix":[0, 0], "x":0.75, "y":0.25},
- {"matrix":[0, 1], "x":1.75, "y":0.25},
- {"matrix":[0, 2], "x":2.75, "y":0},
- {"matrix":[0, 3], "x":3.75, "y":0.25},
- {"matrix":[0, 4], "x":4.75, "y":0.25},
- {"matrix":[0, 5], "x":5.75, "y":0.25},
- {"matrix":[0, 6], "x":6.75, "y":0.25},
- {"matrix":[0, 7], "x":9.5, "y":0.25},
- {"matrix":[0, 8], "x":10.5, "y":0.25},
- {"matrix":[0, 9], "x":11.5, "y":0.25},
- {"matrix":[0,10], "x":12.5, "y":0.25},
- {"matrix":[0,11], "x":13.5, "y":0},
- {"matrix":[0,12], "x":14.5, "y":0.25},
- {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
- {"matrix":[0,14], "x":18, "y":0.25},
+ {"matrix": [0, 0], "x": 0.75, "y": 0.25},
+ {"matrix": [0, 1], "x": 1.75, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.75, "y": 0},
+ {"matrix": [0, 3], "x": 3.75, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.75, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.75, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.75, "y": 0.25},
+ {"matrix": [0, 7], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 13.5, "y": 0},
+ {"matrix": [0, 12], "x": 14.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 18, "y": 0.25},
- {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":2, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":9, "y":1.25},
- {"matrix":[1, 7], "x":10, "y":1.25},
- {"matrix":[1, 8], "x":11, "y":1.25},
- {"matrix":[1, 9], "x":12, "y":1.25},
- {"matrix":[1,10], "x":13.25, "y":1.25},
- {"matrix":[1,11], "x":14.25, "y":1.25},
- {"matrix":[1,12], "x":15.25, "y":1.25},
- {"matrix":[1,14], "x":18.25, "y":1.5},
+ {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 2, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 9, "y": 1.25},
+ {"matrix": [1, 7], "x": 10, "y": 1.25},
+ {"matrix": [1, 8], "x": 11, "y": 1.25},
+ {"matrix": [1, 9], "x": 12, "y": 1.25},
+ {"matrix": [1, 10], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 14], "x": 18.25, "y": 1.5},
- {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":2, "y":2.25},
- {"matrix":[2, 2], "x":3.5, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":9.25, "y":2.25},
- {"matrix":[2, 8], "x":10.25, "y":2.25},
- {"matrix":[2, 9], "x":11.25, "y":2.25},
- {"matrix":[2,10], "x":12.25, "y":2.25},
- {"matrix":[2,11], "x":13.5, "y":2.25},
- {"matrix":[2,12], "x":14.5, "y":2.25},
- {"matrix":[2,13], "x":15.5, "y":2.25},
- {"matrix":[1,13], "x":16.5, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":18.5, "y":2.5},
+ {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 2, "y": 2.25},
+ {"matrix": [2, 2], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 7], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 13.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 14.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 15.5, "y": 2.25},
+ {"matrix": [1, 13], "x": 16.5, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":8.5, "y":3.25},
- {"matrix":[3, 8], "x":9.5, "y":3.25},
- {"matrix":[3, 9], "x":10.5, "y":3.25},
- {"matrix":[3,10], "x":11.5, "y":3.25},
- {"matrix":[3,11], "x":12.5, "y":3.25},
- {"matrix":[3,12], "x":14.25, "y":3.25},
- {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 8.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 9.5, "y": 3.25},
+ {"matrix": [3, 9], "x": 10.5, "y": 3.25},
+ {"matrix": [3, 10], "x": 11.5, "y": 3.25},
+ {"matrix": [3, 11], "x": 12.5, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
- {"matrix":[4, 6], "x":7.25, "y":4.25},
- {"matrix":[4, 7], "x":8.75, "y":4.25},
- {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
- {"matrix":[4, 9], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":16.25, "y":4.5},
- {"matrix":[4,13], "x":17.25, "y":4.5},
- {"matrix":[4,14], "x":18.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 8.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 9], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.5},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 18.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/v8/iso/iso.c b/keyboards/keychron/v8/iso/iso.c
index 6686ab22c151..f64d3c4c562d 100644
--- a/keyboards/keychron/v8/iso/iso.c
+++ b/keyboards/keychron/v8/iso/iso.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v8/iso/keymaps/default/keymap.c b/keyboards/keychron/v8/iso/keymaps/default/keymap.c
index aa4601e52068..b4739661784f 100644
--- a/keyboards/keychron/v8/iso/keymaps/default/keymap.c
+++ b/keyboards/keychron/v8/iso/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v8/iso/keymaps/keychron/config.h b/keyboards/keychron/v8/iso/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v8/iso/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v8/iso/keymaps/keychron/keymap.c
index b284ef9ac712..e45bd2469eb3 100644
--- a/keyboards/keychron/v8/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v8/iso/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -65,19 +64,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
+// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v8/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v8/iso/keymaps/keychron/rules.mk
index dac903490f12..495e8907b48c 100644
--- a/keyboards/keychron/v8/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v8/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,4 @@
VIA_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v8/iso/keymaps/via/config.h b/keyboards/keychron/v8/iso/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v8/iso/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso/keymaps/via/keymap.c b/keyboards/keychron/v8/iso/keymaps/via/keymap.c
index aa4601e52068..b4739661784f 100644
--- a/keyboards/keychron/v8/iso/keymaps/via/keymap.c
+++ b/keyboards/keychron/v8/iso/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_FN2] = LAYOUT_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/v8/iso/rules.mk b/keyboards/keychron/v8/iso/rules.mk
index 4bc1e23a57a0..8edab2465bd3 100644
--- a/keyboards/keychron/v8/iso/rules.mk
+++ b/keyboards/keychron/v8/iso/rules.mk
@@ -1,8 +1,18 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = no # Enable Encoder
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v8/iso_encoder/info.json b/keyboards/keychron/v8/iso_encoder/info.json
index 10728aa76062..e13261a2d65c 100644
--- a/keyboards/keychron/v8/iso_encoder/info.json
+++ b/keyboards/keychron/v8/iso_encoder/info.json
@@ -6,21 +6,10 @@
"usb": {
"vid": "0x3434",
"pid": "0x0383",
- "device_version": "1.0.2"
- },
- "features": {
- "bootmagic": true,
- "command": false,
- "console": false,
- "dip_switch": true,
- "encoder": true,
- "extrakey": true,
- "mousekey": true,
- "nkro": true,
- "rgb_matrix": true
+ "device_version": "1.0.0"
},
"rgb_matrix": {
- "driver": "CKLED2001"
+ "driver": "ckled2001"
},
"matrix_pins": {
"cols": ["C14", "C15", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "A8", "A9", "H3"],
@@ -29,7 +18,7 @@
"diode_direction": "ROW2COL",
"encoder": {
"rotary": [
- {"pin_a": "B5", "pin_b": "A10"}
+ {"pin_a": "A10", "pin_b": "B5"}
]
},
"processor": "STM32L432",
@@ -37,80 +26,80 @@
"layouts": {
"LAYOUT_iso_70": {
"layout": [
- {"matrix":[0, 0], "x":0.75, "y":0.25},
- {"matrix":[0, 1], "x":1.75, "y":0.25},
- {"matrix":[0, 2], "x":2.75, "y":0},
- {"matrix":[0, 3], "x":3.75, "y":0.25},
- {"matrix":[0, 4], "x":4.75, "y":0.25},
- {"matrix":[0, 5], "x":5.75, "y":0.25},
- {"matrix":[0, 6], "x":6.75, "y":0.25},
- {"matrix":[0, 7], "x":9.5, "y":0.25},
- {"matrix":[0, 8], "x":10.5, "y":0.25},
- {"matrix":[0, 9], "x":11.5, "y":0.25},
- {"matrix":[0,10], "x":12.5, "y":0.25},
- {"matrix":[0,11], "x":13.5, "y":0},
- {"matrix":[0,12], "x":14.5, "y":0.25},
- {"matrix":[0,13], "x":15.5, "y":0.25, "w":2},
- {"matrix":[0,14], "x":18, "y":0.25},
+ {"matrix": [0, 0], "x": 0.75, "y": 0.25},
+ {"matrix": [0, 1], "x": 1.75, "y": 0.25},
+ {"matrix": [0, 2], "x": 2.75, "y": 0},
+ {"matrix": [0, 3], "x": 3.75, "y": 0.25},
+ {"matrix": [0, 4], "x": 4.75, "y": 0.25},
+ {"matrix": [0, 5], "x": 5.75, "y": 0.25},
+ {"matrix": [0, 6], "x": 6.75, "y": 0.25},
+ {"matrix": [0, 7], "x": 9.5, "y": 0.25},
+ {"matrix": [0, 8], "x": 10.5, "y": 0.25},
+ {"matrix": [0, 9], "x": 11.5, "y": 0.25},
+ {"matrix": [0, 10], "x": 12.5, "y": 0.25},
+ {"matrix": [0, 11], "x": 13.5, "y": 0},
+ {"matrix": [0, 12], "x": 14.5, "y": 0.25},
+ {"matrix": [0, 13], "x": 15.5, "y": 0.25, "w": 2},
+ {"matrix": [0, 14], "x": 18, "y": 0.25},
- {"matrix":[1, 0], "x":0.5, "y":1.25, "w":1.5},
- {"matrix":[1, 1], "x":2, "y":1.25},
- {"matrix":[1, 2], "x":3.25, "y":1.25},
- {"matrix":[1, 3], "x":4.25, "y":1.25},
- {"matrix":[1, 4], "x":5.25, "y":1.25},
- {"matrix":[1, 5], "x":6.25, "y":1.25},
- {"matrix":[1, 6], "x":9, "y":1.25},
- {"matrix":[1, 7], "x":10, "y":1.25},
- {"matrix":[1, 8], "x":11, "y":1.25},
- {"matrix":[1, 9], "x":12, "y":1.25},
- {"matrix":[1,10], "x":13.25, "y":1.25},
- {"matrix":[1,11], "x":14.25, "y":1.25},
- {"matrix":[1,12], "x":15.25, "y":1.25},
- {"matrix":[1,14], "x":18.25, "y":1.5},
+ {"matrix": [1, 0], "x": 0.5, "y": 1.25, "w": 1.5},
+ {"matrix": [1, 1], "x": 2, "y": 1.25},
+ {"matrix": [1, 2], "x": 3.25, "y": 1.25},
+ {"matrix": [1, 3], "x": 4.25, "y": 1.25},
+ {"matrix": [1, 4], "x": 5.25, "y": 1.25},
+ {"matrix": [1, 5], "x": 6.25, "y": 1.25},
+ {"matrix": [1, 6], "x": 9, "y": 1.25},
+ {"matrix": [1, 7], "x": 10, "y": 1.25},
+ {"matrix": [1, 8], "x": 11, "y": 1.25},
+ {"matrix": [1, 9], "x": 12, "y": 1.25},
+ {"matrix": [1, 10], "x": 13.25, "y": 1.25},
+ {"matrix": [1, 11], "x": 14.25, "y": 1.25},
+ {"matrix": [1, 12], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 14], "x": 18.25, "y": 1.5},
- {"matrix":[2, 0], "x":0.25, "y":2.25, "w":1.75},
- {"matrix":[2, 1], "x":2, "y":2.25},
- {"matrix":[2, 2], "x":3.5, "y":2.25},
- {"matrix":[2, 3], "x":4.5, "y":2.25},
- {"matrix":[2, 4], "x":5.5, "y":2.25},
- {"matrix":[2, 5], "x":6.5, "y":2.25},
- {"matrix":[2, 7], "x":9.25, "y":2.25},
- {"matrix":[2, 8], "x":10.25, "y":2.25},
- {"matrix":[2, 9], "x":11.25, "y":2.25},
- {"matrix":[2,10], "x":12.25, "y":2.25},
- {"matrix":[2,11], "x":13.5, "y":2.25},
- {"matrix":[2,12], "x":14.5, "y":2.25},
- {"matrix":[2,13], "x":15.5, "y":2.25},
- {"matrix":[1,13], "x":16.5, "y":1.25, "w":1.25, "h":2},
- {"matrix":[2,14], "x":18.5, "y":2.5},
+ {"matrix": [2, 0], "x": 0.25, "y": 2.25, "w": 1.75},
+ {"matrix": [2, 1], "x": 2, "y": 2.25},
+ {"matrix": [2, 2], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 9.25, "y": 2.25},
+ {"matrix": [2, 7], "x": 10.25, "y": 2.25},
+ {"matrix": [2, 8], "x": 11.25, "y": 2.25},
+ {"matrix": [2, 9], "x": 12.25, "y": 2.25},
+ {"matrix": [2, 10], "x": 13.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 14.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 15.5, "y": 2.25},
+ {"matrix": [1, 13], "x": 16.5, "y": 1.25, "w": 1.25, "h": 2},
+ {"matrix": [2, 14], "x": 18.5, "y": 2.5},
- {"matrix":[3, 0], "x":0, "y":3.25, "w":1.25},
- {"matrix":[3, 1], "x":1.25, "y":3.25},
- {"matrix":[3, 2], "x":2.25, "y":3.25},
- {"matrix":[3, 3], "x":3.75, "y":3.25},
- {"matrix":[3, 4], "x":4.75, "y":3.25},
- {"matrix":[3, 5], "x":5.75, "y":3.25},
- {"matrix":[3, 6], "x":6.75, "y":3.25},
- {"matrix":[3, 7], "x":8.5, "y":3.25},
- {"matrix":[3, 8], "x":9.5, "y":3.25},
- {"matrix":[3, 9], "x":10.5, "y":3.25},
- {"matrix":[3,10], "x":11.5, "y":3.25},
- {"matrix":[3,11], "x":12.5, "y":3.25},
- {"matrix":[3,12], "x":14.25, "y":3.25},
- {"matrix":[3,13], "x":15.25, "y":3.25, "w":1.75},
- {"matrix":[3,14], "x":17.25, "y":3.5},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.25, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 8.5, "y": 3.25},
+ {"matrix": [3, 8], "x": 9.5, "y": 3.25},
+ {"matrix": [3, 9], "x": 10.5, "y": 3.25},
+ {"matrix": [3, 10], "x": 11.5, "y": 3.25},
+ {"matrix": [3, 11], "x": 12.5, "y": 3.25},
+ {"matrix": [3, 12], "x": 14.25, "y": 3.25},
+ {"matrix": [3, 13], "x": 15.25, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 14], "x": 17.25, "y": 3.5},
- {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
- {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
- {"matrix":[4, 2], "x":3.75, "y":4.25, "w":1.25},
- {"matrix":[4, 3], "x":5, "y":4.25, "w":2.25},
- {"matrix":[4, 6], "x":7.25, "y":4.25},
- {"matrix":[4, 7], "x":8.75, "y":4.25},
- {"matrix":[4, 8], "x":9.75, "y":4.25, "w":2.75},
- {"matrix":[4, 9], "x":12.5, "y":4.25},
- {"matrix":[4,12], "x":16.25, "y":4.5},
- {"matrix":[4,13], "x":17.25, "y":4.5},
- {"matrix":[4,14], "x":18.25, "y":4.5}
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 1], "x": 1.25, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 2], "x": 3.75, "y": 4.25, "w": 1.25},
+ {"matrix": [4, 3], "x": 5, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 8.75, "y": 4.25},
+ {"matrix": [4, 8], "x": 9.75, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 9], "x": 12.5, "y": 4.25},
+ {"matrix": [4, 12], "x": 16.25, "y": 4.5},
+ {"matrix": [4, 13], "x": 17.25, "y": 4.5},
+ {"matrix": [4, 14], "x": 18.25, "y": 4.5}
]
}
}
diff --git a/keyboards/keychron/v8/iso_encoder/iso_encoder.c b/keyboards/keychron/v8/iso_encoder/iso_encoder.c
index 6686ab22c151..f64d3c4c562d 100644
--- a/keyboards/keychron/v8/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/v8/iso_encoder/iso_encoder.c
@@ -21,7 +21,7 @@
// clang-format off
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
-/* Refer to CKLED2001 manual for these locations
+/* Refer to CKLED manual for these locations
* driver
* | R location
* | | G location
@@ -128,8 +128,8 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
- 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
}
};
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/default/keymap.c b/keyboards/keychron/v8/iso_encoder/keymaps/default/keymap.c
index eaeb32052251..8d5e493e6af8 100644
--- a/keyboards/keychron/v8/iso_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/default/keymap.c
@@ -21,9 +21,9 @@
enum layers {
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/config.h b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/keymap.c
index e0182fde1766..fd392965362d 100644
--- a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/keymap.c
@@ -16,16 +16,15 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-#include "keychron_ft_common.h"
// clang-format off
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -34,30 +33,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
+ [_FN1] = LAYOUT_iso_70(
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_iso_70(
+ [_FN2] = LAYOUT_iso_70(
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_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -66,28 +65,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
-void housekeeping_task_user(void) {
- housekeeping_task_keychron();
- housekeeping_task_keychron_ft();
-}
+// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
-
- if (!process_record_keychron_ft(keycode, record)) {
- return false;
- }
-
return true;
}
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/rules.mk
index 88c27a468a8b..9cf1a9b56cba 100644
--- a/keyboards/keychron/v8/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/keychron/rules.mk
@@ -2,4 +2,4 @@ VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
VPATH += keyboards/keychron/common
-SRC += keychron_common.c keychron_ft_common.c
+SRC += keychron_common.c
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/via/config.h b/keyboards/keychron/v8/iso_encoder/keymaps/via/config.h
deleted file mode 100644
index 54bbaf673fed..000000000000
--- a/keyboards/keychron/v8/iso_encoder/keymaps/via/config.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* 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 .
- */
-
-#define DYNAMIC_KEYMAP_LAYER_COUNT 5
diff --git a/keyboards/keychron/v8/iso_encoder/keymaps/via/keymap.c b/keyboards/keychron/v8/iso_encoder/keymaps/via/keymap.c
index ad73d3618eef..7c6e4bb8a966 100644
--- a/keyboards/keychron/v8/iso_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v8/iso_encoder/keymaps/via/keymap.c
@@ -21,9 +21,9 @@
enum layers{
MAC_BASE,
WIN_BASE,
- MAC_FN1,
- WIN_FN1,
- _FN2
+ _FN1,
+ _FN2,
+ _FN3
};
#define KC_TASK LGUI(KC_TAB)
@@ -35,30 +35,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(MAC_FN1), MO(_FN2), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, MO(_FN1), MO(_FN3), KC_SPC, KC_RCMD, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_iso_70(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_MUTE,
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_DEL,
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_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(WIN_FN1), MO(_FN2), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, MO(_FN2), MO(_FN3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN1] = LAYOUT_iso_70(
- 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, _______, _______,
+ [_FN1] = LAYOUT_iso_70(
+ KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, 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_iso_70(
- 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, _______, _______,
+ [_FN2] = LAYOUT_iso_70(
+ 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_iso_70(
+ [_FN3] = LAYOUT_iso_70(
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, _______, _______,
RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -67,11 +67,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+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(_______, _______)}
+ [_FN1] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN2] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [_FN3] = {ENCODER_CCW_CW(_______, _______)}
};
#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/v8/iso_encoder/rules.mk b/keyboards/keychron/v8/iso_encoder/rules.mk
index 4bc1e23a57a0..e3b0d8f03f18 100644
--- a/keyboards/keychron/v8/iso_encoder/rules.mk
+++ b/keyboards/keychron/v8/iso_encoder/rules.mk
@@ -1,8 +1,19 @@
# Build Options
-# change yes to no to disable.
+# 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
+ENCODER_ENABLE = yes # Enable Encoder
+ENCODER_MAP_ENABLE = no
+DIP_SWITCH_ENABLE = yes
+RGB_MATRIX_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
diff --git a/keyboards/keychron/v8/readme.md b/keyboards/keychron/v8/readme.md
index 591a825d43a5..9d37ba16161a 100644
--- a/keyboards/keychron/v8/readme.md
+++ b/keyboards/keychron/v8/readme.md
@@ -1,26 +1,18 @@
# Keychron V8
-![Keychron V8](https://i.imgur.com/mi33yKA.jpg)
-
A customizable 65% and ergonomic keyboard.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron V8
-* Hardware Availability: [Keychron V8 (Alice Layout) QMK Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-v8-alice-layout-qmk-custom-mechanical-keyboard)
+* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/v8/ansi:default
- make keychron/v8/ansi_encoder:default
- make keychron/v8/iso:default
- make keychron/v8/iso_encoder:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make keychron/v8/ansi:default:flash
- make keychron/v8/ansi_encoder:default:flash
- make keychron/v8/iso:default:flash
- make keychron/v8/iso_encoder:default:flash
**Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
diff --git a/keyboards/keychron/v8/v8.c b/keyboards/keychron/v8/v8.c
index 1c2f36f19941..38d3cada17af 100644
--- a/keyboards/keychron/v8/v8.c
+++ b/keyboards/keychron/v8/v8.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 @ Keychron (https://www.keychron.com)
+/* 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
@@ -25,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
};
#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) {
@@ -32,4 +33,49 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
}
return true;
}
+
+#endif // DIP_SWITCH_ENABLE
+
+#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) {
+#ifdef RGB_MATRIX_ENABLE
+ 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;
#endif
+ }
+ 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 // CAPS_LOCK_LED_INDEX
From d1074a0620f7f4f137379a6b6ba603d0c127fb72 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Mon, 16 Oct 2023 14:18:07 +0800
Subject: [PATCH 04/27] Update host.c and chibios.c
---
tmk_core/protocol/chibios/chibios.c | 34 +++++++++++++++++++++++++----
tmk_core/protocol/host.c | 14 ++++++++++--
2 files changed, 42 insertions(+), 6 deletions(-)
diff --git a/tmk_core/protocol/chibios/chibios.c b/tmk_core/protocol/chibios/chibios.c
index 4d97f1cd82e6..74d8040df5f3 100644
--- a/tmk_core/protocol/chibios/chibios.c
+++ b/tmk_core/protocol/chibios/chibios.c
@@ -179,10 +179,35 @@ void protocol_post_init(void) {
host_set_driver(driver);
}
+#if defined(STM32_USB_USE_OTG1)
+void protocol_pre_task(void) {
+# if !defined(NO_USB_STARTUP_CHECK)
+ if (USB_DRIVER.state == USB_SUSPENDED) {
+ dprintln("suspending keyboard");
+ while (USB_DRIVER.state == USB_SUSPENDED) {
+ /* Do this in the suspended state */
+ suspend_power_down(); // on AVR this deep sleeps for 15ms
+ /* Remote wakeup */
+ if ((USB_DRIVER.status & USB_GETSTATUS_REMOTE_WAKEUP_ENABLED) && suspend_wakeup_condition()) {
+ usbWakeupHost(&USB_DRIVER);
+ wait_ms(300);
+ }
+ }
+ /* Woken up */
+ // variables has been already cleared by the wakeup hook
+ send_keyboard_report();
+# ifdef MOUSEKEY_ENABLE
+ mousekey_send();
+# endif /* MOUSEKEY_ENABLE */
+ }
+# endif
+ usb_event_queue_task();
+}
+#else
void protocol_pre_task(void) {
usb_event_queue_task();
-#if !defined(NO_USB_STARTUP_CHECK)
+# if !defined(NO_USB_STARTUP_CHECK)
if (USB_DRIVER.state == USB_SUSPENDED) {
dprintln("suspending keyboard");
while (USB_DRIVER.state == USB_SUSPENDED) {
@@ -197,12 +222,13 @@ void protocol_pre_task(void) {
/* Woken up */
// variables has been already cleared by the wakeup hook
send_keyboard_report();
-# ifdef MOUSEKEY_ENABLE
+# ifdef MOUSEKEY_ENABLE
mousekey_send();
-# endif /* MOUSEKEY_ENABLE */
+# endif /* MOUSEKEY_ENABLE */
}
-#endif
+# endif
}
+#endif
void protocol_post_task(void) {
#ifdef CONSOLE_ENABLE
diff --git a/tmk_core/protocol/host.c b/tmk_core/protocol/host.c
index 2c6654e9a652..29df948b2693 100644
--- a/tmk_core/protocol/host.c
+++ b/tmk_core/protocol/host.c
@@ -131,11 +131,16 @@ void host_system_send(uint16_t usage) {
last_system_usage = usage;
if (!driver) return;
-
+#if defined(STM32_USB_USE_OTG1)
+ static report_extra_t report;
+ report.report_id = REPORT_ID_SYSTEM;
+ report.usage = usage;
+#else
report_extra_t report = {
.report_id = REPORT_ID_SYSTEM,
.usage = usage,
};
+#endif
(*driver->send_extra)(&report);
}
@@ -151,11 +156,16 @@ void host_consumer_send(uint16_t usage) {
#endif
if (!driver) return;
-
+#if defined(STM32_USB_USE_OTG1)
+ static report_extra_t report;
+ report.report_id = REPORT_ID_CONSUMER;
+ report.usage = usage;
+#else
report_extra_t report = {
.report_id = REPORT_ID_CONSUMER,
.usage = usage,
};
+#endif
(*driver->send_extra)(&report);
}
From d6394693b13740b1e61cf0ba011b5337165bb0b2 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Mon, 16 Oct 2023 14:22:03 +0800
Subject: [PATCH 05/27] Update chibios lib
---
lib/chibios | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/chibios b/lib/chibios
index 11edb1610980..eea3b8c4acb3 160000
--- a/lib/chibios
+++ b/lib/chibios
@@ -1 +1 @@
-Subproject commit 11edb1610980f213b9f83161e1715a46fb7e4c51
+Subproject commit eea3b8c4acb36d839de7813fdfa3e74ca84e02f6
From 74f31a21e8ec772a408aceff86e78941065dd2ab Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Mon, 16 Oct 2023 16:07:34 +0800
Subject: [PATCH 06/27] Update x4
---
keyboards/keychron/x3/readme.md | 2 +-
keyboards/keychron/x4/ansi/red/config.h | 46 +++
keyboards/keychron/x4/ansi/red/info.json | 125 ++++++++
.../x4/ansi/red/keymaps/default/keymap.c | 61 ++++
.../x4/ansi/red/keymaps/keychron/keymap.c | 77 +++++
.../x4/ansi/red/keymaps/keychron/rules.mk | 3 +
.../keychron/x4/ansi/red/keymaps/via/keymap.c | 61 ++++
.../keychron/x4/ansi/red/keymaps/via/rules.mk | 1 +
keyboards/keychron/x4/ansi/red/red.c | 113 ++++++++
keyboards/keychron/x4/ansi/red/rules.mk | 1 +
keyboards/keychron/x4/config.h | 32 +++
keyboards/keychron/x4/halconf.h | 24 ++
keyboards/keychron/x4/info.json | 120 ++++++++
keyboards/keychron/x4/mcuconf.h | 34 +++
keyboards/keychron/x4/readme.md | 26 ++
.../keychron/x4/via_json/x4_ansi_red.json | 271 ++++++++++++++++++
keyboards/keychron/x4/x4.c | 29 ++
lib/chibios | 2 +-
18 files changed, 1026 insertions(+), 2 deletions(-)
create mode 100755 keyboards/keychron/x4/ansi/red/config.h
create mode 100755 keyboards/keychron/x4/ansi/red/info.json
create mode 100755 keyboards/keychron/x4/ansi/red/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/x4/ansi/red/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/x4/ansi/red/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/x4/ansi/red/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/x4/ansi/red/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/x4/ansi/red/red.c
create mode 100755 keyboards/keychron/x4/ansi/red/rules.mk
create mode 100755 keyboards/keychron/x4/config.h
create mode 100755 keyboards/keychron/x4/halconf.h
create mode 100755 keyboards/keychron/x4/info.json
create mode 100755 keyboards/keychron/x4/mcuconf.h
create mode 100755 keyboards/keychron/x4/readme.md
create mode 100755 keyboards/keychron/x4/via_json/x4_ansi_red.json
create mode 100755 keyboards/keychron/x4/x4.c
diff --git a/keyboards/keychron/x3/readme.md b/keyboards/keychron/x3/readme.md
index c61e790c41f5..c700ef538136 100755
--- a/keyboards/keychron/x3/readme.md
+++ b/keyboards/keychron/x3/readme.md
@@ -10,7 +10,7 @@ A customizable 80% TKL keyboard.
Make example for this keyboard (after setting up your build environment):
- make keychron/x1/ansi/red:default
+ make keychron/x3/ansi/red:default
Flashing example for this keyboard:
diff --git a/keyboards/keychron/x4/ansi/red/config.h b/keyboards/keychron/x4/ansi/red/config.h
new file mode 100755
index 000000000000..2d9142046749
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/config.h
@@ -0,0 +1,46 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 81
+
+/* Scan phase of led driver set as MSKPHASE_6CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_6CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
+
+/* Encoder Configuration*/
+#ifdef ENCODER_ENABLE
+# define ENCODER_DEFAULT_POS 0x3
+#endif
diff --git a/keyboards/keychron/x4/ansi/red/info.json b/keyboards/keychron/x4/ansi/red/info.json
new file mode 100755
index 000000000000..6ab175c6499a
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/info.json
@@ -0,0 +1,125 @@
+{
+ "usb": {
+ "pid": "0x0240",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true,
+ "encoder": true
+ },
+ "encoder": {
+ "enabled": true,
+ "rotary": [
+ {"pin_a": "B14", "pin_b": "B15", "resolution": 4}
+ ]
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":187, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":206, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 13], "flags":4, "x":202, "y":26},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":9, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 13], "flags":1, "x":196, "y":38},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":9, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 9], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":151, "y":49},
+ {"matrix":[4, 11], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 13], "flags":1, "x":185, "y":49},
+ {"matrix":[4, 14], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 6], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 13], "flags":1, "x":195, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x4/ansi/red/keymaps/default/keymap.c
new file mode 100755
index 000000000000..429befa6fd9d
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 202 @ 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
+
+enum layers{
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_82_ansi(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ 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_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_82_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x4/ansi/red/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..b7ae2fca34f2
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_82_ansi(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ 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_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_82_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x4/ansi/red/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x4/ansi/red/keymaps/via/keymap.c
new file mode 100755
index 000000000000..0af845e432fc
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* 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
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_82_ansi(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ 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_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_82_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x4/ansi/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/x4/ansi/red/red.c b/keyboards/keychron/x4/ansi/red/red.c
new file mode 100755
index 000000000000..d24851551585
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/red.c
@@ -0,0 +1,113 @@
+/* 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 "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, A_16},
+ {0, A_15},
+ {0, A_14},
+ {0, A_13},
+ {0, A_12},
+ {0, A_11},
+ {0, A_10},
+ {0, A_9 },
+ {0, A_8 },
+ {0, A_7 },
+ {0, A_6 },
+ {0, A_5 },
+ {0, A_4 },
+ {0, A_3 },
+
+ {0, B_16},
+ {0, B_15},
+ {0, B_14},
+ {0, B_13},
+ {0, B_12},
+ {0, B_11},
+ {0, B_10},
+ {0, B_9 },
+ {0, B_8 },
+ {0, B_7 },
+ {0, B_6 },
+ {0, B_5 },
+ {0, B_4 },
+ {0, B_3 },
+ {0, B_2 },
+
+ {0, C_16},
+ {0, C_15},
+ {0, C_14},
+ {0, C_13},
+ {0, C_12},
+ {0, C_11},
+ {0, C_10},
+ {0, C_9 },
+ {0, C_8 },
+ {0, C_7 },
+ {0, C_6 },
+ {0, C_5 },
+ {0, C_4 },
+ {0, C_3 },
+ {0, C_2 },
+
+ {0, D_16},
+ {0, D_15},
+ {0, D_14},
+ {0, D_13},
+ {0, D_12},
+ {0, D_11},
+ {0, D_10},
+ {0, D_9 },
+ {0, D_8 },
+ {0, D_7 },
+ {0, D_6 },
+ {0, D_5 },
+ {0, D_3 },
+ {0, D_2 },
+
+ {0, E_16},
+ {0, E_14},
+ {0, E_13},
+ {0, E_12},
+ {0, E_11},
+ {0, E_10},
+ {0, E_9 },
+ {0, E_8 },
+ {0, E_7 },
+ {0, E_6 },
+ {0, E_5 },
+ {0, E_3 },
+ {0, E_2 },
+
+ {0, F_16},
+ {0, F_15},
+ {0, F_14},
+ {0, F_10},
+ {0, F_6 },
+ {0, F_5 },
+ {0, F_4 },
+ {0, F_3 },
+ {0, F_2 },
+ {0, F_1 },
+};
+#endif
diff --git a/keyboards/keychron/x4/ansi/red/rules.mk b/keyboards/keychron/x4/ansi/red/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/x4/ansi/red/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/x4/config.h b/keyboards/keychron/x4/config.h
new file mode 100755
index 000000000000..3cf99fab5e27
--- /dev/null
+++ b/keyboards/keychron/x4/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 .
+ */
+
+#pragma once
+
+/* I2C Driver Configuration */
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* User used eeprom */
+#define EECONFIG_USER_DATA_SIZE 1
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/x4/halconf.h b/keyboards/keychron/x4/halconf.h
new file mode 100755
index 000000000000..463d177eabc7
--- /dev/null
+++ b/keyboards/keychron/x4/halconf.h
@@ -0,0 +1,24 @@
+/* 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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
+
+#include_next
diff --git a/keyboards/keychron/x4/info.json b/keyboards/keychron/x4/info.json
new file mode 100755
index 000000000000..a4b2515ba326
--- /dev/null
+++ b/keyboards/keychron/x4/info.json
@@ -0,0 +1,120 @@
+{
+ "keyboard_name": "Lemokey X4",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x362D"
+ },
+ "matrix_pins": {
+ "cols": ["A0", "A1", "A2", "A3", "C0", "C1", "C2", "C3", "A8", "C12", "B9", "C6", "C7", "C4", "C5", "A15"],
+ "rows": ["B0", "B1", "B8", "B3", "B4", "B5"]
+ },
+ "diode_direction": "COL2ROW",
+ "indicators": {
+ "caps_lock": "C9"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "layouts": {
+ "LAYOUT_82_ansi": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,14], "x":15.25, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,14], "x":14.25, "y":4.5},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25},
+ {"matrix":[5,11], "x":11, "y":5.25},
+ {"matrix":[5,12], "x":12, "y":5.25},
+ {"matrix":[5,13], "x":13.25, "y":5.5},
+ {"matrix":[5,14], "x":14.25, "y":5.5},
+ {"matrix":[5,15], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/x4/mcuconf.h b/keyboards/keychron/x4/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/x4/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/x4/readme.md b/keyboards/keychron/x4/readme.md
new file mode 100755
index 000000000000..b8fd67e07c7e
--- /dev/null
+++ b/keyboards/keychron/x4/readme.md
@@ -0,0 +1,26 @@
+# Lemokey X4
+
+![Lemokey X4]()
+
+A customizable 75% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Lemokey X4
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/x4/ansi/red:default
+
+Flashing example for this keyboard:
+
+ make keychron/x4/ansi/red:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/x4/via_json/x4_ansi_red.json b/keyboards/keychron/x4/via_json/x4_ansi_red.json
new file mode 100755
index 000000000000..31e044b399f0
--- /dev/null
+++ b/keyboards/keychron/x4/via_json/x4_ansi_red.json
@@ -0,0 +1,271 @@
+{
+ "name": "Lemokey X3 ANSI Red",
+ "vendorId": "0x362D",
+ "productId": "0x0230",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 21},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,17",
+ "1,18",
+ "1,19",
+ "1,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,17",
+ "2,18",
+ "2,19",
+ {
+ "h": 2
+ },
+ "2,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 3.5,
+ "c": "#cccccc"
+ },
+ "3,17",
+ "3,18",
+ "3,19"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,17",
+ "4,18",
+ "4,19",
+ {
+ "c": "#777777",
+ "h": 2
+ },
+ "4,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "5,17",
+ "5,18"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/x4/x4.c b/keyboards/keychron/x4/x4.c
new file mode 100755
index 000000000000..b1bf2decdc69
--- /dev/null
+++ b/keyboards/keychron/x4/x4.c
@@ -0,0 +1,29 @@
+/* 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 "quantum.h"
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ eeconfig_init_user();
+}
diff --git a/lib/chibios b/lib/chibios
index eea3b8c4acb3..c717c1b99809 160000
--- a/lib/chibios
+++ b/lib/chibios
@@ -1 +1 @@
-Subproject commit eea3b8c4acb36d839de7813fdfa3e74ca84e02f6
+Subproject commit c717c1b99809b9ea27a63ba955ba426170563fcb
From 47ea587ef0fc3ea94d169ae6335f0684ee143aef Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Mon, 16 Oct 2023 17:04:06 +0800
Subject: [PATCH 07/27] Update x4
---
.../ansi_encoder/keymaps/keychron/rules.mk | 5 --
.../keychron/x4/ansi/red/keymaps/via/rules.mk | 1 -
.../x4/{ansi => ansi_encoder}/red/config.h | 3 +
.../x4/{ansi => ansi_encoder}/red/info.json | 0
.../red/keymaps/default/keymap.c | 9 +++
.../ansi_encoder/red/keymaps/default/rules.mk | 1 +
.../red/keymaps/keychron/keymap.c | 9 +++
.../red/keymaps/keychron/rules.mk | 1 +
.../red/keymaps/via/keymap.c | 9 +++
.../x4/ansi_encoder/red/keymaps/via/rules.mk | 2 +
.../x4/{ansi => ansi_encoder}/red/red.c | 0
.../x4/{ansi => ansi_encoder}/red/rules.mk | 0
keyboards/keychron/x4/readme.md | 4 +-
keyboards/keychron/x4/x4.c | 60 +++++++++++++++++++
quantum/encoder.c | 11 +++-
quantum/encoder.h | 3 +-
16 files changed, 108 insertions(+), 10 deletions(-)
delete mode 100755 keyboards/keychron/x4/ansi/red/keymaps/via/rules.mk
rename keyboards/keychron/x4/{ansi => ansi_encoder}/red/config.h (96%)
rename keyboards/keychron/x4/{ansi => ansi_encoder}/red/info.json (100%)
rename keyboards/keychron/x4/{ansi => ansi_encoder}/red/keymaps/default/keymap.c (93%)
create mode 100755 keyboards/keychron/x4/ansi_encoder/red/keymaps/default/rules.mk
rename keyboards/keychron/x4/{ansi => ansi_encoder}/red/keymaps/keychron/keymap.c (94%)
rename keyboards/keychron/x4/{ansi => ansi_encoder}/red/keymaps/keychron/rules.mk (71%)
rename keyboards/keychron/x4/{ansi => ansi_encoder}/red/keymaps/via/keymap.c (93%)
create mode 100755 keyboards/keychron/x4/ansi_encoder/red/keymaps/via/rules.mk
rename keyboards/keychron/x4/{ansi => ansi_encoder}/red/red.c (100%)
rename keyboards/keychron/x4/{ansi => ansi_encoder}/red/rules.mk (100%)
diff --git a/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
index 5a08c68ec613..936769ddc6e2 100755
--- a/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/q1v2/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,9 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-<<<<<<< HEAD
include keyboards/keychron/common/common.mk
-=======
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
->>>>>>> temp
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x4/ansi/red/keymaps/via/rules.mk
deleted file mode 100755
index 1e5b99807cb7..000000000000
--- a/keyboards/keychron/x4/ansi/red/keymaps/via/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-VIA_ENABLE = yes
diff --git a/keyboards/keychron/x4/ansi/red/config.h b/keyboards/keychron/x4/ansi_encoder/red/config.h
similarity index 96%
rename from keyboards/keychron/x4/ansi/red/config.h
rename to keyboards/keychron/x4/ansi_encoder/red/config.h
index 2d9142046749..2ccb0b521279 100755
--- a/keyboards/keychron/x4/ansi/red/config.h
+++ b/keyboards/keychron/x4/ansi_encoder/red/config.h
@@ -24,6 +24,9 @@
/* RGB Matrix Configuration */
# define LED_MATRIX_LED_COUNT 81
+/* Winlock indicator */
+# define LED_WIN_LOCK_INDEX 72
+
/* Scan phase of led driver set as MSKPHASE_6CHANNEL(defined as 0x03 in CKLED2001.h) */
# define PHASE_CHANNEL MSKPHASE_6CHANNEL
# define CKLED2001_CURRENT_TUNE \
diff --git a/keyboards/keychron/x4/ansi/red/info.json b/keyboards/keychron/x4/ansi_encoder/red/info.json
similarity index 100%
rename from keyboards/keychron/x4/ansi/red/info.json
rename to keyboards/keychron/x4/ansi_encoder/red/info.json
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x4/ansi_encoder/red/keymaps/default/keymap.c
similarity index 93%
rename from keyboards/keychron/x4/ansi/red/keymaps/default/keymap.c
rename to keyboards/keychron/x4/ansi_encoder/red/keymaps/default/keymap.c
index 429befa6fd9d..c94fded11a20 100755
--- a/keyboards/keychron/x4/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x4/ansi_encoder/red/keymaps/default/keymap.c
@@ -59,3 +59,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(BL_DOWN, BL_UP)},
+ [WIN_L2] = { ENCODER_CCW_CW(_______, _______)},
+ [WIN_L3] = { ENCODER_CCW_CW(_______, _______)}
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/x4/ansi_encoder/red/keymaps/default/rules.mk b/keyboards/keychron/x4/ansi_encoder/red/keymaps/default/rules.mk
new file mode 100755
index 000000000000..ee325681483f
--- /dev/null
+++ b/keyboards/keychron/x4/ansi_encoder/red/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x4/ansi_encoder/red/keymaps/keychron/keymap.c
similarity index 94%
rename from keyboards/keychron/x4/ansi/red/keymaps/keychron/keymap.c
rename to keyboards/keychron/x4/ansi_encoder/red/keymaps/keychron/keymap.c
index b7ae2fca34f2..f1741d6832b8 100755
--- a/keyboards/keychron/x4/ansi/red/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/x4/ansi_encoder/red/keymaps/keychron/keymap.c
@@ -59,6 +59,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(BL_DOWN, BL_UP)},
+ [WIN_L2] = { ENCODER_CCW_CW(_______, _______)},
+ [WIN_L3] = { ENCODER_CCW_CW(_______, _______)}
+};
+#endif // ENCODER_MAP_ENABLE
+
// clang-format on
void housekeeping_task_user(void) {
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x4/ansi_encoder/red/keymaps/keychron/rules.mk
similarity index 71%
rename from keyboards/keychron/x4/ansi/red/keymaps/keychron/rules.mk
rename to keyboards/keychron/x4/ansi_encoder/red/keymaps/keychron/rules.mk
index 3c9fcc5c98c2..936769ddc6e2 100755
--- a/keyboards/keychron/x4/ansi/red/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/x4/ansi_encoder/red/keymaps/keychron/rules.mk
@@ -1,3 +1,4 @@
VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x4/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x4/ansi_encoder/red/keymaps/via/keymap.c
similarity index 93%
rename from keyboards/keychron/x4/ansi/red/keymaps/via/keymap.c
rename to keyboards/keychron/x4/ansi_encoder/red/keymaps/via/keymap.c
index 0af845e432fc..294bf8efb91c 100755
--- a/keyboards/keychron/x4/ansi/red/keymaps/via/keymap.c
+++ b/keyboards/keychron/x4/ansi_encoder/red/keymaps/via/keymap.c
@@ -59,3 +59,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
+ [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = { ENCODER_CCW_CW(BL_DOWN, BL_UP)},
+ [WIN_L2] = { ENCODER_CCW_CW(_______, _______)},
+ [WIN_L3] = { ENCODER_CCW_CW(_______, _______)}
+};
+#endif // ENCODER_MAP_ENABLE
diff --git a/keyboards/keychron/x4/ansi_encoder/red/keymaps/via/rules.mk b/keyboards/keychron/x4/ansi_encoder/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..f1adcab005e8
--- /dev/null
+++ b/keyboards/keychron/x4/ansi_encoder/red/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/x4/ansi/red/red.c b/keyboards/keychron/x4/ansi_encoder/red/red.c
similarity index 100%
rename from keyboards/keychron/x4/ansi/red/red.c
rename to keyboards/keychron/x4/ansi_encoder/red/red.c
diff --git a/keyboards/keychron/x4/ansi/red/rules.mk b/keyboards/keychron/x4/ansi_encoder/red/rules.mk
similarity index 100%
rename from keyboards/keychron/x4/ansi/red/rules.mk
rename to keyboards/keychron/x4/ansi_encoder/red/rules.mk
diff --git a/keyboards/keychron/x4/readme.md b/keyboards/keychron/x4/readme.md
index b8fd67e07c7e..5ff03e9b2308 100755
--- a/keyboards/keychron/x4/readme.md
+++ b/keyboards/keychron/x4/readme.md
@@ -10,11 +10,11 @@ A customizable 75% keyboard.
Make example for this keyboard (after setting up your build environment):
- make keychron/x4/ansi/red:default
+ make keychron/x4/ansi_encoder/red:default
Flashing example for this keyboard:
- make keychron/x4/ansi/red:default:flash
+ make keychron/x4/ansi_encoder/red:default:flash
## bootloader
diff --git a/keyboards/keychron/x4/x4.c b/keyboards/keychron/x4/x4.c
index b1bf2decdc69..a4f2c5c8b48b 100755
--- a/keyboards/keychron/x4/x4.c
+++ b/keyboards/keychron/x4/x4.c
@@ -16,6 +16,8 @@
#include "quantum.h"
+static uint8_t win_lock_state = 0;
+
void eeconfig_init_kb(void) {
#if (EECONFIG_KB_DATA_SIZE) == 0
// Reset Keyboard EEPROM value to blank, rather than to a set value
@@ -25,5 +27,63 @@ void eeconfig_init_kb(void) {
keymap_config.nkro = 1;
eeconfig_update_keymap(keymap_config.raw);
+ win_lock_state = 0;
+ eeconfig_update_user_datablock(&win_lock_state);
+
eeconfig_init_user();
}
+
+void keyboard_post_init_kb(void) {
+ eeconfig_read_user_datablock(&win_lock_state);
+
+ keyboard_post_init_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+#ifdef LED_MATRIX_ENABLE
+ case BL_TOGG:
+ if (record->event.pressed) {
+ switch (led_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ led_matrix_set_flags(LED_FLAG_NONE);
+ led_matrix_set_value_all(0);
+ } break;
+ default: {
+ led_matrix_set_flags(LED_FLAG_ALL);
+ } break;
+ }
+ }
+ if (!led_matrix_is_enabled()) {
+ led_matrix_set_flags(LED_FLAG_ALL);
+ led_matrix_enable();
+ }
+ return false;
+#endif
+ case GU_TOGG:
+ if (record->event.pressed) {
+ win_lock_state = !win_lock_state;
+ eeconfig_update_user_datablock(&win_lock_state);
+ }
+ return true;
+ default:
+ return true;
+ }
+}
+
+bool led_matrix_indicators_kb(void) {
+ if (!led_matrix_indicators_user()) {
+ return false;
+ }
+ if (win_lock_state) {
+ led_matrix_set_value(LED_WIN_LOCK_INDEX, 0xFF);
+ } else {
+ if (!led_matrix_get_flags()) {
+ led_matrix_set_value(LED_WIN_LOCK_INDEX, 0);
+ }
+ }
+ return true;
+}
diff --git a/quantum/encoder.c b/quantum/encoder.c
index 7ab194ed5290..d077f77cb838 100644
--- a/quantum/encoder.c
+++ b/quantum/encoder.c
@@ -61,6 +61,7 @@ static int8_t encoder_LUT[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1,
static uint8_t encoder_state[NUM_ENCODERS] = {0};
static int8_t encoder_pulses[NUM_ENCODERS] = {0};
+static bool encoder_interrupt_update[NUM_ENCODERS] = {false};
// encoder counts
static uint8_t thisCount;
@@ -248,15 +249,23 @@ bool encoder_read(void) {
bool changed = false;
for (uint8_t i = 0; i < thisCount; i++) {
uint8_t new_status = (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1);
- if ((encoder_state[i] & 0x3) != new_status) {
+ if ((encoder_state[i] & 0x3) != new_status || encoder_interrupt_update[i]) {
encoder_state[i] <<= 2;
encoder_state[i] |= new_status;
changed |= encoder_update(i, encoder_state[i]);
+ encoder_interrupt_update[i] = false;
}
}
return changed;
}
+void encoder_interrupt_read(uint8_t index) {
+ encoder_state[index] <<= 2;
+ encoder_state[index] |= (readPin(encoders_pad_a[index]) << 0) | (readPin(encoders_pad_b[index]) << 1);
+ encoder_pulses[index] += encoder_LUT[encoder_state[index] & 0xF];
+ encoder_interrupt_update[index] = true;
+}
+
#ifdef SPLIT_KEYBOARD
void last_encoder_activity_trigger(void);
diff --git a/quantum/encoder.h b/quantum/encoder.h
index 1cbac98cb57a..1ab80362216e 100644
--- a/quantum/encoder.h
+++ b/quantum/encoder.h
@@ -27,10 +27,11 @@ bool encoder_read(void);
bool encoder_update_kb(uint8_t index, bool clockwise);
bool encoder_update_user(uint8_t index, bool clockwise);
+void encoder_interrupt_read(uint8_t index);
#ifdef SPLIT_KEYBOARD
-void encoder_state_raw(uint8_t* slave_state);
+ void encoder_state_raw(uint8_t* slave_state);
void encoder_update_raw(uint8_t* slave_state);
# if defined(ENCODERS_PAD_A_RIGHT)
From ab272c3d05f2844985762ab35f002ecf98836bce Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Mon, 16 Oct 2023 17:06:11 +0800
Subject: [PATCH 08/27] Update x4 via json
---
...ansi_red.json => x4_ansi_encoder_red.json} | 115 +++++-------------
1 file changed, 32 insertions(+), 83 deletions(-)
rename keyboards/keychron/x4/via_json/{x4_ansi_red.json => x4_ansi_encoder_red.json} (72%)
mode change 100755 => 100644
diff --git a/keyboards/keychron/x4/via_json/x4_ansi_red.json b/keyboards/keychron/x4/via_json/x4_ansi_encoder_red.json
old mode 100755
new mode 100644
similarity index 72%
rename from keyboards/keychron/x4/via_json/x4_ansi_red.json
rename to keyboards/keychron/x4/via_json/x4_ansi_encoder_red.json
index 31e044b399f0..8c3f83181174
--- a/keyboards/keychron/x4/via_json/x4_ansi_red.json
+++ b/keyboards/keychron/x4/via_json/x4_ansi_encoder_red.json
@@ -1,7 +1,7 @@
{
- "name": "Lemokey X3 ANSI Red",
+ "name": "Lemokey X4 ANSI Knob Red",
"vendorId": "0x362D",
- "productId": "0x0230",
+ "productId": "0x0240",
"keycodes": ["qmk_lighting"],
"customKeycodes": [
{"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
@@ -16,7 +16,7 @@
{"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
{"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
],
- "matrix": {"rows": 6, "cols": 21},
+ "matrix": {"rows": 6, "cols": 16},
"layouts": {
"keymap": [
[
@@ -25,7 +25,7 @@
},
"0,0\nESC",
{
- "x": 1,
+ "x": 0.25,
"c": "#cccccc"
},
"0,1",
@@ -33,16 +33,14 @@
"0,3",
"0,4",
{
- "x": 0.5,
- "c": "#aaaaaa"
+ "x": 0.25
},
"0,5",
"0,6",
"0,7",
"0,8",
{
- "x": 0.5,
- "c": "#cccccc"
+ "x": 0.25
},
"0,9",
"0,10",
@@ -52,9 +50,11 @@
"x": 0.25,
"c": "#aaaaaa"
},
- "0,14",
- "0,15",
- "0,16"
+ "0,13",
+ {
+ "x": 0.25
+ },
+ "0,14\n\n\n\n\n\n\n\n\ne0"
],
[
{
@@ -84,21 +84,10 @@
{
"x": 0.25
},
- "1,14",
- "1,15",
- "1,16",
- {
- "x": 0.25,
- "c": "#cccccc"
- },
- "1,17",
- "1,18",
- "1,19",
- "1,20"
+ "1,14"
],
[
{
- "c": "#aaaaaa",
"w": 1.5
},
"2,0",
@@ -125,24 +114,10 @@
{
"x": 0.25
},
- "2,14",
- "2,15",
- "2,16",
- {
- "x": 0.25,
- "c": "#cccccc"
- },
- "2,17",
- "2,18",
- "2,19",
- {
- "h": 2
- },
- "2,20"
+ "2,14"
],
[
{
- "c": "#aaaaaa",
"w": 1.75
},
"3,0",
@@ -166,16 +141,13 @@
},
"3,13",
{
- "x": 3.5,
- "c": "#cccccc"
+ "x": 0.25,
+ "c": "#aaaaaa"
},
- "3,17",
- "3,18",
- "3,19"
+ "3,14"
],
[
{
- "c": "#aaaaaa",
"w": 2.25
},
"4,0",
@@ -194,29 +166,21 @@
"4,11",
{
"c": "#aaaaaa",
- "w": 2.75
+ "w": 1.75
},
- "4,13",
+ "4,13"
+ ],
+ [
{
- "x": 1.25,
+ "y": -0.75,
+ "x": 14.25,
"c": "#777777"
},
- "4,15",
- {
- "x": 1.25,
- "c": "#cccccc"
- },
- "4,17",
- "4,18",
- "4,19",
- {
- "c": "#777777",
- "h": 2
- },
- "4,20"
+ "4,14"
],
[
{
+ "y": -0.25,
"c": "#aaaaaa",
"w": 1.25
},
@@ -235,36 +199,21 @@
},
"5,6",
{
- "c": "#aaaaaa",
- "w": 1.25
+ "c": "#aaaaaa"
},
"5,10",
- {
- "w": 1.25
- },
"5,11",
+ "5,12"
+ ],
+ [
{
- "w": 1.25
- },
- "5,12",
- {
- "w": 1.25
- },
- "5,13",
- {
- "x": 0.25,
+ "y": -0.75,
+ "x": 13.25,
"c": "#777777"
},
+ "5,13",
"5,14",
- "5,15",
- "5,16",
- {
- "x": 0.25,
- "c": "#cccccc",
- "w": 2
- },
- "5,17",
- "5,18"
+ "5,15"
]
]
}
From 2bd71899bb35fe9bd5c1bffafe601805c50289a9 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Tue, 17 Oct 2023 09:21:26 +0800
Subject: [PATCH 09/27] Format encoder.c
---
quantum/encoder.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/quantum/encoder.c b/quantum/encoder.c
index d077f77cb838..807ed9b449cf 100644
--- a/quantum/encoder.c
+++ b/quantum/encoder.c
@@ -59,8 +59,8 @@ static uint8_t encoder_resolutions[NUM_ENCODERS] = ENCODER_RESOLUTIONS;
#endif
static int8_t encoder_LUT[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0};
-static uint8_t encoder_state[NUM_ENCODERS] = {0};
-static int8_t encoder_pulses[NUM_ENCODERS] = {0};
+static uint8_t encoder_state[NUM_ENCODERS] = {0};
+static int8_t encoder_pulses[NUM_ENCODERS] = {0};
static bool encoder_interrupt_update[NUM_ENCODERS] = {false};
// encoder counts
From f6df8a1ca2dde5cf68ca34160eea6f044a28757b Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Tue, 17 Oct 2023 09:23:35 +0800
Subject: [PATCH 10/27] Format encoder.h
---
quantum/encoder.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/quantum/encoder.h b/quantum/encoder.h
index 1ab80362216e..d3c80572179e 100644
--- a/quantum/encoder.h
+++ b/quantum/encoder.h
@@ -31,7 +31,7 @@ void encoder_interrupt_read(uint8_t index);
#ifdef SPLIT_KEYBOARD
- void encoder_state_raw(uint8_t* slave_state);
+void encoder_state_raw(uint8_t* slave_state);
void encoder_update_raw(uint8_t* slave_state);
# if defined(ENCODERS_PAD_A_RIGHT)
From d1fe58443e916040861c590f9279580cbd335e17 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Wed, 18 Oct 2023 11:18:42 +0800
Subject: [PATCH 11/27] Add x2
---
keyboards/keychron/x2/ansi/red/config.h | 41 +++
keyboards/keychron/x2/ansi/red/info.json | 141 +++++++++
.../x2/ansi/red/keymaps/default/keymap.c | 61 ++++
.../x2/ansi/red/keymaps/keychron/keymap.c | 77 +++++
.../x2/ansi/red/keymaps/keychron/rules.mk | 3 +
.../keychron/x2/ansi/red/keymaps/via/keymap.c | 61 ++++
.../keychron/x2/ansi/red/keymaps/via/rules.mk | 1 +
keyboards/keychron/x2/ansi/red/red.c | 136 +++++++++
keyboards/keychron/x2/ansi/red/rules.mk | 1 +
keyboards/keychron/x2/config.h | 38 +++
keyboards/keychron/x2/halconf.h | 21 ++
keyboards/keychron/x2/info.json | 144 ++++++++++
keyboards/keychron/x2/mcuconf.h | 34 +++
keyboards/keychron/x2/readme.md | 26 ++
.../keychron/x2/via_json/x2_ansi_red.json | 271 ++++++++++++++++++
keyboards/keychron/x2/x2.c | 83 ++++++
16 files changed, 1139 insertions(+)
create mode 100755 keyboards/keychron/x2/ansi/red/config.h
create mode 100755 keyboards/keychron/x2/ansi/red/info.json
create mode 100755 keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/x2/ansi/red/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/x2/ansi/red/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/x2/ansi/red/red.c
create mode 100755 keyboards/keychron/x2/ansi/red/rules.mk
create mode 100755 keyboards/keychron/x2/config.h
create mode 100755 keyboards/keychron/x2/halconf.h
create mode 100755 keyboards/keychron/x2/info.json
create mode 100755 keyboards/keychron/x2/mcuconf.h
create mode 100755 keyboards/keychron/x2/readme.md
create mode 100755 keyboards/keychron/x2/via_json/x2_ansi_red.json
create mode 100755 keyboards/keychron/x2/x2.c
diff --git a/keyboards/keychron/x2/ansi/red/config.h b/keyboards/keychron/x2/ansi/red/config.h
new file mode 100755
index 000000000000..acc49e001a17
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/config.h
@@ -0,0 +1,41 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 104
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_9CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/x2/ansi/red/info.json b/keyboards/keychron/x2/ansi/red/info.json
new file mode 100755
index 000000000000..5b758b77bc22
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/info.json
@@ -0,0 +1,141 @@
+{
+ "usb": {
+ "pid": "0x0220",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0,0], "flags":1, "x":0, "y":0},
+ {"matrix":[0,1], "flags":1, "x":21, "y":0},
+ {"matrix":[0,2], "flags":1, "x":31, "y":0},
+ {"matrix":[0,3], "flags":1, "x":42, "y":0},
+ {"matrix":[0,4], "flags":1, "x":52, "y":0},
+ {"matrix":[0,5], "flags":1, "x":68, "y":0},
+ {"matrix":[0,6], "flags":1, "x":78, "y":0},
+ {"matrix":[0,7], "flags":1, "x":88, "y":0},
+ {"matrix":[0,8], "flags":1, "x":99, "y":0},
+ {"matrix":[0,9], "flags":1, "x":114, "y":0},
+ {"matrix":[0,10], "flags":1, "x":125, "y":0},
+ {"matrix":[0,11], "flags":1, "x":135, "y":0},
+ {"matrix":[0,12], "flags":1, "x":146, "y":0},
+ {"matrix":[0,14], "flags":1, "x":159, "y":0},
+ {"matrix":[0,15], "flags":1, "x":169, "y":0},
+ {"matrix":[0,16], "flags":1, "x":180, "y":0},
+
+ {"matrix":[1,0], "flags":1, "x":0, "y":16},
+ {"matrix":[1,1], "flags":4, "x":10, "y":16},
+ {"matrix":[1,2], "flags":4, "x":21, "y":16},
+ {"matrix":[1,3], "flags":4, "x":31, "y":16},
+ {"matrix":[1,4], "flags":4, "x":42, "y":16},
+ {"matrix":[1,5], "flags":4, "x":52, "y":16},
+ {"matrix":[1,6], "flags":4, "x":62, "y":16},
+ {"matrix":[1,7], "flags":4, "x":73, "y":16},
+ {"matrix":[1,8], "flags":4, "x":83, "y":16},
+ {"matrix":[1,9], "flags":4, "x":94, "y":16},
+ {"matrix":[1,10], "flags":4, "x":104, "y":16},
+ {"matrix":[1,11], "flags":4, "x":114, "y":16},
+ {"matrix":[1,12], "flags":4, "x":125, "y":16},
+ {"matrix":[1,13], "flags":1, "x":140, "y":16},
+ {"matrix":[1,14], "flags":1, "x":159, "y":16},
+ {"matrix":[1,15], "flags":1, "x":169, "y":16},
+ {"matrix":[1,16], "flags":1, "x":180, "y":16},
+ {"matrix":[1,17], "flags":4, "x":193, "y":16},
+ {"matrix":[1,18], "flags":4, "x":203, "y":16},
+ {"matrix":[1,19], "flags":4, "x":214, "y":16},
+ {"matrix":[1,20], "flags":4, "x":224, "y":16},
+
+ {"matrix":[2,0], "flags":1, "x":3, "y":28},
+ {"matrix":[2,1], "flags":4, "x":16, "y":28},
+ {"matrix":[2,2], "flags":4, "x":26, "y":28},
+ {"matrix":[2,3], "flags":4, "x":36, "y":28},
+ {"matrix":[2,4], "flags":4, "x":47, "y":28},
+ {"matrix":[2,5], "flags":4, "x":57, "y":28},
+ {"matrix":[2,6], "flags":4, "x":68, "y":28},
+ {"matrix":[2,7], "flags":4, "x":78, "y":28},
+ {"matrix":[2,8], "flags":4, "x":88, "y":28},
+ {"matrix":[2,9], "flags":4, "x":98, "y":28},
+ {"matrix":[2,10], "flags":4, "x":109, "y":28},
+ {"matrix":[2,11], "flags":4, "x":120, "y":28},
+ {"matrix":[2,12], "flags":4, "x":130, "y":28},
+ {"matrix":[2,13], "flags":1, "x":143, "y":28},
+ {"matrix":[2,14], "flags":1, "x":159, "y":28},
+ {"matrix":[2,15], "flags":1, "x":169, "y":28},
+ {"matrix":[2,16], "flags":1, "x":180, "y":28},
+ {"matrix":[2,17], "flags":4, "x":193, "y":28},
+ {"matrix":[2,18], "flags":4, "x":203, "y":28},
+ {"matrix":[2,19], "flags":4, "x":214, "y":28},
+ {"matrix":[2,20], "flags":4, "x":224, "y":34},
+
+ {"matrix":[3,0], "flags":1, "x":4, "y":40},
+ {"matrix":[3,1], "flags":4, "x":18, "y":40},
+ {"matrix":[3,2], "flags":4, "x":29, "y":40},
+ {"matrix":[3,3], "flags":4, "x":39, "y":40},
+ {"matrix":[3,4], "flags":4, "x":49, "y":40},
+ {"matrix":[3,5], "flags":4, "x":60, "y":40},
+ {"matrix":[3,6], "flags":4, "x":70, "y":40},
+ {"matrix":[3,7], "flags":4, "x":81, "y":40},
+ {"matrix":[3,8], "flags":4, "x":91, "y":40},
+ {"matrix":[3,9], "flags":4, "x":101, "y":40},
+ {"matrix":[3,10], "flags":4, "x":112, "y":40},
+ {"matrix":[3,11], "flags":4, "x":122, "y":40},
+ {"matrix":[3,13], "flags":1, "x":139, "y":40},
+ {"matrix":[3,17], "flags":4, "x":193, "y":40},
+ {"matrix":[3,18], "flags":4, "x":203, "y":40},
+ {"matrix":[3,19], "flags":4, "x":214, "y":40},
+
+ {"matrix":[4,0], "flags":1, "x":7, "y":52},
+ {"matrix":[4,2], "flags":4, "x":23, "y":52},
+ {"matrix":[4,3], "flags":4, "x":34, "y":52},
+ {"matrix":[4,4], "flags":4, "x":44, "y":52},
+ {"matrix":[4,5], "flags":4, "x":55, "y":52},
+ {"matrix":[4,6], "flags":4, "x":65, "y":52},
+ {"matrix":[4,7], "flags":4, "x":75, "y":52},
+ {"matrix":[4,8], "flags":4, "x":86, "y":52},
+ {"matrix":[4,9], "flags":4, "x":96, "y":52},
+ {"matrix":[4,10], "flags":4, "x":107, "y":52},
+ {"matrix":[4,11], "flags":4, "x":117, "y":52},
+ {"matrix":[4,13], "flags":1, "x":137, "y":52},
+ {"matrix":[4,15], "flags":1, "x":169, "y":52},
+ {"matrix":[4,17], "flags":4, "x":193, "y":52},
+ {"matrix":[4,18], "flags":4, "x":203, "y":52},
+ {"matrix":[4,19], "flags":4, "x":214, "y":52},
+ {"matrix":[4,20], "flags":4, "x":224, "y":58},
+
+ {"matrix":[5,0], "flags":1, "x":1, "y":64},
+ {"matrix":[5,1], "flags":1, "x":14, "y":64},
+ {"matrix":[5,2], "flags":1, "x":27, "y":64},
+ {"matrix":[5,6], "flags":4, "x":66, "y":64},
+ {"matrix":[5,10], "flags":1, "x":105, "y":64},
+ {"matrix":[5,11], "flags":1, "x":118, "y":64},
+ {"matrix":[5,12], "flags":1, "x":131, "y":64},
+ {"matrix":[5,13], "flags":1, "x":144, "y":64},
+ {"matrix":[5,14], "flags":1, "x":159, "y":64},
+ {"matrix":[5,15], "flags":1, "x":169, "y":64},
+ {"matrix":[5,16], "flags":1, "x":180, "y":64},
+ {"matrix":[5,17], "flags":4, "x":198, "y":64},
+ {"matrix":[5,18], "flags":4, "x":214, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c
new file mode 100755
index 000000000000..cf7d70a1fa55
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 202 @ 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
+
+enum layers{
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..8d3cd1aaedef
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/x2/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x2/ansi/red/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c
new file mode 100755
index 000000000000..01e9a4d6ff2c
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* 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
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/x2/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x2/ansi/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/x2/ansi/red/red.c b/keyboards/keychron/x2/ansi/red/red.c
new file mode 100755
index 000000000000..4c3123feaad6
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/red.c
@@ -0,0 +1,136 @@
+/* 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 "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, F_1 },
+ {0, F_2 },
+ {0, F_3 },
+ {0, F_4 },
+ {0, F_5 },
+ {0, F_6 },
+ {0, F_7 },
+ {0, F_8 },
+ {0, F_9 },
+ {0, F_10},
+ {0, F_11},
+ {0, F_12},
+ {0, F_13},
+ {0, F_15},
+ {0, F_16},
+ {0, G_1 },
+
+ {0, E_1 },
+ {0, E_2 },
+ {0, E_3 },
+ {0, E_4 },
+ {0, E_5 },
+ {0, E_6 },
+ {0, E_7 },
+ {0, E_8 },
+ {0, E_9 },
+ {0, E_10},
+ {0, E_11},
+ {0, E_12},
+ {0, E_13},
+ {0, E_14},
+ {0, E_15},
+ {0, E_16},
+ {0, H_1 },
+ {0, H_2 },
+ {0, H_3 },
+ {0, H_4 },
+ {0, H_5 },
+
+ {0, D_1 },
+ {0, D_2 },
+ {0, D_3 },
+ {0, D_4 },
+ {0, D_5 },
+ {0, D_6 },
+ {0, D_7 },
+ {0, D_8 },
+ {0, D_9 },
+ {0, D_10},
+ {0, D_11},
+ {0, D_12},
+ {0, D_13},
+ {0, D_14},
+ {0, D_15},
+ {0, D_16},
+ {0, G_6 },
+ {0, G_7 },
+ {0, G_8 },
+ {0, G_9 },
+ {0, G_10},
+
+ {0, C_1 },
+ {0, C_2 },
+ {0, C_3 },
+ {0, C_4 },
+ {0, C_5 },
+ {0, C_6 },
+ {0, C_7 },
+ {0, C_8 },
+ {0, C_9 },
+ {0, C_10},
+ {0, C_11},
+ {0, C_12},
+ {0, C_14},
+ {0, H_7 },
+ {0, H_8 },
+ {0, H_9 },
+
+ {0, B_1 },
+ {0, B_3 },
+ {0, B_4 },
+ {0, B_5 },
+ {0, B_6 },
+ {0, B_7 },
+ {0, B_8 },
+ {0, B_9 },
+ {0, B_10},
+ {0, B_11},
+ {0, B_12},
+ {0, B_14},
+ {0, B_16},
+ {0, H_6 },
+ {0, H_11},
+ {0, H_12},
+ {0, H_10},
+
+ {0, A_1 },
+ {0, A_2 },
+ {0, A_3 },
+ {0, A_7 },
+ {0, A_11},
+ {0, A_12},
+ {0, A_13},
+ {0, A_14},
+ {0, A_15},
+ {0, A_16},
+ {0, G_13},
+ {0, G_11},
+ {0, G_12},
+};
+#endif
diff --git a/keyboards/keychron/x2/ansi/red/rules.mk b/keyboards/keychron/x2/ansi/red/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/x2/ansi/red/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/x2/config.h b/keyboards/keychron/x2/config.h
new file mode 100755
index 000000000000..8cb0b2d69661
--- /dev/null
+++ b/keyboards/keychron/x2/config.h
@@ -0,0 +1,38 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* I2C Driver Configuration */
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Winlock indicator */
+#define LED_WIN_LOCK_PIN A5
+#define LED_PIN_ON_STATE 1
+
+/* User used eeprom */
+#define EECONFIG_USER_DATA_SIZE 1
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/x2/halconf.h b/keyboards/keychron/x2/halconf.h
new file mode 100755
index 000000000000..41bddcb2799b
--- /dev/null
+++ b/keyboards/keychron/x2/halconf.h
@@ -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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/keychron/x2/info.json b/keyboards/keychron/x2/info.json
new file mode 100755
index 000000000000..de8644ecb333
--- /dev/null
+++ b/keyboards/keychron/x2/info.json
@@ -0,0 +1,144 @@
+{
+ "keyboard_name": "Lemokey X2",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x362D"
+ },
+ "matrix_pins": {
+ "cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0", "A1", "A2", "B12", "B10", "B13", "B14"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "COL2ROW",
+ "indicators": {
+ "caps_lock": "A3",
+ "scroll_lock": "A6",
+ "num_lock": "A4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "layouts": {
+ "LAYOUT_104_ansi": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,1], "x":2, "y":0},
+ {"matrix":[0,2], "x":3, "y":0},
+ {"matrix":[0,3], "x":4, "y":0},
+ {"matrix":[0,4], "x":5, "y":0},
+ {"matrix":[0,5], "x":6.5, "y":0},
+ {"matrix":[0,6], "x":7.5, "y":0},
+ {"matrix":[0,7], "x":8.5, "y":0},
+ {"matrix":[0,8], "x":9.5, "y":0},
+ {"matrix":[0,9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[1,19], "x":20.5, "y":1.25},
+ {"matrix":[1,20], "x":21.5, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[2,19], "x":20.5, "y":2.25},
+ {"matrix":[2,20], "x":21.5, "y":2.25, "h":2},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,19], "x":20.5, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,19], "x":20.5, "y":4.25},
+ {"matrix":[4,20], "x":21.5, "y":4.25, "h":2},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/x2/mcuconf.h b/keyboards/keychron/x2/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/x2/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/x2/readme.md b/keyboards/keychron/x2/readme.md
new file mode 100755
index 000000000000..c700ef538136
--- /dev/null
+++ b/keyboards/keychron/x2/readme.md
@@ -0,0 +1,26 @@
+# Lemokey X3
+
+![Lemokey X3]()
+
+A customizable 80% TKL keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Lemokey X3
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/x3/ansi/red:default
+
+Flashing example for this keyboard:
+
+ make keychron/x3/ansi/red:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/x2/via_json/x2_ansi_red.json b/keyboards/keychron/x2/via_json/x2_ansi_red.json
new file mode 100755
index 000000000000..7a47550eced0
--- /dev/null
+++ b/keyboards/keychron/x2/via_json/x2_ansi_red.json
@@ -0,0 +1,271 @@
+{
+ "name": "Lemokey X2 ANSI Red",
+ "vendorId": "0x362D",
+ "productId": "0x0220",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 21},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,17",
+ "1,18",
+ "1,19",
+ "1,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,17",
+ "2,18",
+ "2,19",
+ {
+ "h": 2
+ },
+ "2,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 3.5,
+ "c": "#cccccc"
+ },
+ "3,17",
+ "3,18",
+ "3,19"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,17",
+ "4,18",
+ "4,19",
+ {
+ "c": "#777777",
+ "h": 2
+ },
+ "4,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "5,17",
+ "5,18"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/x2/x2.c b/keyboards/keychron/x2/x2.c
new file mode 100755
index 000000000000..80edadabe0f4
--- /dev/null
+++ b/keyboards/keychron/x2/x2.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 "quantum.h"
+
+static uint8_t win_lock_state = 0;
+
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE)
+
+static void set_led_win_lock_state(void) {
+ if (win_lock_state) {
+ SET_LED_WIN_LOCK_ON;
+ } else {
+ SET_LED_WIN_LOCK_OFF;
+ }
+}
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ win_lock_state = 0;
+ eeconfig_update_user_datablock(&win_lock_state);
+
+ eeconfig_init_user();
+}
+
+void keyboard_post_init_kb(void) {
+ setPinOutputPushPull(LED_WIN_LOCK_PIN);
+ eeconfig_read_user_datablock(&win_lock_state);
+
+ keyboard_post_init_user();
+}
+
+void housekeeping_task_kb() {
+ set_led_win_lock_state();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+ case GU_TOGG:
+ if (record->event.pressed) {
+ win_lock_state = !win_lock_state;
+ eeconfig_update_user_datablock(&win_lock_state);
+ if (win_lock_state) {
+ writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE);
+ } else {
+ writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE);
+ }
+ }
+ return true;
+ default:
+ return true;
+ }
+}
+
+void suspend_power_down_kb(void) {
+ SET_LED_WIN_LOCK_OFF;
+
+ suspend_power_down_user();
+}
From 82de09d72f37cb6f2b9335c02b31ba6829e31306 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Wed, 18 Oct 2023 14:16:57 +0800
Subject: [PATCH 12/27] Add X0
---
keyboards/keychron/x0/ansi/red/config.h | 43 ++++
keyboards/keychron/x0/ansi/red/info.json | 72 ++++++
.../x0/ansi/red/keymaps/default/keymap.c | 61 +++++
.../x0/ansi/red/keymaps/default/rules.mk | 1 +
.../x0/ansi/red/keymaps/keychron/keymap.c | 77 ++++++
.../x0/ansi/red/keymaps/keychron/rules.mk | 4 +
.../keychron/x0/ansi/red/keymaps/via/keymap.c | 61 +++++
.../keychron/x0/ansi/red/keymaps/via/rules.mk | 2 +
keyboards/keychron/x0/ansi/red/red.c | 62 +++++
keyboards/keychron/x0/ansi/red/rules.mk | 1 +
keyboards/keychron/x0/config.h | 34 +++
keyboards/keychron/x0/halconf.h | 24 ++
keyboards/keychron/x0/info.json | 68 ++++++
keyboards/keychron/x0/mcuconf.h | 34 +++
keyboards/keychron/x0/readme.md | 26 +++
.../keychron/x0/via_json/x0_ansi_red.json | 220 ++++++++++++++++++
keyboards/keychron/x0/x0.c | 29 +++
keyboards/keychron/x1/config.h | 1 -
keyboards/keychron/x2/config.h | 1 -
keyboards/keychron/x3/config.h | 1 -
keyboards/keychron/x4/config.h | 1 -
21 files changed, 819 insertions(+), 4 deletions(-)
create mode 100755 keyboards/keychron/x0/ansi/red/config.h
create mode 100755 keyboards/keychron/x0/ansi/red/info.json
create mode 100755 keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/x0/ansi/red/keymaps/default/rules.mk
create mode 100755 keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/x0/ansi/red/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/x0/ansi/red/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/x0/ansi/red/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/x0/ansi/red/red.c
create mode 100755 keyboards/keychron/x0/ansi/red/rules.mk
create mode 100755 keyboards/keychron/x0/config.h
create mode 100755 keyboards/keychron/x0/halconf.h
create mode 100755 keyboards/keychron/x0/info.json
create mode 100755 keyboards/keychron/x0/mcuconf.h
create mode 100755 keyboards/keychron/x0/readme.md
create mode 100644 keyboards/keychron/x0/via_json/x0_ansi_red.json
create mode 100755 keyboards/keychron/x0/x0.c
diff --git a/keyboards/keychron/x0/ansi/red/config.h b/keyboards/keychron/x0/ansi/red/config.h
new file mode 100755
index 000000000000..13fd2f240849
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/config.h
@@ -0,0 +1,43 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 35
+# define LED_MATRIX_CENTER \
+ { 56, 32 }
+
+/* Scan phase of led driver set as MSKPHASE_6CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_6CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/x0/ansi/red/info.json b/keyboards/keychron/x0/ansi/red/info.json
new file mode 100755
index 000000000000..8b0323569255
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/info.json
@@ -0,0 +1,72 @@
+{
+ "usb": {
+ "pid": "0x0200",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":28, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":37, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":46, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":56, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":7},
+ {"matrix":[1, 1], "flags":4, "x":9, "y":7},
+ {"matrix":[1, 2], "flags":4, "x":18, "y":7},
+ {"matrix":[1, 3], "flags":4, "x":28, "y":7},
+ {"matrix":[1, 4], "flags":4, "x":37, "y":7},
+ {"matrix":[1, 5], "flags":4, "x":46, "y":7},
+ {"matrix":[1, 6], "flags":4, "x":56, "y":7},
+
+ {"matrix":[2, 0], "flags":1, "x":2, "y":13},
+ {"matrix":[2, 1], "flags":4, "x":14, "y":13},
+ {"matrix":[2, 2], "flags":4, "x":23, "y":13},
+ {"matrix":[2, 3], "flags":4, "x":32, "y":13},
+ {"matrix":[2, 4], "flags":4, "x":42, "y":13},
+ {"matrix":[2, 5], "flags":4, "x":53, "y":13},
+
+ {"matrix":[3, 0], "flags":1, "x":3, "y":19},
+ {"matrix":[3, 1], "flags":4, "x":16, "y":19},
+ {"matrix":[3, 2], "flags":4, "x":25, "y":19},
+ {"matrix":[3, 3], "flags":4, "x":35, "y":19},
+ {"matrix":[3, 4], "flags":4, "x":44, "y":19},
+ {"matrix":[3, 5], "flags":4, "x":55, "y":19},
+
+ {"matrix":[4, 0], "flags":1, "x":6, "y":26},
+ {"matrix":[4, 2], "flags":4, "x":21, "y":26},
+ {"matrix":[4, 3], "flags":4, "x":30, "y":26},
+ {"matrix":[4, 4], "flags":4, "x":40, "y":26},
+ {"matrix":[4, 5], "flags":4, "x":52, "y":26},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":32},
+ {"matrix":[5, 2], "flags":1, "x":25, "y":32},
+ {"matrix":[5, 3], "flags":1, "x":35, "y":32},
+ {"matrix":[5, 4], "flags":1, "x":44, "y":32},
+ {"matrix":[5, 5], "flags":1, "x":56, "y":32}
+ ]
+ }
+}
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
new file mode 100755
index 000000000000..e966f8f32c5a
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 202 @ 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
+
+enum layers{
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V,
+ KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_ENT),
+
+ [WIN_FN] = LAYOUT(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______,
+ _______, _______, _______, _______, NK_TOGG,
+ _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/default/rules.mk b/keyboards/keychron/x0/ansi/red/keymaps/default/rules.mk
new file mode 100755
index 000000000000..ee325681483f
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..ee26e55d9b7c
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V,
+ KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_ENT),
+
+ [WIN_FN] = LAYOUT(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______,
+ _______, _______, _______, _______, NK_TOGG,
+ _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x0/ansi/red/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..936769ddc6e2
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x0/ansi/red/keymaps/via/keymap.c
new file mode 100755
index 000000000000..b7be966374ca
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* 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
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V,
+ KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_ENT),
+
+ [WIN_FN] = LAYOUT(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______,
+ _______, _______, _______, _______, NK_TOGG,
+ _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x0/ansi/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..f1adcab005e8
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/x0/ansi/red/red.c b/keyboards/keychron/x0/ansi/red/red.c
new file mode 100755
index 000000000000..f087391e93e2
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/red.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 .
+ */
+
+#include "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, F_1 },
+ {0, F_2 },
+ {0, F_3 },
+ {0, F_4 },
+ {0, F_5 },
+ {0, F_6 },
+ {0, E_1 },
+ {0, E_2 },
+ {0, E_3 },
+ {0, E_4 },
+ {0, E_5 },
+ {0, E_6 },
+ {0, E_7 },
+ {0, D_1 },
+ {0, D_2 },
+ {0, D_3 },
+ {0, D_4 },
+ {0, D_5 },
+ {0, D_6 },
+ {0, C_1 },
+ {0, C_2 },
+ {0, C_3 },
+ {0, C_4 },
+ {0, C_5 },
+ {0, C_6 },
+ {0, B_1 },
+ {0, B_3 },
+ {0, B_4 },
+ {0, B_5 },
+ {0, B_6 },
+ {0, A_1 },
+ {0, A_3 },
+ {0, A_4 },
+ {0, A_5 },
+ {0, A_6 },
+};
+#endif
diff --git a/keyboards/keychron/x0/ansi/red/rules.mk b/keyboards/keychron/x0/ansi/red/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/x0/ansi/red/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/x0/config.h b/keyboards/keychron/x0/config.h
new file mode 100755
index 000000000000..fc590f753276
--- /dev/null
+++ b/keyboards/keychron/x0/config.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* I2C Driver Configuration */
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* User used eeprom */
+#define EECONFIG_USER_DATA_SIZE 1
+
+/* Factory test keys */
+#define F_RESET_KEY1 KC_6
+#define FN_KEY1 MO(1)
diff --git a/keyboards/keychron/x0/halconf.h b/keyboards/keychron/x0/halconf.h
new file mode 100755
index 000000000000..463d177eabc7
--- /dev/null
+++ b/keyboards/keychron/x0/halconf.h
@@ -0,0 +1,24 @@
+/* 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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
+
+#include_next
diff --git a/keyboards/keychron/x0/info.json b/keyboards/keychron/x0/info.json
new file mode 100755
index 000000000000..23b9ef9d4a2d
--- /dev/null
+++ b/keyboards/keychron/x0/info.json
@@ -0,0 +1,68 @@
+{
+ "keyboard_name": "Lemokey X0",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x362D"
+ },
+ "matrix_pins": {
+ "cols": ["C6", "C7", "C8","A14", "A15", "C10", "C11"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "COL2ROW",
+ "indicators": {
+ "caps_lock": "A3"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,1], "x":2, "y":0},
+ {"matrix":[0,2], "x":3, "y":0},
+ {"matrix":[0,3], "x":4, "y":0},
+ {"matrix":[0,4], "x":5, "y":0},
+ {"matrix":[0,5], "x":6, "y":0},
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25, "w":1.5},
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25, "w":1.25},
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25, "w":1.75},
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.5},
+ {"matrix":[5,2], "x":2.75, "y":5.25},
+ {"matrix":[5,3], "x":3.75, "y":5.25},
+ {"matrix":[5,4], "x":4.75, "y":5.25},
+ {"matrix":[5,5], "x":6, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/x0/mcuconf.h b/keyboards/keychron/x0/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/x0/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/x0/readme.md b/keyboards/keychron/x0/readme.md
new file mode 100755
index 000000000000..5ff03e9b2308
--- /dev/null
+++ b/keyboards/keychron/x0/readme.md
@@ -0,0 +1,26 @@
+# Lemokey X4
+
+![Lemokey X4]()
+
+A customizable 75% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Lemokey X4
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/x4/ansi_encoder/red:default
+
+Flashing example for this keyboard:
+
+ make keychron/x4/ansi_encoder/red:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/x0/via_json/x0_ansi_red.json b/keyboards/keychron/x0/via_json/x0_ansi_red.json
new file mode 100644
index 000000000000..a3b21c96fc8c
--- /dev/null
+++ b/keyboards/keychron/x0/via_json/x0_ansi_red.json
@@ -0,0 +1,220 @@
+{
+ "name": "Lemokey X0 ANSI Red",
+ "vendorId": "0x362D",
+ "productId": "0x0200",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 7},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.25
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.25
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,13",
+ {
+ "x": 0.25
+ },
+ "0,14\n\n\n\n\n\n\n\n\ne0"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "3,14"
+ ],
+ [
+ {
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "4,13"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 14.25,
+ "c": "#777777"
+ },
+ "4,14"
+ ],
+ [
+ {
+ "y": -0.25,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa"
+ },
+ "5,10",
+ "5,11",
+ "5,12"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13.25,
+ "c": "#777777"
+ },
+ "5,13",
+ "5,14",
+ "5,15"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/x0/x0.c b/keyboards/keychron/x0/x0.c
new file mode 100755
index 000000000000..b1bf2decdc69
--- /dev/null
+++ b/keyboards/keychron/x0/x0.c
@@ -0,0 +1,29 @@
+/* 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 "quantum.h"
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ eeconfig_init_user();
+}
diff --git a/keyboards/keychron/x1/config.h b/keyboards/keychron/x1/config.h
index 27084a651e15..5c6fef23d31e 100755
--- a/keyboards/keychron/x1/config.h
+++ b/keyboards/keychron/x1/config.h
@@ -33,4 +33,3 @@
/* Factory test keys */
#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/x2/config.h b/keyboards/keychron/x2/config.h
index 8cb0b2d69661..5e5e0e31788a 100755
--- a/keyboards/keychron/x2/config.h
+++ b/keyboards/keychron/x2/config.h
@@ -35,4 +35,3 @@
/* Factory test keys */
#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/x3/config.h b/keyboards/keychron/x3/config.h
index 418de6724564..f7d07ffe5d4b 100755
--- a/keyboards/keychron/x3/config.h
+++ b/keyboards/keychron/x3/config.h
@@ -35,4 +35,3 @@
/* Factory test keys */
#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
diff --git a/keyboards/keychron/x4/config.h b/keyboards/keychron/x4/config.h
index 3cf99fab5e27..b2d50d5056bb 100755
--- a/keyboards/keychron/x4/config.h
+++ b/keyboards/keychron/x4/config.h
@@ -29,4 +29,3 @@
/* Factory test keys */
#define FN_KEY1 MO(1)
-#define FN_KEY2 MO(3)
From 4befeb82129ed0de2db08d051315096338fb9b7b Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Thu, 19 Oct 2023 11:56:59 +0800
Subject: [PATCH 13/27] Update x3
---
keyboards/keychron/x3/ansi/red/config.h | 2 +-
keyboards/keychron/x3/ansi/red/info.json | 20 +++++++++++++++++++-
keyboards/keychron/x3/ansi/red/red.c | 13 +++++++++++++
3 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/keyboards/keychron/x3/ansi/red/config.h b/keyboards/keychron/x3/ansi/red/config.h
index acc49e001a17..8225cbfc4595 100755
--- a/keyboards/keychron/x3/ansi/red/config.h
+++ b/keyboards/keychron/x3/ansi/red/config.h
@@ -22,7 +22,7 @@
# define DRIVER_ADDR_1 0b1110100
/* RGB Matrix Configuration */
-# define LED_MATRIX_LED_COUNT 104
+# define LED_MATRIX_LED_COUNT (104 + 12)
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
# define PHASE_CHANNEL MSKPHASE_9CHANNEL
diff --git a/keyboards/keychron/x3/ansi/red/info.json b/keyboards/keychron/x3/ansi/red/info.json
index bdd0d149ebe5..6dfa07702ab1 100755
--- a/keyboards/keychron/x3/ansi/red/info.json
+++ b/keyboards/keychron/x3/ansi/red/info.json
@@ -43,6 +43,7 @@
{"matrix":[0,14], "flags":1, "x":159, "y":0},
{"matrix":[0,15], "flags":1, "x":169, "y":0},
{"matrix":[0,16], "flags":1, "x":180, "y":0},
+
{"matrix":[1,0], "flags":1, "x":0, "y":16},
{"matrix":[1,1], "flags":4, "x":10, "y":16},
{"matrix":[1,2], "flags":4, "x":21, "y":16},
@@ -64,6 +65,7 @@
{"matrix":[1,18], "flags":4, "x":203, "y":16},
{"matrix":[1,19], "flags":4, "x":214, "y":16},
{"matrix":[1,20], "flags":4, "x":224, "y":16},
+
{"matrix":[2,0], "flags":1, "x":3, "y":28},
{"matrix":[2,1], "flags":4, "x":16, "y":28},
{"matrix":[2,2], "flags":4, "x":26, "y":28},
@@ -85,6 +87,7 @@
{"matrix":[2,18], "flags":4, "x":203, "y":28},
{"matrix":[2,19], "flags":4, "x":214, "y":28},
{"matrix":[2,20], "flags":4, "x":224, "y":34},
+
{"matrix":[3,0], "flags":1, "x":4, "y":40},
{"matrix":[3,1], "flags":4, "x":18, "y":40},
{"matrix":[3,2], "flags":4, "x":29, "y":40},
@@ -101,6 +104,7 @@
{"matrix":[3,17], "flags":4, "x":193, "y":40},
{"matrix":[3,18], "flags":4, "x":203, "y":40},
{"matrix":[3,19], "flags":4, "x":214, "y":40},
+
{"matrix":[4,0], "flags":1, "x":7, "y":52},
{"matrix":[4,2], "flags":4, "x":23, "y":52},
{"matrix":[4,3], "flags":4, "x":34, "y":52},
@@ -118,6 +122,7 @@
{"matrix":[4,18], "flags":4, "x":203, "y":52},
{"matrix":[4,19], "flags":4, "x":214, "y":52},
{"matrix":[4,20], "flags":4, "x":224, "y":58},
+
{"matrix":[5,0], "flags":1, "x":1, "y":64},
{"matrix":[5,1], "flags":1, "x":14, "y":64},
{"matrix":[5,2], "flags":1, "x":27, "y":64},
@@ -130,7 +135,20 @@
{"matrix":[5,15], "flags":1, "x":169, "y":64},
{"matrix":[5,16], "flags":1, "x":180, "y":64},
{"matrix":[5,17], "flags":4, "x":198, "y":64},
- {"matrix":[5,18], "flags":4, "x":214, "y":64}
+ {"matrix":[5,18], "flags":4, "x":214, "y":64},
+
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4},
+ {"flags":4}
]
}
}
diff --git a/keyboards/keychron/x3/ansi/red/red.c b/keyboards/keychron/x3/ansi/red/red.c
index 4c3123feaad6..550326840d6e 100755
--- a/keyboards/keychron/x3/ansi/red/red.c
+++ b/keyboards/keychron/x3/ansi/red/red.c
@@ -132,5 +132,18 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, G_13},
{0, G_11},
{0, G_12},
+
+ {0, I_1 },
+ {0, I_2 },
+ {0, I_3 },
+ {0, I_4 },
+ {0, I_5 },
+ {0, I_6 },
+ {0, I_7 },
+ {0, I_8 },
+ {0, I_9 },
+ {0, I_10},
+ {0, I_11},
+ {0, I_12},
};
#endif
From 2a437ab046001f04ea4b9b86703e9aca57d26532 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Fri, 20 Oct 2023 09:23:57 +0800
Subject: [PATCH 14/27] Add x5 x6
---
keyboards/keychron/x0/ansi/red/config.h | 2 +-
keyboards/keychron/x0/ansi/red/info.json | 3 +-
.../x0/ansi/red/keymaps/default/keymap.c | 2 +-
.../x0/ansi/red/keymaps/default/rules.mk | 1 -
.../x0/ansi/red/keymaps/keychron/keymap.c | 2 +-
.../x0/ansi/red/keymaps/keychron/rules.mk | 1 -
.../keychron/x0/ansi/red/keymaps/via/keymap.c | 2 +-
.../keychron/x0/ansi/red/keymaps/via/rules.mk | 1 -
.../keychron/x0/via_json/x0_ansi_red.json | 130 ++-------
keyboards/keychron/x1/config.h | 2 +-
keyboards/keychron/x1/x1.c | 8 +-
keyboards/keychron/x5/ansi/red/config.h | 41 +++
keyboards/keychron/x5/ansi/red/info.json | 119 ++++++++
.../x5/ansi/red/keymaps/default/keymap.c | 61 ++++
.../x5/ansi/red/keymaps/keychron/keymap.c | 77 +++++
.../x5/ansi/red/keymaps/keychron/rules.mk | 3 +
.../keychron/x5/ansi/red/keymaps/via/keymap.c | 61 ++++
.../keychron/x5/ansi/red/keymaps/via/rules.mk | 1 +
keyboards/keychron/x5/ansi/red/red.c | 114 ++++++++
keyboards/keychron/x5/ansi/red/rules.mk | 1 +
keyboards/keychron/x5/config.h | 37 +++
keyboards/keychron/x5/halconf.h | 24 ++
keyboards/keychron/x5/info.json | 123 ++++++++
keyboards/keychron/x5/mcuconf.h | 34 +++
keyboards/keychron/x5/readme.md | 26 ++
.../keychron/x5/via_json/x5_ansi_red.json | 220 ++++++++++++++
keyboards/keychron/x5/x5.c | 71 +++++
keyboards/keychron/x6/ansi/red/config.h | 41 +++
keyboards/keychron/x6/ansi/red/info.json | 140 +++++++++
.../x6/ansi/red/keymaps/default/keymap.c | 61 ++++
.../x6/ansi/red/keymaps/keychron/keymap.c | 77 +++++
.../x6/ansi/red/keymaps/keychron/rules.mk | 3 +
.../keychron/x6/ansi/red/keymaps/via/keymap.c | 61 ++++
.../keychron/x6/ansi/red/keymaps/via/rules.mk | 1 +
keyboards/keychron/x6/ansi/red/red.c | 136 +++++++++
keyboards/keychron/x6/ansi/red/rules.mk | 1 +
keyboards/keychron/x6/config.h | 37 +++
keyboards/keychron/x6/halconf.h | 21 ++
keyboards/keychron/x6/info.json | 144 ++++++++++
keyboards/keychron/x6/mcuconf.h | 34 +++
keyboards/keychron/x6/readme.md | 26 ++
.../keychron/x6/via_json/x6_ansi_red.json | 271 ++++++++++++++++++
keyboards/keychron/x6/x6.c | 83 ++++++
43 files changed, 2179 insertions(+), 125 deletions(-)
delete mode 100755 keyboards/keychron/x0/ansi/red/keymaps/default/rules.mk
create mode 100755 keyboards/keychron/x5/ansi/red/config.h
create mode 100755 keyboards/keychron/x5/ansi/red/info.json
create mode 100755 keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/x5/ansi/red/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/x5/ansi/red/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/x5/ansi/red/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/x5/ansi/red/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/x5/ansi/red/red.c
create mode 100755 keyboards/keychron/x5/ansi/red/rules.mk
create mode 100755 keyboards/keychron/x5/config.h
create mode 100755 keyboards/keychron/x5/halconf.h
create mode 100755 keyboards/keychron/x5/info.json
create mode 100755 keyboards/keychron/x5/mcuconf.h
create mode 100755 keyboards/keychron/x5/readme.md
create mode 100644 keyboards/keychron/x5/via_json/x5_ansi_red.json
create mode 100755 keyboards/keychron/x5/x5.c
create mode 100755 keyboards/keychron/x6/ansi/red/config.h
create mode 100755 keyboards/keychron/x6/ansi/red/info.json
create mode 100755 keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
create mode 100755 keyboards/keychron/x6/ansi/red/keymaps/keychron/keymap.c
create mode 100755 keyboards/keychron/x6/ansi/red/keymaps/keychron/rules.mk
create mode 100755 keyboards/keychron/x6/ansi/red/keymaps/via/keymap.c
create mode 100755 keyboards/keychron/x6/ansi/red/keymaps/via/rules.mk
create mode 100755 keyboards/keychron/x6/ansi/red/red.c
create mode 100755 keyboards/keychron/x6/ansi/red/rules.mk
create mode 100755 keyboards/keychron/x6/config.h
create mode 100755 keyboards/keychron/x6/halconf.h
create mode 100755 keyboards/keychron/x6/info.json
create mode 100755 keyboards/keychron/x6/mcuconf.h
create mode 100755 keyboards/keychron/x6/readme.md
create mode 100755 keyboards/keychron/x6/via_json/x6_ansi_red.json
create mode 100755 keyboards/keychron/x6/x6.c
diff --git a/keyboards/keychron/x0/ansi/red/config.h b/keyboards/keychron/x0/ansi/red/config.h
index 13fd2f240849..09300afa7dcb 100755
--- a/keyboards/keychron/x0/ansi/red/config.h
+++ b/keyboards/keychron/x0/ansi/red/config.h
@@ -24,7 +24,7 @@
/* RGB Matrix Configuration */
# define LED_MATRIX_LED_COUNT 35
# define LED_MATRIX_CENTER \
- { 56, 32 }
+ { 28, 16 }
/* Scan phase of led driver set as MSKPHASE_6CHANNEL(defined as 0x03 in CKLED2001.h) */
# define PHASE_CHANNEL MSKPHASE_6CHANNEL
diff --git a/keyboards/keychron/x0/ansi/red/info.json b/keyboards/keychron/x0/ansi/red/info.json
index 8b0323569255..8a8d5b1ff132 100755
--- a/keyboards/keychron/x0/ansi/red/info.json
+++ b/keyboards/keychron/x0/ansi/red/info.json
@@ -66,7 +66,8 @@
{"matrix":[5, 2], "flags":1, "x":25, "y":32},
{"matrix":[5, 3], "flags":1, "x":35, "y":32},
{"matrix":[5, 4], "flags":1, "x":44, "y":32},
- {"matrix":[5, 5], "flags":1, "x":56, "y":32}
+
+ {"flags":1}
]
}
}
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
index e966f8f32c5a..4575f9c5553b 100755
--- a/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V,
- KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_ENT),
+ KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_SPC),
[WIN_FN] = LAYOUT(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, _______,
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/default/rules.mk b/keyboards/keychron/x0/ansi/red/keymaps/default/rules.mk
deleted file mode 100755
index ee325681483f..000000000000
--- a/keyboards/keychron/x0/ansi/red/keymaps/default/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
index ee26e55d9b7c..9d107ea61935 100755
--- a/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V,
- KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_ENT),
+ KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_SPC),
[WIN_FN] = LAYOUT(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, _______,
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x0/ansi/red/keymaps/keychron/rules.mk
index 936769ddc6e2..3c9fcc5c98c2 100755
--- a/keyboards/keychron/x0/ansi/red/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/x0/ansi/red/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x0/ansi/red/keymaps/via/keymap.c
index b7be966374ca..c7680b54344c 100755
--- a/keyboards/keychron/x0/ansi/red/keymaps/via/keymap.c
+++ b/keyboards/keychron/x0/ansi/red/keymaps/via/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V,
- KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_ENT),
+ KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_SPC),
[WIN_FN] = LAYOUT(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, _______,
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x0/ansi/red/keymaps/via/rules.mk
index f1adcab005e8..1e5b99807cb7 100755
--- a/keyboards/keychron/x0/ansi/red/keymaps/via/rules.mk
+++ b/keyboards/keychron/x0/ansi/red/keymaps/via/rules.mk
@@ -1,2 +1 @@
VIA_ENABLE = yes
-ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keychron/x0/via_json/x0_ansi_red.json b/keyboards/keychron/x0/via_json/x0_ansi_red.json
index a3b21c96fc8c..94b902bcbe56 100644
--- a/keyboards/keychron/x0/via_json/x0_ansi_red.json
+++ b/keyboards/keychron/x0/via_json/x0_ansi_red.json
@@ -25,40 +25,19 @@
},
"0,0\nESC",
{
- "x": 0.25,
+ "x": 1,
"c": "#cccccc"
},
"0,1",
"0,2",
"0,3",
"0,4",
- {
- "x": 0.25
- },
- "0,5",
- "0,6",
- "0,7",
- "0,8",
- {
- "x": 0.25
- },
- "0,9",
- "0,10",
- "0,11",
- "0,12",
- {
- "x": 0.25,
- "c": "#aaaaaa"
- },
- "0,13",
- {
- "x": 0.25
- },
- "0,14\n\n\n\n\n\n\n\n\ne0"
+ "0,5"
],
[
{
- "y": 0.25
+ "y": 0.25,
+ "c": "#aaaaaa"
},
"1,0",
{
@@ -69,25 +48,11 @@
"1,3",
"1,4",
"1,5",
- "1,6",
- "1,7",
- "1,8",
- "1,9",
- "1,10",
- "1,11",
- "1,12",
- {
- "c": "#aaaaaa",
- "w": 2
- },
- "1,13",
- {
- "x": 0.25
- },
- "1,14"
+ "1,6"
],
[
{
+ "c": "#aaaaaa",
"w": 1.5
},
"2,0",
@@ -98,26 +63,14 @@
"2,2",
"2,3",
"2,4",
- "2,5",
- "2,6",
- "2,7",
- "2,8",
- "2,9",
- "2,10",
- "2,11",
- "2,12",
{
- "c": "#aaaaaa",
"w": 1.5
},
- "2,13",
- {
- "x": 0.25
- },
- "2,14"
+ "2,5"
],
[
{
+ "c": "#aaaaaa",
"w": 1.75
},
"3,0",
@@ -128,26 +81,14 @@
"3,2",
"3,3",
"3,4",
- "3,5",
- "3,6",
- "3,7",
- "3,8",
- "3,9",
- "3,10",
- "3,11",
- {
- "c": "#777777",
- "w": 2.25
- },
- "3,13",
{
- "x": 0.25,
- "c": "#aaaaaa"
+ "w": 1.25
},
- "3,14"
+ "3,5"
],
[
{
+ "c": "#aaaaaa",
"w": 2.25
},
"4,0",
@@ -157,63 +98,28 @@
"4,2",
"4,3",
"4,4",
- "4,5",
- "4,6",
- "4,7",
- "4,8",
- "4,9",
- "4,10",
- "4,11",
{
- "c": "#aaaaaa",
"w": 1.75
},
- "4,13"
- ],
- [
- {
- "y": -0.75,
- "x": 14.25,
- "c": "#777777"
- },
- "4,14"
+ "4,5"
],
[
{
- "y": -0.25,
"c": "#aaaaaa",
- "w": 1.25
+ "w": 1.5
},
"5,0",
{
- "w": 1.25
- },
- "5,1",
- {
- "w": 1.25
+ "x": 1.25
},
"5,2",
+ "5,3",
+ "5,4",
{
- "c": "#cccccc",
- "w": 6.25
- },
- "5,6",
- {
- "c": "#aaaaaa"
- },
- "5,10",
- "5,11",
- "5,12"
- ],
- [
- {
- "y": -0.75,
- "x": 13.25,
+ "x": 0.25,
"c": "#777777"
},
- "5,13",
- "5,14",
- "5,15"
+ "5,5"
]
]
}
diff --git a/keyboards/keychron/x1/config.h b/keyboards/keychron/x1/config.h
index 5c6fef23d31e..cedfa320222d 100755
--- a/keyboards/keychron/x1/config.h
+++ b/keyboards/keychron/x1/config.h
@@ -26,7 +26,7 @@
/* Winlock indicator */
#define LED_WIN_LOCK_PIN C10
-#define LED_PIN_ON_STATE 1
+#define LED_WIN_LOCK_PIN_ON_STATE 1
/* User used eeprom */
#define EECONFIG_USER_DATA_SIZE 1
diff --git a/keyboards/keychron/x1/x1.c b/keyboards/keychron/x1/x1.c
index 80edadabe0f4..86a358707972 100755
--- a/keyboards/keychron/x1/x1.c
+++ b/keyboards/keychron/x1/x1.c
@@ -18,8 +18,8 @@
static uint8_t win_lock_state = 0;
-#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE)
-#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_WIN_LOCK_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_WIN_LOCK_PIN_ON_STATE)
static void set_led_win_lock_state(void) {
if (win_lock_state) {
@@ -65,9 +65,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
win_lock_state = !win_lock_state;
eeconfig_update_user_datablock(&win_lock_state);
if (win_lock_state) {
- writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE);
+ SET_LED_WIN_LOCK_ON;
} else {
- writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE);
+ SET_LED_WIN_LOCK_OFF;
}
}
return true;
diff --git a/keyboards/keychron/x5/ansi/red/config.h b/keyboards/keychron/x5/ansi/red/config.h
new file mode 100755
index 000000000000..0c82946cd8fc
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/config.h
@@ -0,0 +1,41 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 82
+
+/* Scan phase of led driver set as MSKPHASE_6CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_6CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/x5/ansi/red/info.json b/keyboards/keychron/x5/ansi/red/info.json
new file mode 100755
index 000000000000..ab2eb5656533
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/info.json
@@ -0,0 +1,119 @@
+{
+ "usb": {
+ "pid": "0x0250",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true,
+ "effect_max": true
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 1], "flags":1, "x":18, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":33, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":48, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":62, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":81, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":125, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":143, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":158, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":173, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":187, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":206, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":224, "y":0},
+
+ {"matrix":[1, 0], "flags":1, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":15, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":29, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":44, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":59, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":73, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":88, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":103, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":118, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":132, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":147, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":162, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":176, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":198, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":224, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":4, "y":26},
+ {"matrix":[2, 1], "flags":4, "x":22, "y":26},
+ {"matrix":[2, 2], "flags":4, "x":37, "y":26},
+ {"matrix":[2, 3], "flags":4, "x":51, "y":26},
+ {"matrix":[2, 4], "flags":4, "x":66, "y":26},
+ {"matrix":[2, 5], "flags":4, "x":81, "y":26},
+ {"matrix":[2, 6], "flags":4, "x":95, "y":26},
+ {"matrix":[2, 7], "flags":4, "x":110, "y":26},
+ {"matrix":[2, 8], "flags":4, "x":125, "y":26},
+ {"matrix":[2, 9], "flags":4, "x":140, "y":26},
+ {"matrix":[2, 10], "flags":4, "x":154, "y":26},
+ {"matrix":[2, 11], "flags":4, "x":169, "y":26},
+ {"matrix":[2, 12], "flags":4, "x":184, "y":26},
+ {"matrix":[2, 13], "flags":1, "x":202, "y":26},
+ {"matrix":[2, 14], "flags":1, "x":224, "y":26},
+
+ {"matrix":[3, 0], "flags":8, "x":6, "y":38},
+ {"matrix":[3, 1], "flags":4, "x":26, "y":38},
+ {"matrix":[3, 2], "flags":4, "x":40, "y":38},
+ {"matrix":[3, 3], "flags":4, "x":55, "y":38},
+ {"matrix":[3, 4], "flags":4, "x":70, "y":38},
+ {"matrix":[3, 5], "flags":4, "x":84, "y":38},
+ {"matrix":[3, 6], "flags":4, "x":99, "y":38},
+ {"matrix":[3, 7], "flags":4, "x":114, "y":38},
+ {"matrix":[3, 8], "flags":4, "x":129, "y":38},
+ {"matrix":[3, 9], "flags":4, "x":143, "y":38},
+ {"matrix":[3, 10], "flags":4, "x":158, "y":38},
+ {"matrix":[3, 11], "flags":4, "x":173, "y":38},
+ {"matrix":[3, 12], "flags":1, "x":196, "y":38},
+ {"matrix":[3, 14], "flags":1, "x":224, "y":38},
+
+ {"matrix":[4, 0], "flags":1, "x":9, "y":49},
+ {"matrix":[4, 1], "flags":4, "x":33, "y":49},
+ {"matrix":[4, 2], "flags":4, "x":48, "y":49},
+ {"matrix":[4, 3], "flags":4, "x":62, "y":49},
+ {"matrix":[4, 4], "flags":4, "x":77, "y":49},
+ {"matrix":[4, 5], "flags":4, "x":92, "y":49},
+ {"matrix":[4, 6], "flags":4, "x":106, "y":49},
+ {"matrix":[4, 7], "flags":4, "x":121, "y":49},
+ {"matrix":[4, 8], "flags":4, "x":136, "y":49},
+ {"matrix":[4, 9] , "flags":4, "x":151, "y":49},
+ {"matrix":[4, 10], "flags":4, "x":165, "y":49},
+ {"matrix":[4, 11], "flags":1, "x":185, "y":49},
+ {"matrix":[4, 12], "flags":1, "x":209, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":2, "y":61},
+ {"matrix":[5, 1], "flags":1, "x":20, "y":61},
+ {"matrix":[5, 2], "flags":1, "x":39, "y":61},
+ {"matrix":[5, 5], "flags":4, "x":94, "y":61},
+ {"matrix":[5, 9], "flags":1, "x":147, "y":61},
+ {"matrix":[5, 10], "flags":1, "x":162, "y":61},
+ {"matrix":[5, 11], "flags":1, "x":176, "y":61},
+ {"matrix":[5, 12], "flags":1, "x":195, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":209, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
new file mode 100755
index 000000000000..9f2a1daddaae
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 202 @ 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
+
+enum layers{
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_82_ansi(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ 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_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_82_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x5/ansi/red/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..42be842fe864
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_82_ansi(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ 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_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_82_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x5/ansi/red/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x5/ansi/red/keymaps/via/keymap.c
new file mode 100755
index 000000000000..42423049f50b
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* 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
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_82_ansi(
+ KC_ESC, 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_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ 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_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_82_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ [WIN_L3] = LAYOUT_82_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x5/ansi/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/x5/ansi/red/red.c b/keyboards/keychron/x5/ansi/red/red.c
new file mode 100755
index 000000000000..b64272bae6de
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/red.c
@@ -0,0 +1,114 @@
+/* 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 "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, F_1 },
+ {0, F_2 },
+ {0, F_3 },
+ {0, F_4 },
+ {0, F_5 },
+ {0, F_6 },
+ {0, F_7 },
+ {0, F_8 },
+ {0, F_9 },
+ {0, F_10},
+ {0, F_11},
+ {0, F_12},
+ {0, F_13},
+ {0, F_14},
+ {0, F_15},
+
+ {0, E_1 },
+ {0, E_2 },
+ {0, E_3 },
+ {0, E_4 },
+ {0, E_5 },
+ {0, E_6 },
+ {0, E_7 },
+ {0, E_8 },
+ {0, E_9 },
+ {0, E_10},
+ {0, E_11},
+ {0, E_12},
+ {0, E_13},
+ {0, E_14},
+ {0, E_15},
+
+ {0, D_1 },
+ {0, D_2 },
+ {0, D_3 },
+ {0, D_4 },
+ {0, D_5 },
+ {0, D_6 },
+ {0, D_7 },
+ {0, D_8 },
+ {0, D_9 },
+ {0, D_10},
+ {0, D_11},
+ {0, D_12},
+ {0, D_13},
+ {0, D_14},
+ {0, D_15},
+
+ {0, C_1 },
+ {0, C_2 },
+ {0, C_3 },
+ {0, C_4 },
+ {0, C_5 },
+ {0, C_6 },
+ {0, C_7 },
+ {0, C_8 },
+ {0, C_9 },
+ {0, C_10},
+ {0, C_11},
+ {0, C_12},
+ {0, C_13},
+ {0, C_15},
+
+ {0, B_1 },
+ {0, B_2 },
+ {0, B_3 },
+ {0, B_4 },
+ {0, B_5 },
+ {0, B_6 },
+ {0, B_7 },
+ {0, B_8 },
+ {0, B_9 },
+ {0, B_10},
+ {0, B_11},
+ {0, B_12},
+ {0, B_13},
+
+ {0, A_1 },
+ {0, A_2 },
+ {0, A_3 },
+ {0, A_6 },
+ {0, A_10},
+ {0, A_11},
+ {0, A_12},
+ {0, A_13},
+ {0, A_14},
+ {0, A_15},
+};
+#endif
diff --git a/keyboards/keychron/x5/ansi/red/rules.mk b/keyboards/keychron/x5/ansi/red/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/x5/ansi/red/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/x5/config.h b/keyboards/keychron/x5/config.h
new file mode 100755
index 000000000000..ce74a8ae78b0
--- /dev/null
+++ b/keyboards/keychron/x5/config.h
@@ -0,0 +1,37 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* I2C Driver Configuration */
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* LED for WinLock indicating */
+#define LED_WIN_LOCK_PIN C9
+#define LED_WIN_LOCK_PIN_ON_STATE 1
+
+/* User used eeprom */
+#define EECONFIG_USER_DATA_SIZE 1
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
diff --git a/keyboards/keychron/x5/halconf.h b/keyboards/keychron/x5/halconf.h
new file mode 100755
index 000000000000..463d177eabc7
--- /dev/null
+++ b/keyboards/keychron/x5/halconf.h
@@ -0,0 +1,24 @@
+/* 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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
+
+#include_next
diff --git a/keyboards/keychron/x5/info.json b/keyboards/keychron/x5/info.json
new file mode 100755
index 000000000000..fd0915b23770
--- /dev/null
+++ b/keyboards/keychron/x5/info.json
@@ -0,0 +1,123 @@
+{
+ "keyboard_name": "Lemokey X5",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x362D"
+ },
+ "matrix_pins": {
+ "cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "ROW2COL",
+ "indicators": {
+ "caps_lock": "B14",
+ "num_lock": "B13",
+ "scroll_lock": "B12",
+ "on_state": 0
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "layouts": {
+ "LAYOUT_82_ansi": {
+ "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":[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.75, "y":0},
+ {"matrix":[0,10], "x":10.75, "y":0},
+ {"matrix":[0,11], "x":11.75, "y":0},
+ {"matrix":[0,12], "x":12.75, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,12], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,14], "x":15.25, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.25},
+ {"matrix":[4,1], "x":2.25, "y":4.25},
+ {"matrix":[4,2], "x":3.25, "y":4.25},
+ {"matrix":[4,3], "x":4.25, "y":4.25},
+ {"matrix":[4,4], "x":5.25, "y":4.25},
+ {"matrix":[4,5], "x":6.25, "y":4.25},
+ {"matrix":[4,6], "x":7.25, "y":4.25},
+ {"matrix":[4,7], "x":8.25, "y":4.25},
+ {"matrix":[4,8], "x":9.25, "y":4.25},
+ {"matrix":[4,9], "x":10.25, "y":4.25},
+ {"matrix":[4,10], "x":11.25, "y":4.25},
+ {"matrix":[4,11], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,12], "x":14.25, "y":4.5},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,5], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,9], "x":10, "y":5.25},
+ {"matrix":[5,10], "x":11, "y":5.25},
+ {"matrix":[5,11], "x":12, "y":5.25},
+ {"matrix":[5,12], "x":13.25, "y":5.5},
+ {"matrix":[5,13], "x":14.25, "y":5.5},
+ {"matrix":[5,14], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/x5/mcuconf.h b/keyboards/keychron/x5/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/x5/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/x5/readme.md b/keyboards/keychron/x5/readme.md
new file mode 100755
index 000000000000..a74c18f19c8c
--- /dev/null
+++ b/keyboards/keychron/x5/readme.md
@@ -0,0 +1,26 @@
+# Lemokey X5
+
+![Lemokey X5]()
+
+A customizable 75% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Lemokey X5
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/x5/ansi/red:default
+
+Flashing example for this keyboard:
+
+ make keychron/x5/ansi/red:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/x5/via_json/x5_ansi_red.json b/keyboards/keychron/x5/via_json/x5_ansi_red.json
new file mode 100644
index 000000000000..b349a6e0a11a
--- /dev/null
+++ b/keyboards/keychron/x5/via_json/x5_ansi_red.json
@@ -0,0 +1,220 @@
+{
+ "name": "Lemokey X5 ANSI Knob Red",
+ "vendorId": "0x362D",
+ "productId": "0x0250",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 16},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.25
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.25
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,13",
+ {
+ "x": 0.25
+ },
+ "0,14\n\n\n\n\n\n\n\n\ne0"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "3,14"
+ ],
+ [
+ {
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "4,13"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 14.25,
+ "c": "#777777"
+ },
+ "4,14"
+ ],
+ [
+ {
+ "y": -0.25,
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa"
+ },
+ "5,10",
+ "5,11",
+ "5,12"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13.25,
+ "c": "#777777"
+ },
+ "5,13",
+ "5,14",
+ "5,15"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/x5/x5.c b/keyboards/keychron/x5/x5.c
new file mode 100755
index 000000000000..8fa649b61902
--- /dev/null
+++ b/keyboards/keychron/x5/x5.c
@@ -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 .
+ */
+
+#include "quantum.h"
+
+static uint8_t win_lock_state = 0;
+
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_WIN_LOCK_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_WIN_LOCK_PIN_ON_STATE)
+
+static void set_led_win_lock_state(void) {
+ if (win_lock_state) {
+ SET_LED_WIN_LOCK_ON;
+ } else {
+ SET_LED_WIN_LOCK_OFF;
+ }
+}
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ win_lock_state = 0;
+ eeconfig_update_user_datablock(&win_lock_state);
+
+ eeconfig_init_user();
+}
+
+void housekeeping_task_kb() {
+ set_led_win_lock_state();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+ case GU_TOGG:
+ if (record->event.pressed) {
+ win_lock_state = !win_lock_state;
+ eeconfig_update_user_datablock(&win_lock_state);
+ }
+ return true;
+ default:
+ return true;
+ }
+}
+
+void suspend_power_down_kb(void) {
+ SET_LED_WIN_LOCK_OFF;
+
+ suspend_power_down_user();
+}
diff --git a/keyboards/keychron/x6/ansi/red/config.h b/keyboards/keychron/x6/ansi/red/config.h
new file mode 100755
index 000000000000..acc49e001a17
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/config.h
@@ -0,0 +1,41 @@
+/* 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 .
+ */
+
+#pragma once
+
+#ifdef LED_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 1
+# define DRIVER_ADDR_1 0b1110100
+
+/* RGB Matrix Configuration */
+# define LED_MATRIX_LED_COUNT 104
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
+# define PHASE_CHANNEL MSKPHASE_9CHANNEL
+# define CKLED2001_CURRENT_TUNE \
+ { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
+
+/* turn off effects when suspended */
+# define LED_DISABLE_WHEN_USB_SUSPENDED
+
+// LED Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects
+// #if defined(LED_MATRIX_KEYPRESSES) || defined(LED_MATRIX_KEYRELEASES)
+# define LED_MATRIX_KEYPRESSES
+# define LED_MATRIX_KEYRELEASES
+#endif
diff --git a/keyboards/keychron/x6/ansi/red/info.json b/keyboards/keychron/x6/ansi/red/info.json
new file mode 100755
index 000000000000..4929b60316ac
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/info.json
@@ -0,0 +1,140 @@
+{
+ "usb": {
+ "pid": "0x0220",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "led_matrix": true
+ },
+ "led_matrix": {
+ "driver": "ckled2001",
+ "animations": {
+ "none": true,
+ "solid": true,
+ "breathing": true,
+ "band_pinwheel": true,
+ "band_spiral": true,
+ "cycle_left_right": true,
+ "cycle_up_down": true,
+ "cycle_out_in": true,
+ "dual_beacon": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_multinexus": true,
+ "solid_splash": true,
+ "wave_left_right": true,
+ "wave_up_down": true
+ },
+ "layout": [
+ {"matrix":[0,0], "flags":1, "x":0, "y":0},
+ {"matrix":[0,1], "flags":1, "x":21, "y":0},
+ {"matrix":[0,2], "flags":1, "x":31, "y":0},
+ {"matrix":[0,3], "flags":1, "x":42, "y":0},
+ {"matrix":[0,4], "flags":1, "x":52, "y":0},
+ {"matrix":[0,5], "flags":1, "x":68, "y":0},
+ {"matrix":[0,6], "flags":1, "x":78, "y":0},
+ {"matrix":[0,7], "flags":1, "x":88, "y":0},
+ {"matrix":[0,8], "flags":1, "x":99, "y":0},
+ {"matrix":[0,9], "flags":1, "x":114, "y":0},
+ {"matrix":[0,10], "flags":1, "x":125, "y":0},
+ {"matrix":[0,11], "flags":1, "x":135, "y":0},
+ {"matrix":[0,12], "flags":1, "x":146, "y":0},
+ {"matrix":[0,14], "flags":1, "x":159, "y":0},
+ {"matrix":[0,15], "flags":1, "x":169, "y":0},
+ {"matrix":[0,16], "flags":1, "x":180, "y":0},
+
+ {"matrix":[1,0], "flags":1, "x":0, "y":16},
+ {"matrix":[1,1], "flags":4, "x":10, "y":16},
+ {"matrix":[1,2], "flags":4, "x":21, "y":16},
+ {"matrix":[1,3], "flags":4, "x":31, "y":16},
+ {"matrix":[1,4], "flags":4, "x":42, "y":16},
+ {"matrix":[1,5], "flags":4, "x":52, "y":16},
+ {"matrix":[1,6], "flags":4, "x":62, "y":16},
+ {"matrix":[1,7], "flags":4, "x":73, "y":16},
+ {"matrix":[1,8], "flags":4, "x":83, "y":16},
+ {"matrix":[1,9], "flags":4, "x":94, "y":16},
+ {"matrix":[1,10], "flags":4, "x":104, "y":16},
+ {"matrix":[1,11], "flags":4, "x":114, "y":16},
+ {"matrix":[1,12], "flags":4, "x":125, "y":16},
+ {"matrix":[1,13], "flags":1, "x":140, "y":16},
+ {"matrix":[1,14], "flags":1, "x":159, "y":16},
+ {"matrix":[1,15], "flags":1, "x":169, "y":16},
+ {"matrix":[1,16], "flags":1, "x":180, "y":16},
+ {"matrix":[1,17], "flags":4, "x":193, "y":16},
+ {"matrix":[1,18], "flags":4, "x":203, "y":16},
+ {"matrix":[1,19], "flags":4, "x":214, "y":16},
+ {"matrix":[1,20], "flags":4, "x":224, "y":16},
+
+ {"matrix":[2,0], "flags":1, "x":3, "y":28},
+ {"matrix":[2,1], "flags":4, "x":16, "y":28},
+ {"matrix":[2,2], "flags":4, "x":26, "y":28},
+ {"matrix":[2,3], "flags":4, "x":36, "y":28},
+ {"matrix":[2,4], "flags":4, "x":47, "y":28},
+ {"matrix":[2,5], "flags":4, "x":57, "y":28},
+ {"matrix":[2,6], "flags":4, "x":68, "y":28},
+ {"matrix":[2,7], "flags":4, "x":78, "y":28},
+ {"matrix":[2,8], "flags":4, "x":88, "y":28},
+ {"matrix":[2,9], "flags":4, "x":98, "y":28},
+ {"matrix":[2,10], "flags":4, "x":109, "y":28},
+ {"matrix":[2,11], "flags":4, "x":120, "y":28},
+ {"matrix":[2,12], "flags":4, "x":130, "y":28},
+ {"matrix":[2,13], "flags":1, "x":143, "y":28},
+ {"matrix":[2,14], "flags":1, "x":159, "y":28},
+ {"matrix":[2,15], "flags":1, "x":169, "y":28},
+ {"matrix":[2,16], "flags":1, "x":180, "y":28},
+ {"matrix":[2,17], "flags":4, "x":193, "y":28},
+ {"matrix":[2,18], "flags":4, "x":203, "y":28},
+ {"matrix":[2,19], "flags":4, "x":214, "y":28},
+ {"matrix":[2,20], "flags":4, "x":224, "y":34},
+
+ {"matrix":[3,0], "flags":1, "x":4, "y":40},
+ {"matrix":[3,1], "flags":4, "x":18, "y":40},
+ {"matrix":[3,2], "flags":4, "x":29, "y":40},
+ {"matrix":[3,3], "flags":4, "x":39, "y":40},
+ {"matrix":[3,4], "flags":4, "x":49, "y":40},
+ {"matrix":[3,5], "flags":4, "x":60, "y":40},
+ {"matrix":[3,6], "flags":4, "x":70, "y":40},
+ {"matrix":[3,7], "flags":4, "x":81, "y":40},
+ {"matrix":[3,8], "flags":4, "x":91, "y":40},
+ {"matrix":[3,9], "flags":4, "x":101, "y":40},
+ {"matrix":[3,10], "flags":4, "x":112, "y":40},
+ {"matrix":[3,11], "flags":4, "x":122, "y":40},
+ {"matrix":[3,13], "flags":1, "x":139, "y":40},
+ {"matrix":[3,17], "flags":4, "x":193, "y":40},
+ {"matrix":[3,18], "flags":4, "x":203, "y":40},
+ {"matrix":[3,19], "flags":4, "x":214, "y":40},
+
+ {"matrix":[4,0], "flags":1, "x":7, "y":52},
+ {"matrix":[4,2], "flags":4, "x":23, "y":52},
+ {"matrix":[4,3], "flags":4, "x":34, "y":52},
+ {"matrix":[4,4], "flags":4, "x":44, "y":52},
+ {"matrix":[4,5], "flags":4, "x":55, "y":52},
+ {"matrix":[4,6], "flags":4, "x":65, "y":52},
+ {"matrix":[4,7], "flags":4, "x":75, "y":52},
+ {"matrix":[4,8], "flags":4, "x":86, "y":52},
+ {"matrix":[4,9], "flags":4, "x":96, "y":52},
+ {"matrix":[4,10], "flags":4, "x":107, "y":52},
+ {"matrix":[4,11], "flags":4, "x":117, "y":52},
+ {"matrix":[4,13], "flags":1, "x":137, "y":52},
+ {"matrix":[4,15], "flags":1, "x":169, "y":52},
+ {"matrix":[4,17], "flags":4, "x":193, "y":52},
+ {"matrix":[4,18], "flags":4, "x":203, "y":52},
+ {"matrix":[4,19], "flags":4, "x":214, "y":52},
+ {"matrix":[4,20], "flags":4, "x":224, "y":58},
+
+ {"matrix":[5,0], "flags":1, "x":1, "y":64},
+ {"matrix":[5,1], "flags":1, "x":14, "y":64},
+ {"matrix":[5,2], "flags":1, "x":27, "y":64},
+ {"matrix":[5,6], "flags":4, "x":66, "y":64},
+ {"matrix":[5,10], "flags":1, "x":105, "y":64},
+ {"matrix":[5,11], "flags":1, "x":118, "y":64},
+ {"matrix":[5,12], "flags":1, "x":131, "y":64},
+ {"matrix":[5,13], "flags":1, "x":144, "y":64},
+ {"matrix":[5,14], "flags":1, "x":159, "y":64},
+ {"matrix":[5,15], "flags":1, "x":169, "y":64},
+ {"matrix":[5,16], "flags":1, "x":180, "y":64},
+ {"matrix":[5,17], "flags":4, "x":198, "y":64},
+ {"matrix":[5,18], "flags":4, "x":214, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
new file mode 100755
index 000000000000..cf7d70a1fa55
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 202 @ 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
+
+enum layers{
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x6/ansi/red/keymaps/keychron/keymap.c
new file mode 100755
index 000000000000..8d3cd1aaedef
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/keymaps/keychron/keymap.c
@@ -0,0 +1,77 @@
+/* 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"
+#include "keychron_ft_common.h"
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
+
+// clang-format on
+
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/keychron/rules.mk b/keyboards/keychron/x6/ansi/red/keymaps/keychron/rules.mk
new file mode 100755
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x6/ansi/red/keymaps/via/keymap.c
new file mode 100755
index 000000000000..01e9a4d6ff2c
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* 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
+
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_104_ansi(
+ KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+
+ [WIN_FN] = LAYOUT_104_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_L2] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_104_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/via/rules.mk b/keyboards/keychron/x6/ansi/red/keymaps/via/rules.mk
new file mode 100755
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/x6/ansi/red/red.c b/keyboards/keychron/x6/ansi/red/red.c
new file mode 100755
index 000000000000..4c3123feaad6
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/red.c
@@ -0,0 +1,136 @@
+/* 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 "quantum.h"
+
+#ifdef LED_MATRIX_ENABLE
+// clang-format off
+const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
+/* Refer to CKLED2001 manual for these locations
+ * driver
+ * | LED address
+ * | | */
+ {0, F_1 },
+ {0, F_2 },
+ {0, F_3 },
+ {0, F_4 },
+ {0, F_5 },
+ {0, F_6 },
+ {0, F_7 },
+ {0, F_8 },
+ {0, F_9 },
+ {0, F_10},
+ {0, F_11},
+ {0, F_12},
+ {0, F_13},
+ {0, F_15},
+ {0, F_16},
+ {0, G_1 },
+
+ {0, E_1 },
+ {0, E_2 },
+ {0, E_3 },
+ {0, E_4 },
+ {0, E_5 },
+ {0, E_6 },
+ {0, E_7 },
+ {0, E_8 },
+ {0, E_9 },
+ {0, E_10},
+ {0, E_11},
+ {0, E_12},
+ {0, E_13},
+ {0, E_14},
+ {0, E_15},
+ {0, E_16},
+ {0, H_1 },
+ {0, H_2 },
+ {0, H_3 },
+ {0, H_4 },
+ {0, H_5 },
+
+ {0, D_1 },
+ {0, D_2 },
+ {0, D_3 },
+ {0, D_4 },
+ {0, D_5 },
+ {0, D_6 },
+ {0, D_7 },
+ {0, D_8 },
+ {0, D_9 },
+ {0, D_10},
+ {0, D_11},
+ {0, D_12},
+ {0, D_13},
+ {0, D_14},
+ {0, D_15},
+ {0, D_16},
+ {0, G_6 },
+ {0, G_7 },
+ {0, G_8 },
+ {0, G_9 },
+ {0, G_10},
+
+ {0, C_1 },
+ {0, C_2 },
+ {0, C_3 },
+ {0, C_4 },
+ {0, C_5 },
+ {0, C_6 },
+ {0, C_7 },
+ {0, C_8 },
+ {0, C_9 },
+ {0, C_10},
+ {0, C_11},
+ {0, C_12},
+ {0, C_14},
+ {0, H_7 },
+ {0, H_8 },
+ {0, H_9 },
+
+ {0, B_1 },
+ {0, B_3 },
+ {0, B_4 },
+ {0, B_5 },
+ {0, B_6 },
+ {0, B_7 },
+ {0, B_8 },
+ {0, B_9 },
+ {0, B_10},
+ {0, B_11},
+ {0, B_12},
+ {0, B_14},
+ {0, B_16},
+ {0, H_6 },
+ {0, H_11},
+ {0, H_12},
+ {0, H_10},
+
+ {0, A_1 },
+ {0, A_2 },
+ {0, A_3 },
+ {0, A_7 },
+ {0, A_11},
+ {0, A_12},
+ {0, A_13},
+ {0, A_14},
+ {0, A_15},
+ {0, A_16},
+ {0, G_13},
+ {0, G_11},
+ {0, G_12},
+};
+#endif
diff --git a/keyboards/keychron/x6/ansi/red/rules.mk b/keyboards/keychron/x6/ansi/red/rules.mk
new file mode 100755
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/keychron/x6/ansi/red/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/keychron/x6/config.h b/keyboards/keychron/x6/config.h
new file mode 100755
index 000000000000..5e5e0e31788a
--- /dev/null
+++ b/keyboards/keychron/x6/config.h
@@ -0,0 +1,37 @@
+/* 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 .
+ */
+
+#pragma once
+
+/* I2C Driver Configuration */
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+/* Winlock indicator */
+#define LED_WIN_LOCK_PIN A5
+#define LED_PIN_ON_STATE 1
+
+/* User used eeprom */
+#define EECONFIG_USER_DATA_SIZE 1
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
diff --git a/keyboards/keychron/x6/halconf.h b/keyboards/keychron/x6/halconf.h
new file mode 100755
index 000000000000..41bddcb2799b
--- /dev/null
+++ b/keyboards/keychron/x6/halconf.h
@@ -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 .
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/keychron/x6/info.json b/keyboards/keychron/x6/info.json
new file mode 100755
index 000000000000..a33a54a59018
--- /dev/null
+++ b/keyboards/keychron/x6/info.json
@@ -0,0 +1,144 @@
+{
+ "keyboard_name": "Lemokey X6",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "processor": "STM32F401",
+ "bootloader": "stm32-dfu",
+ "usb": {
+ "vid": "0x362D"
+ },
+ "matrix_pins": {
+ "cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "ROW2COL",
+ "indicators": {
+ "caps_lock": "A3",
+ "scroll_lock": "A6",
+ "num_lock": "A4"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "layouts": {
+ "LAYOUT_104_ansi": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,1], "x":2, "y":0},
+ {"matrix":[0,2], "x":3, "y":0},
+ {"matrix":[0,3], "x":4, "y":0},
+ {"matrix":[0,4], "x":5, "y":0},
+ {"matrix":[0,5], "x":6.5, "y":0},
+ {"matrix":[0,6], "x":7.5, "y":0},
+ {"matrix":[0,7], "x":8.5, "y":0},
+ {"matrix":[0,8], "x":9.5, "y":0},
+ {"matrix":[0,9], "x":11, "y":0},
+ {"matrix":[0,10], "x":12, "y":0},
+ {"matrix":[0,11], "x":13, "y":0},
+ {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,17], "x":18.5, "y":1.25},
+ {"matrix":[1,18], "x":19.5, "y":1.25},
+ {"matrix":[1,19], "x":20.5, "y":1.25},
+ {"matrix":[1,20], "x":21.5, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,17], "x":18.5, "y":2.25},
+ {"matrix":[2,18], "x":19.5, "y":2.25},
+ {"matrix":[2,19], "x":20.5, "y":2.25},
+ {"matrix":[2,20], "x":21.5, "y":2.25, "h":2},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,17], "x":18.5, "y":3.25},
+ {"matrix":[3,18], "x":19.5, "y":3.25},
+ {"matrix":[3,19], "x":20.5, "y":3.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,17], "x":18.5, "y":4.25},
+ {"matrix":[4,18], "x":19.5, "y":4.25},
+ {"matrix":[4,19], "x":20.5, "y":4.25},
+ {"matrix":[4,20], "x":21.5, "y":4.25, "h":2},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25},
+ {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
+ {"matrix":[5,18], "x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keychron/x6/mcuconf.h b/keyboards/keychron/x6/mcuconf.h
new file mode 100755
index 000000000000..494b71483ff9
--- /dev/null
+++ b/keyboards/keychron/x6/mcuconf.h
@@ -0,0 +1,34 @@
+/* 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 .
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 8
+#undef STM32_PLLN_VALUE
+#define STM32_PLLN_VALUE 168
+#undef STM32_PLLP_VALUE
+#define STM32_PLLP_VALUE 4
+#undef STM32_PLLQ_VALUE
+#define STM32_PLLQ_VALUE 7
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/keychron/x6/readme.md b/keyboards/keychron/x6/readme.md
new file mode 100755
index 000000000000..f4a0f5aa5dc3
--- /dev/null
+++ b/keyboards/keychron/x6/readme.md
@@ -0,0 +1,26 @@
+# Lemokey X6
+
+![Lemokey X6]()
+
+A customizable 96% low profile keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Lemokey X6
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/x6/ansi/red:default
+
+Flashing example for this keyboard:
+
+ make keychron/x6/ansi/red:default:flash
+
+## bootloader
+
+Enter the bootloader in two ways:
+
+* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
+* **Physical reset button**: Briefly press the RESET button under the spacebar.
+
+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).
diff --git a/keyboards/keychron/x6/via_json/x6_ansi_red.json b/keyboards/keychron/x6/via_json/x6_ansi_red.json
new file mode 100755
index 000000000000..933d384b5088
--- /dev/null
+++ b/keyboards/keychron/x6/via_json/x6_ansi_red.json
@@ -0,0 +1,271 @@
+{
+ "name": "Lemokey X6 ANSI Red",
+ "vendorId": "0x362D",
+ "productId": "0x0260",
+ "keycodes": ["qmk_lighting"],
+ "customKeycodes": [
+ {"name": "Mission Control","title": "Mission Control in macOS","shortName": "MCtrl"},
+ {"name": "Launch Pad","title": "Launch Pad in macOS","shortName": "LPad"},
+ {"name": "Left Option","title": "Left Option in macOS","shortName": "LOpt"},
+ {"name": "Right Option","title": "Right Option in macOS","shortName": "ROpt"},
+ {"name": "Left Cmd","title": "Left Command in macOS","shortName": "LCmd"},
+ {"name": "Right Cmd","title": "Right Command in macOS","shortName": "RCmd"},
+ {"name": "Siri","title": "Siri in macOS","shortName": "Siri"},
+ {"name": "Task View","title": "Task View in windows","shortName": "Task"},
+ {"name": "File Explorer","title": "File Explorer in windows","shortName": "File"},
+ {"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
+ {"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols": 21},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0\nESC",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,5",
+ "0,6",
+ "0,7",
+ "0,8",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,9",
+ "0,10",
+ "0,11",
+ "0,12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "1,17",
+ "1,18",
+ "1,19",
+ "1,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "2,17",
+ "2,18",
+ "2,19",
+ {
+ "h": 2
+ },
+ "2,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13",
+ {
+ "x": 3.5,
+ "c": "#cccccc"
+ },
+ "3,17",
+ "3,18",
+ "3,19"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#777777"
+ },
+ "4,15",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,17",
+ "4,18",
+ "4,19",
+ {
+ "c": "#777777",
+ "h": 2
+ },
+ "4,20"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#cccccc",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#777777"
+ },
+ "5,14",
+ "5,15",
+ "5,16",
+ {
+ "x": 0.25,
+ "c": "#cccccc",
+ "w": 2
+ },
+ "5,17",
+ "5,18"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/keychron/x6/x6.c b/keyboards/keychron/x6/x6.c
new file mode 100755
index 000000000000..80edadabe0f4
--- /dev/null
+++ b/keyboards/keychron/x6/x6.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 "quantum.h"
+
+static uint8_t win_lock_state = 0;
+
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE)
+
+static void set_led_win_lock_state(void) {
+ if (win_lock_state) {
+ SET_LED_WIN_LOCK_ON;
+ } else {
+ SET_LED_WIN_LOCK_OFF;
+ }
+}
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ win_lock_state = 0;
+ eeconfig_update_user_datablock(&win_lock_state);
+
+ eeconfig_init_user();
+}
+
+void keyboard_post_init_kb(void) {
+ setPinOutputPushPull(LED_WIN_LOCK_PIN);
+ eeconfig_read_user_datablock(&win_lock_state);
+
+ keyboard_post_init_user();
+}
+
+void housekeeping_task_kb() {
+ set_led_win_lock_state();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+ case GU_TOGG:
+ if (record->event.pressed) {
+ win_lock_state = !win_lock_state;
+ eeconfig_update_user_datablock(&win_lock_state);
+ if (win_lock_state) {
+ writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE);
+ } else {
+ writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE);
+ }
+ }
+ return true;
+ default:
+ return true;
+ }
+}
+
+void suspend_power_down_kb(void) {
+ SET_LED_WIN_LOCK_OFF;
+
+ suspend_power_down_user();
+}
From d194ffc24fdeb9573e80be1b527f50f057bf6dd7 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Fri, 20 Oct 2023 14:24:37 +0800
Subject: [PATCH 15/27] Update x5 x6
---
.../x5/ansi/red/keymaps/default/keymap.c | 10 +-
.../x5/ansi/red/keymaps/keychron/keymap.c | 10 +-
.../keychron/x5/ansi/red/keymaps/via/keymap.c | 10 +-
keyboards/keychron/x5/info.json | 2 -
.../keychron/x5/via_json/x5_ansi_red.json | 32 +--
keyboards/keychron/x5/x5.c | 7 +
keyboards/keychron/x6/ansi/red/config.h | 4 +-
keyboards/keychron/x6/ansi/red/info.json | 203 +++++++++---------
.../x6/ansi/red/keymaps/default/keymap.c | 66 +++---
.../x6/ansi/red/keymaps/keychron/keymap.c | 56 ++---
.../keychron/x6/ansi/red/keymaps/via/keymap.c | 56 ++---
keyboards/keychron/x6/ansi/red/red.c | 47 ++--
keyboards/keychron/x6/config.h | 4 +-
keyboards/keychron/x6/info.json | 104 +++++----
.../keychron/x6/via_json/x6_ansi_red.json | 114 +++++-----
keyboards/keychron/x6/x6.c | 8 +-
16 files changed, 356 insertions(+), 377 deletions(-)
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
index 9f2a1daddaae..2142c52e65d9 100755
--- a/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
@@ -29,15 +29,15 @@ enum layers{
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_BASE] = LAYOUT_82_ansi(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
- 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_PGUP,
- 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_PGDN,
+ KC_ESC, 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_PSCR, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_82_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x5/ansi/red/keymaps/keychron/keymap.c
index 42be842fe864..2edcdfb226ce 100755
--- a/keyboards/keychron/x5/ansi/red/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/x5/ansi/red/keymaps/keychron/keymap.c
@@ -28,15 +28,15 @@ enum layers {
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_BASE] = LAYOUT_82_ansi(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
- 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_PGUP,
- 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_PGDN,
+ KC_ESC, 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_PSCR, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_82_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x5/ansi/red/keymaps/via/keymap.c
index 42423049f50b..51417d302ec4 100755
--- a/keyboards/keychron/x5/ansi/red/keymaps/via/keymap.c
+++ b/keyboards/keychron/x5/ansi/red/keymaps/via/keymap.c
@@ -29,15 +29,15 @@ enum layers {
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_BASE] = LAYOUT_82_ansi(
- KC_ESC, 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_DEL, KC_INS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
- 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_PGUP,
- 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_PGDN,
+ KC_ESC, 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_PSCR, KC_DEL,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_82_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, BL_TOGG,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/x5/info.json b/keyboards/keychron/x5/info.json
index fd0915b23770..7c6e5eba2ca0 100755
--- a/keyboards/keychron/x5/info.json
+++ b/keyboards/keychron/x5/info.json
@@ -15,8 +15,6 @@
"diode_direction": "ROW2COL",
"indicators": {
"caps_lock": "B14",
- "num_lock": "B13",
- "scroll_lock": "B12",
"on_state": 0
},
"features": {
diff --git a/keyboards/keychron/x5/via_json/x5_ansi_red.json b/keyboards/keychron/x5/via_json/x5_ansi_red.json
index b349a6e0a11a..bc13d9d5e9f1 100644
--- a/keyboards/keychron/x5/via_json/x5_ansi_red.json
+++ b/keyboards/keychron/x5/via_json/x5_ansi_red.json
@@ -1,5 +1,5 @@
{
- "name": "Lemokey X5 ANSI Knob Red",
+ "name": "Lemokey X5 ANSI Red",
"vendorId": "0x362D",
"productId": "0x0250",
"keycodes": ["qmk_lighting"],
@@ -16,7 +16,7 @@
{"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
{"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
],
- "matrix": {"rows": 6, "cols": 16},
+ "matrix": {"rows": 6, "cols": 15},
"layouts": {
"keymap": [
[
@@ -54,7 +54,7 @@
{
"x": 0.25
},
- "0,14\n\n\n\n\n\n\n\n\ne0"
+ "0,14"
],
[
{
@@ -110,7 +110,7 @@
"c": "#aaaaaa",
"w": 1.5
},
- "2,13",
+ "2,12",
{
"x": 0.25
},
@@ -139,7 +139,7 @@
"c": "#777777",
"w": 2.25
},
- "3,13",
+ "3,12",
{
"x": 0.25,
"c": "#aaaaaa"
@@ -154,6 +154,7 @@
{
"c": "#cccccc"
},
+ "4,1",
"4,2",
"4,3",
"4,4",
@@ -163,20 +164,19 @@
"4,8",
"4,9",
"4,10",
- "4,11",
{
"c": "#aaaaaa",
"w": 1.75
},
- "4,13"
+ "4,11"
],
[
{
"y": -0.75,
"x": 14.25,
- "c": "#777777"
+ "c": "#cccccc"
},
- "4,14"
+ "4,12"
],
[
{
@@ -194,26 +194,26 @@
},
"5,2",
{
- "c": "#cccccc",
+ "c": "#777777",
"w": 6.25
},
- "5,6",
+ "5,5",
{
"c": "#aaaaaa"
},
+ "5,9",
"5,10",
- "5,11",
- "5,12"
+ "5,11"
],
[
{
"y": -0.75,
"x": 13.25,
- "c": "#777777"
+ "c": "#cccccc"
},
+ "5,12",
"5,13",
- "5,14",
- "5,15"
+ "5,14"
]
]
}
diff --git a/keyboards/keychron/x5/x5.c b/keyboards/keychron/x5/x5.c
index 8fa649b61902..4853cd52f60d 100755
--- a/keyboards/keychron/x5/x5.c
+++ b/keyboards/keychron/x5/x5.c
@@ -44,6 +44,13 @@ void eeconfig_init_kb(void) {
eeconfig_init_user();
}
+void keyboard_post_init_kb(void) {
+ setPinOutputPushPull(LED_WIN_LOCK_PIN);
+ eeconfig_read_user_datablock(&win_lock_state);
+
+ keyboard_post_init_user();
+}
+
void housekeeping_task_kb() {
set_led_win_lock_state();
}
diff --git a/keyboards/keychron/x6/ansi/red/config.h b/keyboards/keychron/x6/ansi/red/config.h
index acc49e001a17..5439411cc237 100755
--- a/keyboards/keychron/x6/ansi/red/config.h
+++ b/keyboards/keychron/x6/ansi/red/config.h
@@ -22,10 +22,8 @@
# define DRIVER_ADDR_1 0b1110100
/* RGB Matrix Configuration */
-# define LED_MATRIX_LED_COUNT 104
+# define LED_MATRIX_LED_COUNT 101
-/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
-# define PHASE_CHANNEL MSKPHASE_9CHANNEL
# define CKLED2001_CURRENT_TUNE \
{ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
diff --git a/keyboards/keychron/x6/ansi/red/info.json b/keyboards/keychron/x6/ansi/red/info.json
index 4929b60316ac..fb682f649867 100755
--- a/keyboards/keychron/x6/ansi/red/info.json
+++ b/keyboards/keychron/x6/ansi/red/info.json
@@ -1,6 +1,6 @@
{
"usb": {
- "pid": "0x0220",
+ "pid": "0x0260",
"device_version": "1.0.0"
},
"features": {
@@ -27,114 +27,111 @@
},
"layout": [
{"matrix":[0,0], "flags":1, "x":0, "y":0},
- {"matrix":[0,1], "flags":1, "x":21, "y":0},
- {"matrix":[0,2], "flags":1, "x":31, "y":0},
- {"matrix":[0,3], "flags":1, "x":42, "y":0},
- {"matrix":[0,4], "flags":1, "x":52, "y":0},
- {"matrix":[0,5], "flags":1, "x":68, "y":0},
- {"matrix":[0,6], "flags":1, "x":78, "y":0},
- {"matrix":[0,7], "flags":1, "x":88, "y":0},
+ {"matrix":[0,2], "flags":1, "x":23, "y":0},
+ {"matrix":[0,3], "flags":1, "x":35, "y":0},
+ {"matrix":[0,4], "flags":1, "x":47, "y":0},
+ {"matrix":[0,5], "flags":1, "x":58, "y":0},
+ {"matrix":[0,6], "flags":1, "x":76, "y":0},
+ {"matrix":[0,7], "flags":1, "x":87, "y":0},
{"matrix":[0,8], "flags":1, "x":99, "y":0},
- {"matrix":[0,9], "flags":1, "x":114, "y":0},
- {"matrix":[0,10], "flags":1, "x":125, "y":0},
- {"matrix":[0,11], "flags":1, "x":135, "y":0},
- {"matrix":[0,12], "flags":1, "x":146, "y":0},
- {"matrix":[0,14], "flags":1, "x":159, "y":0},
- {"matrix":[0,15], "flags":1, "x":169, "y":0},
- {"matrix":[0,16], "flags":1, "x":180, "y":0},
+ {"matrix":[0,9], "flags":1, "x":111, "y":0},
+ {"matrix":[0,10], "flags":1, "x":128, "y":0},
+ {"matrix":[0,11], "flags":1, "x":140, "y":0},
+ {"matrix":[0,12], "flags":1, "x":152, "y":0},
+ {"matrix":[0,13], "flags":1, "x":163, "y":0},
+ {"matrix":[0,14], "flags":1, "x":176, "y":0},
+ {"matrix":[0,15], "flags":1, "x":189, "y":0},
+ {"matrix":[0,16], "flags":1, "x":201, "y":0},
+ {"matrix":[0,17], "flags":1, "x":212, "y":0},
+ {"matrix":[0,18], "flags":1, "x":224, "y":0},
- {"matrix":[1,0], "flags":1, "x":0, "y":16},
- {"matrix":[1,1], "flags":4, "x":10, "y":16},
- {"matrix":[1,2], "flags":4, "x":21, "y":16},
- {"matrix":[1,3], "flags":4, "x":31, "y":16},
- {"matrix":[1,4], "flags":4, "x":42, "y":16},
- {"matrix":[1,5], "flags":4, "x":52, "y":16},
- {"matrix":[1,6], "flags":4, "x":62, "y":16},
- {"matrix":[1,7], "flags":4, "x":73, "y":16},
- {"matrix":[1,8], "flags":4, "x":83, "y":16},
- {"matrix":[1,9], "flags":4, "x":94, "y":16},
- {"matrix":[1,10], "flags":4, "x":104, "y":16},
- {"matrix":[1,11], "flags":4, "x":114, "y":16},
- {"matrix":[1,12], "flags":4, "x":125, "y":16},
- {"matrix":[1,13], "flags":1, "x":140, "y":16},
- {"matrix":[1,14], "flags":1, "x":159, "y":16},
- {"matrix":[1,15], "flags":1, "x":169, "y":16},
- {"matrix":[1,16], "flags":1, "x":180, "y":16},
- {"matrix":[1,17], "flags":4, "x":193, "y":16},
- {"matrix":[1,18], "flags":4, "x":203, "y":16},
- {"matrix":[1,19], "flags":4, "x":214, "y":16},
- {"matrix":[1,20], "flags":4, "x":224, "y":16},
+ {"matrix":[1,0], "flags":1, "x":0, "y":13},
+ {"matrix":[1,1], "flags":4, "x":12, "y":13},
+ {"matrix":[1,2], "flags":4, "x":23, "y":13},
+ {"matrix":[1,3], "flags":4, "x":35, "y":13},
+ {"matrix":[1,4], "flags":4, "x":47, "y":13},
+ {"matrix":[1,5], "flags":4, "x":58, "y":13},
+ {"matrix":[1,6], "flags":4, "x":70, "y":13},
+ {"matrix":[1,7], "flags":4, "x":82, "y":13},
+ {"matrix":[1,8], "flags":4, "x":93, "y":13},
+ {"matrix":[1,9], "flags":4, "x":105, "y":13},
+ {"matrix":[1,10], "flags":4, "x":117, "y":13},
+ {"matrix":[1,11], "flags":4, "x":128, "y":13},
+ {"matrix":[1,12], "flags":4, "x":140, "y":13},
+ {"matrix":[1,13], "flags":1, "x":157, "y":13},
+ {"matrix":[1,14], "flags":1, "x":176, "y":13},
+ {"matrix":[1,15], "flags":4, "x":189, "y":13},
+ {"matrix":[1,16], "flags":4, "x":201, "y":13},
+ {"matrix":[1,17], "flags":4, "x":212, "y":13},
+ {"matrix":[1,18], "flags":4, "x":224, "y":13},
- {"matrix":[2,0], "flags":1, "x":3, "y":28},
- {"matrix":[2,1], "flags":4, "x":16, "y":28},
- {"matrix":[2,2], "flags":4, "x":26, "y":28},
- {"matrix":[2,3], "flags":4, "x":36, "y":28},
- {"matrix":[2,4], "flags":4, "x":47, "y":28},
- {"matrix":[2,5], "flags":4, "x":57, "y":28},
- {"matrix":[2,6], "flags":4, "x":68, "y":28},
- {"matrix":[2,7], "flags":4, "x":78, "y":28},
- {"matrix":[2,8], "flags":4, "x":88, "y":28},
- {"matrix":[2,9], "flags":4, "x":98, "y":28},
- {"matrix":[2,10], "flags":4, "x":109, "y":28},
- {"matrix":[2,11], "flags":4, "x":120, "y":28},
- {"matrix":[2,12], "flags":4, "x":130, "y":28},
- {"matrix":[2,13], "flags":1, "x":143, "y":28},
- {"matrix":[2,14], "flags":1, "x":159, "y":28},
- {"matrix":[2,15], "flags":1, "x":169, "y":28},
- {"matrix":[2,16], "flags":1, "x":180, "y":28},
- {"matrix":[2,17], "flags":4, "x":193, "y":28},
- {"matrix":[2,18], "flags":4, "x":203, "y":28},
- {"matrix":[2,19], "flags":4, "x":214, "y":28},
- {"matrix":[2,20], "flags":4, "x":224, "y":34},
+ {"matrix":[2,0], "flags":1, "x":3, "y":25},
+ {"matrix":[2,1], "flags":4, "x":17, "y":25},
+ {"matrix":[2,2], "flags":4, "x":29, "y":25},
+ {"matrix":[2,3], "flags":4, "x":41, "y":25},
+ {"matrix":[2,4], "flags":4, "x":52, "y":25},
+ {"matrix":[2,5], "flags":4, "x":64, "y":25},
+ {"matrix":[2,6], "flags":4, "x":76, "y":25},
+ {"matrix":[2,7], "flags":4, "x":87, "y":25},
+ {"matrix":[2,8], "flags":4, "x":99, "y":25},
+ {"matrix":[2,9], "flags":4, "x":111, "y":25},
+ {"matrix":[2,10], "flags":4, "x":122, "y":25},
+ {"matrix":[2,11], "flags":4, "x":134, "y":25},
+ {"matrix":[2,12], "flags":4, "x":146, "y":25},
+ {"matrix":[2,13], "flags":1, "x":160, "y":25},
+ {"matrix":[2,14], "flags":1, "x":176, "y":25},
+ {"matrix":[2,15], "flags":4, "x":189, "y":25},
+ {"matrix":[2,16], "flags":4, "x":201, "y":25},
+ {"matrix":[2,17], "flags":4, "x":212, "y":25},
+ {"matrix":[3,18], "flags":4, "x":224, "y":31},
- {"matrix":[3,0], "flags":1, "x":4, "y":40},
- {"matrix":[3,1], "flags":4, "x":18, "y":40},
- {"matrix":[3,2], "flags":4, "x":29, "y":40},
- {"matrix":[3,3], "flags":4, "x":39, "y":40},
- {"matrix":[3,4], "flags":4, "x":49, "y":40},
- {"matrix":[3,5], "flags":4, "x":60, "y":40},
- {"matrix":[3,6], "flags":4, "x":70, "y":40},
- {"matrix":[3,7], "flags":4, "x":81, "y":40},
- {"matrix":[3,8], "flags":4, "x":91, "y":40},
- {"matrix":[3,9], "flags":4, "x":101, "y":40},
- {"matrix":[3,10], "flags":4, "x":112, "y":40},
- {"matrix":[3,11], "flags":4, "x":122, "y":40},
- {"matrix":[3,13], "flags":1, "x":139, "y":40},
- {"matrix":[3,17], "flags":4, "x":193, "y":40},
- {"matrix":[3,18], "flags":4, "x":203, "y":40},
- {"matrix":[3,19], "flags":4, "x":214, "y":40},
+ {"matrix":[3,0], "flags":1, "x":4, "y":38},
+ {"matrix":[3,1], "flags":4, "x":20, "y":38},
+ {"matrix":[3,2], "flags":4, "x":32, "y":38},
+ {"matrix":[3,3], "flags":4, "x":44, "y":38},
+ {"matrix":[3,4], "flags":4, "x":55, "y":38},
+ {"matrix":[3,5], "flags":4, "x":67, "y":38},
+ {"matrix":[3,6], "flags":4, "x":79, "y":38},
+ {"matrix":[3,7], "flags":4, "x":90, "y":38},
+ {"matrix":[3,8], "flags":4, "x":102, "y":38},
+ {"matrix":[3,9], "flags":4, "x":114, "y":38},
+ {"matrix":[3,10], "flags":4, "x":125, "y":38},
+ {"matrix":[3,11], "flags":4, "x":137, "y":38},
+ {"matrix":[3,13], "flags":1, "x":156, "y":38},
+ {"matrix":[3,15], "flags":4, "x":189, "y":38},
+ {"matrix":[3,16], "flags":4, "x":201, "y":38},
+ {"matrix":[3,17], "flags":4, "x":212, "y":38},
- {"matrix":[4,0], "flags":1, "x":7, "y":52},
- {"matrix":[4,2], "flags":4, "x":23, "y":52},
- {"matrix":[4,3], "flags":4, "x":34, "y":52},
- {"matrix":[4,4], "flags":4, "x":44, "y":52},
- {"matrix":[4,5], "flags":4, "x":55, "y":52},
- {"matrix":[4,6], "flags":4, "x":65, "y":52},
- {"matrix":[4,7], "flags":4, "x":75, "y":52},
- {"matrix":[4,8], "flags":4, "x":86, "y":52},
- {"matrix":[4,9], "flags":4, "x":96, "y":52},
- {"matrix":[4,10], "flags":4, "x":107, "y":52},
- {"matrix":[4,11], "flags":4, "x":117, "y":52},
- {"matrix":[4,13], "flags":1, "x":137, "y":52},
- {"matrix":[4,15], "flags":1, "x":169, "y":52},
- {"matrix":[4,17], "flags":4, "x":193, "y":52},
- {"matrix":[4,18], "flags":4, "x":203, "y":52},
- {"matrix":[4,19], "flags":4, "x":214, "y":52},
- {"matrix":[4,20], "flags":4, "x":224, "y":58},
+ {"matrix":[4,0], "flags":1, "x":7, "y":50},
+ {"matrix":[4,1], "flags":4, "x":26, "y":50},
+ {"matrix":[4,2], "flags":4, "x":38, "y":50},
+ {"matrix":[4,3], "flags":4, "x":50, "y":50},
+ {"matrix":[4,4], "flags":4, "x":61, "y":50},
+ {"matrix":[4,5], "flags":4, "x":73, "y":50},
+ {"matrix":[4,6], "flags":4, "x":85, "y":50},
+ {"matrix":[4,7], "flags":4, "x":96, "y":50},
+ {"matrix":[4,8], "flags":4, "x":108, "y":50},
+ {"matrix":[4,9], "flags":4, "x":120, "y":50},
+ {"matrix":[4,10], "flags":4, "x":131, "y":50},
+ {"matrix":[4,11], "flags":1, "x":147, "y":50},
+ {"matrix":[4,13], "flags":1, "x":164, "y":51},
+ {"matrix":[4,15], "flags":4, "x":189, "y":50},
+ {"matrix":[4,16], "flags":4, "x":201, "y":50},
+ {"matrix":[4,17], "flags":4, "x":212, "y":50},
+ {"matrix":[5,18], "flags":4, "x":224, "y":56},
- {"matrix":[5,0], "flags":1, "x":1, "y":64},
- {"matrix":[5,1], "flags":1, "x":14, "y":64},
- {"matrix":[5,2], "flags":1, "x":27, "y":64},
- {"matrix":[5,6], "flags":4, "x":66, "y":64},
- {"matrix":[5,10], "flags":1, "x":105, "y":64},
- {"matrix":[5,11], "flags":1, "x":118, "y":64},
- {"matrix":[5,12], "flags":1, "x":131, "y":64},
- {"matrix":[5,13], "flags":1, "x":144, "y":64},
- {"matrix":[5,14], "flags":1, "x":159, "y":64},
- {"matrix":[5,15], "flags":1, "x":169, "y":64},
- {"matrix":[5,16], "flags":1, "x":180, "y":64},
- {"matrix":[5,17], "flags":4, "x":198, "y":64},
- {"matrix":[5,18], "flags":4, "x":214, "y":64}
+ {"matrix":[5,0], "flags":1, "x":1, "y":63},
+ {"matrix":[5,1], "flags":1, "x":16, "y":63},
+ {"matrix":[5,2], "flags":1, "x":31, "y":63},
+ {"matrix":[5,5], "flags":4, "x":74, "y":63},
+ {"matrix":[5,9], "flags":1, "x":117, "y":63},
+ {"matrix":[5,10], "flags":1, "x":128, "y":63},
+ {"matrix":[5,11], "flags":1, "x":140, "y":63},
+ {"matrix":[5,12], "flags":1, "x":153, "y":64},
+ {"matrix":[5,13], "flags":1, "x":164, "y":64},
+ {"matrix":[5,14], "flags":1, "x":176, "y":64},
+ {"matrix":[5,15], "flags":4, "x":195, "y":63},
+ {"matrix":[5,17], "flags":4, "x":212, "y":63}
]
}
}
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
index cf7d70a1fa55..a281e5e4fcf3 100755
--- a/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
@@ -16,11 +16,11 @@
#include QMK_KEYBOARD_H
-enum layers{
- WIN_BASE,
- WIN_FN,
- WIN_L2,
- WIN_L3,
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
};
#define KC_TASK LGUI(KC_TAB)
@@ -28,34 +28,34 @@ enum layers{
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [WIN_BASE] = LAYOUT_104_ansi(
- KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ [WIN_BASE] = LAYOUT_101_ansi(
+ KC_ESC, 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_PGUP, KC_HOME, KC_END, KC_PSCR, KC_CALC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGDN, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_FN] = LAYOUT_101_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_L2] = LAYOUT_104_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_L3] = LAYOUT_104_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L2] = LAYOUT_101_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_101_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x6/ansi/red/keymaps/keychron/keymap.c
index 8d3cd1aaedef..cc51f70d7946 100755
--- a/keyboards/keychron/x6/ansi/red/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/x6/ansi/red/keymaps/keychron/keymap.c
@@ -27,36 +27,36 @@ enum layers {
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [WIN_BASE] = LAYOUT_104_ansi(
- KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ [WIN_BASE] = LAYOUT_101_ansi(
+ KC_ESC, 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_PGUP, KC_HOME, KC_END, KC_PSCR, KC_CALC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGDN, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_FN] = LAYOUT_101_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_L2] = LAYOUT_104_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_L3] = LAYOUT_104_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L2] = LAYOUT_101_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_101_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
// clang-format on
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x6/ansi/red/keymaps/via/keymap.c
index 01e9a4d6ff2c..bbfbd7166081 100755
--- a/keyboards/keychron/x6/ansi/red/keymaps/via/keymap.c
+++ b/keyboards/keychron/x6/ansi/red/keymaps/via/keymap.c
@@ -28,34 +28,34 @@ enum layers {
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [WIN_BASE] = LAYOUT_104_ansi(
- KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
- KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
- 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
- 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_P4, KC_P5, KC_P6,
- 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_P1, KC_P2, KC_P3, KC_PENT,
- KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
+ [WIN_BASE] = LAYOUT_101_ansi(
+ KC_ESC, 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_PGUP, KC_HOME, KC_END, KC_PSCR, KC_CALC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGDN, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ 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_DEL, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ 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_P4, KC_P5, KC_P6,
+ 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_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
- [WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_FN] = LAYOUT_101_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_L2] = LAYOUT_104_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
- [WIN_L3] = LAYOUT_104_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L2] = LAYOUT_101_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+ [WIN_L3] = LAYOUT_101_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
diff --git a/keyboards/keychron/x6/ansi/red/red.c b/keyboards/keychron/x6/ansi/red/red.c
index 4c3123feaad6..19f790671505 100755
--- a/keyboards/keychron/x6/ansi/red/red.c
+++ b/keyboards/keychron/x6/ansi/red/red.c
@@ -24,7 +24,6 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
* | LED address
* | | */
{0, F_1 },
- {0, F_2 },
{0, F_3 },
{0, F_4 },
{0, F_5 },
@@ -36,9 +35,12 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, F_11},
{0, F_12},
{0, F_13},
+ {0, F_14},
{0, F_15},
{0, F_16},
- {0, G_1 },
+ {0, L_16},
+ {0, L_15},
+ {0, L_14},
{0, E_1 },
{0, E_2 },
@@ -56,11 +58,9 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, E_14},
{0, E_15},
{0, E_16},
- {0, H_1 },
- {0, H_2 },
- {0, H_3 },
- {0, H_4 },
- {0, H_5 },
+ {0, K_16},
+ {0, K_15},
+ {0, K_14},
{0, D_1 },
{0, D_2 },
@@ -78,11 +78,9 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, D_14},
{0, D_15},
{0, D_16},
- {0, G_6 },
- {0, G_7 },
- {0, G_8 },
- {0, G_9 },
- {0, G_10},
+ {0, J_16},
+ {0, J_15},
+ {0, I_14},
{0, C_1 },
{0, C_2 },
@@ -96,12 +94,13 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, C_10},
{0, C_11},
{0, C_12},
- {0, C_14},
- {0, H_7 },
- {0, H_8 },
- {0, H_9 },
+ {0, C_13},
+ {0, C_16},
+ {0, I_16},
+ {0, I_15},
{0, B_1 },
+ {0, B_2 },
{0, B_3 },
{0, B_4 },
{0, B_5 },
@@ -112,25 +111,23 @@ const ckled2001_led PROGMEM g_ckled2001_leds[LED_MATRIX_LED_COUNT] = {
{0, B_10},
{0, B_11},
{0, B_12},
- {0, B_14},
+ {0, B_13},
{0, B_16},
- {0, H_6 },
- {0, H_11},
- {0, H_12},
- {0, H_10},
+ {0, H_16},
+ {0, H_15},
+ {0, G_14},
{0, A_1 },
{0, A_2 },
{0, A_3 },
- {0, A_7 },
+ {0, A_6 },
+ {0, A_10},
{0, A_11},
{0, A_12},
{0, A_13},
{0, A_14},
{0, A_15},
{0, A_16},
- {0, G_13},
- {0, G_11},
- {0, G_12},
+ {0, G_15},
};
#endif
diff --git a/keyboards/keychron/x6/config.h b/keyboards/keychron/x6/config.h
index 5e5e0e31788a..05d700e22abd 100755
--- a/keyboards/keychron/x6/config.h
+++ b/keyboards/keychron/x6/config.h
@@ -27,8 +27,8 @@
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
/* Winlock indicator */
-#define LED_WIN_LOCK_PIN A5
-#define LED_PIN_ON_STATE 1
+#define LED_WIN_LOCK_PIN B15
+#define LED_WIN_LOCK_PIN_ON_STATE 1
/* User used eeprom */
#define EECONFIG_USER_DATA_SIZE 1
diff --git a/keyboards/keychron/x6/info.json b/keyboards/keychron/x6/info.json
index a33a54a59018..c62095c36848 100755
--- a/keyboards/keychron/x6/info.json
+++ b/keyboards/keychron/x6/info.json
@@ -14,9 +14,8 @@
},
"diode_direction": "ROW2COL",
"indicators": {
- "caps_lock": "A3",
- "scroll_lock": "A6",
- "num_lock": "A4"
+ "caps_lock": "C9",
+ "num_lock": "B14"
},
"features": {
"bootmagic": true,
@@ -27,24 +26,26 @@
"nkro": true
},
"layouts": {
- "LAYOUT_104_ansi": {
+ "LAYOUT_101_ansi": {
"layout": [
{"matrix":[0,0], "x":0, "y":0},
- {"matrix":[0,1], "x":2, "y":0},
- {"matrix":[0,2], "x":3, "y":0},
- {"matrix":[0,3], "x":4, "y":0},
- {"matrix":[0,4], "x":5, "y":0},
- {"matrix":[0,5], "x":6.5, "y":0},
- {"matrix":[0,6], "x":7.5, "y":0},
- {"matrix":[0,7], "x":8.5, "y":0},
- {"matrix":[0,8], "x":9.5, "y":0},
- {"matrix":[0,9], "x":11, "y":0},
- {"matrix":[0,10], "x":12, "y":0},
- {"matrix":[0,11], "x":13, "y":0},
- {"matrix":[0,12], "x":14, "y":0},
+ {"matrix":[0,2], "x":2, "y":0},
+ {"matrix":[0,3], "x":3, "y":0},
+ {"matrix":[0,4], "x":4, "y":0},
+ {"matrix":[0,5], "x":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":11, "y":0},
+ {"matrix":[0,11], "x":12, "y":0},
+ {"matrix":[0,12], "x":13, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
{"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
+ {"matrix":[0,15], "x":16.5, "y":0},
+ {"matrix":[0,16], "x":17.5, "y":0},
+ {"matrix":[0,17], "x":18.5, "y":0},
+ {"matrix":[0,18], "x":19.5, "y":0},
{"matrix":[1,0], "x":0, "y":1.25},
{"matrix":[1,1], "x":1, "y":1.25},
@@ -61,12 +62,10 @@
{"matrix":[1,12], "x":12, "y":1.25},
{"matrix":[1,13], "x":13, "y":1.25, "w":2},
{"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
+ {"matrix":[1,15], "x":16.5, "y":1.25},
+ {"matrix":[1,16], "x":17.5, "y":1.25},
{"matrix":[1,17], "x":18.5, "y":1.25},
{"matrix":[1,18], "x":19.5, "y":1.25},
- {"matrix":[1,19], "x":20.5, "y":1.25},
- {"matrix":[1,20], "x":21.5, "y":1.25},
{"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
{"matrix":[2,1], "x":1.5, "y":2.25},
@@ -83,12 +82,10 @@
{"matrix":[2,12], "x":12.5, "y":2.25},
{"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
{"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
+ {"matrix":[2,15], "x":16.5, "y":2.25},
+ {"matrix":[2,16], "x":17.5, "y":2.25},
{"matrix":[2,17], "x":18.5, "y":2.25},
- {"matrix":[2,18], "x":19.5, "y":2.25},
- {"matrix":[2,19], "x":20.5, "y":2.25},
- {"matrix":[2,20], "x":21.5, "y":2.25, "h":2},
+ {"matrix":[3,18], "x":19.5, "y":2.25, "h":2},
{"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
{"matrix":[3,1], "x":1.75, "y":3.25},
@@ -102,42 +99,41 @@
{"matrix":[3,9], "x":9.75, "y":3.25},
{"matrix":[3,10], "x":10.75, "y":3.25},
{"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,12], "x":12.75, "y":3.25, "w":2.25},
+ {"matrix":[3,15], "x":16.5, "y":3.25},
+ {"matrix":[3,16], "x":17.5, "y":3.25},
{"matrix":[3,17], "x":18.5, "y":3.25},
- {"matrix":[3,18], "x":19.5, "y":3.25},
- {"matrix":[3,19], "x":20.5, "y":3.25},
{"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
+ {"matrix":[4,1], "x":2.25, "y":4.25},
+ {"matrix":[4,2], "x":3.25, "y":4.25},
+ {"matrix":[4,3], "x":4.25, "y":4.25},
+ {"matrix":[4,4], "x":5.25, "y":4.25},
+ {"matrix":[4,5], "x":6.25, "y":4.25},
+ {"matrix":[4,6], "x":7.25, "y":4.25},
+ {"matrix":[4,7], "x":8.25, "y":4.25},
+ {"matrix":[4,8], "x":9.25, "y":4.25},
+ {"matrix":[4,9], "x":10.25, "y":4.25},
+ {"matrix":[4,10], "x":11.25, "y":4.25},
+ {"matrix":[4,11], "x":12.25, "y":4.25, "w":1.75},
+ {"matrix":[4,12], "x":14.25, "y":4.25},
+ {"matrix":[4,15], "x":16.5, "y":4.25},
+ {"matrix":[4,16], "x":17.5, "y":4.25},
{"matrix":[4,17], "x":18.5, "y":4.25},
- {"matrix":[4,18], "x":19.5, "y":4.25},
- {"matrix":[4,19], "x":20.5, "y":4.25},
- {"matrix":[4,20], "x":21.5, "y":4.25, "h":2},
+ {"matrix":[5,18], "x":19.5, "y":4.25, "h":2},
{"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
{"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
{"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,5], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,9], "x":10, "y":5.25},
+ {"matrix":[5,10], "x":11, "y":5.25},
+ {"matrix":[5,11], "x":12, "y":5.25},
+ {"matrix":[5,12], "x":13.25, "y":5.25},
+ {"matrix":[5,13], "x":14.25, "y":5.25},
{"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25},
- {"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
- {"matrix":[5,18], "x":20.5, "y":5.25}
+ {"matrix":[5,15], "x":16.5, "y":5.25, "w":2},
+ {"matrix":[5,17], "x":18.5, "y":5.25}
]
}
}
diff --git a/keyboards/keychron/x6/via_json/x6_ansi_red.json b/keyboards/keychron/x6/via_json/x6_ansi_red.json
index 933d384b5088..6be481fd33b3 100755
--- a/keyboards/keychron/x6/via_json/x6_ansi_red.json
+++ b/keyboards/keychron/x6/via_json/x6_ansi_red.json
@@ -16,7 +16,7 @@
{"name": "Screen Shot","title": "Screenshot in macOS","shortName": "SShot"},
{"name": "Cortana","title": "Cortana in windows","shortName": "Cortana"}
],
- "matrix": {"rows": 6, "cols": 21},
+ "matrix": {"rows": 6, "cols": 19},
"layouts": {
"keymap": [
[
@@ -28,37 +28,40 @@
"x": 1,
"c": "#cccccc"
},
- "0,1",
"0,2",
"0,3",
"0,4",
+ "0,5",
{
- "x": 0.5,
- "c": "#aaaaaa"
+ "x": 0.5
},
- "0,5",
"0,6",
"0,7",
"0,8",
+ "0,9",
{
- "x": 0.5,
- "c": "#cccccc"
+ "x": 0.5
},
- "0,9",
"0,10",
"0,11",
"0,12",
+ "0,13",
{
- "x": 0.25,
- "c": "#aaaaaa"
+ "x": 0.25
},
"0,14",
+ {
+ "x": 0.25
+ },
"0,15",
- "0,16"
+ "0,16",
+ "0,17",
+ "0,18"
],
[
{
- "y": 0.25
+ "y": 0.25,
+ "c": "#aaaaaa"
},
"1,0",
{
@@ -82,19 +85,17 @@
},
"1,13",
{
- "x": 0.25
+ "x": 0.25,
+ "c": "#cccccc"
},
"1,14",
- "1,15",
- "1,16",
{
- "x": 0.25,
- "c": "#cccccc"
+ "x": 0.25
},
+ "1,15",
+ "1,16",
"1,17",
- "1,18",
- "1,19",
- "1,20"
+ "1,18"
],
[
{
@@ -123,22 +124,20 @@
},
"2,13",
{
- "x": 0.25
+ "x": 0.25,
+ "c": "#cccccc"
},
"2,14",
- "2,15",
- "2,16",
{
- "x": 0.25,
- "c": "#cccccc"
+ "x": 0.25
},
+ "2,15",
+ "2,16",
"2,17",
- "2,18",
- "2,19",
{
"h": 2
},
- "2,20"
+ "3,18"
],
[
{
@@ -164,14 +163,14 @@
"c": "#777777",
"w": 2.25
},
- "3,13",
+ "3,12",
{
- "x": 3.5,
+ "x": 1.5,
"c": "#cccccc"
},
- "3,17",
- "3,18",
- "3,19"
+ "3,15",
+ "3,16",
+ "3,17"
],
[
{
@@ -182,6 +181,7 @@
{
"c": "#cccccc"
},
+ "4,1",
"4,2",
"4,3",
"4,4",
@@ -191,29 +191,27 @@
"4,8",
"4,9",
"4,10",
- "4,11",
{
"c": "#aaaaaa",
- "w": 2.75
+ "w": 1.75
},
- "4,13",
+ "4,11",
{
- "x": 1.25,
- "c": "#777777"
+ "x": 0.25,
+ "c": "#cccccc"
},
- "4,15",
+ "4,12",
{
- "x": 1.25,
- "c": "#cccccc"
+ "x": 1.25
},
+ "4,15",
+ "4,16",
"4,17",
- "4,18",
- "4,19",
{
"c": "#777777",
"h": 2
},
- "4,20"
+ "5,18"
],
[
{
@@ -230,41 +228,29 @@
},
"5,2",
{
- "c": "#cccccc",
+ "c": "#777777",
"w": 6.25
},
- "5,6",
+ "5,5",
{
- "c": "#aaaaaa",
- "w": 1.25
+ "c": "#aaaaaa"
},
+ "5,9",
"5,10",
- {
- "w": 1.25
- },
"5,11",
{
- "w": 1.25
+ "x": 0.25,
+ "c": "#cccccc"
},
"5,12",
- {
- "w": 1.25
- },
"5,13",
- {
- "x": 0.25,
- "c": "#777777"
- },
"5,14",
- "5,15",
- "5,16",
{
"x": 0.25,
- "c": "#cccccc",
"w": 2
},
- "5,17",
- "5,18"
+ "5,15",
+ "5,17"
]
]
}
diff --git a/keyboards/keychron/x6/x6.c b/keyboards/keychron/x6/x6.c
index 80edadabe0f4..0c7355cf260f 100755
--- a/keyboards/keychron/x6/x6.c
+++ b/keyboards/keychron/x6/x6.c
@@ -18,8 +18,8 @@
static uint8_t win_lock_state = 0;
-#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE)
-#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_WIN_LOCK_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_WIN_LOCK_PIN_ON_STATE)
static void set_led_win_lock_state(void) {
if (win_lock_state) {
@@ -65,9 +65,9 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
win_lock_state = !win_lock_state;
eeconfig_update_user_datablock(&win_lock_state);
if (win_lock_state) {
- writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE);
+ writePin(LED_WIN_LOCK_PIN, LED_WIN_LOCK_PIN_ON_STATE);
} else {
- writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE);
+ writePin(LED_WIN_LOCK_PIN, !LED_WIN_LOCK_PIN_ON_STATE);
}
}
return true;
From de124f6f259ad894332768abc1f53fce69981d7a Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Fri, 20 Oct 2023 16:15:52 +0800
Subject: [PATCH 16/27] Update keymap of x0
---
keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/x0/config.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
index 9d107ea61935..601bba9b82e8 100755
--- a/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/x0/ansi/red/keymaps/keychron/keymap.c
@@ -36,8 +36,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_SPC),
[WIN_FN] = LAYOUT(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, _______,
- _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_PSCR, KC_CRTA,
+ _______, KC_7, KC_8, KC_9, KC_0, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______,
_______, _______, BL_DOWN, _______, _______, _______,
_______, _______, _______, _______, NK_TOGG,
diff --git a/keyboards/keychron/x0/config.h b/keyboards/keychron/x0/config.h
index fc590f753276..e029e9a476d1 100755
--- a/keyboards/keychron/x0/config.h
+++ b/keyboards/keychron/x0/config.h
@@ -30,5 +30,5 @@
#define EECONFIG_USER_DATA_SIZE 1
/* Factory test keys */
-#define F_RESET_KEY1 KC_6
+#define F_RESET_KEY1 KC_X
#define FN_KEY1 MO(1)
From 944aa4a88eeec4210c0273a822a3d9177ef50b97 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Mon, 23 Oct 2023 10:15:58 +0800
Subject: [PATCH 17/27] Update chibios.c
---
tmk_core/protocol/chibios/chibios.c | 34 ++++-------------------------
1 file changed, 4 insertions(+), 30 deletions(-)
diff --git a/tmk_core/protocol/chibios/chibios.c b/tmk_core/protocol/chibios/chibios.c
index 74d8040df5f3..4d97f1cd82e6 100644
--- a/tmk_core/protocol/chibios/chibios.c
+++ b/tmk_core/protocol/chibios/chibios.c
@@ -179,35 +179,10 @@ void protocol_post_init(void) {
host_set_driver(driver);
}
-#if defined(STM32_USB_USE_OTG1)
-void protocol_pre_task(void) {
-# if !defined(NO_USB_STARTUP_CHECK)
- if (USB_DRIVER.state == USB_SUSPENDED) {
- dprintln("suspending keyboard");
- while (USB_DRIVER.state == USB_SUSPENDED) {
- /* Do this in the suspended state */
- suspend_power_down(); // on AVR this deep sleeps for 15ms
- /* Remote wakeup */
- if ((USB_DRIVER.status & USB_GETSTATUS_REMOTE_WAKEUP_ENABLED) && suspend_wakeup_condition()) {
- usbWakeupHost(&USB_DRIVER);
- wait_ms(300);
- }
- }
- /* Woken up */
- // variables has been already cleared by the wakeup hook
- send_keyboard_report();
-# ifdef MOUSEKEY_ENABLE
- mousekey_send();
-# endif /* MOUSEKEY_ENABLE */
- }
-# endif
- usb_event_queue_task();
-}
-#else
void protocol_pre_task(void) {
usb_event_queue_task();
-# if !defined(NO_USB_STARTUP_CHECK)
+#if !defined(NO_USB_STARTUP_CHECK)
if (USB_DRIVER.state == USB_SUSPENDED) {
dprintln("suspending keyboard");
while (USB_DRIVER.state == USB_SUSPENDED) {
@@ -222,13 +197,12 @@ void protocol_pre_task(void) {
/* Woken up */
// variables has been already cleared by the wakeup hook
send_keyboard_report();
-# ifdef MOUSEKEY_ENABLE
+# ifdef MOUSEKEY_ENABLE
mousekey_send();
-# endif /* MOUSEKEY_ENABLE */
+# endif /* MOUSEKEY_ENABLE */
}
-# endif
-}
#endif
+}
void protocol_post_task(void) {
#ifdef CONSOLE_ENABLE
From 30f9bc5e5aafe9155cb702921c33261519a0176a Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Mon, 23 Oct 2023 10:24:54 +0800
Subject: [PATCH 18/27] Update lib/chibios
---
lib/chibios | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/chibios b/lib/chibios
index c717c1b99809..11edb1610980 160000
--- a/lib/chibios
+++ b/lib/chibios
@@ -1 +1 @@
-Subproject commit c717c1b99809b9ea27a63ba955ba426170563fcb
+Subproject commit 11edb1610980f213b9f83161e1715a46fb7e4c51
From 247ec82b491f041c33512a632e683995cf4b6e2d Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Mon, 23 Oct 2023 12:19:29 +0800
Subject: [PATCH 19/27] Updte x4
---
keyboards/keychron/common/keychron_common.c | 4 ++++
keyboards/keychron/x1/x1.c | 5 -----
keyboards/keychron/x2/config.h | 2 +-
keyboards/keychron/x2/x2.c | 9 ++-------
keyboards/keychron/x3/config.h | 2 +-
keyboards/keychron/x3/x3.c | 9 ++-------
keyboards/keychron/x4/ansi_encoder/red/config.h | 3 +++
keyboards/keychron/x4/x4.c | 7 +++++++
keyboards/keychron/x6/x6.c | 5 -----
9 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/keyboards/keychron/common/keychron_common.c b/keyboards/keychron/common/keychron_common.c
index 52248c6335f3..ccc4f2978ee3 100644
--- a/keyboards/keychron/common/keychron_common.c
+++ b/keyboards/keychron/common/keychron_common.c
@@ -111,3 +111,7 @@ __attribute__((weak)) void keyboard_post_init_kb(void) {
}
}
#endif
+
+void restart_usb_driver(USBDriver *usbp) {
+ // Do nothing. Restarting the USB driver on these boards breaks it.
+}
diff --git a/keyboards/keychron/x1/x1.c b/keyboards/keychron/x1/x1.c
index 86a358707972..4853cd52f60d 100755
--- a/keyboards/keychron/x1/x1.c
+++ b/keyboards/keychron/x1/x1.c
@@ -64,11 +64,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
win_lock_state = !win_lock_state;
eeconfig_update_user_datablock(&win_lock_state);
- if (win_lock_state) {
- SET_LED_WIN_LOCK_ON;
- } else {
- SET_LED_WIN_LOCK_OFF;
- }
}
return true;
default:
diff --git a/keyboards/keychron/x2/config.h b/keyboards/keychron/x2/config.h
index 5e5e0e31788a..f9ce44ad0497 100755
--- a/keyboards/keychron/x2/config.h
+++ b/keyboards/keychron/x2/config.h
@@ -28,7 +28,7 @@
/* Winlock indicator */
#define LED_WIN_LOCK_PIN A5
-#define LED_PIN_ON_STATE 1
+#define LED_WIN_LOCK_PIN_ON_STATE 1
/* User used eeprom */
#define EECONFIG_USER_DATA_SIZE 1
diff --git a/keyboards/keychron/x2/x2.c b/keyboards/keychron/x2/x2.c
index 80edadabe0f4..4853cd52f60d 100755
--- a/keyboards/keychron/x2/x2.c
+++ b/keyboards/keychron/x2/x2.c
@@ -18,8 +18,8 @@
static uint8_t win_lock_state = 0;
-#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE)
-#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_WIN_LOCK_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_WIN_LOCK_PIN_ON_STATE)
static void set_led_win_lock_state(void) {
if (win_lock_state) {
@@ -64,11 +64,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
win_lock_state = !win_lock_state;
eeconfig_update_user_datablock(&win_lock_state);
- if (win_lock_state) {
- writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE);
- } else {
- writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE);
- }
}
return true;
default:
diff --git a/keyboards/keychron/x3/config.h b/keyboards/keychron/x3/config.h
index f7d07ffe5d4b..edc7cec7b233 100755
--- a/keyboards/keychron/x3/config.h
+++ b/keyboards/keychron/x3/config.h
@@ -28,7 +28,7 @@
/* Winlock indicator */
#define LED_WIN_LOCK_PIN A3
-#define LED_PIN_ON_STATE 1
+#define LED_WIN_LOCK_PIN_ON_STATE 1
/* User used eeprom */
#define EECONFIG_USER_DATA_SIZE 1
diff --git a/keyboards/keychron/x3/x3.c b/keyboards/keychron/x3/x3.c
index 80edadabe0f4..4853cd52f60d 100755
--- a/keyboards/keychron/x3/x3.c
+++ b/keyboards/keychron/x3/x3.c
@@ -18,8 +18,8 @@
static uint8_t win_lock_state = 0;
-#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE)
-#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_ON writePin(LED_WIN_LOCK_PIN, LED_WIN_LOCK_PIN_ON_STATE)
+#define SET_LED_WIN_LOCK_OFF writePin(LED_WIN_LOCK_PIN, !LED_WIN_LOCK_PIN_ON_STATE)
static void set_led_win_lock_state(void) {
if (win_lock_state) {
@@ -64,11 +64,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
win_lock_state = !win_lock_state;
eeconfig_update_user_datablock(&win_lock_state);
- if (win_lock_state) {
- writePin(LED_WIN_LOCK_PIN, LED_PIN_ON_STATE);
- } else {
- writePin(LED_WIN_LOCK_PIN, !LED_PIN_ON_STATE);
- }
}
return true;
default:
diff --git a/keyboards/keychron/x4/ansi_encoder/red/config.h b/keyboards/keychron/x4/ansi_encoder/red/config.h
index 2ccb0b521279..1f82ba627704 100755
--- a/keyboards/keychron/x4/ansi_encoder/red/config.h
+++ b/keyboards/keychron/x4/ansi_encoder/red/config.h
@@ -25,6 +25,8 @@
# define LED_MATRIX_LED_COUNT 81
/* Winlock indicator */
+# define LED_CAPS_LOCK_INDEX 44
+# define DIM_CAPS_LOCK
# define LED_WIN_LOCK_INDEX 72
/* Scan phase of led driver set as MSKPHASE_6CHANNEL(defined as 0x03 in CKLED2001.h) */
@@ -46,4 +48,5 @@
/* Encoder Configuration*/
#ifdef ENCODER_ENABLE
# define ENCODER_DEFAULT_POS 0x3
+# define ENCODER_MAP_KEY_DELAY 2
#endif
diff --git a/keyboards/keychron/x4/x4.c b/keyboards/keychron/x4/x4.c
index a4f2c5c8b48b..f757f3b08d6d 100755
--- a/keyboards/keychron/x4/x4.c
+++ b/keyboards/keychron/x4/x4.c
@@ -85,5 +85,12 @@ bool led_matrix_indicators_kb(void) {
led_matrix_set_value(LED_WIN_LOCK_INDEX, 0);
}
}
+#if defined(LED_CAPS_LOCK_INDEX)
+ if (host_keyboard_led_state().caps_lock) {
+# if defined(DIM_CAPS_LOCK)
+ led_matrix_set_value(LED_CAPS_LOCK_INDEX, 0);
+# endif
+#endif
+ }
return true;
}
diff --git a/keyboards/keychron/x6/x6.c b/keyboards/keychron/x6/x6.c
index 0c7355cf260f..4853cd52f60d 100755
--- a/keyboards/keychron/x6/x6.c
+++ b/keyboards/keychron/x6/x6.c
@@ -64,11 +64,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
win_lock_state = !win_lock_state;
eeconfig_update_user_datablock(&win_lock_state);
- if (win_lock_state) {
- writePin(LED_WIN_LOCK_PIN, LED_WIN_LOCK_PIN_ON_STATE);
- } else {
- writePin(LED_WIN_LOCK_PIN, !LED_WIN_LOCK_PIN_ON_STATE);
- }
}
return true;
default:
From f19234a48c84991b96f180bf249e2b4b8fac8bb0 Mon Sep 17 00:00:00 2001
From: lalalademaxiya1 <2831039915@qq.com>
Date: Tue, 24 Oct 2023 15:23:50 +0800
Subject: [PATCH 20/27] Update x3 and x5
---
keyboards/keychron/c3_pro/ansi/red/info.json | 24 ++++++++++----------
keyboards/keychron/x3/ansi/red/info.json | 24 ++++++++++----------
keyboards/keychron/x5/info.json | 3 +--
3 files changed, 25 insertions(+), 26 deletions(-)
diff --git a/keyboards/keychron/c3_pro/ansi/red/info.json b/keyboards/keychron/c3_pro/ansi/red/info.json
index 7275386b2187..212f724abbcd 100755
--- a/keyboards/keychron/c3_pro/ansi/red/info.json
+++ b/keyboards/keychron/c3_pro/ansi/red/info.json
@@ -120,18 +120,18 @@
{"matrix":[5, 15], "flags":1, "x":211, "y":64},
{"matrix":[5, 16], "flags":1, "x":224, "y":64},
- {"matrix":[0, 1], "flags":1, "x":0, "y":0},
- {"matrix":[4, 1], "flags":1, "x":0, "y":16},
- {"matrix":[3, 12], "flags":1, "x":0, "y":28},
- {"matrix":[3, 14], "flags":1, "x":0, "y":40},
- {"matrix":[3, 15], "flags":1, "x":0, "y":52},
- {"matrix":[4, 12], "flags":1, "x":0, "y":64},
- {"matrix":[5, 3], "flags":1, "x":224, "y":0},
- {"matrix":[5, 4], "flags":1, "x":224, "y":16},
- {"matrix":[5, 5], "flags":1, "x":224, "y":28},
- {"matrix":[5, 7], "flags":1, "x":224, "y":40},
- {"matrix":[5, 8], "flags":1, "x":224, "y":52},
- {"matrix":[5, 9], "flags":1, "x":224, "y":64}
+ {"flags":1, "x":0, "y":0},
+ {"flags":1, "x":0, "y":16},
+ {"flags":1, "x":0, "y":28},
+ {"flags":1, "x":0, "y":40},
+ {"flags":1, "x":0, "y":52},
+ {"flags":1, "x":0, "y":64},
+ {"flags":1, "x":224, "y":0},
+ {"flags":1, "x":224, "y":16},
+ {"flags":1, "x":224, "y":28},
+ {"flags":1, "x":224, "y":40},
+ {"flags":1, "x":224, "y":52},
+ {"flags":1, "x":224, "y":64}
]
}
}
diff --git a/keyboards/keychron/x3/ansi/red/info.json b/keyboards/keychron/x3/ansi/red/info.json
index 6dfa07702ab1..230cd58e1fe1 100755
--- a/keyboards/keychron/x3/ansi/red/info.json
+++ b/keyboards/keychron/x3/ansi/red/info.json
@@ -137,18 +137,18 @@
{"matrix":[5,17], "flags":4, "x":198, "y":64},
{"matrix":[5,18], "flags":4, "x":214, "y":64},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4},
- {"flags":4}
+ {"flags":4, "x":0, "y":0},
+ {"flags":4, "x":0, "y":16},
+ {"flags":4, "x":0, "y":28},
+ {"flags":4, "x":0, "y":40},
+ {"flags":4, "x":0, "y":52},
+ {"flags":4, "x":0, "y":64},
+ {"flags":4, "x":224, "y":0},
+ {"flags":4, "x":224, "y":16},
+ {"flags":4, "x":224, "y":28},
+ {"flags":4, "x":224, "y":40},
+ {"flags":4, "x":224, "y":52},
+ {"flags":4, "x":224, "y":64}
]
}
}
diff --git a/keyboards/keychron/x5/info.json b/keyboards/keychron/x5/info.json
index 7c6e5eba2ca0..d846daeaf504 100755
--- a/keyboards/keychron/x5/info.json
+++ b/keyboards/keychron/x5/info.json
@@ -14,8 +14,7 @@
},
"diode_direction": "ROW2COL",
"indicators": {
- "caps_lock": "B14",
- "on_state": 0
+ "caps_lock": "B14"
},
"features": {
"bootmagic": true,
From e9f9eb38147b01a6dd062be62e36663230a00b2c Mon Sep 17 00:00:00 2001
From: galican <148926153+galican@users.noreply.github.com>
Date: Wed, 25 Oct 2023 18:10:43 +0800
Subject: [PATCH 21/27] Playground (#37)
* Update time in the head of default keymap of Xs
* Update x3
---
keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c | 2 +-
keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c | 2 +-
keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c | 8 ++++----
keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c | 6 +++---
keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c | 6 +++---
keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c | 9 +++++----
keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c | 6 +++---
keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c | 6 +++---
keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c | 2 +-
keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c | 2 +-
10 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
index 4575f9c5553b..4b0a732b6e04 100755
--- a/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x0/ansi/red/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 202 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c
index 1c6c3a8b95e2..54ab9943393b 100755
--- a/keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x1/ansi/red/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 202 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c
index cf7d70a1fa55..a50f66294c8d 100755
--- a/keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x2/ansi/red/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 202 @ Keychron (https://www.keychron.com)
+/* 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
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CRTA, BL_STEP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[WIN_L2] = LAYOUT_104_ansi(
diff --git a/keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c
index 8d3cd1aaedef..777b1fa553c8 100755
--- a/keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/x2/ansi/red/keymaps/keychron/keymap.c
@@ -36,11 +36,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CRTA, BL_STEP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[WIN_L2] = LAYOUT_104_ansi(
diff --git a/keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c
index 01e9a4d6ff2c..14b06f34013b 100755
--- a/keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c
+++ b/keyboards/keychron/x2/ansi/red/keymaps/via/keymap.c
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CRTA, BL_STEP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[WIN_L2] = LAYOUT_104_ansi(
diff --git a/keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c
index cf7d70a1fa55..fe2422c7eaab 100755
--- a/keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x3/ansi/red/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 202 @ Keychron (https://www.keychron.com)
+/* 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
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CRTA, BL_STEP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[WIN_L2] = LAYOUT_104_ansi(
@@ -59,3 +59,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
+
diff --git a/keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c
index 8d3cd1aaedef..777b1fa553c8 100755
--- a/keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/x3/ansi/red/keymaps/keychron/keymap.c
@@ -36,11 +36,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CRTA, BL_STEP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[WIN_L2] = LAYOUT_104_ansi(
diff --git a/keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c
index 01e9a4d6ff2c..14b06f34013b 100755
--- a/keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c
+++ b/keyboards/keychron/x3/ansi/red/keymaps/via/keymap.c
@@ -37,11 +37,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_104_ansi(
- _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, BL_STEP,
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_CRTA, BL_STEP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[WIN_L2] = LAYOUT_104_ansi(
diff --git a/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
index 2142c52e65d9..fd4a028654ed 100755
--- a/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x5/ansi/red/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 202 @ Keychron (https://www.keychron.com)
+/* 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
diff --git a/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
index a281e5e4fcf3..bbfbd7166081 100755
--- a/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/x6/ansi/red/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 202 @ Keychron (https://www.keychron.com)
+/* 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
From ac5eaccedec00db5df2753dcca6de376afdd342f Mon Sep 17 00:00:00 2001
From: KeychronMacro
Date: Tue, 31 Oct 2023 18:20:43 +0800
Subject: [PATCH 22/27] Fix Q11 halconf.h
---
keyboards/keychron/q11/halconf.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/keyboards/keychron/q11/halconf.h b/keyboards/keychron/q11/halconf.h
index 028285a1f3e1..9a36206a1686 100755
--- a/keyboards/keychron/q11/halconf.h
+++ b/keyboards/keychron/q11/halconf.h
@@ -19,5 +19,7 @@
#define HAL_USE_I2C TRUE
#define HAL_USE_SERIAL TRUE
#define HAL_USE_ADC TRUE
-
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
From ce5bebd9fc59f05f53bce5d929f1f56df48a7c92 Mon Sep 17 00:00:00 2001
From: lokher
Date: Sat, 27 Jan 2024 14:30:24 +0800
Subject: [PATCH 23/27] Changed KC_NUHS to KC_BSLS in JIS keymap
---
keyboards/keychron/q1v2/jis/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/q1v2/jis/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/q2/jis/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/q2/jis/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/q2/jis/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/q3/jis/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/q3/jis/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/q3/jis/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/v1/jis/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/v1/jis/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/v1/jis/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/v2/jis/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/v2/jis/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/v2/jis/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/v3/jis/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/v3/jis/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/v3/jis/keymaps/via/keymap.c | 4 ++--
keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c | 4 ++--
keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c | 4 ++--
keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c | 4 ++--
36 files changed, 72 insertions(+), 72 deletions(-)
mode change 100755 => 100644 keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
mode change 100755 => 100644 keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
mode change 100755 => 100644 keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
diff --git a/keyboards/keychron/q1v2/jis/keymaps/default/keymap.c b/keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
old mode 100755
new mode 100644
index 2cd4c24ea133..8dc254b3febb
--- a/keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v2/jis/keymaps/default/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
old mode 100755
new mode 100644
index 1ad45ae56202..0a9bad03015e
--- a/keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v2/jis/keymaps/keychron/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q1v2/jis/keymaps/via/keymap.c b/keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
old mode 100755
new mode 100644
index 2cd4c24ea133..8dc254b3febb
--- a/keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v2/jis/keymaps/via/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c
index 6d4b14b93352..866614494c43 100755
--- a/keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q1v2/jis_encoder/keymaps/default/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c
index 74823b2ecd9b..fb249ca6517f 100755
--- a/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q1v2/jis_encoder/keymaps/keychron/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c
index 6d4b14b93352..866614494c43 100755
--- a/keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q1v2/jis_encoder/keymaps/via/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q2/jis/keymaps/default/keymap.c b/keyboards/keychron/q2/jis/keymaps/default/keymap.c
index dc160b8a58f5..bd5928e3bece 100644
--- a/keyboards/keychron/q2/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/default/keymap.c
@@ -32,14 +32,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
index cb3718ce7b12..e37342c037bd 100644
--- a/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c
@@ -31,14 +31,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q2/jis/keymaps/via/keymap.c b/keyboards/keychron/q2/jis/keymaps/via/keymap.c
index f72ad2f63a8a..38a18376cc91 100644
--- a/keyboards/keychron/q2/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/jis/keymaps/via/keymap.c
@@ -32,14 +32,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
index 77315b82db5e..a99ae7317983 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c
@@ -32,14 +32,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
index 7283b73ead66..5ba2cd1e671c 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c
@@ -31,14 +31,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
index 84bd50617de5..513fb5d14116 100644
--- a/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c
@@ -32,14 +32,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q3/jis/keymaps/default/keymap.c b/keyboards/keychron/q3/jis/keymaps/default/keymap.c
index b9bc01598eeb..d11edd8dfcae 100644
--- a/keyboards/keychron/q3/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/default/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
index 9e480911d802..9e998a677363 100644
--- a/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/keychron/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q3/jis/keymaps/via/keymap.c b/keyboards/keychron/q3/jis/keymaps/via/keymap.c
index 23bddc75bba9..77d0f4e9e9c9 100644
--- a/keyboards/keychron/q3/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/jis/keymaps/via/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
index 6b5e19a8b14a..8eaaaa01adca 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/default/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
index 04946593a140..5b4584d43214 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/keychron/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
index d4870c926e3a..8cbe34173a7c 100644
--- a/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/q3/jis_encoder/keymaps/via/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v1/jis/keymaps/default/keymap.c b/keyboards/keychron/v1/jis/keymaps/default/keymap.c
index 95784d077a28..1b32e55590c7 100644
--- a/keyboards/keychron/v1/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/default/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
index 126288b7f087..0f59f245db49 100644
--- a/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v1/jis/keymaps/via/keymap.c b/keyboards/keychron/v1/jis/keymaps/via/keymap.c
index 95784d077a28..1b32e55590c7 100644
--- a/keyboards/keychron/v1/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/via/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_INS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
index 05f0d38846ef..abd53189ffaf 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/default/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
index bef69ccea8ec..a8a3d609634e 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
index 05f0d38846ef..abd53189ffaf 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/via/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_DEL, KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_PGUP,
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_PGDN,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v2/jis/keymaps/default/keymap.c b/keyboards/keychron/v2/jis/keymaps/default/keymap.c
index 30e83b21a624..c79d141b03f4 100644
--- a/keyboards/keychron/v2/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/default/keymap.c
@@ -33,14 +33,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
index 68c399a18b65..0d331d663e56 100644
--- a/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/keychron/keymap.c
@@ -31,14 +31,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v2/jis/keymaps/via/keymap.c b/keyboards/keychron/v2/jis/keymaps/via/keymap.c
index 30e83b21a624..c79d141b03f4 100644
--- a/keyboards/keychron/v2/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/jis/keymaps/via/keymap.c
@@ -33,14 +33,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
index 68ca97e791b4..e87c982442f9 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/default/keymap.c
@@ -33,14 +33,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
index 49bdca2fd121..b5e1db969871 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/keychron/keymap.c
@@ -31,14 +31,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
index 68ca97e791b4..e87c982442f9 100644
--- a/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v2/jis_encoder/keymaps/via/keymap.c
@@ -33,14 +33,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_BASE] = LAYOUT_jis_71(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_MUTE,
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_DEL,
- 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_NUHS, KC_ENT, KC_HOME,
+ 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_BSLS, 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_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v3/jis/keymaps/default/keymap.c b/keyboards/keychron/v3/jis/keymaps/default/keymap.c
index 7fa980bb0864..2b496d406269 100644
--- a/keyboards/keychron/v3/jis/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/default/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
index 38c93f505acf..65a898b567b7 100644
--- a/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/keychron/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v3/jis/keymaps/via/keymap.c b/keyboards/keychron/v3/jis/keymaps/via/keymap.c
index 7fa980bb0864..2b496d406269 100644
--- a/keyboards/keychron/v3/jis/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/jis/keymaps/via/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
index 18c17da4fd4b..730e960a39a2 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/default/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
index 9b69c9443c81..3e23af7c2f55 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/keychron/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_SNAP, KC_SIRI, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, KC_ROPTN, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_MUTE, KC_PSCR, KC_CRTA, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LCMD, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
diff --git a/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
index 18c17da4fd4b..730e960a39a2 100644
--- a/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
+++ b/keyboards/keychron/v3/jis_encoder/keymaps/via/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, 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_MUTE, KC_PSCR, KC_NO, RGB_MOD,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_INT3, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
- 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_NUHS, KC_ENT,
+ 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_BSLS, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
From 25bacce4bcc7f874202c495beea6ef68f5f24cad Mon Sep 17 00:00:00 2001
From: lokher
Date: Tue, 30 Jan 2024 12:28:56 +0800
Subject: [PATCH 24/27] add raw hid commands for future use
---
keyboards/keychron/common/keychron_common.c | 83 +++++++
keyboards/keychron/common/keychron_common.h | 4 +
.../keychron_ft_c1_pro_ansi_v2_non_light.c | 59 +++--
.../keychron/common/keychron_ft_common.c | 113 ++++-----
.../v1/ansi/keymaps/keychron/keymap.c | 10 +-
.../v1/ansi/keymaps/keychron/rules.mk | 3 +-
.../v1/ansi_encoder/keymaps/keychron/keymap.c | 15 +-
.../v1/ansi_encoder/keymaps/keychron/rules.mk | 3 +-
keyboards/keychron/v1/config.h | 12 +
keyboards/keychron/v1/halconf.h | 3 +
.../keychron/v1/iso/keymaps/keychron/keymap.c | 16 +-
.../keychron/v1/iso/keymaps/keychron/rules.mk | 3 +-
.../v1/iso_encoder/keymaps/keychron/keymap.c | 21 +-
.../v1/iso_encoder/keymaps/keychron/rules.mk | 3 +-
.../keychron/v1/jis/keymaps/keychron/keymap.c | 14 +-
.../keychron/v1/jis/keymaps/keychron/rules.mk | 3 +-
.../v1/jis_encoder/keymaps/keychron/keymap.c | 15 +-
.../v1/jis_encoder/keymaps/keychron/rules.mk | 3 +-
keyboards/keychron/v1/matrix.c | 222 ------------------
keyboards/keychron/v1/rules.mk | 2 +
keyboards/keychron/v1/v1.c | 33 ++-
21 files changed, 285 insertions(+), 355 deletions(-)
mode change 100755 => 100644 keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c
delete mode 100644 keyboards/keychron/v1/matrix.c
create mode 100644 keyboards/keychron/v1/rules.mk
diff --git a/keyboards/keychron/common/keychron_common.c b/keyboards/keychron/common/keychron_common.c
index ccc4f2978ee3..3f88b086970c 100644
--- a/keyboards/keychron/common/keychron_common.c
+++ b/keyboards/keychron/common/keychron_common.c
@@ -14,7 +14,24 @@
* along with this program. If not, see .
*/
+#include QMK_KEYBOARD_H
+
#include "keychron_common.h"
+#include "raw_hid.h"
+#include "version.h"
+
+#define PROTOCOL_VERSION 0x02
+
+enum {
+ kc_get_protocol_version = 0xA0,
+ kc_get_firmware_version = 0xA1,
+ kc_get_support_feature = 0xA2,
+ kc_get_default_layer = 0xA3,
+};
+
+enum {
+ FEATURE_DEFAULT_LAYER = 0x01 << 0,
+};
bool is_siri_active = false;
uint32_t siri_timer = 0;
@@ -112,6 +129,72 @@ __attribute__((weak)) void keyboard_post_init_kb(void) {
}
#endif
+#ifdef PROTOCOL_CHIBIOS
void restart_usb_driver(USBDriver *usbp) {
// Do nothing. Restarting the USB driver on these boards breaks it.
}
+#endif
+
+#ifdef RAW_ENABLE
+# ifdef FACTORY_TEST_ENABLE
+__attribute__((weak)) bool factory_test_rx(uint8_t *data, uint8_t length) {
+ return false;
+}
+# endif
+
+void get_support_feature(uint8_t *data) {
+ data[1] = FEATURE_DEFAULT_LAYER;
+}
+
+bool via_command_kb(uint8_t *data, uint8_t length) {
+ // if (!raw_hid_receive_keychron(data, length))
+ // return false;
+ switch (data[0]) {
+ case kc_get_protocol_version:
+ data[1] = PROTOCOL_VERSION;
+ raw_hid_send(data, length);
+ break;
+
+ case kc_get_firmware_version: {
+ uint8_t i = 1;
+ data[i++] = 'v';
+ if ((DEVICE_VER & 0xF000) != 0) itoa((DEVICE_VER >> 12), (char *)&data[i++], 16);
+ itoa((DEVICE_VER >> 8) & 0xF, (char *)&data[i++], 16);
+ data[i++] = '.';
+ itoa((DEVICE_VER >> 4) & 0xF, (char *)&data[i++], 16);
+ data[i++] = '.';
+ itoa((DEVICE_VER >> 4) & 0xF, (char *)&data[i++], 16);
+ data[i++] = ' ';
+ memcpy(&data[i], QMK_BUILDDATE, sizeof(QMK_BUILDDATE));
+ i += sizeof(QMK_BUILDDATE);
+ raw_hid_send(data, length);
+ } break;
+
+ case kc_get_support_feature:
+ get_support_feature(&data[1]);
+ raw_hid_send(data, length);
+ break;
+
+ case kc_get_default_layer:
+ data[1] = get_highest_layer(default_layer_state);
+ raw_hid_send(data, length);
+ break;
+
+# ifdef FACTORY_TEST_ENABLE
+ case 0xAB:
+ factory_test_rx(data, length);
+ break;
+# endif
+ default:
+ return false;
+ }
+
+ return true;
+}
+
+# if !defined(VIA_ENABLE)
+void raw_hid_receive(uint8_t *data, uint8_t length) {
+ via_command_kb(data, length);
+}
+# endif
+#endif
diff --git a/keyboards/keychron/common/keychron_common.h b/keyboards/keychron/common/keychron_common.h
index a4df8b290330..eb1d148803e3 100644
--- a/keyboards/keychron/common/keychron_common.h
+++ b/keyboards/keychron/common/keychron_common.h
@@ -49,3 +49,7 @@ typedef struct PACKED {
void housekeeping_task_keychron(void);
bool process_record_keychron(uint16_t keycode, keyrecord_t *record);
+
+#ifdef FACTORY_TEST_ENABLE
+bool factory_test_rx(uint8_t *data, uint8_t length);
+#endif
diff --git a/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c b/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c
old mode 100755
new mode 100644
index 81f40fe0c75b..0cd168072a53
--- a/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c
+++ b/keyboards/keychron/common/keychron_ft_c1_pro_ansi_v2_non_light.c
@@ -178,39 +178,36 @@ bool dip_switch_update_user(uint8_t index, bool active) {
return true;
}
-bool via_command_kb(uint8_t *data, uint8_t length) {
- if (data[0] == 0xAB) {
- uint16_t checksum = 0;
- for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
- checksum += data[i];
- }
- /* Verify checksum */
- if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) {
- return true;
- }
- switch (data[1]) {
+bool factory_test_rx(uint8_t *data, uint8_t length) {
+ uint16_t checksum = 0;
+ for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
+ checksum += data[i];
+ }
+ /* Verify checksum */
+ if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) {
+ return true;
+ }
+ switch (data[1]) {
#if defined(DIP_SWITCH_ENABLE)
- case FACTORY_TEST_CMD_OS_SWITCH:
- report_os_sw_state = data[2];
- if (report_os_sw_state) {
- dip_switch_read(true);
- }
- break;
+ case FACTORY_TEST_CMD_OS_SWITCH:
+ report_os_sw_state = data[2];
+ if (report_os_sw_state) {
+ dip_switch_read(true);
+ }
+ break;
#endif
- case FACTORY_TEST_CMD_JUMP_TO_BL:
- if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
- if (memcmp(&data[2], "JumpToBootloader", strlen("JumpToBootloader")) == 0) bootloader_jump();
- }
- break;
- case FACTORY_TEST_CMD_EEPROM_CLEAR:
- if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
- if (data[2]) {
- factory_reset();
- }
+ case FACTORY_TEST_CMD_JUMP_TO_BL:
+ if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
+ if (memcmp(&data[2], "JumpToBootloader", strlen("JumpToBootloader")) == 0) bootloader_jump();
+ }
+ break;
+ case FACTORY_TEST_CMD_EEPROM_CLEAR:
+ if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
+ if (data[2]) {
+ factory_reset();
}
- break;
- }
- return true;
+ }
+ break;
}
- return false;
+ return true;
}
diff --git a/keyboards/keychron/common/keychron_ft_common.c b/keyboards/keychron/common/keychron_ft_common.c
index 8ac29f8c16e9..9a8b2855123f 100644
--- a/keyboards/keychron/common/keychron_ft_common.c
+++ b/keyboards/keychron/common/keychron_ft_common.c
@@ -232,6 +232,7 @@ bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
rgb_matrix_set_color(i, factory_reset_count % 2 ? 0 : RGB_RED);
}
}
+ return false;
} else if (led_test_mode) {
switch (led_test_mode) {
case LED_TEST_MODE_WHITE:
@@ -273,6 +274,7 @@ bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
default:
break;
}
+ return false;
}
return true;
}
@@ -287,6 +289,7 @@ void housekeeping_task_keychron_ft(void) {
}
}
+#ifdef RAW_ENABLE
static void system_switch_state_report(uint8_t index, bool active) {
uint16_t checksum = 0;
uint8_t data[RAW_EPSIZE] = {0};
@@ -295,11 +298,11 @@ static void system_switch_state_report(uint8_t index, bool active) {
if (report_os_sw_state) {
payload[0] = FACTORY_TEST_CMD_OS_SWITCH;
payload[1] = OS_SWITCH;
-#if defined(OS_SWITCH_REVERSE)
+# if defined(OS_SWITCH_REVERSE)
payload[2] = !active;
-#else
+# else
payload[2] = active;
-#endif
+# endif
data[0] = 0xAB;
memcpy(&data[1], payload, 3);
for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
@@ -317,61 +320,59 @@ bool dip_switch_update_user(uint8_t index, bool active) {
return true;
}
-bool via_command_kb(uint8_t *data, uint8_t length) {
- if (data[0] == 0xAB) {
- uint16_t checksum = 0;
- for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
- checksum += data[i];
- }
- /* Verify checksum */
- if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) {
- return true;
- }
- switch (data[1]) {
-#if defined(RGB_MATRIX_ENABLE)
- case FACTORY_TEST_CMD_BACKLIGHT:
- led_test_mode = data[2];
-# if defined(SPLIT_KEYBOARD)
- if (led_test_mode) {
- light_test_state += 1;
- if (light_test_state == 1) {
- led_state = rgb_matrix_get_mode();
- hsv = rgb_matrix_get_hsv();
- }
- rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
- } else {
- if (light_test_state) {
- light_test_state = 0;
- rgb_matrix_mode_noeeprom(led_state);
- rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
- }
- }
-# endif
- timer_3s_buffer = 0;
- break;
-#endif
-#if defined(DIP_SWITCH_ENABLE)
- case FACTORY_TEST_CMD_OS_SWITCH:
- report_os_sw_state = data[2];
- if (report_os_sw_state) {
- dip_switch_read(true);
+bool factory_test_rx(uint8_t *data, uint8_t length) {
+ uint16_t checksum = 0;
+ for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
+ checksum += data[i];
+ }
+ /* Verify checksum */
+ if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) {
+ return true;
+ }
+ switch (data[1]) {
+# if defined(RGB_MATRIX_ENABLE)
+ case FACTORY_TEST_CMD_BACKLIGHT:
+ led_test_mode = data[2];
+# if defined(SPLIT_KEYBOARD)
+ if (led_test_mode) {
+ light_test_state += 1;
+ if (light_test_state == 1) {
+ led_state = rgb_matrix_get_mode();
+ hsv = rgb_matrix_get_hsv();
}
- break;
-#endif
- case FACTORY_TEST_CMD_JUMP_TO_BL:
- if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
- if (memcmp(&data[2], "JumpToBootloader", strlen("JumpToBootloader")) == 0) bootloader_jump();
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ } else {
+ if (light_test_state) {
+ light_test_state = 0;
+ rgb_matrix_mode_noeeprom(led_state);
+ rgb_matrix_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
}
- break;
- case FACTORY_TEST_CMD_EEPROM_CLEAR:
- if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
- if (data[2]) {
- factory_reset();
- }
+ }
+# endif
+ timer_3s_buffer = 0;
+ break;
+# endif
+# if defined(DIP_SWITCH_ENABLE)
+ case FACTORY_TEST_CMD_OS_SWITCH:
+ report_os_sw_state = data[2];
+ if (report_os_sw_state) {
+ dip_switch_read(true);
+ }
+ break;
+# endif
+ case FACTORY_TEST_CMD_JUMP_TO_BL:
+ if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
+ if (memcmp(&data[2], "JumpToBootloader", strlen("JumpToBootloader")) == 0) bootloader_jump();
+ }
+ break;
+ case FACTORY_TEST_CMD_EEPROM_CLEAR:
+ if (matrix[0] & 0x1 && matrix[MATRIX_ROWS - 1] & (0x1 << (MATRIX_COLS - 1))) {
+ if (data[2]) {
+ factory_reset();
}
- break;
- }
- return true;
+ }
+ break;
}
- return false;
+ return true;
}
+#endif
diff --git a/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c b/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
index 4653954d7e9d..a23cf9d2b956 100644
--- a/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/ansi/keymaps/keychron/keymap.c
@@ -16,16 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-
-// clang-format off
+#include "keychron_ft_common.h"
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
@@ -64,11 +64,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void housekeeping_task_user(void) {
housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
return true;
}
diff --git a/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk b/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
index 495e8907b48c..3c9fcc5c98c2 100644
--- a/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/ansi/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
index f5e6247ca6ab..212ab8616ffb 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/keymap.c
@@ -16,16 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-
-// clang-format off
+#include "keychron_ft_common.h"
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_ansi_82(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
@@ -60,8 +60,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -72,10 +70,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
#endif // ENCODER_MAP_ENABLE
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
return true;
}
diff --git a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..936769ddc6e2 100644
--- a/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/ansi_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/v1/config.h b/keyboards/keychron/v1/config.h
index e5b82a143dae..47a41a4b54bc 100644
--- a/keyboards/keychron/v1/config.h
+++ b/keyboards/keychron/v1/config.h
@@ -31,6 +31,18 @@
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { {5,4} }
+
+/* HC595 Driver Configuration */
+#define HC595_STCP B0
+#define HC595_SHCP B1
+#define HC595_DS A7
+#define HC595_START_INDEX 8
+#define HC595_END_INDEX 15
+
+/* Factory test keys */
+#define FN_KEY1 MO(1)
+#define FN_KEY2 MO(3)
+
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
diff --git a/keyboards/keychron/v1/halconf.h b/keyboards/keychron/v1/halconf.h
index 41bddcb2799b..463d177eabc7 100644
--- a/keyboards/keychron/v1/halconf.h
+++ b/keyboards/keychron/v1/halconf.h
@@ -17,5 +17,8 @@
#pragma once
#define HAL_USE_I2C TRUE
+#ifdef ENCODER_ENABLE
+# define PAL_USE_CALLBACKS TRUE
+#endif
#include_next
diff --git a/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c b/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
index 351b426571cc..c53cefb36c4c 100644
--- a/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/iso/keymaps/keychron/keymap.c
@@ -16,16 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
+#include "keychron_ft_common.h"
-// clang-format off
-
-enum layers {
+enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
@@ -62,9 +62,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
return true;
}
diff --git a/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk b/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
index 495e8907b48c..3c9fcc5c98c2 100644
--- a/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/iso/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
index 52e1a316546c..3c111ff41888 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/keymap.c
@@ -16,16 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-
-// clang-format off
+#include "keychron_ft_common.h"
enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
@@ -60,8 +60,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -72,10 +70,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
#endif // ENCODER_MAP_ENABLE
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
return true;
}
diff --git a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..936769ddc6e2 100644
--- a/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/iso_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c b/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
index 0f59f245db49..0368cf23ee8d 100644
--- a/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/jis/keymaps/keychron/keymap.c
@@ -16,16 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-
-// clang-format off
+#include "keychron_ft_common.h"
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
@@ -62,9 +62,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
return true;
}
diff --git a/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk b/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
index 495e8907b48c..3c9fcc5c98c2 100644
--- a/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/jis/keymaps/keychron/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
index a8a3d609634e..c564474c136f 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/keymap.c
@@ -16,16 +16,16 @@
#include QMK_KEYBOARD_H
#include "keychron_common.h"
-
-// clang-format off
+#include "keychron_ft_common.h"
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
- WIN_FN
+ WIN_FN,
};
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_jis_86(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
@@ -60,8 +60,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
-
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
@@ -72,10 +70,17 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
#endif // ENCODER_MAP_ENABLE
// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
return true;
}
diff --git a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
index 9cf1a9b56cba..936769ddc6e2 100644
--- a/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
+++ b/keyboards/keychron/v1/jis_encoder/keymaps/keychron/rules.mk
@@ -1,5 +1,4 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes
-VPATH += keyboards/keychron/common
-SRC += keychron_common.c
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/v1/matrix.c b/keyboards/keychron/v1/matrix.c
deleted file mode 100644
index 82a883834f82..000000000000
--- a/keyboards/keychron/v1/matrix.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/* 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 .
- */
-
-#include "matrix.h"
-#include "quantum.h"
-
-// Pin connected to DS of 74HC595
-#define DATA_PIN A7
-// Pin connected to SH_CP of 74HC595
-#define CLOCK_PIN B1
-// Pin connected to ST_CP of 74HC595
-#define LATCH_PIN B0
-
-#ifdef MATRIX_ROW_PINS
-static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-#endif // MATRIX_ROW_PINS
-#ifdef MATRIX_COL_PINS
-static pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-#endif // MATRIX_COL_PINS
-
-#define ROWS_PER_HAND MATRIX_ROWS
-
-static inline void setPinOutput_writeLow(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinLow(pin);
- }
-}
-
-static inline void setPinOutput_writeHigh(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinOutput(pin);
- writePinHigh(pin);
- }
-}
-
-static inline void setPinInputHigh_atomic(pin_t pin) {
- ATOMIC_BLOCK_FORCEON {
- setPinInputHigh(pin);
- }
-}
-
-static inline uint8_t readMatrixPin(pin_t pin) {
- if (pin != NO_PIN) {
- return readPin(pin);
- } else {
- return 1;
- }
-}
-
-// At 3.6V input, three nops (37.5ns) should be enough for all signals
-#define small_delay() __asm__ __volatile__("nop;nop;nop;\n\t" ::: "memory")
-#define compiler_barrier() __asm__ __volatile__("" ::: "memory")
-
-static void shiftOut(uint8_t dataOut) {
- ATOMIC_BLOCK_FORCEON {
- for (uint8_t i = 0; i < 8; i++) {
- compiler_barrier();
- if (dataOut & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- dataOut = dataOut >> 1;
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- }
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static void shiftOut_single(uint8_t data) {
- ATOMIC_BLOCK_FORCEON {
- compiler_barrier();
- if (data & 0x1) {
- writePinHigh(DATA_PIN);
- } else {
- writePinLow(DATA_PIN);
- }
- compiler_barrier();
- writePinHigh(CLOCK_PIN);
- small_delay();
- writePinLow(CLOCK_PIN);
- compiler_barrier();
- writePinHigh(LATCH_PIN);
- small_delay();
- writePinLow(LATCH_PIN);
- compiler_barrier();
- }
-}
-
-static bool select_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
- setPinOutput_writeLow(pin);
- return true;
- } else {
- if (col == 8) {
- shiftOut_single(0x00);
- }
- return true;
- }
- return false;
-}
-
-static void unselect_col(uint8_t col) {
- pin_t pin = col_pins[col];
-
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- shiftOut_single(0x01);
- }
-}
-
-static void unselect_cols(void) {
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- pin_t pin = col_pins[x];
- if (pin != NO_PIN) {
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- setPinOutput_writeHigh(pin);
-#else
- setPinInputHigh_atomic(pin);
-#endif
- } else {
- if (x == 8)
- // unselect shift Register
- shiftOut(0xFF);
- }
- }
-}
-
-static void matrix_init_pins(void) {
- setPinOutput(DATA_PIN);
- setPinOutput(CLOCK_PIN);
- setPinOutput(LATCH_PIN);
-#ifdef MATRIX_UNSELECT_DRIVE_HIGH
- for (uint8_t x = 0; x < MATRIX_COLS; x++) {
- if (col_pins[x] != NO_PIN) {
- setPinOutput(col_pins[x]);
- }
- }
-#endif
- unselect_cols();
- for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
- if (row_pins[x] != NO_PIN) {
- setPinInputHigh_atomic(row_pins[x]);
- }
- }
-}
-
-static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
- bool key_pressed = false;
-
- // Select col
- if (!select_col(current_col)) { // select col
- return; // skip NO_PIN col
- }
-
- matrix_output_select_delay();
-
- // For each row...
- for (uint8_t row_index = 0; row_index < ROWS_PER_HAND; row_index++) {
- // Check row pin state
- if (readMatrixPin(row_pins[row_index]) == 0) {
- // Pin LO, set col bit
- current_matrix[row_index] |= row_shifter;
- key_pressed = true;
- } else {
- // Pin HI, clear col bit
- current_matrix[row_index] &= ~row_shifter;
- }
- }
-
- // Unselect col
- unselect_col(current_col);
- matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH
-}
-
-void matrix_init_custom(void) {
- // initialize key pins
- matrix_init_pins();
-}
-
-bool matrix_scan_custom(matrix_row_t current_matrix[]) {
- matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
-
- // Set col, read rows
- matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
- for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
- matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
- }
-
- bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
- if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
-
- return changed;
-}
diff --git a/keyboards/keychron/v1/rules.mk b/keyboards/keychron/v1/rules.mk
new file mode 100644
index 000000000000..a515de570cd8
--- /dev/null
+++ b/keyboards/keychron/v1/rules.mk
@@ -0,0 +1,2 @@
+VPATH += $(TOP_DIR)/keyboards/keychron/common
+SRC += matrix.c
diff --git a/keyboards/keychron/v1/v1.c b/keyboards/keychron/v1/v1.c
index 79c591917475..579055fd7ddc 100644
--- a/keyboards/keychron/v1/v1.c
+++ b/keyboards/keychron/v1/v1.c
@@ -16,6 +16,7 @@
#include "quantum.h"
+// clang-format off
const matrix_row_t matrix_mask[] = {
0b1111111111111111,
0b1111111111111111,
@@ -24,6 +25,7 @@ const matrix_row_t matrix_mask[] = {
0b1111111111111111,
0b1111111111101111,
};
+// clang-format on
#ifdef DIP_SWITCH_ENABLE
@@ -42,11 +44,21 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
#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; }
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
switch (keycode) {
-#ifdef RGB_MATRIX_ENABLE
+# ifdef RGB_MATRIX_ENABLE
case RGB_TOG:
+ if (!rgb_matrix_is_enabled()) {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable();
+ }
if (record->event.pressed) {
+ if (rgb_matrix_get_val() == 0) {
+ rgb_matrix_increase_val();
+ if (rgb_matrix_get_flags() == LED_FLAG_ALL) return false;
+ }
switch (rgb_matrix_get_flags()) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_NONE);
@@ -57,25 +69,34 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
} break;
}
}
+ return false;
+
+ case RGB_VAI:
if (!rgb_matrix_is_enabled()) {
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable();
}
- return false;
-#endif
+ if (rgb_matrix_get_flags() == LED_FLAG_NONE) {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ return false;
+ }
+ break;
+# endif
}
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; }
+ 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);
+ RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 0, 0, 0);
}
}
return true;
From 0daedeb229496bbbde27b1a3d94247e7eaadebd0 Mon Sep 17 00:00:00 2001
From: lokher
Date: Mon, 17 Jun 2024 10:55:44 +0800
Subject: [PATCH 25/27] Added C3 Pro RGB
---
keyboards/keychron/c3_pro/ansi/red/config.h | 7 +-
keyboards/keychron/c3_pro/ansi/red/info.json | 109 +++++++
.../c3_pro/ansi/red/keymaps/default/keymap.c | 15 +-
.../c3_pro/ansi/red/keymaps/keychron/keymap.c | 7 +-
.../c3_pro/ansi/red/keymaps/via/keymap.c | 16 +-
keyboards/keychron/c3_pro/ansi/rgb/config.h | 46 +++
keyboards/keychron/c3_pro/ansi/rgb/info.json | 251 +++++++++++++++
.../c3_pro/ansi/rgb/keymaps/default/keymap.c | 65 ++++
.../c3_pro/ansi/rgb/keymaps/keychron/keymap.c | 78 +++++
.../c3_pro/ansi/rgb/keymaps/keychron/rules.mk | 3 +
.../c3_pro/ansi/rgb/keymaps/via/keymap.c | 63 ++++
.../c3_pro/ansi/rgb/keymaps/via/rules.mk | 3 +
keyboards/keychron/c3_pro/ansi/rgb/rgb.c | 135 +++++++++
keyboards/keychron/c3_pro/ansi/rgb/rules.mk | 1 +
keyboards/keychron/c3_pro/c3_pro.c | 53 +++-
keyboards/keychron/c3_pro/c3_pro.h | 2 +-
keyboards/keychron/c3_pro/config.h | 8 +-
keyboards/keychron/c3_pro/halconf.h | 2 +-
keyboards/keychron/c3_pro/info.json | 111 +------
keyboards/keychron/c3_pro/mcuconf.h | 2 +-
keyboards/keychron/c3_pro/readme.md | 10 +-
.../c3_pro/via_json/c3_pro_ansi_rgb.json | 286 ++++++++++++++++++
22 files changed, 1129 insertions(+), 144 deletions(-)
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/config.h
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/info.json
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/keymaps/default/keymap.c
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/keymaps/keychron/keymap.c
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/keymaps/keychron/rules.mk
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/keymaps/via/keymap.c
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/keymaps/via/rules.mk
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/rgb.c
create mode 100644 keyboards/keychron/c3_pro/ansi/rgb/rules.mk
create mode 100644 keyboards/keychron/c3_pro/via_json/c3_pro_ansi_rgb.json
diff --git a/keyboards/keychron/c3_pro/ansi/red/config.h b/keyboards/keychron/c3_pro/ansi/red/config.h
index ce76a0715fee..753982df3aa5 100755
--- a/keyboards/keychron/c3_pro/ansi/red/config.h
+++ b/keyboards/keychron/c3_pro/ansi/red/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* Copyright 2024 @ 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
@@ -16,6 +16,11 @@
#pragma once
+/* Indication led */
+#define LED_MAC_OS_PIN A4
+#define LED_WIN_OS_PIN A5
+#define LED_OS_PIN_ON_STATE 1
+
#ifdef LED_MATRIX_ENABLE
/* RGB Matrix Driver Configuration */
# define DRIVER_COUNT 1
diff --git a/keyboards/keychron/c3_pro/ansi/red/info.json b/keyboards/keychron/c3_pro/ansi/red/info.json
index 212f724abbcd..6b74c4f9fffd 100755
--- a/keyboards/keychron/c3_pro/ansi/red/info.json
+++ b/keyboards/keychron/c3_pro/ansi/red/info.json
@@ -6,6 +6,115 @@
"features": {
"led_matrix": true
},
+ "matrix_pins": {
+ "cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0","A1", "A2"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "ROW2COL",
+ "indicators": {
+ "caps_lock": "A3"
+ },
+ "community_layouts": [
+ "tkl_ansi"
+ ],
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix":[0,0], "x":0, "y":0},
+ {"matrix":[0,2], "x":2, "y":0},
+ {"matrix":[0,3], "x":3, "y":0},
+ {"matrix":[0,4], "x":4, "y":0},
+ {"matrix":[0,5], "x":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":11, "y":0},
+ {"matrix":[0,11], "x":12, "y":0},
+ {"matrix":[0,12], "x":13, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1,0], "x":0, "y":1.25},
+ {"matrix":[1,1], "x":1, "y":1.25},
+ {"matrix":[1,2], "x":2, "y":1.25},
+ {"matrix":[1,3], "x":3, "y":1.25},
+ {"matrix":[1,4], "x":4, "y":1.25},
+ {"matrix":[1,5], "x":5, "y":1.25},
+ {"matrix":[1,6], "x":6, "y":1.25},
+ {"matrix":[1,7], "x":7, "y":1.25},
+ {"matrix":[1,8], "x":8, "y":1.25},
+ {"matrix":[1,9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+
+ {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2,1], "x":1.5, "y":2.25},
+ {"matrix":[2,2], "x":2.5, "y":2.25},
+ {"matrix":[2,3], "x":3.5, "y":2.25},
+ {"matrix":[2,4], "x":4.5, "y":2.25},
+ {"matrix":[2,5], "x":5.5, "y":2.25},
+ {"matrix":[2,6], "x":6.5, "y":2.25},
+ {"matrix":[2,7], "x":7.5, "y":2.25},
+ {"matrix":[2,8], "x":8.5, "y":2.25},
+ {"matrix":[2,9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+
+ {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3,1], "x":1.75, "y":3.25},
+ {"matrix":[3,2], "x":2.75, "y":3.25},
+ {"matrix":[3,3], "x":3.75, "y":3.25},
+ {"matrix":[3,4], "x":4.75, "y":3.25},
+ {"matrix":[3,5], "x":5.75, "y":3.25},
+ {"matrix":[3,6], "x":6.75, "y":3.25},
+ {"matrix":[3,7], "x":7.75, "y":3.25},
+ {"matrix":[3,8], "x":8.75, "y":3.25},
+ {"matrix":[3,9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4,5], "x":5.25, "y":4.25},
+ {"matrix":[4,6], "x":6.25, "y":4.25},
+ {"matrix":[4,7], "x":7.25, "y":4.25},
+ {"matrix":[4,8], "x":8.25, "y":4.25},
+ {"matrix":[4,9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25}
+ ]
+ }
+ },
"led_matrix": {
"driver": "ckled2001",
"animations": {
diff --git a/keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c b/keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c
index 9fad9ffda121..a916ada8036e 100755
--- a/keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c
+++ b/keyboards/keychron/c3_pro/ansi/red/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* Copyright 2024 @ 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
@@ -17,10 +17,10 @@
#include QMK_KEYBOARD_H
enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN,
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN),KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP,
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_STEP,
@@ -60,3 +60,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
+
diff --git a/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/keymap.c b/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/keymap.c
index 599735908005..e544a5f64e5f 100755
--- a/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/keymap.c
+++ b/keyboards/keychron/c3_pro/ansi/red/keymaps/keychron/keymap.c
@@ -18,7 +18,7 @@
#include "keychron_common.h"
#include "keychron_ft_common.h"
-enum layers {
+enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN,
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_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, KC_SPC, KC_RALT, MO(WIN_FN),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_CRTA, BL_STEP,
@@ -57,10 +57,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_OSSW, _______, BL_DOWN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
- _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
-// clang-format on
void housekeeping_task_user(void) {
housekeeping_task_keychron();
housekeeping_task_keychron_ft();
diff --git a/keyboards/keychron/c3_pro/ansi/red/keymaps/via/keymap.c b/keyboards/keychron/c3_pro/ansi/red/keymaps/via/keymap.c
index c55443cecde7..62341acba8a6 100755
--- a/keyboards/keychron/c3_pro/ansi/red/keymaps/via/keymap.c
+++ b/keyboards/keychron/c3_pro/ansi/red/keymaps/via/keymap.c
@@ -17,10 +17,10 @@
#include QMK_KEYBOARD_H
enum layers{
- MAC_BASE,
- MAC_FN,
- WIN_BASE,
- WIN_FN,
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
@@ -28,7 +28,7 @@ enum layers{
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [MAC_BASE] = LAYOUT_87_ansi(
+ [MAC_BASE] = LAYOUT_tkl_ansi(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_TRNS, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RCMD, MO(MAC_FN),KC_TRNS, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [MAC_FN] = LAYOUT_87_ansi(
+ [MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_STEP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [WIN_BASE] = LAYOUT_87_ansi(
+ [WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
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_DEL, KC_END, KC_PGDN,
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_SPC, KC_RALT, MO(WIN_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [WIN_FN] = LAYOUT_87_ansi(
+ [WIN_FN] = LAYOUT_tkl_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_STEP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/config.h b/keyboards/keychron/c3_pro/ansi/rgb/config.h
new file mode 100644
index 000000000000..ac944f0632e7
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/config.h
@@ -0,0 +1,46 @@
+/* Copyright 2024 @ 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 .
+ */
+
+#pragma once
+
+/* Enable indicator LED*/
+#define LED_MAC_OS_PIN A6
+#define LED_WIN_OS_PIN A7
+#define LED_OS_PIN_ON_STATE 1
+
+#ifdef RGB_MATRIX_ENABLE
+/* RGB Matrix Driver Configuration */
+# define DRIVER_COUNT 2
+# define DRIVER_ADDR_1 0b1110111
+# define DRIVER_ADDR_2 0b1110100
+
+/* Set LED driver current */
+#define CKLED2001_CURRENT_TUNE \
+ { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }
+
+/* RGB Matrix Configuration */
+#define RGB_MATRIX_LED_COUNT 99
+
+/* turn off effects when suspended */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+// 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
+#endif
+
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/info.json b/keyboards/keychron/c3_pro/ansi/rgb/info.json
new file mode 100644
index 000000000000..05727f0c0c93
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/info.json
@@ -0,0 +1,251 @@
+{
+ "usb": {
+ "pid": "0x0433",
+ "device_version": "1.0.1"
+ },
+ "features": {
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["C6", "C7", "C8", "A14", "B7", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "ROW2COL",
+ "indicators": {
+ "caps_lock": "A5"
+ },
+ "community_layouts": [
+ "tkl_ansi"
+ ],
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix":[0, 0], "x":0, "y":0},
+ {"matrix":[0, 2], "x":3, "y":0},
+ {"matrix":[0, 3], "x":4, "y":0},
+ {"matrix":[0, 4], "x":5, "y":0},
+ {"matrix":[0, 5], "x":6.5, "y":0},
+ {"matrix":[0, 6], "x":7.5, "y":0},
+ {"matrix":[0, 7], "x":8.5, "y":0},
+ {"matrix":[0, 8], "x":9.5, "y":0},
+ {"matrix":[0, 9], "x":10, "y":0},
+ {"matrix":[0,10], "x":11, "y":0},
+ {"matrix":[0,11], "x":12, "y":0},
+ {"matrix":[0,12], "x":13, "y":0},
+ {"matrix":[0,13], "x":14, "y":0},
+ {"matrix":[0,14], "x":15.25, "y":0},
+ {"matrix":[0,15], "x":16.25, "y":0},
+ {"matrix":[0,16], "x":17.25, "y":0},
+
+ {"matrix":[1, 0], "x":0, "y":1.25},
+ {"matrix":[1, 1], "x":1, "y":1.25},
+ {"matrix":[1, 2], "x":2, "y":1.25},
+ {"matrix":[1, 3], "x":3, "y":1.25},
+ {"matrix":[1, 4], "x":4, "y":1.25},
+ {"matrix":[1, 5], "x":5, "y":1.25},
+ {"matrix":[1, 6], "x":6, "y":1.25},
+ {"matrix":[1, 7], "x":7, "y":1.25},
+ {"matrix":[1, 8], "x":8, "y":1.25},
+ {"matrix":[1, 9], "x":9, "y":1.25},
+ {"matrix":[1,10], "x":10, "y":1.25},
+ {"matrix":[1,11], "x":11, "y":1.25},
+ {"matrix":[1,12], "x":12, "y":1.25},
+ {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+ {"matrix":[1,14], "x":15.25, "y":1.25},
+ {"matrix":[1,15], "x":16.25, "y":1.25},
+ {"matrix":[1,16], "x":17.25, "y":1.25},
+
+ {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+ {"matrix":[2, 1], "x":1.5, "y":2.25},
+ {"matrix":[2, 2], "x":2.5, "y":2.25},
+ {"matrix":[2, 3], "x":3.5, "y":2.25},
+ {"matrix":[2, 4], "x":4.5, "y":2.25},
+ {"matrix":[2, 5], "x":5.5, "y":2.25},
+ {"matrix":[2, 6], "x":6.5, "y":2.25},
+ {"matrix":[2, 7], "x":7.5, "y":2.25},
+ {"matrix":[2, 8], "x":8.5, "y":2.25},
+ {"matrix":[2, 9], "x":9.5, "y":2.25},
+ {"matrix":[2,10], "x":10.5, "y":2.25},
+ {"matrix":[2,11], "x":11.5, "y":2.25},
+ {"matrix":[2,12], "x":12.5, "y":2.25},
+ {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
+ {"matrix":[2,14], "x":15.25, "y":2.25},
+ {"matrix":[2,15], "x":16.25, "y":2.25},
+ {"matrix":[2,16], "x":17.25, "y":2.25},
+
+ {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+ {"matrix":[3, 1], "x":1.75, "y":3.25},
+ {"matrix":[3, 2], "x":2.75, "y":3.25},
+ {"matrix":[3, 3], "x":3.75, "y":3.25},
+ {"matrix":[3, 4], "x":4.75, "y":3.25},
+ {"matrix":[3, 5], "x":5.75, "y":3.25},
+ {"matrix":[3, 6], "x":6.75, "y":3.25},
+ {"matrix":[3, 7], "x":7.75, "y":3.25},
+ {"matrix":[3, 8], "x":8.75, "y":3.25},
+ {"matrix":[3, 9], "x":9.75, "y":3.25},
+ {"matrix":[3,10], "x":10.75, "y":3.25},
+ {"matrix":[3,11], "x":11.75, "y":3.25},
+ {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
+
+ {"matrix":[4, 0], "x":0, "y":4.25, "w":2.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},
+ {"matrix":[4, 5], "x":5.25, "y":4.25},
+ {"matrix":[4, 6], "x":6.25, "y":4.25},
+ {"matrix":[4, 7], "x":7.25, "y":4.25},
+ {"matrix":[4, 8], "x":8.25, "y":4.25},
+ {"matrix":[4, 9], "x":9.25, "y":4.25},
+ {"matrix":[4,10], "x":10.25, "y":4.25},
+ {"matrix":[4,11], "x":11.25, "y":4.25},
+ {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
+ {"matrix":[4,15], "x":16.25, "y":4.25},
+
+ {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+ {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+ {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+ {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+ {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
+ {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
+ {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
+ {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
+ {"matrix":[5,14], "x":15.25, "y":5.25},
+ {"matrix":[5,15], "x":16.25, "y":5.25},
+ {"matrix":[5,16], "x":17.25, "y":5.25}
+ ]
+ }
+ },
+ "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
+ },
+ "layout": [
+ {"matrix":[0, 0], "flags":1, "x":0, "y":0},
+ {"matrix":[0, 2], "flags":1, "x":20, "y":0},
+ {"matrix":[0, 3], "flags":1, "x":30, "y":0},
+ {"matrix":[0, 4], "flags":1, "x":40, "y":0},
+ {"matrix":[0, 5], "flags":1, "x":50, "y":0},
+ {"matrix":[0, 6], "flags":1, "x":65, "y":0},
+ {"matrix":[0, 7], "flags":1, "x":75, "y":0},
+ {"matrix":[0, 8], "flags":1, "x":85, "y":0},
+ {"matrix":[0, 9], "flags":1, "x":95, "y":0},
+ {"matrix":[0, 10], "flags":1, "x":110, "y":0},
+ {"matrix":[0, 11], "flags":1, "x":120, "y":0},
+ {"matrix":[0, 12], "flags":1, "x":130, "y":0},
+ {"matrix":[0, 13], "flags":1, "x":140, "y":0},
+ {"matrix":[0, 14], "flags":1, "x":155, "y":0},
+ {"matrix":[0, 15], "flags":1, "x":165, "y":0},
+ {"matrix":[0, 16], "flags":1, "x":175, "y":0},
+
+ {"matrix":[1, 0], "flags":4, "x":0, "y":15},
+ {"matrix":[1, 1], "flags":4, "x":10, "y":15},
+ {"matrix":[1, 2], "flags":4, "x":20, "y":15},
+ {"matrix":[1, 3], "flags":4, "x":30, "y":15},
+ {"matrix":[1, 4], "flags":4, "x":40, "y":15},
+ {"matrix":[1, 5], "flags":4, "x":50, "y":15},
+ {"matrix":[1, 6], "flags":4, "x":60, "y":15},
+ {"matrix":[1, 7], "flags":4, "x":70, "y":15},
+ {"matrix":[1, 8], "flags":4, "x":80, "y":15},
+ {"matrix":[1, 9], "flags":4, "x":90, "y":15},
+ {"matrix":[1, 10], "flags":4, "x":100, "y":15},
+ {"matrix":[1, 11], "flags":4, "x":110, "y":15},
+ {"matrix":[1, 12], "flags":4, "x":120, "y":15},
+ {"matrix":[1, 13], "flags":1, "x":135, "y":15},
+ {"matrix":[1, 14], "flags":1, "x":155, "y":15},
+ {"matrix":[1, 15], "flags":1, "x":165, "y":15},
+ {"matrix":[1, 16], "flags":1, "x":175, "y":15},
+
+ {"matrix":[2, 0], "flags":1, "x":3, "y":27},
+ {"matrix":[2, 1], "flags":4, "x":16, "y":27},
+ {"matrix":[2, 2], "flags":4, "x":26, "y":27},
+ {"matrix":[2, 3], "flags":4, "x":36, "y":27},
+ {"matrix":[2, 4], "flags":4, "x":47, "y":27},
+ {"matrix":[2, 5], "flags":4, "x":57, "y":27},
+ {"matrix":[2, 6], "flags":4, "x":68, "y":27},
+ {"matrix":[2, 7], "flags":4, "x":78, "y":27},
+ {"matrix":[2, 8], "flags":4, "x":89, "y":27},
+ {"matrix":[2, 9], "flags":4, "x":99, "y":27},
+ {"matrix":[2, 10], "flags":4, "x":109, "y":27},
+ {"matrix":[2, 11], "flags":4, "x":120, "y":27},
+ {"matrix":[2, 12], "flags":4, "x":130, "y":27},
+ {"matrix":[2, 13], "flags":4, "x":143, "y":27},
+ {"matrix":[2, 14], "flags":1, "x":155, "y":27},
+ {"matrix":[2, 15], "flags":1, "x":165, "y":27},
+ {"matrix":[2, 16], "flags":1, "x":175, "y":27},
+
+ {"matrix":[3, 0], "flags":8, "x":4, "y":40},
+ {"matrix":[3, 1], "flags":4, "x":18, "y":40},
+ {"matrix":[3, 2], "flags":4, "x":29, "y":40},
+ {"matrix":[3, 3], "flags":4, "x":39, "y":40},
+ {"matrix":[3, 4], "flags":4, "x":50, "y":40},
+ {"matrix":[3, 5], "flags":4, "x":60, "y":40},
+ {"matrix":[3, 6], "flags":4, "x":70, "y":40},
+ {"matrix":[3, 7], "flags":4, "x":81, "y":40},
+ {"matrix":[3, 8], "flags":4, "x":91, "y":40},
+ {"matrix":[3, 9], "flags":4, "x":102, "y":40},
+ {"matrix":[3, 10], "flags":4, "x":112, "y":40},
+ {"matrix":[3, 11], "flags":4, "x":123, "y":40},
+ {"matrix":[3, 13], "flags":4, "x":143, "y":40},
+
+ {"matrix":[4, 0], "flags":1, "x":7, "y":52},
+ {"matrix":[4, 2], "flags":4, "x":23, "y":52},
+ {"matrix":[4, 3], "flags":4, "x":34, "y":52},
+ {"matrix":[4, 4], "flags":4, "x":44, "y":52},
+ {"matrix":[4, 5], "flags":4, "x":55, "y":52},
+ {"matrix":[4, 6], "flags":4, "x":65, "y":52},
+ {"matrix":[4, 7], "flags":4, "x":76, "y":52},
+ {"matrix":[4, 8], "flags":4, "x":86, "y":52},
+ {"matrix":[4, 9], "flags":4, "x":96, "y":52},
+ {"matrix":[4, 10], "flags":4, "x":107, "y":52},
+ {"matrix":[4, 11], "flags":4, "x":117, "y":52},
+ {"matrix":[4, 13], "flags":1, "x":137, "y":52},
+ {"matrix":[4, 15], "flags":1, "x":165, "y":52},
+
+ {"matrix":[5, 0], "flags":1, "x":1, "y":64},
+ {"matrix":[5, 1], "flags":1, "x":14, "y":64},
+ {"matrix":[5, 2], "flags":1, "x":27, "y":64},
+ {"matrix":[5, 6], "flags":4, "x":67, "y":64},
+ {"matrix":[5, 10], "flags":1, "x":104, "y":64},
+ {"matrix":[5, 11], "flags":1, "x":116, "y":64},
+ {"matrix":[5, 12], "flags":4, "x":128, "y":64},
+ {"matrix":[5, 13], "flags":1, "x":140, "y":64},
+ {"matrix":[5, 14], "flags":1, "x":155, "y":64},
+ {"matrix":[5, 15], "flags":1, "x":165, "y":64},
+ {"matrix":[5, 16], "flags":1, "x":175, "y":64},
+
+ {"flags":1, "x":0, "y":0},
+ {"flags":1, "x":0, "y":16},
+ {"flags":1, "x":0, "y":28},
+ {"flags":1, "x":0, "y":40},
+ {"flags":1, "x":0, "y":52},
+ {"flags":1, "x":0, "y":64},
+ {"flags":1, "x":224, "y":0},
+ {"flags":1, "x":224, "y":16},
+ {"flags":1, "x":224, "y":28},
+ {"flags":1, "x":224, "y":40},
+ {"flags":1, "x":224, "y":52},
+ {"flags":1, "x":224, "y":64}
+ ]
+ }
+}
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/default/keymap.c
new file mode 100644
index 000000000000..7a234e01aa2d
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/default/keymap.c
@@ -0,0 +1,65 @@
+/* Copyright 2024 @ 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{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_TRNS, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_APP, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT ),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR,KC_SCROLL_LOCK,KC_PAUSE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN),KC_APP, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT ),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, 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_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
+
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/keymaps/keychron/keymap.c b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/keychron/keymap.c
new file mode 100644
index 000000000000..71cee8b98a60
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/keychron/keymap.c
@@ -0,0 +1,78 @@
+/* Copyright 2024 @ 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"
+#include "keychron_ft_common.h"
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MICT, KC_LAPA, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMMD, MO(MAC_FN),KC_APP, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT ),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_OSSW, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+
+ [WIN_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR,KC_SCROLL_LOCK,KC_PAUSE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN),KC_APP, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT ),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_CRTA, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_OSSW, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
+
+// clang-format on
+void housekeeping_task_user(void) {
+ housekeeping_task_keychron();
+ housekeeping_task_keychron_ft();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+ if (!process_record_keychron_ft(keycode, record)) {
+ return false;
+ }
+ return true;
+}
+
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/keymaps/keychron/rules.mk b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/keychron/rules.mk
new file mode 100644
index 000000000000..3c9fcc5c98c2
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/keychron/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+include keyboards/keychron/common/common.mk
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/keymaps/via/keymap.c b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/via/keymap.c
new file mode 100644
index 000000000000..4dc911ccea41
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/via/keymap.c
@@ -0,0 +1,63 @@
+/* Copyright 2024 @ 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
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN,
+};
+
+#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_tkl_ansi(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_TRNS, RGB_MOD,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RCMD, MO(MAC_FN), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ),
+
+ [MAC_FN] = LAYOUT_tkl_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ 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_BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR,KC_SCROLL_LOCK,KC_PAUSE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(WIN_FN),KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ),
+
+ [WIN_FN] = LAYOUT_tkl_ansi(
+ _______, 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_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
+};
+
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/keymaps/via/rules.mk b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/via/rules.mk
new file mode 100644
index 000000000000..0fcfbbf020d4
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/rgb.c b/keyboards/keychron/c3_pro/ansi/rgb/rgb.c
new file mode 100644
index 000000000000..e9a2efd26a70
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/rgb.c
@@ -0,0 +1,135 @@
+/* Copyright 2024 @ 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 "quantum.h"
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+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, G_1, I_1, H_1},
+ {0, G_3, I_3, H_3},
+ {0, G_4, I_4, H_4},
+ {0, G_5, I_5, H_5},
+ {0, G_6, I_6, H_6},
+ {0, G_7, I_7, H_7},
+ {0, G_8, I_8, H_8},
+ {0, G_9, I_9, H_9},
+ {0, G_10, I_10, H_10},
+ {0, G_11, I_11, H_11},
+ {0, G_12, I_12, H_12},
+ {0, G_13, I_13, H_13},
+ {0, G_14, I_14, H_14},
+ {0, G_15, I_15, H_15},
+ {0, G_16, I_16, H_16},
+ {1, G_16, I_16, H_16},
+
+ {0, D_1, F_1, E_1},
+ {0, D_2, F_2, E_2},
+ {0, D_3, F_3, E_3},
+ {0, D_4, F_4, E_4},
+ {0, D_5, F_5, E_5},
+ {0, D_6, F_6, E_6},
+ {0, D_7, F_7, E_7},
+ {0, D_8, F_8, E_8},
+ {0, D_9, F_9, E_9},
+ {0, D_10, F_10, E_10},
+ {0, D_11, F_11, E_11},
+ {0, D_12, F_12, E_12},
+ {0, D_13, F_13, E_13},
+ {0, D_14, F_14, E_14},
+ {0, D_15, F_15, E_15},
+ {0, D_16, F_16, E_16},
+ {1, G_13, I_13, H_13},
+
+ {0, A_1, C_1, B_1},
+ {0, A_2, C_2, B_2},
+ {0, A_3, C_3, B_3},
+ {0, A_4, C_4, B_4},
+ {0, A_5, C_5, B_5},
+ {0, A_6, C_6, B_6},
+ {0, A_7, C_7, B_7},
+ {0, A_8, C_8, B_8},
+ {0, A_9, C_9, B_9},
+ {0, A_10, C_10, B_10},
+ {0, A_11, C_11, B_11},
+ {0, A_12, C_12, B_12},
+ {0, A_13, C_13, B_13},
+ {0, A_14, C_14, B_14},
+ {0, A_15, C_15, B_15},
+ {0, A_16, C_16, B_16},
+ {1, G_15, I_15, H_15},
+
+ {1, G_1, I_1, H_1},
+ {1, G_2, I_2, H_2},
+ {1, G_3, I_3, H_3},
+ {1, G_4, I_4, H_4},
+ {1, G_5, I_5, H_5},
+ {1, G_6, I_6, H_6},
+ {1, G_7, I_7, H_7},
+ {1, G_8, I_8, H_8},
+ {1, G_9, I_9, H_9},
+ {1, G_10, I_10, H_10},
+ {1, G_11, I_11, H_11},
+ {1, G_12, I_12, H_12},
+ {1, G_14, I_14, H_14},
+
+ {1, A_1, C_1, B_1},
+ {1, A_3, C_3, B_3},
+ {1, A_4, C_4, B_4},
+ {1, A_5, C_5, B_5},
+ {1, A_6, C_6, B_6},
+ {1, A_7, C_7, B_7},
+ {1, A_8, C_8, B_8},
+ {1, A_9, C_9, B_9},
+ {1, A_10, C_10, B_10},
+ {1, A_11, C_11, B_11},
+ {1, A_12, C_12, B_12},
+ {1, A_14, C_14, B_14},
+ {1, A_16, C_16, B_16},
+
+ {1, D_1, F_1, E_1},
+ {1, D_2, F_2, E_2},
+ {1, D_3, F_3, E_3},
+ {1, D_7, F_7, E_7},
+ {1, D_11, F_11, E_11},
+ {1, D_12, F_12, E_12},
+ {1, D_13, F_13, E_13},
+ {1, D_14, F_14, E_14},
+ {1, D_15, F_15, E_15},
+ {1, D_16, F_16, E_16},
+ {1, A_15, C_15, B_15},
+
+ {0, J_1, L_1, K_1},
+ {0, J_2, L_2, K_2},
+ {0, J_3, L_3, K_3},
+ {0, J_4, L_4, K_4},
+ {0, J_5, L_5, K_5},
+ {0, J_6, L_6, K_6},
+ {0, J_7, L_7, K_7},
+ {0, J_8, L_8, K_8},
+ {0, J_9, L_9, K_9},
+ {0, J_10, L_10, K_10},
+ {0, J_11, L_11, K_11},
+ {0, J_12, L_12, K_12},
+};
+#endif
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/rules.mk b/keyboards/keychron/c3_pro/ansi/rgb/rules.mk
new file mode 100644
index 000000000000..7ff128fa692e
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
\ No newline at end of file
diff --git a/keyboards/keychron/c3_pro/c3_pro.c b/keyboards/keychron/c3_pro/c3_pro.c
index 61e6884eabc7..8a6eea2b6c49 100755
--- a/keyboards/keychron/c3_pro/c3_pro.c
+++ b/keyboards/keychron/c3_pro/c3_pro.c
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* Copyright 2024 @ 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
@@ -75,6 +75,44 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
}
switch (keycode) {
+#ifdef LED_MATRIX_ENABLE
+ case BL_TOGG:
+ if (record->event.pressed) {
+ switch (led_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ led_matrix_set_flags(LED_FLAG_NONE);
+ led_matrix_set_value_all(0);
+ } break;
+ default: {
+ led_matrix_set_flags(LED_FLAG_ALL);
+ } break;
+ }
+ }
+ if (!led_matrix_get_val()) {
+ led_matrix_set_flags(LED_FLAG_ALL);
+ led_matrix_increase_val();
+ }
+ return false;
+#endif
+#ifdef RGB_MATRIX_ENABLE
+ 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_get_val()){
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_increase_val();
+ }
+ return false;
+#endif
case KC_OSSW:
if (record->event.pressed) {
default_layer_xor(1U << 0);
@@ -88,6 +126,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
}
}
+#ifdef LED_MATRIX_ENABLE
bool led_matrix_indicators_kb(void) {
if (!led_matrix_indicators_user()) {
return false;
@@ -99,7 +138,19 @@ bool led_matrix_indicators_kb(void) {
return true;
}
+#endif
+#ifdef RGB_MATRIX_ENABLE
+bool rgb_matrix_indicators_kb(void){
+ if(!rgb_matrix_indicators_user()){
+ return false;
+ }
+ if(os_switch_indicate_count){
+ rgb_matrix_set_color_all(os_switch_indicate_count % 2 ? 0 : RGB_RED);
+ }
+ return true;
+}
+#endif
void suspend_power_down_kb(void) {
writePin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
writePin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
diff --git a/keyboards/keychron/c3_pro/c3_pro.h b/keyboards/keychron/c3_pro/c3_pro.h
index 7c999cc8bff3..39ea2a07d109 100755
--- a/keyboards/keychron/c3_pro/c3_pro.h
+++ b/keyboards/keychron/c3_pro/c3_pro.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron (https://www.keychron.com)
+/* Copyright 2024 @ 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
diff --git a/keyboards/keychron/c3_pro/config.h b/keyboards/keychron/c3_pro/config.h
index c07971566d5c..f8d443a5f6dd 100755
--- a/keyboards/keychron/c3_pro/config.h
+++ b/keyboards/keychron/c3_pro/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2023 @ Keychron(https://www.keychron.com)
+/* Copyright 2024 @ 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
@@ -20,11 +20,6 @@
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
-/* Indication led */
-#define LED_MAC_OS_PIN A4
-#define LED_WIN_OS_PIN A5
-#define LED_OS_PIN_ON_STATE 1
-
/* I2C driver Configuration */
#define I2C1_SCL_PIN B8
#define I2C1_SDA_PIN B9
@@ -34,3 +29,4 @@
/* Factory test keys */
#define FN_KEY1 MO(1)
#define FN_KEY2 MO(3)
+
diff --git a/keyboards/keychron/c3_pro/halconf.h b/keyboards/keychron/c3_pro/halconf.h
index 41bddcb2799b..093e4254c343 100755
--- a/keyboards/keychron/c3_pro/halconf.h
+++ b/keyboards/keychron/c3_pro/halconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 QMK
+/* Copyright 2024 @ 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
diff --git a/keyboards/keychron/c3_pro/info.json b/keyboards/keychron/c3_pro/info.json
index 8f951352b9e1..9c335110ac3b 100755
--- a/keyboards/keychron/c3_pro/info.json
+++ b/keyboards/keychron/c3_pro/info.json
@@ -2,7 +2,7 @@
"keyboard_name": "Keychron C3 Pro",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
- "maintainer": "lalalademaxiya1",
+ "maintainer": "Joe",
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"usb": {
@@ -15,114 +15,5 @@
"extrakey": true,
"mousekey": true,
"nkro": true
- },
- "indicators": {
- "caps_lock": "A3"
- },
- "matrix_pins": {
- "cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11", "C13", "C14", "C15", "C0", "C1", "C2", "C3", "A0","A1", "A2"],
- "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
- },
- "diode_direction": "ROW2COL",
- "community_layouts": [
- "tkl_ansi"
- ],
- "layouts": {
- "LAYOUT_tkl_ansi": {
- "layout": [
- {"matrix":[0,0], "x":0, "y":0},
- {"matrix":[0,2], "x":2, "y":0},
- {"matrix":[0,3], "x":3, "y":0},
- {"matrix":[0,4], "x":4, "y":0},
- {"matrix":[0,5], "x":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":11, "y":0},
- {"matrix":[0,11], "x":12, "y":0},
- {"matrix":[0,12], "x":13, "y":0},
- {"matrix":[0,13], "x":14, "y":0},
- {"matrix":[0,14], "x":15.25, "y":0},
- {"matrix":[0,15], "x":16.25, "y":0},
- {"matrix":[0,16], "x":17.25, "y":0},
-
- {"matrix":[1,0], "x":0, "y":1.25},
- {"matrix":[1,1], "x":1, "y":1.25},
- {"matrix":[1,2], "x":2, "y":1.25},
- {"matrix":[1,3], "x":3, "y":1.25},
- {"matrix":[1,4], "x":4, "y":1.25},
- {"matrix":[1,5], "x":5, "y":1.25},
- {"matrix":[1,6], "x":6, "y":1.25},
- {"matrix":[1,7], "x":7, "y":1.25},
- {"matrix":[1,8], "x":8, "y":1.25},
- {"matrix":[1,9], "x":9, "y":1.25},
- {"matrix":[1,10], "x":10, "y":1.25},
- {"matrix":[1,11], "x":11, "y":1.25},
- {"matrix":[1,12], "x":12, "y":1.25},
- {"matrix":[1,13], "x":13, "y":1.25, "w":2},
- {"matrix":[1,14], "x":15.25, "y":1.25},
- {"matrix":[1,15], "x":16.25, "y":1.25},
- {"matrix":[1,16], "x":17.25, "y":1.25},
-
- {"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
- {"matrix":[2,1], "x":1.5, "y":2.25},
- {"matrix":[2,2], "x":2.5, "y":2.25},
- {"matrix":[2,3], "x":3.5, "y":2.25},
- {"matrix":[2,4], "x":4.5, "y":2.25},
- {"matrix":[2,5], "x":5.5, "y":2.25},
- {"matrix":[2,6], "x":6.5, "y":2.25},
- {"matrix":[2,7], "x":7.5, "y":2.25},
- {"matrix":[2,8], "x":8.5, "y":2.25},
- {"matrix":[2,9], "x":9.5, "y":2.25},
- {"matrix":[2,10], "x":10.5, "y":2.25},
- {"matrix":[2,11], "x":11.5, "y":2.25},
- {"matrix":[2,12], "x":12.5, "y":2.25},
- {"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
- {"matrix":[2,14], "x":15.25, "y":2.25},
- {"matrix":[2,15], "x":16.25, "y":2.25},
- {"matrix":[2,16], "x":17.25, "y":2.25},
-
- {"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
- {"matrix":[3,1], "x":1.75, "y":3.25},
- {"matrix":[3,2], "x":2.75, "y":3.25},
- {"matrix":[3,3], "x":3.75, "y":3.25},
- {"matrix":[3,4], "x":4.75, "y":3.25},
- {"matrix":[3,5], "x":5.75, "y":3.25},
- {"matrix":[3,6], "x":6.75, "y":3.25},
- {"matrix":[3,7], "x":7.75, "y":3.25},
- {"matrix":[3,8], "x":8.75, "y":3.25},
- {"matrix":[3,9], "x":9.75, "y":3.25},
- {"matrix":[3,10], "x":10.75, "y":3.25},
- {"matrix":[3,11], "x":11.75, "y":3.25},
- {"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
-
- {"matrix":[4,0], "x":0, "y":4.25, "w":2.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},
- {"matrix":[4,5], "x":5.25, "y":4.25},
- {"matrix":[4,6], "x":6.25, "y":4.25},
- {"matrix":[4,7], "x":7.25, "y":4.25},
- {"matrix":[4,8], "x":8.25, "y":4.25},
- {"matrix":[4,9], "x":9.25, "y":4.25},
- {"matrix":[4,10], "x":10.25, "y":4.25},
- {"matrix":[4,11], "x":11.25, "y":4.25},
- {"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
- {"matrix":[4,15], "x":16.25, "y":4.25},
-
- {"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
- {"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
- {"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
- {"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
- {"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
- {"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
- {"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
- {"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
- {"matrix":[5,14], "x":15.25, "y":5.25},
- {"matrix":[5,15], "x":16.25, "y":5.25},
- {"matrix":[5,16], "x":17.25, "y":5.25}
- ]
- }
}
}
diff --git a/keyboards/keychron/c3_pro/mcuconf.h b/keyboards/keychron/c3_pro/mcuconf.h
index 494b71483ff9..ebf4048e09dc 100755
--- a/keyboards/keychron/c3_pro/mcuconf.h
+++ b/keyboards/keychron/c3_pro/mcuconf.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 QMK
+/* Copyright 2024 @ 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
diff --git a/keyboards/keychron/c3_pro/readme.md b/keyboards/keychron/c3_pro/readme.md
index 84772e23a6b0..ae2deb45a734 100755
--- a/keyboards/keychron/c3_pro/readme.md
+++ b/keyboards/keychron/c3_pro/readme.md
@@ -1,6 +1,6 @@
-# Keychron C3
+# Keychron C3 Pro
-![Keychron C3](https://i.imgur.com/b4FTJsf.jpg)
+![Keychron C3 Pro](https://i.imgur.com/b4FTJsf.jpg)
A customizable 87% keyboard.
@@ -10,11 +10,13 @@ A customizable 87% keyboard.
Make example for this keyboard (after setting up your build environment):
- make keychron/c3/ansi/white:default
+ make keychron/c3_pro/ansi/red:default
+ make keychron/c3_pro/ansi/rgb:default
Flashing example for this keyboard:
- make keychron/c3/ansi/white:default:flash
+ make keychron/c3_pro/ansi/red:default:flash
+ make keychron/c3_pro/ansi/rgb:default:flash
## bootloader
diff --git a/keyboards/keychron/c3_pro/via_json/c3_pro_ansi_rgb.json b/keyboards/keychron/c3_pro/via_json/c3_pro_ansi_rgb.json
new file mode 100644
index 000000000000..1a24ab2f98ad
--- /dev/null
+++ b/keyboards/keychron/c3_pro/via_json/c3_pro_ansi_rgb.json
@@ -0,0 +1,286 @@
+{
+ "name": "Keychron C3 Pro ANSI RGB",
+ "vendorId": "0x3434",
+ "productId": "0x0433",
+ "keycodes" : ["qmk_lighting"],
+ "menus": [
+ {
+ "label": "Lighting",
+ "content": [
+ {
+ "label": "Backlight",
+ "content": [
+ {
+ "label": "Brightness",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
+ },
+ {
+ "label": "Effect",
+ "type": "dropdown",
+ "content": ["id_qmk_rgb_matrix_effect", 3, 2],
+ "options": [
+ ["None", 0],
+ ["Solid Color", 1],
+ ["Breathing", 2],
+ ["Band Spiral Val", 3],
+ ["Cycle All", 4],
+ ["Cycle Left Right", 5],
+ ["Cycle Up Down", 6],
+ ["Rainbow Moving Chevron", 7],
+ ["Cycle Out In", 8],
+ ["Cycle Out In Dual", 9],
+ ["Cycle Pinwheel", 10],
+ ["Cycle Spiral", 11],
+ ["Dual Beacon", 12],
+ ["Rainbow Beacon", 13],
+ ["Jellybean Raindrops", 14],
+ ["Pixel Rain", 15],
+ ["Typing Heatmap", 16],
+ ["Digital Rain", 17],
+ ["Reactive Simple", 18],
+ ["Reactive Multiwide", 19],
+ ["Reactive Multinexus", 20],
+ ["Splash", 21],
+ ["Solid Splash", 22]
+ ]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} > 1",
+ "label": "Effect Speed",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0 && ( {id_qmk_rgb_matrix_effect} < 4 || {id_qmk_rgb_matrix_effect} == 18 || ({id_qmk_rgb_matrix_effect} > 17 && {id_qmk_rgb_matrix_effect} != 21) ) ",
+ "label": "Color",
+ "type": "color",
+ "content": ["id_qmk_rgb_matrix_color", 3, 4]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "customKeycodes": [
+ {"name": "Mission Control", "title": "Mission Control in macOS", "shortName": "MCtrl"},
+ {"name": "Launch Pad", "title": "Launch Pad in macOS", "shortName": "LPad"},
+ {"name": "Left Option", "title": "Left Option in macOS", "shortName": "LOpt"},
+ {"name": "Right Option", "title": "Right Option in macOS", "shortName": "ROpt"},
+ {"name": "Left Cmd", "title": "Left Command in macOS", "shortName": "LCmd"},
+ {"name": "Right Cmd", "title": "Right Command in macOS", "shortName": "RCmd"},
+ {"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
+ {"name": "Task View", "title": "Task View in windows", "shortName": "Task"},
+ {"name": "File Explorer", "title": "File Explorer in windows", "shortName": "File"},
+ {"name": "Screen Shot", "title": "Screenshot in macOS", "shortName": "SShot"},
+ {"name": "Cortana", "title": "Cortana in windows", "shortName": "Cortana"},
+ {"name": "Mac/Win", "title": "Switch between Windows and mac OS", "shortName": "Mac/Win"}
+ ],
+ "matrix": {"rows": 6, "cols": 17},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0,0",
+ {
+ "x": 1,
+ "c": "#cccccc"
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 0.5,
+ "c": "#aaaaaa"
+ },
+ "0,6",
+ "0,7",
+ "0,8",
+ "0,9",
+ {
+ "x": 0.5,
+ "c": "#cccccc"
+ },
+ "0,10",
+ "0,11",
+ "0,12",
+ "0,13",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0,14",
+ "0,15",
+ "0,16"
+ ],
+ [
+ {
+ "y": 0.25
+ },
+ "1,0",
+ {
+ "c": "#cccccc"
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "1,7",
+ "1,8",
+ "1,9",
+ "1,10",
+ "1,11",
+ "1,12",
+ {
+ "c": "#aaaaaa",
+ "w": 2
+ },
+ "1,13",
+ {
+ "x": 0.25
+ },
+ "1,14",
+ "1,15",
+ "1,16"
+ ],
+ [
+ {
+ "w": 1.5
+ },
+ "2,0",
+ {
+ "c": "#cccccc"
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ "2,4",
+ "2,5",
+ "2,6",
+ "2,7",
+ "2,8",
+ "2,9",
+ "2,10",
+ "2,11",
+ "2,12",
+ {
+ "c": "#aaaaaa",
+ "w": 1.5
+ },
+ "2,13",
+ {
+ "x": 0.25
+ },
+ "2,14",
+ "2,15",
+ "2,16"
+ ],
+ [
+ {
+ "w": 1.75
+ },
+ "3,0",
+ {
+ "c": "#cccccc"
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ "3,7",
+ "3,8",
+ "3,9",
+ "3,10",
+ "3,11",
+ {
+ "c": "#777777",
+ "w": 2.25
+ },
+ "3,13"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 2.25
+ },
+ "4,0",
+ {
+ "c": "#cccccc"
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ "4,7",
+ "4,8",
+ "4,9",
+ "4,10",
+ "4,11",
+ {
+ "c": "#aaaaaa",
+ "w": 2.75
+ },
+ "4,13",
+ {
+ "x": 1.25,
+ "c": "#cccccc"
+ },
+ "4,15"
+ ],
+ [
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,0",
+ {
+ "w": 1.25
+ },
+ "5,1",
+ {
+ "w": 1.25
+ },
+ "5,2",
+ {
+ "c": "#777777",
+ "w": 6.25
+ },
+ "5,6",
+ {
+ "c": "#aaaaaa",
+ "w": 1.25
+ },
+ "5,10",
+ {
+ "w": 1.25
+ },
+ "5,11",
+ {
+ "w": 1.25
+ },
+ "5,12",
+ {
+ "w": 1.25
+ },
+ "5,13",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "5,14",
+ "5,15",
+ "5,16"
+ ]
+ ]
+ }
+}
From cc9a612161b3d2731c65c1e8d3dda2044d387fcb Mon Sep 17 00:00:00 2001
From: lokher
Date: Tue, 20 Aug 2024 09:50:47 +0800
Subject: [PATCH 26/27] Added Lemokey P1 ANSI
---
builddefs/common_features.mk | 17 +-
drivers/led/snled27351-simple-spi.c | 235 ++++++++++++
drivers/led/snled27351-simple-spi.h | 346 +++++++++++++++++
drivers/led/snled27351-spi.c | 250 ++++++++++++
drivers/led/snled27351-spi.h | 349 +++++++++++++++++
keyboards/lemokey/common/common.mk | 6 +
keyboards/lemokey/common/factory_test.c | 355 ++++++++++++++++++
keyboards/lemokey/common/factory_test.h | 33 ++
keyboards/lemokey/common/lemokey_common.c | 113 ++++++
keyboards/lemokey/common/lemokey_common.h | 61 +++
keyboards/lemokey/common/lemokey_common.mk | 11 +
keyboards/lemokey/common/lemokey_raw_hid.c | 91 +++++
keyboards/lemokey/common/lemokey_task.c | 119 ++++++
keyboards/lemokey/common/lemokey_task.h | 24 ++
keyboards/lemokey/common/matrix.c | 218 +++++++++++
.../lemokey/p1/ansi_encoder/ansi_encoder.c | 148 ++++++++
keyboards/lemokey/p1/ansi_encoder/config.h | 48 +++
keyboards/lemokey/p1/ansi_encoder/info.json | 99 +++++
.../p1/ansi_encoder/keymaps/default/keymap.c | 77 ++++
.../p1/ansi_encoder/keymaps/via/keymap.c | 77 ++++
.../p1/ansi_encoder/keymaps/via/rules.mk | 1 +
keyboards/lemokey/p1/ansi_encoder/rules.mk | 1 +
keyboards/lemokey/p1/config.h | 54 +++
keyboards/lemokey/p1/halconf.h | 24 ++
keyboards/lemokey/p1/info.json | 67 ++++
keyboards/lemokey/p1/mcuconf.h | 26 ++
keyboards/lemokey/p1/p1.c | 34 ++
keyboards/lemokey/p1/readme.md | 21 ++
keyboards/lemokey/p1/rules.mk | 3 +
.../p1/via_json/p1_ansi_encoder_v1.0.json | 280 ++++++++++++++
quantum/led_matrix/led_matrix.h | 3 +
quantum/led_matrix/led_matrix_drivers.c | 19 +
quantum/rgb_matrix/rgb_matrix.h | 2 +
quantum/rgb_matrix/rgb_matrix_drivers.c | 19 +
34 files changed, 3229 insertions(+), 2 deletions(-)
create mode 100644 drivers/led/snled27351-simple-spi.c
create mode 100644 drivers/led/snled27351-simple-spi.h
create mode 100644 drivers/led/snled27351-spi.c
create mode 100644 drivers/led/snled27351-spi.h
create mode 100644 keyboards/lemokey/common/common.mk
create mode 100644 keyboards/lemokey/common/factory_test.c
create mode 100644 keyboards/lemokey/common/factory_test.h
create mode 100644 keyboards/lemokey/common/lemokey_common.c
create mode 100644 keyboards/lemokey/common/lemokey_common.h
create mode 100644 keyboards/lemokey/common/lemokey_common.mk
create mode 100644 keyboards/lemokey/common/lemokey_raw_hid.c
create mode 100644 keyboards/lemokey/common/lemokey_task.c
create mode 100644 keyboards/lemokey/common/lemokey_task.h
create mode 100644 keyboards/lemokey/common/matrix.c
create mode 100644 keyboards/lemokey/p1/ansi_encoder/ansi_encoder.c
create mode 100644 keyboards/lemokey/p1/ansi_encoder/config.h
create mode 100644 keyboards/lemokey/p1/ansi_encoder/info.json
create mode 100644 keyboards/lemokey/p1/ansi_encoder/keymaps/default/keymap.c
create mode 100644 keyboards/lemokey/p1/ansi_encoder/keymaps/via/keymap.c
create mode 100644 keyboards/lemokey/p1/ansi_encoder/keymaps/via/rules.mk
create mode 100644 keyboards/lemokey/p1/ansi_encoder/rules.mk
create mode 100644 keyboards/lemokey/p1/config.h
create mode 100644 keyboards/lemokey/p1/halconf.h
create mode 100644 keyboards/lemokey/p1/info.json
create mode 100644 keyboards/lemokey/p1/mcuconf.h
create mode 100644 keyboards/lemokey/p1/p1.c
create mode 100644 keyboards/lemokey/p1/readme.md
create mode 100644 keyboards/lemokey/p1/rules.mk
create mode 100644 keyboards/lemokey/p1/via_json/p1_ansi_encoder_v1.0.json
diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk
index 094eda6fef64..e7018ce21db1 100644
--- a/builddefs/common_features.mk
+++ b/builddefs/common_features.mk
@@ -348,7 +348,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
LED_MATRIX_ENABLE ?= no
-VALID_LED_MATRIX_TYPES := is31fl3731 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 custom
+VALID_LED_MATRIX_TYPES := is31fl3731 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 snled27351_spi custom
# TODO: is31fl3733 is31fl3737 is31fl3741
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
@@ -412,11 +412,17 @@ endif
QUANTUM_LIB_SRC += i2c_master.c
endif
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), snled27351_spi)
+ OPT_DEFS += -DSNLED27351_SPI -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led
+ SRC += snled27351-simple-spi.c
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
endif
RGB_MATRIX_ENABLE ?= no
-VALID_RGB_MATRIX_TYPES := aw20216 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 ws2812 custom
+VALID_RGB_MATRIX_TYPES := aw20216 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 snled27351_spi ws2812 custom
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid RGB_MATRIX_DRIVER,RGB_MATRIX_DRIVER="$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
@@ -514,6 +520,13 @@ endif
QUANTUM_LIB_SRC += i2c_master.c
endif
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), snled27351_spi)
+ OPT_DEFS += -DSNLED27351_SPI -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led
+ SRC += snled27351-spi.c
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+
ifeq ($(strip $(RGB_MATRIX_DRIVER)), ws2812)
OPT_DEFS += -DWS2812
WS2812_DRIVER_REQUIRED := yes
diff --git a/drivers/led/snled27351-simple-spi.c b/drivers/led/snled27351-simple-spi.c
new file mode 100644
index 000000000000..37097c853990
--- /dev/null
+++ b/drivers/led/snled27351-simple-spi.c
@@ -0,0 +1,235 @@
+/* Copyright 2021 @ 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 "snled27351-simple-spi.h"
+#include "spi_master.h"
+
+#define SNLED27351_PWM_REGISTER_COUNT 192
+#define SNLED27351_LED_CONTROL_REGISTER_COUNT 24
+
+
+#ifndef SNLED27351_PHASE_CHANNEL
+# define SNLED27351_PHASE_CHANNEL MSKPHASE_12CHANNEL
+#endif
+
+#ifndef SNLED27351_CURRENT_TUNE
+# define SNLED27351_CURRENT_TUNE \
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
+#endif
+
+#define SNLED27351_WRITE (0 << 7)
+#define SNLED27351_READ (1 << 7)
+#define SNLED27351_PATTERN (2 << 4)
+
+#ifdef DRIVER_CS_PINS
+pin_t cs_pins[] = DRIVER_CS_PINS;
+#else
+error "no DRIVER_CS_PINS defined"
+#endif
+
+// These buffers match the snled27351 PWM registers.
+// The control buffers match the PG0 LED On/Off registers.
+// Storing them like this is optimal for I2C transfers to the registers.
+// We could optimize this and take out the unused registers from these
+// buffers and the transfers in snled27351_write_pwm_buffer() but it's
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[SNLED27351_DRIVER_COUNT][SNLED27351_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[SNLED27351_DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[SNLED27351_DRIVER_COUNT][SNLED27351_LED_CONTROL_REGISTER_COUNT] = {0};
+bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] = {false};
+
+
+
+bool snled27351_write(uint8_t index, uint8_t page, uint8_t reg, uint8_t *data, uint8_t len) {
+ static uint8_t spi_transfer_buffer[2] = {0};
+
+ if (index > ARRAY_SIZE(((pin_t[])DRIVER_CS_PINS)) - 1) return false;
+
+ if (!spi_start(cs_pins[index], false, 0, SNLED23751_SPI_DIVISOR)) {
+ spi_stop();
+ return false;
+ }
+
+ spi_transfer_buffer[0] = SNLED27351_WRITE | SNLED27351_PATTERN | (page & 0x0F);
+ spi_transfer_buffer[1] = reg;
+
+ if (spi_transmit(spi_transfer_buffer, 2) != SPI_STATUS_SUCCESS) {
+ spi_stop();
+ return false;
+ }
+
+ if (spi_transmit(data, len) != SPI_STATUS_SUCCESS) {
+ spi_stop();
+ return false;
+ }
+
+ spi_stop();
+ return true;
+}
+
+bool snled27351_write_register(uint8_t index, uint8_t page, uint8_t reg, uint8_t data) {
+ return snled27351_write(index, page, reg, &data, 1);
+}
+
+bool snled27351_write_pwm_buffer(uint8_t index, uint8_t *pwm_buffer) {
+ if (g_pwm_buffer_update_required[index]) {
+ snled27351_write(index, LED_PWM_PAGE, 0, g_pwm_buffer[index], SNLED27351_PWM_REGISTER_COUNT);
+ }
+ g_pwm_buffer_update_required[index] = false;
+ return true;
+}
+
+void snled27351_init_drivers(void) {
+#if defined(LED_DRIVER_SHUTDOWN_PIN)
+ setPinOutput(LED_DRIVER_SHUTDOWN_PIN);
+ writePinHigh(LED_DRIVER_SHUTDOWN_PIN);
+#endif
+
+ spi_init();
+
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_init(i);
+
+ for (int index = 0; index < SNLED27351_LED_COUNT; index++) {
+ snled27351_set_led_control_register(index, true);
+ }
+
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_update_led_control_registers(i);
+}
+
+void snled27351_init(uint8_t index) {
+ setPinOutput(cs_pins[index]);
+ writePinHigh(cs_pins[index]);
+ // Setting LED driver to shutdown mode
+ snled27351_write_register(index, FUNCTION_PAGE, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE);
+ // Setting internal channel pulldown/pullup
+ snled27351_write_register(index, FUNCTION_PAGE, PDU_REG, MSKSET_CA_CB_CHANNEL);
+ // Select number of scan phase
+ snled27351_write_register(index, FUNCTION_PAGE, SCAN_PHASE_REG, SNLED27351_PHASE_CHANNEL);
+ // Setting PWM Delay Phase
+ snled27351_write_register(index, FUNCTION_PAGE, SLEW_RATE_CONTROL_MODE1_REG, MSKPWM_DELAY_PHASE_ENABLE);
+ // Setting Driving/Sinking Channel Slew Rate
+ snled27351_write_register(index, FUNCTION_PAGE, SLEW_RATE_CONTROL_MODE2_REG, MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE);
+ // Setting Iref
+ snled27351_write_register(index, FUNCTION_PAGE, SOFTWARE_SLEEP_REG, MSKSLEEP_DISABLE);
+
+ // Set LED CONTROL PAGE (Page 0)
+ uint8_t on_off_reg[LED_CONTROL_ON_OFF_LENGTH] = {0};
+ snled27351_write(index, LED_CONTROL_PAGE, 0, on_off_reg, LED_CONTROL_ON_OFF_LENGTH);
+
+ // Set PWM PAGE (Page 1)
+ uint8_t pwm_reg[LED_PWM_LENGTH];
+ memset(pwm_reg, 0, LED_PWM_LENGTH);
+ snled27351_write(index, LED_PWM_PAGE, 0, pwm_reg, LED_PWM_LENGTH);
+
+ // Set CURRENT PAGE (Page 4)
+ uint8_t current_tune_reg[LED_CURRENT_TUNE_LENGTH] = SNLED27351_CURRENT_TUNE;
+ snled27351_write(index, CURRENT_TUNE_PAGE, 0, current_tune_reg, LED_CURRENT_TUNE_LENGTH);
+
+ // // Enable LEDs ON/OFF
+ // memset(on_off_reg, 0xFF, LED_CONTROL_ON_OFF_LENGTH);
+ // snled27351_write(index, LED_CONTROL_PAGE, 0, on_off_reg, LED_CONTROL_ON_OFF_LENGTH);
+
+ // Setting LED driver to normal mode
+ snled27351_write_register(index, FUNCTION_PAGE, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
+}
+
+void snled27351_set_value(int index, uint8_t value) {
+ snled27351_led_t led;
+ if (index >= 0 && index < SNLED27351_LED_COUNT) {
+ memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led));
+
+ g_pwm_buffer[led.driver][led.v] = value;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void snled27351_set_value_all(uint8_t value) {
+ for (int i = 0; i < SNLED27351_LED_COUNT; i++) {
+ snled27351_set_value(i, value);
+ }
+}
+
+void snled27351_set_led_control_register(uint8_t index, bool value) {
+ snled27351_led_t led;
+ memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led));
+
+ uint8_t control_register = led.v / 8;
+ uint8_t bit_value = led.v % 8;
+
+ if (value) {
+ g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
+ } else {
+ g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void snled27351_update_pwm_buffers(uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ if (!snled27351_write_pwm_buffer(index, g_pwm_buffer[index])) {
+ g_led_control_registers_update_required[index] = true;
+ }
+ }
+ g_pwm_buffer_update_required[index] = false;
+}
+
+void snled27351_update_led_control_registers(uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ snled27351_write(index, LED_CONTROL_PAGE, 0, g_led_control_registers[index], 24);
+ }
+ g_led_control_registers_update_required[index] = false;
+}
+
+void snled27351_flush(void) {
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_update_pwm_buffers(i);
+}
+
+void snled27351_shutdown(void) {
+# if defined(LED_DRIVER_SHUTDOWN_PIN)
+ writePinLow(LED_DRIVER_SHUTDOWN_PIN);
+# else
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_sw_shutdown(i);
+# endif
+}
+
+void snled27351_exit_shutdown(void) {
+# if defined(LED_DRIVER_SHUTDOWN_PIN)
+ writePinHigh(LED_DRIVER_SHUTDOWN_PIN);
+# else
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_sw_return_normal(i);
+# endif
+}
+
+void snled27351_sw_return_normal(uint8_t index) {
+ // Select to function page
+ // Setting LED driver to normal mode
+ snled27351_write_register(index, FUNCTION_PAGE, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
+}
+
+void snled27351_sw_shutdown(uint8_t index) {
+ // Select to function page
+ // Setting LED driver to shutdown mode
+ snled27351_write_register(index, FUNCTION_PAGE, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE);
+ // Write SW Sleep Register
+ snled27351_write_register(index, FUNCTION_PAGE, SOFTWARE_SLEEP_REG, MSKSLEEP_ENABLE);
+}
diff --git a/drivers/led/snled27351-simple-spi.h b/drivers/led/snled27351-simple-spi.h
new file mode 100644
index 000000000000..465b63ca6d8b
--- /dev/null
+++ b/drivers/led/snled27351-simple-spi.h
@@ -0,0 +1,346 @@
+/* Copyright 2021 @ 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 .
+ */
+
+#pragma once
+
+#include
+#include
+#include "progmem.h"
+#include "util.h"
+
+#if defined(LED_MATRIX_SNLED27351_SPI)
+# define SNLED27351_LED_COUNT LED_MATRIX_LED_COUNT
+#endif
+
+#define SNLED27351_DRIVER_COUNT (sizeof(cs_pins) / sizeof(pin_t))
+typedef struct snled27351_led_t {
+ uint8_t driver : 2;
+ uint8_t v;
+} PACKED snled27351_led_t;
+
+extern const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT];
+
+void snled27351_init_drivers(void);
+void snled27351_init(uint8_t index);
+bool snled27351_write_register(uint8_t index, uint8_t page, uint8_t reg, uint8_t data);
+bool snled27351_write_pwm_buffer(uint8_t index, uint8_t *pwm_buffer);
+
+void snled27351_set_value(int index, uint8_t value);
+void snled27351_set_value_all(uint8_t value);
+
+void snled27351_set_led_control_register(uint8_t index, bool value);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void snled27351_update_pwm_buffers(uint8_t index);
+void snled27351_update_led_control_registers(uint8_t index);
+void snled27351_flush(void);
+void snled27351_shutdown(void);
+void snled27351_exit_shutdown(void);
+void snled27351_sw_return_normal(uint8_t index);
+void snled27351_sw_shutdown(uint8_t index);
+
+// Registers Page Define
+#define CONFIGURE_CMD_PAGE 0xFD
+#define LED_CONTROL_PAGE 0x00
+#define LED_PWM_PAGE 0x01
+#define FUNCTION_PAGE 0x03
+#define CURRENT_TUNE_PAGE 0x04
+
+// Function Register: address 0x00
+#define CONFIGURATION_REG 0x00
+#define MSKSW_SHUT_DOWN_MODE (0x0 << 0)
+#define MSKSW_NORMAL_MODE (0x1 << 0)
+
+#define DRIVER_ID_REG 0x11
+#define SNLED27351_ID 0x8A
+
+#define PDU_REG 0x13
+#define MSKSET_CA_CB_CHANNEL 0xAA
+#define MSKCLR_CA_CB_CHANNEL 0x00
+
+#define SCAN_PHASE_REG 0x14
+#define MSKPHASE_12CHANNEL 0x00
+#define MSKPHASE_11CHANNEL 0x01
+#define MSKPHASE_10CHANNEL 0x02
+#define MSKPHASE_9CHANNEL 0x03
+#define MSKPHASE_8CHANNEL 0x04
+#define MSKPHASE_7CHANNEL 0x05
+#define MSKPHASE_6CHANNEL 0x06
+#define MSKPHASE_5CHANNEL 0x07
+#define MSKPHASE_4CHANNEL 0x08
+#define MSKPHASE_3CHANNEL 0x09
+#define MSKPHASE_2CHANNEL 0x0A
+#define MSKPHASE_1CHANNEL 0x0B
+
+#define SLEW_RATE_CONTROL_MODE1_REG 0x15
+#define MSKPWM_DELAY_PHASE_ENABLE 0x04
+#define MSKPWM_DELAY_PHASE_DISABLE 0x00
+
+#define SLEW_RATE_CONTROL_MODE2_REG 0x16
+#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE 0xC0
+#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_DISABLE 0x00
+
+#define OPEN_SHORT_ENABLE_REG 0x17
+#define MSKOPEN_DETECTION_ENABLE (0x01 << 7)
+#define MSKOPEN_DETECTION_DISABLE (0x00)
+
+#define MSKSHORT_DETECTION_ENABLE (0x01 << 6)
+#define MSKSHORT_DETECTION_DISABLE (0x00)
+
+#define OPEN_SHORT_DUTY_REG 0x18
+#define OPEN_SHORT_FLAG_REG 0x19
+
+#define MSKOPEN_DETECTION_INTERRUPT_ENABLE (0x01 << 7)
+#define MSKOPEN_DETECTION_INTERRUPT_DISABLE (0x00)
+
+#define MSKSHORT_DETECTION_INTERRUPT_ENABLE (0x01 << 6)
+#define MSKSHORT_DETECTION_INTERRUPT_DISABLE (0x00)
+
+#define SOFTWARE_SLEEP_REG 0x1A
+#define MSKSLEEP_ENABLE 0x02
+#define MSKSLEEP_DISABLE 0x00
+
+// LED Control Registers
+#define LED_CONTROL_ON_OFF_FIRST_ADDR 0x0
+#define LED_CONTROL_ON_OFF_LAST_ADDR 0x17
+#define LED_CONTROL_ON_OFF_LENGTH ((LED_CONTROL_ON_OFF_LAST_ADDR - LED_CONTROL_ON_OFF_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_OPEN_FIRST_ADDR 0x18
+#define LED_CONTROL_OPEN_LAST_ADDR 0x2F
+#define LED_CONTROL_OPEN_LENGTH ((LED_CONTROL_OPEN_LAST_ADDR - LED_CONTROL_OPEN_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_SHORT_FIRST_ADDR 0x30
+#define LED_CONTROL_SHORT_LAST_ADDR 0x47
+#define LED_CONTROL_SHORT_LENGTH ((LED_CONTROL_SHORT_LAST_ADDR - LED_CONTROL_SHORT_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_PAGE_LENGTH 0x48
+
+// LED Control Registers
+#define LED_PWM_FIRST_ADDR 0x00
+#define LED_PWM_LAST_ADDR 0xBF
+#define LED_PWM_LENGTH 0xC0
+
+// Current Tune Registers
+#define LED_CURRENT_TUNE_FIRST_ADDR 0x00
+#define LED_CURRENT_TUNE_LAST_ADDR 0x0B
+#define LED_CURRENT_TUNE_LENGTH 0x0C
+
+#define A_1 0x00
+#define A_2 0x01
+#define A_3 0x02
+#define A_4 0x03
+#define A_5 0x04
+#define A_6 0x05
+#define A_7 0x06
+#define A_8 0x07
+#define A_9 0x08
+#define A_10 0x09
+#define A_11 0x0A
+#define A_12 0x0B
+#define A_13 0x0C
+#define A_14 0x0D
+#define A_15 0x0E
+#define A_16 0x0F
+
+#define B_1 0x10
+#define B_2 0x11
+#define B_3 0x12
+#define B_4 0x13
+#define B_5 0x14
+#define B_6 0x15
+#define B_7 0x16
+#define B_8 0x17
+#define B_9 0x18
+#define B_10 0x19
+#define B_11 0x1A
+#define B_12 0x1B
+#define B_13 0x1C
+#define B_14 0x1D
+#define B_15 0x1E
+#define B_16 0x1F
+
+#define C_1 0x20
+#define C_2 0x21
+#define C_3 0x22
+#define C_4 0x23
+#define C_5 0x24
+#define C_6 0x25
+#define C_7 0x26
+#define C_8 0x27
+#define C_9 0x28
+#define C_10 0x29
+#define C_11 0x2A
+#define C_12 0x2B
+#define C_13 0x2C
+#define C_14 0x2D
+#define C_15 0x2E
+#define C_16 0x2F
+
+#define D_1 0x30
+#define D_2 0x31
+#define D_3 0x32
+#define D_4 0x33
+#define D_5 0x34
+#define D_6 0x35
+#define D_7 0x36
+#define D_8 0x37
+#define D_9 0x38
+#define D_10 0x39
+#define D_11 0x3A
+#define D_12 0x3B
+#define D_13 0x3C
+#define D_14 0x3D
+#define D_15 0x3E
+#define D_16 0x3F
+
+#define E_1 0x40
+#define E_2 0x41
+#define E_3 0x42
+#define E_4 0x43
+#define E_5 0x44
+#define E_6 0x45
+#define E_7 0x46
+#define E_8 0x47
+#define E_9 0x48
+#define E_10 0x49
+#define E_11 0x4A
+#define E_12 0x4B
+#define E_13 0x4C
+#define E_14 0x4D
+#define E_15 0x4E
+#define E_16 0x4F
+
+#define F_1 0x50
+#define F_2 0x51
+#define F_3 0x52
+#define F_4 0x53
+#define F_5 0x54
+#define F_6 0x55
+#define F_7 0x56
+#define F_8 0x57
+#define F_9 0x58
+#define F_10 0x59
+#define F_11 0x5A
+#define F_12 0x5B
+#define F_13 0x5C
+#define F_14 0x5D
+#define F_15 0x5E
+#define F_16 0x5F
+
+#define G_1 0x60
+#define G_2 0x61
+#define G_3 0x62
+#define G_4 0x63
+#define G_5 0x64
+#define G_6 0x65
+#define G_7 0x66
+#define G_8 0x67
+#define G_9 0x68
+#define G_10 0x69
+#define G_11 0x6A
+#define G_12 0x6B
+#define G_13 0x6C
+#define G_14 0x6D
+#define G_15 0x6E
+#define G_16 0x6F
+
+#define H_1 0x70
+#define H_2 0x71
+#define H_3 0x72
+#define H_4 0x73
+#define H_5 0x74
+#define H_6 0x75
+#define H_7 0x76
+#define H_8 0x77
+#define H_9 0x78
+#define H_10 0x79
+#define H_11 0x7A
+#define H_12 0x7B
+#define H_13 0x7C
+#define H_14 0x7D
+#define H_15 0x7E
+#define H_16 0x7F
+
+#define I_1 0x80
+#define I_2 0x81
+#define I_3 0x82
+#define I_4 0x83
+#define I_5 0x84
+#define I_6 0x85
+#define I_7 0x86
+#define I_8 0x87
+#define I_9 0x88
+#define I_10 0x89
+#define I_11 0x8A
+#define I_12 0x8B
+#define I_13 0x8C
+#define I_14 0x8D
+#define I_15 0x8E
+#define I_16 0x8F
+
+#define J_1 0x90
+#define J_2 0x91
+#define J_3 0x92
+#define J_4 0x93
+#define J_5 0x94
+#define J_6 0x95
+#define J_7 0x96
+#define J_8 0x97
+#define J_9 0x98
+#define J_10 0x99
+#define J_11 0x9A
+#define J_12 0x9B
+#define J_13 0x9C
+#define J_14 0x9D
+#define J_15 0x9E
+#define J_16 0x9F
+
+#define K_1 0xA0
+#define K_2 0xA1
+#define K_3 0xA2
+#define K_4 0xA3
+#define K_5 0xA4
+#define K_6 0xA5
+#define K_7 0xA6
+#define K_8 0xA7
+#define K_9 0xA8
+#define K_10 0xA9
+#define K_11 0xAA
+#define K_12 0xAB
+#define K_13 0xAC
+#define K_14 0xAD
+#define K_15 0xAE
+#define K_16 0xAF
+
+#define L_1 0xB0
+#define L_2 0xB1
+#define L_3 0xB2
+#define L_4 0xB3
+#define L_5 0xB4
+#define L_6 0xB5
+#define L_7 0xB6
+#define L_8 0xB7
+#define L_9 0xB8
+#define L_10 0xB9
+#define L_11 0xBA
+#define L_12 0xBB
+#define L_13 0xBC
+#define L_14 0xBD
+#define L_15 0xBE
+#define L_16 0xBF
diff --git a/drivers/led/snled27351-spi.c b/drivers/led/snled27351-spi.c
new file mode 100644
index 000000000000..a6d810a6c2fd
--- /dev/null
+++ b/drivers/led/snled27351-spi.c
@@ -0,0 +1,250 @@
+/* Copyright 2021 @ 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 "snled27351-spi.h"
+#include "spi_master.h"
+
+#define SNLED27351_PWM_REGISTER_COUNT 192
+#define SNLED27351_LED_CONTROL_REGISTER_COUNT 24
+
+#ifndef SNLED27351_PHASE_CHANNEL
+# define SNLED27351_PHASE_CHANNEL MSKPHASE_12CHANNEL
+#endif
+
+#ifndef SNLED27351_CURRENT_TUNE
+# define SNLED27351_CURRENT_TUNE \
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
+#endif
+
+#define SNLED27351_WRITE (0 << 7)
+#define SNLED27351_READ (1 << 7)
+#define SNLED27351_PATTERN (2 << 4)
+
+#ifdef DRIVER_CS_PINS
+pin_t cs_pins[] = DRIVER_CS_PINS;
+#else
+error "no DRIVER_CS_PINS defined"
+#endif
+
+// These buffers match the snled27351 PWM registers.
+// The control buffers match the PG0 LED On/Off registers.
+// Storing them like this is optimal for I2C transfers to the registers.
+// We could optimize this and take out the unused registers from these
+// buffers and the transfers in snled27351_write_pwm_buffer() but it's
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[SNLED27351_DRIVER_COUNT][SNLED27351_PWM_REGISTER_COUNT];
+bool g_pwm_buffer_update_required[SNLED27351_DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[SNLED27351_DRIVER_COUNT][SNLED27351_LED_CONTROL_REGISTER_COUNT] = {0};
+bool g_led_control_registers_update_required[SNLED27351_DRIVER_COUNT] = {false};
+
+
+
+bool snled27351_write(uint8_t index, uint8_t page, uint8_t reg, uint8_t *data, uint8_t len) {
+ static uint8_t spi_transfer_buffer[2] = {0};
+
+ if (index > ARRAY_SIZE(((pin_t[])DRIVER_CS_PINS)) - 1) return false;
+
+ if (!spi_start(cs_pins[index], false, 0, SNLED27351_SPI_DIVISOR)) {
+ spi_stop();
+ return false;
+ }
+
+ spi_transfer_buffer[0] = SNLED27351_WRITE | SNLED27351_PATTERN | (page & 0x0F);
+ spi_transfer_buffer[1] = reg;
+
+ if (spi_transmit(spi_transfer_buffer, 2) != SPI_STATUS_SUCCESS) {
+ spi_stop();
+ return false;
+ }
+
+ if (spi_transmit(data, len) != SPI_STATUS_SUCCESS) {
+ spi_stop();
+ return false;
+ }
+
+ spi_stop();
+ return true;
+}
+
+bool snled27351_write_register(uint8_t index, uint8_t page, uint8_t reg, uint8_t data) {
+ return snled27351_write(index, page, reg, &data, 1);
+}
+
+bool snled27351_write_pwm_buffer(uint8_t index, uint8_t *pwm_buffer) {
+ if (g_pwm_buffer_update_required[index]) {
+ snled27351_write(index, LED_PWM_PAGE, 0, g_pwm_buffer[index], SNLED27351_PWM_REGISTER_COUNT);
+ }
+ g_pwm_buffer_update_required[index] = false;
+ return true;
+}
+
+void snled27351_init_drivers(void) {
+#if defined(LED_DRIVER_SHUTDOWN_PIN)
+ setPinOutput(LED_DRIVER_SHUTDOWN_PIN);
+ writePinHigh(LED_DRIVER_SHUTDOWN_PIN);
+#endif
+
+ spi_init();
+
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_init(i);
+
+ for (int index = 0; index < SNLED27351_LED_COUNT; index++) {
+ snled27351_set_led_control_register(index, true, true, true);
+ }
+
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_update_led_control_registers(i);
+}
+
+void snled27351_init(uint8_t index) {
+ setPinOutput(cs_pins[index]);
+ writePinHigh(cs_pins[index]);
+ // Setting LED driver to shutdown mode
+ snled27351_write_register(index, FUNCTION_PAGE, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE);
+ // Setting internal channel pulldown/pullup
+ snled27351_write_register(index, FUNCTION_PAGE, PDU_REG, MSKSET_CA_CB_CHANNEL);
+ // Select number of scan phase
+ snled27351_write_register(index, FUNCTION_PAGE, SCAN_PHASE_REG, SNLED27351_PHASE_CHANNEL);
+ // Setting PWM Delay Phase
+ snled27351_write_register(index, FUNCTION_PAGE, SLEW_RATE_CONTROL_MODE1_REG, MSKPWM_DELAY_PHASE_ENABLE);
+ // Setting Driving/Sinking Channel Slew Rate
+ snled27351_write_register(index, FUNCTION_PAGE, SLEW_RATE_CONTROL_MODE2_REG, MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE);
+ // Setting Iref
+ snled27351_write_register(index, FUNCTION_PAGE, SOFTWARE_SLEEP_REG, MSKSLEEP_DISABLE);
+
+ // Set LED CONTROL PAGE (Page 0)
+ uint8_t on_off_reg[LED_CONTROL_ON_OFF_LENGTH] = {0};
+ snled27351_write(index, LED_CONTROL_PAGE, 0, on_off_reg, LED_CONTROL_ON_OFF_LENGTH);
+
+ // Set PWM PAGE (Page 1)
+ uint8_t pwm_reg[LED_PWM_LENGTH];
+ memset(pwm_reg, 0, LED_PWM_LENGTH);
+ snled27351_write(index, LED_PWM_PAGE, 0, pwm_reg, LED_PWM_LENGTH);
+
+ // Set CURRENT PAGE (Page 4)
+ uint8_t current_tune_reg[LED_CURRENT_TUNE_LENGTH] = SNLED27351_CURRENT_TUNE;
+ snled27351_write(index, CURRENT_TUNE_PAGE, 0, current_tune_reg, LED_CURRENT_TUNE_LENGTH);
+
+ // // Enable LEDs ON/OFF
+ // memset(on_off_reg, 0xFF, LED_CONTROL_ON_OFF_LENGTH);
+ // snled27351_write(index, LED_CONTROL_PAGE, 0, on_off_reg, LED_CONTROL_ON_OFF_LENGTH);
+
+ // Setting LED driver to normal mode
+ snled27351_write_register(index, FUNCTION_PAGE, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
+}
+
+void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ snled27351_led_t led;
+ if (index >= 0 && index < SNLED27351_LED_COUNT) {
+ memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led));
+
+ g_pwm_buffer[led.driver][led.r] = red;
+ g_pwm_buffer[led.driver][led.g] = green;
+ g_pwm_buffer[led.driver][led.b] = blue;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < SNLED27351_LED_COUNT; i++) {
+ snled27351_set_color(i, red, green, blue);
+ }
+}
+
+void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue) {
+ snled27351_led_t led;
+ memcpy_P(&led, (&g_snled27351_leds[index]), sizeof(led));
+
+ uint8_t control_register_r = led.r / 8;
+ uint8_t control_register_g = led.g / 8;
+ uint8_t control_register_b = led.b / 8;
+ uint8_t bit_r = led.r % 8;
+ uint8_t bit_g = led.g % 8;
+ uint8_t bit_b = led.b % 8;
+
+ if (red) {
+ g_led_control_registers[led.driver][control_register_r] |= (1 << bit_r);
+ } else {
+ g_led_control_registers[led.driver][control_register_r] &= ~(1 << bit_r);
+ }
+ if (green) {
+ g_led_control_registers[led.driver][control_register_g] |= (1 << bit_g);
+ } else {
+ g_led_control_registers[led.driver][control_register_g] &= ~(1 << bit_g);
+ }
+ if (blue) {
+ g_led_control_registers[led.driver][control_register_b] |= (1 << bit_b);
+ } else {
+ g_led_control_registers[led.driver][control_register_b] &= ~(1 << bit_b);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void snled27351_update_pwm_buffers(uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ if (!snled27351_write_pwm_buffer(index, g_pwm_buffer[index])) {
+ g_led_control_registers_update_required[index] = true;
+ }
+ }
+ g_pwm_buffer_update_required[index] = false;
+}
+
+void snled27351_update_led_control_registers(uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ snled27351_write(index, LED_CONTROL_PAGE, 0, g_led_control_registers[index], 24);
+ }
+ g_led_control_registers_update_required[index] = false;
+}
+
+void snled27351_flush(void) {
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_update_pwm_buffers(i);
+}
+
+void snled27351_shutdown(void) {
+# if defined(LED_DRIVER_SHUTDOWN_PIN)
+ writePinLow(LED_DRIVER_SHUTDOWN_PIN);
+# else
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_sw_shutdown(i);
+# endif
+}
+
+void snled27351_exit_shutdown(void) {
+# if defined(LED_DRIVER_SHUTDOWN_PIN)
+ writePinHigh(LED_DRIVER_SHUTDOWN_PIN);
+# else
+ for (uint8_t i = 0; i < SNLED27351_DRIVER_COUNT; i++)
+ snled27351_sw_return_normal(i);
+# endif
+}
+
+void snled27351_sw_return_normal(uint8_t index) {
+ // Select to function page
+ // Setting LED driver to normal mode
+ snled27351_write_register(index, FUNCTION_PAGE, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
+}
+
+void snled27351_sw_shutdown(uint8_t index) {
+ // Select to function page
+ // Setting LED driver to shutdown mode
+ snled27351_write_register(index, FUNCTION_PAGE, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE);
+ // Write SW Sleep Register
+ snled27351_write_register(index, FUNCTION_PAGE, SOFTWARE_SLEEP_REG, MSKSLEEP_ENABLE);
+}
diff --git a/drivers/led/snled27351-spi.h b/drivers/led/snled27351-spi.h
new file mode 100644
index 000000000000..92cad6e52d1b
--- /dev/null
+++ b/drivers/led/snled27351-spi.h
@@ -0,0 +1,349 @@
+/* Copyright 2021 @ 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 .
+ */
+
+#pragma once
+
+#include
+#include
+#include "progmem.h"
+#include "util.h"
+
+#if defined(SNLED27351_SPI)
+# define SNLED27351_LED_COUNT RGB_MATRIX_LED_COUNT
+#endif
+
+# define SNLED27351_DRIVER_COUNT (sizeof(cs_pins)/sizeof(pin_t))
+
+typedef struct snled27351_led_t {
+ uint8_t driver : 2;
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+} __attribute__((packed)) snled27351_led_t;
+
+extern const snled27351_led_t g_snled27351_leds[SNLED27351_LED_COUNT];
+
+void snled27351_init_drivers(void);
+void snled27351_init(uint8_t index);
+bool snled27351_write_register(uint8_t index, uint8_t page, uint8_t reg, uint8_t data);
+bool snled27351_write_pwm_buffer(uint8_t index, uint8_t *pwm_buffer);
+
+void snled27351_set_color(int index, uint8_t red, uint8_t green, uint8_t blue);
+void snled27351_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
+
+void snled27351_set_led_control_register(uint8_t index, bool red, bool green, bool blue);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void snled27351_update_pwm_buffers(uint8_t index);
+void snled27351_update_led_control_registers(uint8_t index);
+void snled27351_flush(void);
+void snled27351_shutdown(void);
+void snled27351_exit_shutdown(void);
+void snled27351_sw_return_normal(uint8_t index);
+void snled27351_sw_shutdown(uint8_t index);
+
+// Registers Page Define
+#define CONFIGURE_CMD_PAGE 0xFD
+#define LED_CONTROL_PAGE 0x00
+#define LED_PWM_PAGE 0x01
+#define FUNCTION_PAGE 0x03
+#define CURRENT_TUNE_PAGE 0x04
+
+// Function Register: address 0x00
+#define CONFIGURATION_REG 0x00
+#define MSKSW_SHUT_DOWN_MODE (0x0 << 0)
+#define MSKSW_NORMAL_MODE (0x1 << 0)
+
+#define DRIVER_ID_REG 0x11
+#define SNLED27351_ID 0x8A
+
+#define PDU_REG 0x13
+#define MSKSET_CA_CB_CHANNEL 0xAA
+#define MSKCLR_CA_CB_CHANNEL 0x00
+
+#define SCAN_PHASE_REG 0x14
+#define MSKPHASE_12CHANNEL 0x00
+#define MSKPHASE_11CHANNEL 0x01
+#define MSKPHASE_10CHANNEL 0x02
+#define MSKPHASE_9CHANNEL 0x03
+#define MSKPHASE_8CHANNEL 0x04
+#define MSKPHASE_7CHANNEL 0x05
+#define MSKPHASE_6CHANNEL 0x06
+#define MSKPHASE_5CHANNEL 0x07
+#define MSKPHASE_4CHANNEL 0x08
+#define MSKPHASE_3CHANNEL 0x09
+#define MSKPHASE_2CHANNEL 0x0A
+#define MSKPHASE_1CHANNEL 0x0B
+
+#define SLEW_RATE_CONTROL_MODE1_REG 0x15
+#define MSKPWM_DELAY_PHASE_ENABLE 0x04
+#define MSKPWM_DELAY_PHASE_DISABLE 0x00
+
+#define SLEW_RATE_CONTROL_MODE2_REG 0x16
+#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE 0xC0
+#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_DISABLE 0x00
+
+#define OPEN_SHORT_ENABLE_REG 0x17
+#define MSKOPEN_DETECTION_ENABLE (0x01 << 7)
+#define MSKOPEN_DETECTION_DISABLE (0x00)
+
+#define MSKSHORT_DETECTION_ENABLE (0x01 << 6)
+#define MSKSHORT_DETECTION_DISABLE (0x00)
+
+#define OPEN_SHORT_DUTY_REG 0x18
+#define OPEN_SHORT_FLAG_REG 0x19
+
+#define MSKOPEN_DETECTION_INTERRUPT_ENABLE (0x01 << 7)
+#define MSKOPEN_DETECTION_INTERRUPT_DISABLE (0x00)
+
+#define MSKSHORT_DETECTION_INTERRUPT_ENABLE (0x01 << 6)
+#define MSKSHORT_DETECTION_INTERRUPT_DISABLE (0x00)
+
+#define SOFTWARE_SLEEP_REG 0x1A
+#define MSKSLEEP_ENABLE 0x02
+#define MSKSLEEP_DISABLE 0x00
+
+// LED Control Registers
+#define LED_CONTROL_ON_OFF_FIRST_ADDR 0x0
+#define LED_CONTROL_ON_OFF_LAST_ADDR 0x17
+#define LED_CONTROL_ON_OFF_LENGTH ((LED_CONTROL_ON_OFF_LAST_ADDR - LED_CONTROL_ON_OFF_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_OPEN_FIRST_ADDR 0x18
+#define LED_CONTROL_OPEN_LAST_ADDR 0x2F
+#define LED_CONTROL_OPEN_LENGTH ((LED_CONTROL_OPEN_LAST_ADDR - LED_CONTROL_OPEN_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_SHORT_FIRST_ADDR 0x30
+#define LED_CONTROL_SHORT_LAST_ADDR 0x47
+#define LED_CONTROL_SHORT_LENGTH ((LED_CONTROL_SHORT_LAST_ADDR - LED_CONTROL_SHORT_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_PAGE_LENGTH 0x48
+
+// LED Control Registers
+#define LED_PWM_FIRST_ADDR 0x00
+#define LED_PWM_LAST_ADDR 0xBF
+#define LED_PWM_LENGTH 0xC0
+
+// Current Tune Registers
+#define LED_CURRENT_TUNE_FIRST_ADDR 0x00
+#define LED_CURRENT_TUNE_LAST_ADDR 0x0B
+#define LED_CURRENT_TUNE_LENGTH 0x0C
+
+#define A_1 0x00
+#define A_2 0x01
+#define A_3 0x02
+#define A_4 0x03
+#define A_5 0x04
+#define A_6 0x05
+#define A_7 0x06
+#define A_8 0x07
+#define A_9 0x08
+#define A_10 0x09
+#define A_11 0x0A
+#define A_12 0x0B
+#define A_13 0x0C
+#define A_14 0x0D
+#define A_15 0x0E
+#define A_16 0x0F
+
+#define B_1 0x10
+#define B_2 0x11
+#define B_3 0x12
+#define B_4 0x13
+#define B_5 0x14
+#define B_6 0x15
+#define B_7 0x16
+#define B_8 0x17
+#define B_9 0x18
+#define B_10 0x19
+#define B_11 0x1A
+#define B_12 0x1B
+#define B_13 0x1C
+#define B_14 0x1D
+#define B_15 0x1E
+#define B_16 0x1F
+
+#define C_1 0x20
+#define C_2 0x21
+#define C_3 0x22
+#define C_4 0x23
+#define C_5 0x24
+#define C_6 0x25
+#define C_7 0x26
+#define C_8 0x27
+#define C_9 0x28
+#define C_10 0x29
+#define C_11 0x2A
+#define C_12 0x2B
+#define C_13 0x2C
+#define C_14 0x2D
+#define C_15 0x2E
+#define C_16 0x2F
+
+#define D_1 0x30
+#define D_2 0x31
+#define D_3 0x32
+#define D_4 0x33
+#define D_5 0x34
+#define D_6 0x35
+#define D_7 0x36
+#define D_8 0x37
+#define D_9 0x38
+#define D_10 0x39
+#define D_11 0x3A
+#define D_12 0x3B
+#define D_13 0x3C
+#define D_14 0x3D
+#define D_15 0x3E
+#define D_16 0x3F
+
+#define E_1 0x40
+#define E_2 0x41
+#define E_3 0x42
+#define E_4 0x43
+#define E_5 0x44
+#define E_6 0x45
+#define E_7 0x46
+#define E_8 0x47
+#define E_9 0x48
+#define E_10 0x49
+#define E_11 0x4A
+#define E_12 0x4B
+#define E_13 0x4C
+#define E_14 0x4D
+#define E_15 0x4E
+#define E_16 0x4F
+
+#define F_1 0x50
+#define F_2 0x51
+#define F_3 0x52
+#define F_4 0x53
+#define F_5 0x54
+#define F_6 0x55
+#define F_7 0x56
+#define F_8 0x57
+#define F_9 0x58
+#define F_10 0x59
+#define F_11 0x5A
+#define F_12 0x5B
+#define F_13 0x5C
+#define F_14 0x5D
+#define F_15 0x5E
+#define F_16 0x5F
+
+#define G_1 0x60
+#define G_2 0x61
+#define G_3 0x62
+#define G_4 0x63
+#define G_5 0x64
+#define G_6 0x65
+#define G_7 0x66
+#define G_8 0x67
+#define G_9 0x68
+#define G_10 0x69
+#define G_11 0x6A
+#define G_12 0x6B
+#define G_13 0x6C
+#define G_14 0x6D
+#define G_15 0x6E
+#define G_16 0x6F
+
+#define H_1 0x70
+#define H_2 0x71
+#define H_3 0x72
+#define H_4 0x73
+#define H_5 0x74
+#define H_6 0x75
+#define H_7 0x76
+#define H_8 0x77
+#define H_9 0x78
+#define H_10 0x79
+#define H_11 0x7A
+#define H_12 0x7B
+#define H_13 0x7C
+#define H_14 0x7D
+#define H_15 0x7E
+#define H_16 0x7F
+
+#define I_1 0x80
+#define I_2 0x81
+#define I_3 0x82
+#define I_4 0x83
+#define I_5 0x84
+#define I_6 0x85
+#define I_7 0x86
+#define I_8 0x87
+#define I_9 0x88
+#define I_10 0x89
+#define I_11 0x8A
+#define I_12 0x8B
+#define I_13 0x8C
+#define I_14 0x8D
+#define I_15 0x8E
+#define I_16 0x8F
+
+#define J_1 0x90
+#define J_2 0x91
+#define J_3 0x92
+#define J_4 0x93
+#define J_5 0x94
+#define J_6 0x95
+#define J_7 0x96
+#define J_8 0x97
+#define J_9 0x98
+#define J_10 0x99
+#define J_11 0x9A
+#define J_12 0x9B
+#define J_13 0x9C
+#define J_14 0x9D
+#define J_15 0x9E
+#define J_16 0x9F
+
+#define K_1 0xA0
+#define K_2 0xA1
+#define K_3 0xA2
+#define K_4 0xA3
+#define K_5 0xA4
+#define K_6 0xA5
+#define K_7 0xA6
+#define K_8 0xA7
+#define K_9 0xA8
+#define K_10 0xA9
+#define K_11 0xAA
+#define K_12 0xAB
+#define K_13 0xAC
+#define K_14 0xAD
+#define K_15 0xAE
+#define K_16 0xAF
+
+#define L_1 0xB0
+#define L_2 0xB1
+#define L_3 0xB2
+#define L_4 0xB3
+#define L_5 0xB4
+#define L_6 0xB5
+#define L_7 0xB6
+#define L_8 0xB7
+#define L_9 0xB8
+#define L_10 0xB9
+#define L_11 0xBA
+#define L_12 0xBB
+#define L_13 0xBC
+#define L_14 0xBD
+#define L_15 0xBE
+#define L_16 0xBF
diff --git a/keyboards/lemokey/common/common.mk b/keyboards/lemokey/common/common.mk
new file mode 100644
index 000000000000..28aed642b997
--- /dev/null
+++ b/keyboards/lemokey/common/common.mk
@@ -0,0 +1,6 @@
+COMMON_DIR = common
+SRC += \
+ $(COMMON_DIR)/lemokey_common.c \
+ $(COMMON_DIR)/factory_test.c
+
+VPATH += $(TOP_DIR)/keyboards/lemokey/$(COMMON_DIR)
diff --git a/keyboards/lemokey/common/factory_test.c b/keyboards/lemokey/common/factory_test.c
new file mode 100644
index 000000000000..293308efd691
--- /dev/null
+++ b/keyboards/lemokey/common/factory_test.c
@@ -0,0 +1,355 @@
+/* Copyright 2024 @ 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 "quantum.h"
+#include "raw_hid.h"
+#include "via.h"
+#include "lemokey_task.h"
+#include "config.h"
+#include "version.h"
+
+#ifndef RAW_EPSIZE
+# define RAW_EPSIZE 32
+#endif
+
+#ifndef BL_CYCLE_KEY
+# define BL_CYCLE_KEY KC_RIGHT
+#endif
+
+#ifndef BL_TRIG_KEY
+# define BL_TRIG_KEY KC_HOME
+#endif
+
+enum {
+ BACKLIGHT_TEST_OFF = 0,
+ BACKLIGHT_TEST_WHITE,
+ BACKLIGHT_TEST_RED,
+ BACKLIGHT_TEST_GREEN,
+ BACKLIGHT_TEST_BLUE,
+ BACKLIGHT_TEST_MAX,
+};
+
+enum {
+ KEY_PRESS_FN = 0x01 << 0,
+ KEY_PRESS_J = 0x01 << 1,
+ KEY_PRESS_Z = 0x01 << 2,
+ KEY_PRESS_BL_KEY1 = 0x01 << 3,
+ KEY_PRESS_BL_KEY2 = 0x01 << 4,
+ KEY_PRESS_FACTORY_RESET = KEY_PRESS_FN | KEY_PRESS_J | KEY_PRESS_Z,
+ KEY_PRESS_BACKLIGTH_TEST = KEY_PRESS_FN | KEY_PRESS_BL_KEY1 | KEY_PRESS_BL_KEY2,
+};
+
+enum {
+ FACTORY_TEST_CMD_BACKLIGHT = 0x01,
+ FACTORY_TEST_CMD_OS_SWITCH,
+ FACTORY_TEST_CMD_JUMP_TO_BL,
+ FACTORY_TEST_CMD_INT_PIN,
+ FACTORY_TEST_CMD_GET_TRANSPORT,
+ FACTORY_TEST_CMD_CHARGING_ADC,
+ FACTORY_TEST_CMD_RADIO_CARRIER,
+ FACTORY_TEST_CMD_GET_BUILD_TIME,
+ FACTORY_TEST_CMD_GET_DEVICE_ID,
+};
+
+static uint32_t factory_reset_timer = 0;
+static uint8_t factory_reset_state = 0;
+static uint8_t backlight_test_mode = BACKLIGHT_TEST_OFF;
+
+static uint32_t factory_reset_ind_timer = 0;
+static uint8_t factory_reset_ind_state = 0;
+static bool report_os_sw_state = false;
+static bool keys_released = true;
+
+void factory_timer_start(void) {
+ factory_reset_timer = timer_read32();
+}
+
+static inline void factory_timer_check(void) {
+ if (timer_elapsed32(factory_reset_timer) > 3000) {
+ factory_reset_timer = 0;
+
+ if (factory_reset_state == KEY_PRESS_FACTORY_RESET) {
+ factory_reset_ind_timer = timer_read32();
+ factory_reset_ind_state++;
+ keys_released = false;
+
+ clear_keyboard(); // Avoid key being pressed after NKRO state changed
+ layer_state_t default_layer_tmp = default_layer_state;
+ eeconfig_init();
+ keymap_config.raw = eeconfig_read_keymap();
+ default_layer_set(default_layer_tmp);
+#ifdef LED_MATRIX_ENABLE
+ if (!led_matrix_is_enabled()) led_matrix_enable();
+ led_matrix_init();
+#endif
+#ifdef RGB_MATRIX_ENABLE
+ if (!rgb_matrix_is_enabled()) rgb_matrix_enable();
+ rgb_matrix_init();
+#endif
+ } else if (factory_reset_state == KEY_PRESS_BACKLIGTH_TEST) {
+#ifdef LED_MATRIX_ENABLE
+ if (!led_matrix_is_enabled()) led_matrix_enable();
+#endif
+#ifdef RGB_MATRIX_ENABLE
+ if (!rgb_matrix_is_enabled()) rgb_matrix_enable();
+#endif
+ backlight_test_mode = BACKLIGHT_TEST_WHITE;
+ }
+
+ factory_reset_state = 0;
+ }
+}
+
+static inline void factory_reset_ind_timer_check(void) {
+ if (factory_reset_ind_timer && timer_elapsed32(factory_reset_ind_timer) > 250) {
+ if (factory_reset_ind_state++ > 6) {
+ factory_reset_ind_timer = factory_reset_ind_state = 0;
+ } else {
+ factory_reset_ind_timer = timer_read32();
+ }
+ }
+}
+
+bool process_record_factory_test(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+#if defined(FN_KEY_1) || defined(FN_KEY_2)
+# if defined(FN_KEY_1)
+ case FN_KEY_1: /* fall through */
+# endif
+# if defined(FN_KEY_2)
+ case FN_KEY_2:
+# endif
+# if defined(FN_KEY_3)
+ case FN_KEY_3:
+# endif
+ if (record->event.pressed) {
+ factory_reset_state |= KEY_PRESS_FN;
+ } else {
+ factory_reset_state &= ~KEY_PRESS_FN;
+ factory_reset_timer = 0;
+ }
+ break;
+#endif
+
+ case KC_J:
+ if (record->event.pressed) {
+ factory_reset_state |= KEY_PRESS_J;
+ if (factory_reset_state == 0x07) factory_timer_start();
+ if (factory_reset_state & KEY_PRESS_FN) return false;
+ } else {
+ factory_reset_state &= ~KEY_PRESS_J;
+ factory_reset_timer = 0;
+ }
+ break;
+
+ case KC_Z:
+#if defined(FN_Z_KEY)
+ case FN_Z_KEY:
+#endif
+ if (record->event.pressed) {
+ factory_reset_state |= KEY_PRESS_Z;
+ if (factory_reset_state == 0x07) factory_timer_start();
+ if ((factory_reset_state & KEY_PRESS_FN) && keycode == KC_Z) return false;
+ } else {
+ factory_reset_state &= ~KEY_PRESS_Z;
+ factory_reset_timer = 0;
+ /* Avoid changing backlight effect on key repleased if FN_Z_KEY is mode*/
+
+ if (!keys_released && keycode >= QK_BACKLIGHT_ON && keycode <= RGB_MODE_TWINKLE) {
+ keys_released = true;
+ return false;
+ }
+ }
+ break;
+
+#if defined(BL_CYCLE_KEY) || defined(BL_CYCLE_KEY_2)
+# if defined(BL_CYCLE_KEY)
+ case BL_CYCLE_KEY:
+# endif
+# if defined(FN_BL_CYCLE_KEY)
+ case FN_BL_CYCLE_KEY:
+# endif
+ if (record->event.pressed) {
+ if (backlight_test_mode) {
+ if (++backlight_test_mode >= BACKLIGHT_TEST_MAX) {
+ backlight_test_mode = BACKLIGHT_TEST_WHITE;
+ }
+ } else {
+ factory_reset_state |= KEY_PRESS_BL_KEY1;
+ if (factory_reset_state == 0x19) {
+ factory_timer_start();
+ }
+ }
+ } else {
+ factory_reset_state &= ~KEY_PRESS_BL_KEY1;
+ factory_reset_timer = 0;
+ }
+ break;
+#endif
+#if defined(BL_TRIG_KEY) || defined(BL_TRIG_KEY_2)
+# if defined(BL_TRIG_KEY)
+ case BL_TRIG_KEY:
+# endif
+# if defined(FN_BL_TRIG_KEY)
+ case FN_BL_TRIG_KEY:
+# endif
+ if (record->event.pressed) {
+ if (backlight_test_mode) {
+ backlight_test_mode = BACKLIGHT_TEST_OFF;
+ } else {
+ factory_reset_state |= KEY_PRESS_BL_KEY2;
+ if (factory_reset_state == 0x19) {
+ factory_timer_start();
+ }
+ }
+ } else {
+ factory_reset_state &= ~KEY_PRESS_BL_KEY2;
+ factory_reset_timer = 0;
+ }
+ break;
+#endif
+ }
+
+ return true;
+}
+
+#ifdef LED_MATRIX_ENABLE
+bool factory_test_indicator(void) {
+ if (factory_reset_ind_state) {
+ led_matrix_set_value_all(factory_reset_ind_state % 2 ? 0 : 255);
+ return false;
+ }
+
+ return true;
+}
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+bool factory_test_indicator(void) {
+ if (factory_reset_ind_state) {
+ backlight_test_mode = BACKLIGHT_TEST_OFF;
+ rgb_matrix_set_color_all(factory_reset_ind_state % 2 ? 0 : 255, 0, 0);
+ return false;
+ } else if (backlight_test_mode) {
+ switch (backlight_test_mode) {
+ case BACKLIGHT_TEST_WHITE:
+ rgb_matrix_set_color_all(255, 255, 255);
+ break;
+
+ case BACKLIGHT_TEST_RED:
+ rgb_matrix_set_color_all(255, 0, 0);
+ break;
+
+ case BACKLIGHT_TEST_GREEN:
+ rgb_matrix_set_color_all(0, 255, 0);
+ break;
+
+ case BACKLIGHT_TEST_BLUE:
+ rgb_matrix_set_color_all(0, 0, 255);
+ break;
+ }
+ return false;
+ }
+
+ return true;
+}
+#endif
+
+bool factory_reset_indicating(void) {
+ return factory_reset_ind_timer;
+}
+
+bool factory_test_task(void) {
+ if (factory_reset_timer) factory_timer_check();
+ if (factory_reset_ind_timer) factory_reset_ind_timer_check();
+
+ return true;
+}
+
+void factory_test_send(uint8_t *payload, uint8_t length) {
+#ifdef RAW_ENABLE
+ uint16_t checksum = 0;
+ uint8_t data[RAW_EPSIZE] = {0};
+
+ uint8_t i = 0;
+ data[i++] = 0xAB;
+
+ memcpy(&data[i], payload, length);
+ i += length;
+
+ for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++)
+ checksum += data[i];
+ data[RAW_EPSIZE - 2] = checksum & 0xFF;
+ data[RAW_EPSIZE - 1] = (checksum >> 8) & 0xFF;
+
+ raw_hid_send(data, RAW_EPSIZE);
+#endif
+}
+
+void factory_test_rx(uint8_t *data, uint8_t length) {
+ if (data[0] == 0xAB) {
+ uint16_t checksum = 0;
+
+ for (uint8_t i = 1; i < RAW_EPSIZE - 3; i++) {
+ checksum += data[i];
+ }
+ /* Verify checksum */
+ if ((checksum & 0xFF) != data[RAW_EPSIZE - 2] || checksum >> 8 != data[RAW_EPSIZE - 1]) return;
+
+ uint8_t payload[32];
+ uint8_t len = 0;
+
+ switch (data[1]) {
+ case FACTORY_TEST_CMD_BACKLIGHT:
+ backlight_test_mode = data[2];
+ factory_reset_timer = 0;
+ break;
+
+ case FACTORY_TEST_CMD_OS_SWITCH:
+ report_os_sw_state = data[2];
+ break;
+
+ case FACTORY_TEST_CMD_JUMP_TO_BL:
+ break;
+
+ case FACTORY_TEST_CMD_GET_BUILD_TIME: {
+ payload[len++] = FACTORY_TEST_CMD_GET_BUILD_TIME;
+ payload[len++] = 'v';
+ if ((DEVICE_VER & 0xF000) != 0) itoa((DEVICE_VER >> 12), (char *)&payload[len++], 16);
+ itoa((DEVICE_VER >> 8) & 0xF, (char *)&payload[len++], 16);
+ payload[len++] = '.';
+ itoa((DEVICE_VER >> 4) & 0xF, (char *)&payload[len++], 16);
+ payload[len++] = '.';
+ itoa((DEVICE_VER >> 4) & 0xF, (char *)&payload[len++], 16);
+ payload[len++] = ' ';
+ memcpy(&payload[len], QMK_BUILDDATE, sizeof(QMK_BUILDDATE));
+ len += sizeof(QMK_BUILDDATE);
+ factory_test_send(payload, len);
+ } break;
+
+ case FACTORY_TEST_CMD_GET_DEVICE_ID:
+ payload[len++] = FACTORY_TEST_CMD_GET_DEVICE_ID;
+ payload[len++] = 12;
+ memcpy(&payload[len], (uint32_t *)UID_BASE, 4);
+ memcpy(&payload[len + 4], (uint32_t *)UID_BASE + 4, 4);
+ memcpy(&payload[len + 8], (uint32_t *)UID_BASE + 8, 4);
+
+ len += 12;
+ factory_test_send(payload, len);
+ break;
+ }
+ }
+}
diff --git a/keyboards/lemokey/common/factory_test.h b/keyboards/lemokey/common/factory_test.h
new file mode 100644
index 000000000000..953ee10e3453
--- /dev/null
+++ b/keyboards/lemokey/common/factory_test.h
@@ -0,0 +1,33 @@
+/* Copyright 2022 @ lokher (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 .
+ */
+
+#pragma once
+
+#define FACTORY_RESET_CHECK process_record_factory_test
+#define FACTORY_RESET_TASK factory_test_task
+
+void factory_test_init(void);
+
+#if defined(LED_MATRIX_ENABLE) || defined(RGB_MATRIX_ENABLE) || defined(Lightless_Projects)
+bool factory_test_indicator(void);
+#endif
+
+bool factory_reset_indicating(void);
+void factory_test_task(void);
+void factory_test_rx(uint8_t *data, uint8_t length);
+
+bool process_record_factory_test(uint16_t keycode, keyrecord_t *record);
+
diff --git a/keyboards/lemokey/common/lemokey_common.c b/keyboards/lemokey/common/lemokey_common.c
new file mode 100644
index 000000000000..370571dd021c
--- /dev/null
+++ b/keyboards/lemokey/common/lemokey_common.c
@@ -0,0 +1,113 @@
+/* Copyright 2024 @ 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 "lemokey_common.h"
+#include "raw_hid.h"
+#include "version.h" // for QMK_BUILDDATE used in EEPROM magic
+
+#ifdef FACTORY_TEST_ENABLE
+# include "factory_test.h"
+# include "lemokey_common.h"
+#endif
+
+bool is_siri_active = false;
+uint32_t siri_timer = 0;
+
+static uint8_t mac_keycode[4] = {KC_LOPT, KC_ROPT, KC_LCMD, KC_RCMD,};
+
+// clang-format off
+static key_combination_t key_comb_list[] = {
+ {2, {KC_LWIN, KC_TAB}},
+ {2, {KC_LWIN, KC_E}},
+ {3, {KC_LSFT, KC_LCMD, KC_4}},
+ {2, {KC_LWIN, KC_C}},
+#ifdef LOCK_SCREEN_KEY_ENABLE
+ {2, {KC_LWIN, KC_L}},
+ {3, {KC_LCTL, KC_LCMD, KC_Q}},
+#endif
+};
+// clang-format on
+
+bool process_record_lemokey_common(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_MCTRL:
+ if (record->event.pressed) {
+ register_code(KC_MISSION_CONTROL);
+ } else {
+ unregister_code(KC_MISSION_CONTROL);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LNPAD:
+ if (record->event.pressed) {
+ register_code(KC_LAUNCHPAD);
+ } else {
+ unregister_code(KC_LAUNCHPAD);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LOPTN:
+ case KC_ROPTN:
+ case KC_LCMMD:
+ case KC_RCMMD:
+ if (record->event.pressed) {
+ register_code(mac_keycode[keycode - KC_LOPTN]);
+ } else {
+ unregister_code(mac_keycode[keycode - KC_LOPTN]);
+ }
+ return false; // Skip all further processing of this key
+ case KC_SIRI:
+ if (record->event.pressed) {
+ if (!is_siri_active) {
+ is_siri_active = true;
+ register_code(KC_LCMD);
+ register_code(KC_SPACE);
+ }
+ siri_timer = timer_read32();
+ } else {
+ // Do something else when release
+ }
+ return false; // Skip all further processing of this key
+ case KC_TASK:
+ case KC_FILE:
+ case KC_SNAP:
+ case KC_CTANA:
+#ifdef LOCK_SCREEN_KEY_ENABLE
+ case KC_WLCK:
+ case KC_MLCK:
+#endif
+ if (record->event.pressed) {
+ for (uint8_t i = 0; i < key_comb_list[keycode - KC_TASK].len; i++) {
+ register_code(key_comb_list[keycode - KC_TASK].keycode[i]);
+ }
+ } else {
+ for (uint8_t i = 0; i < key_comb_list[keycode - KC_TASK].len; i++) {
+ unregister_code(key_comb_list[keycode - KC_TASK].keycode[i]);
+ }
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+void lemokey_common_task(void) {
+ if (is_siri_active && timer_elapsed32(siri_timer) > 500) {
+ unregister_code(KC_LCMD);
+ unregister_code(KC_SPACE);
+ is_siri_active = false;
+ siri_timer = 0;
+ }
+}
diff --git a/keyboards/lemokey/common/lemokey_common.h b/keyboards/lemokey/common/lemokey_common.h
new file mode 100644
index 000000000000..de0ba4284a1d
--- /dev/null
+++ b/keyboards/lemokey/common/lemokey_common.h
@@ -0,0 +1,61 @@
+/* Copyright 2024 @ 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 .
+ */
+
+#pragma once
+
+#include "stdint.h"
+
+// clang-format off
+enum {
+ KC_LOPTN = QK_KB_0,
+ KC_ROPTN,
+ KC_LCMMD,
+ KC_RCMMD,
+ KC_MCTRL,
+ KC_LNPAD,
+ KC_SIRI,
+ KC_TASK_VIEW,
+ KC_FILE_EXPLORER,
+ KC_SCREEN_SHOT,
+ KC_CORTANA,
+#ifdef LOCK_SCREEN_KEY_ENABLE
+ KC_WIN_LOCK_SCREEN,
+ KC_MAC_LOCK_SCREEN,
+#endif
+ NEW_SAFE_RANGE,
+};
+
+#define KC_TASK KC_TASK_VIEW
+#define KC_FILE KC_FILE_EXPLORER
+#define KC_SNAP KC_SCREEN_SHOT
+#define KC_CTANA KC_CORTANA
+
+#ifdef LOCK_SCREEN_KEY_ENABLE
+#define KC_WLCK KC_WIN_LOCK_SCREEN
+#define KC_MLCK KC_MAC_LOCK_SCREEN
+#endif
+
+typedef struct PACKED {
+ uint8_t len;
+ uint8_t keycode[3];
+} key_combination_t;
+
+bool process_record_lemokey_common(uint16_t keycode, keyrecord_t *record);
+void lemokey_common_task(void);
+
+#ifdef ENCODER_ENABLE
+void encoder_cb_init(void);
+#endif
diff --git a/keyboards/lemokey/common/lemokey_common.mk b/keyboards/lemokey/common/lemokey_common.mk
new file mode 100644
index 000000000000..ee9200494ccb
--- /dev/null
+++ b/keyboards/lemokey/common/lemokey_common.mk
@@ -0,0 +1,11 @@
+OPT_DEFS += -DFACTORY_TEST_ENABLE
+
+LEMOKEY_COMMON_DIR = common
+SRC += \
+ $(LEMOKEY_COMMON_DIR)/lemokey_task.c \
+ $(LEMOKEY_COMMON_DIR)/lemokey_common.c \
+ $(LEMOKEY_COMMON_DIR)/lemokey_raw_hid.c \
+ $(LEMOKEY_COMMON_DIR)/factory_test.c
+
+VPATH += $(TOP_DIR)/keyboards/lemokey/$(LEMOKEY_COMMON_DIR)
+
diff --git a/keyboards/lemokey/common/lemokey_raw_hid.c b/keyboards/lemokey/common/lemokey_raw_hid.c
new file mode 100644
index 000000000000..62492df5fbdf
--- /dev/null
+++ b/keyboards/lemokey/common/lemokey_raw_hid.c
@@ -0,0 +1,91 @@
+/* Copyright 2024 @ 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 "lemokey_common.h"
+#include "raw_hid.h"
+#include "version.h"
+#ifdef FACTORY_TEST_ENABLE
+# include "factory_test.h"
+#endif
+
+#define PROTOCOL_VERSION 0x02
+
+enum {
+ KC_GET_PROTOCOL_VERSION = 0xA0,
+ KC_GET_FIRMWARE_VERSION = 0xA1,
+ KC_GET_SUPPORT_FEATURE = 0xA2,
+ KC_GET_DEFAULT_LAYER = 0xA3,
+};
+
+enum {
+ FEATURE_DEFAULT_LAYER = 0x01 << 0,
+};
+
+void get_support_feature(uint8_t *data) {
+ data[1] = FEATURE_DEFAULT_LAYER;
+}
+
+bool lemokey_raw_hid_rx(uint8_t *data, uint8_t length) {
+ switch (data[0]) {
+ case KC_GET_PROTOCOL_VERSION:
+ data[1] = PROTOCOL_VERSION;
+ break;
+
+ case KC_GET_FIRMWARE_VERSION: {
+ uint8_t i = 1;
+ data[i++] = 'v';
+ if ((DEVICE_VER & 0xF000) != 0) itoa((DEVICE_VER >> 12), (char *)&data[i++], 16);
+ itoa((DEVICE_VER >> 8) & 0xF, (char *)&data[i++], 16);
+ data[i++] = '.';
+ itoa((DEVICE_VER >> 4) & 0xF, (char *)&data[i++], 16);
+ data[i++] = '.';
+ itoa(DEVICE_VER & 0xF, (char *)&data[i++], 16);
+ data[i++] = ' ';
+ memcpy(&data[i], QMK_BUILDDATE, sizeof(QMK_BUILDDATE));
+ i += sizeof(QMK_BUILDDATE);
+ } break;
+
+ case KC_GET_SUPPORT_FEATURE:
+ get_support_feature(&data[1]);
+ break;
+
+ case KC_GET_DEFAULT_LAYER:
+ data[1] = get_highest_layer(default_layer_state);
+ break;
+
+#ifdef FACTORY_TEST_ENABLE
+ case 0xAB:
+ factory_test_rx(data, length);
+ return true;
+#endif
+ default:
+ return false;
+ }
+
+ raw_hid_send(data, length);
+ return true;
+}
+
+#if defined(VIA_ENABLE)
+bool via_command_kb(uint8_t *data, uint8_t length) {
+ return lemokey_raw_hid_rx(data, length);
+}
+#else
+void raw_hid_receive(uint8_t *data, uint8_t length) {
+ lemokey_raw_hid_rx(data, length);
+}
+#endif
diff --git a/keyboards/lemokey/common/lemokey_task.c b/keyboards/lemokey/common/lemokey_task.c
new file mode 100644
index 000000000000..4793bba8b9f8
--- /dev/null
+++ b/keyboards/lemokey/common/lemokey_task.c
@@ -0,0 +1,119 @@
+/* Copyright 2024 @ 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
+#include "lemokey_task.h"
+#include "quantum.h"
+#include "lemokey_common.h"
+#ifdef FACTORY_TEST_ENABLE
+#include "factory_test.h"
+#endif
+
+__attribute__((weak)) bool process_record_lemokey_kb(uint16_t keycode, keyrecord_t *record) { return true; }
+
+bool process_record_lemokey(uint16_t keycode, keyrecord_t *record) {
+
+#ifdef FACTORY_TEST_ENABLE
+ if (!process_record_factory_test(keycode, record))
+ return false;
+#endif
+
+ if (!process_record_lemokey_kb(keycode, record))
+ return false;
+
+ return true;
+}
+
+#if defined(LED_MATRIX_ENABLE)
+bool led_matrix_indicators_lemokey(void) {
+#ifdef FACTORY_TEST_ENABLE
+ factory_test_indicator();
+#endif
+ return true;
+}
+#endif
+
+#if defined(RGB_MATRIX_ENABLE)
+bool rgb_matrix_indicators_lemokey(void) {
+# if defined(CAPS_LOCK_INDEX)
+ if (host_keyboard_led_state().caps_lock) {
+# if defined(DIM_CAPS_LOCK)
+ rgb_matrix_set_color(CAPS_LOCK_INDEX, 0, 0, 0);
+# else
+ rgb_matrix_set_color(CAPS_LOCK_INDEX, 255, 255, 255);,
+# endif
+ }
+# endif
+# if defined(NUM_LOCK_INDEX)
+ if (host_keyboard_led_state().num_lock) {
+ rgb_matrix_set_color(NUM_LOCK_INDEX, 255, 255, 255);
+ }
+# endif
+
+#ifdef FACTORY_TEST_ENABLE
+ factory_test_indicator();
+#endif
+ return true;
+}
+#endif
+
+__attribute__((weak)) bool lemokey_task_kb(void){ return true; }
+
+void lemokey_task(void) {
+#ifdef FACTORY_TEST_ENABLE
+ factory_test_task();
+#endif
+ lemokey_common_task();
+
+ lemokey_task_kb();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record))
+ return false;
+
+ if (!process_record_lemokey(keycode, record))
+ return false;
+
+ return true;
+}
+
+#ifdef RGB_MATRIX_ENABLE
+bool rgb_matrix_indicators_kb(void) {
+ if (!rgb_matrix_indicators_user())
+ return false;
+
+ rgb_matrix_indicators_lemokey();
+
+ return true;
+}
+#endif
+
+#ifdef LED_MATRIX_ENABLE
+bool led_matrix_indicators_kb(void) {
+ if (!led_matrix_indicators_user())
+ return false;
+
+ led_matrix_indicators_lemokey();
+
+ return true;
+}
+#endif
+
+void housekeeping_task_kb(void) {
+ lemokey_task();
+}
+
diff --git a/keyboards/lemokey/common/lemokey_task.h b/keyboards/lemokey/common/lemokey_task.h
new file mode 100644
index 000000000000..06e49843dc6f
--- /dev/null
+++ b/keyboards/lemokey/common/lemokey_task.h
@@ -0,0 +1,24 @@
+/* Copyright 2024 @ Keychron (https://www.lemokey.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 .
+ */
+
+#pragma once
+
+#include "stdint.h"
+#include "action.h"
+
+bool lemokey_task_kb(void);
+void lemokey_task(void);
+
diff --git a/keyboards/lemokey/common/matrix.c b/keyboards/lemokey/common/matrix.c
new file mode 100644
index 000000000000..f58b0c8665a2
--- /dev/null
+++ b/keyboards/lemokey/common/matrix.c
@@ -0,0 +1,218 @@
+/* Copyright 2023 ~ 2024 @ 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 "quantum.h"
+
+#ifndef HC595_STCP
+# define HC595_STCP B0
+#endif
+#ifndef HC595_SHCP
+# define HC595_SHCP A1
+#endif
+#ifndef HC595_DS
+# define HC595_DS A7
+#endif
+
+#ifndef HC595_START_INDEX
+# define HC595_START_INDEX 0
+#endif
+#ifndef HC595_END_INDEX
+# define HC595_END_INDEX 15
+#endif
+#ifndef HC595_OFFSET_INDEX
+# define HC595_OFFSET_INDEX 0
+#endif
+
+#if defined(HC595_START_INDEX) && defined(HC595_END_INDEX)
+# if ((HC595_END_INDEX - HC595_START_INDEX + 1) > 16)
+# define SIZE_T uint32_t
+# define UNSELECT_ALL_COL 0xFFFFFFFF
+# define SELECT_ALL_COL 0x00000000
+# elif ((HC595_END_INDEX - HC595_START_INDEX + 1) > 8)
+# define SIZE_T uint16_t
+# define UNSELECT_ALL_COL 0xFFFF
+# define SELECT_ALL_COL 0x0000
+# else
+# define SIZE_T uint8_t
+# define UNSELECT_ALL_COL 0xFF
+# define SELECT_ALL_COL 0x00
+# endif
+#endif
+
+pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ setPinOutput(pin);
+ writePinLow(pin);
+}
+
+static inline void setPinOutput_writeHigh(pin_t pin) {
+ setPinOutput(pin);
+ writePinHigh(pin);
+}
+
+static inline void HC595_delay(uint16_t n) {
+ while (n-- > 0) {
+ asm volatile("nop" ::: "memory");
+ }
+}
+
+static void HC595_output(SIZE_T data, bool bit_flag) {
+ uint8_t n = 1;
+
+ ATOMIC_BLOCK_FORCEON {
+ for (uint8_t i = 0; i < (HC595_END_INDEX - HC595_START_INDEX + 1); i++) {
+ if (data & 0x1) {
+ writePinHigh(HC595_DS);
+ } else {
+ writePinLow(HC595_DS);
+ }
+ writePinHigh(HC595_SHCP);
+ HC595_delay(n);
+ writePinLow(HC595_SHCP);
+ HC595_delay(n);
+ if (bit_flag) {
+ break;
+ } else {
+ data = data >> 1;
+ }
+ }
+ writePinHigh(HC595_STCP);
+ HC595_delay(n);
+ writePinLow(HC595_STCP);
+ HC595_delay(n);
+ }
+}
+
+static void select_col(uint8_t col) {
+ if (col < HC595_START_INDEX || col > HC595_END_INDEX) {
+ setPinOutput_writeLow(col_pins[col]);
+ } else {
+ if (col == HC595_START_INDEX) {
+ HC595_output(0x00, true);
+ if (col < HC595_OFFSET_INDEX) {
+ HC595_output(0x01, true);
+ }
+ }
+ }
+}
+
+static void unselect_col(uint8_t col) {
+ if (col < HC595_START_INDEX || col > HC595_END_INDEX) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(col_pins[col]);
+#else
+ setPinInputHigh(col_pins[col]);
+#endif
+ } else {
+ HC595_output(0x01, true);
+ }
+}
+
+static void unselect_cols(void) {
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ if (col < HC595_START_INDEX || col > HC595_END_INDEX) {
+#ifdef MATRIX_UNSELECT_DRIVE_HIGH
+ setPinOutput_writeHigh(col_pins[col]);
+#else
+ setPinInputHigh(col_pins[col]);
+#endif
+ } else {
+ if (col == HC595_START_INDEX) {
+ HC595_output(UNSELECT_ALL_COL, false);
+ }
+ break;
+ }
+ }
+}
+
+void select_all_cols(void) {
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ if (col < HC595_START_INDEX || col > HC595_END_INDEX) {
+ setPinOutput_writeLow(col_pins[col]);
+ } else {
+ if (col == HC595_START_INDEX) {
+ HC595_output(SELECT_ALL_COL, false);
+ }
+ break;
+ }
+ }
+}
+
+static void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col, matrix_row_t row_shifter) {
+ // Select col
+ select_col(current_col); // select col
+ HC595_delay(200);
+
+ // For each row...
+ for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
+ // Check row pin state
+ if (readMatrixPin(row_pins[row_index]) == 0) {
+ // Pin LO, set col bit
+ current_matrix[row_index] |= row_shifter;
+ } else {
+ // Pin HI, clear col bit
+ current_matrix[row_index] &= ~row_shifter;
+ }
+ }
+
+ // Unselect col
+ unselect_col(current_col);
+ HC595_delay(200); // wait for all Row signals to go HIGH
+}
+
+void matrix_init_custom(void) {
+ setPinOutput(HC595_DS);
+ setPinOutput(HC595_STCP);
+ setPinOutput(HC595_SHCP);
+
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ if (row_pins[x] != NO_PIN) {
+ setPinInputHigh(row_pins[x]);
+ }
+ }
+
+ unselect_cols();
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ matrix_row_t curr_matrix[MATRIX_ROWS] = {0};
+
+ // Set col, read rows
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++, row_shifter <<= 1) {
+ matrix_read_rows_on_col(curr_matrix, current_col, row_shifter);
+ }
+
+ bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0;
+ if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix));
+
+ return changed;
+}
+
+void suspend_wakeup_init_kb(void) {
+ // code will run on keyboard wakeup
+ clear_keyboard();
+}
diff --git a/keyboards/lemokey/p1/ansi_encoder/ansi_encoder.c b/keyboards/lemokey/p1/ansi_encoder/ansi_encoder.c
new file mode 100644
index 000000000000..9e89e38ff5e3
--- /dev/null
+++ b/keyboards/lemokey/p1/ansi_encoder/ansi_encoder.c
@@ -0,0 +1,148 @@
+/* Copyright 2024 @ 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"
+
+// clang-format off
+
+#ifdef RGB_MATRIX_ENABLE
+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, A_15, C_15, B_15},
+ {0, A_14, C_14, B_14},
+ {0, A_13, C_13, B_13},
+ {0, A_12, C_12, B_12},
+ {0, A_11, C_11, B_11},
+ {0, A_10, C_10, B_10},
+ {0, A_9, C_9, B_9},
+ {0, A_8, C_8, B_8},
+ {0, A_7, C_7, B_7},
+ {0, A_6, C_6, B_6},
+ {0, A_5, C_5, B_5},
+ {0, A_4, C_4, B_4},
+ {0, A_3, C_3, B_3},
+ {0, A_2, C_2, B_2},
+
+ {0, G_15, I_15, H_15},
+ {0, G_14, I_14, H_14},
+ {0, G_13, I_13, H_13},
+ {0, G_12, I_12, H_12},
+ {0, G_11, I_11, H_11},
+ {0, G_10, I_10, H_10},
+ {0, G_9, I_9, H_9},
+ {0, G_8, I_8, H_8},
+ {0, G_7, I_7, H_7},
+ {0, G_6, I_6, H_6},
+ {0, G_5, I_5, H_5},
+ {0, G_4, I_4, H_4},
+ {0, G_3, I_3, H_3},
+ {0, G_2, I_2, H_2},
+ {0, G_1, I_1, H_1},
+
+ {0, D_15, F_15, E_15},
+ {0, D_14, F_14, E_14},
+ {0, D_13, F_13, E_13},
+ {0, D_12, F_12, E_12},
+ {0, D_11, F_11, E_11},
+ {0, D_10, F_10, E_10},
+ {0, D_9, F_9, E_9},
+ {0, D_8, F_8, E_8},
+ {0, D_7, F_7, E_7},
+ {0, D_6, F_6, E_6},
+ {0, D_5, F_5, E_5},
+ {0, D_4, F_4, E_4},
+ {0, D_3, F_3, E_3},
+ {0, D_2, F_2, E_2},
+ {0, D_1, F_1, E_1},
+
+ {1, A_15, C_15, B_15},
+ {1, A_14, C_14, B_14},
+ {1, A_13, C_13, B_13},
+ {1, A_12, C_12, B_12},
+ {1, A_11, C_11, B_11},
+ {1, A_10, C_10, B_10},
+ {1, A_9, C_9, B_9},
+ {1, A_8, C_8, B_8},
+ {1, A_7, C_7, B_7},
+ {1, A_6, C_6, B_6},
+ {1, A_5, C_5, B_5},
+ {1, A_4, C_4, B_4},
+ {1, A_2, C_2, B_2},
+ {1, A_1, C_1, B_1},
+
+ {1, G_15, I_15, H_15},
+ {1, G_13, I_13, H_13},
+ {1, G_12, I_12, H_12},
+ {1, G_11, I_11, H_11},
+ {1, G_10, I_10, H_10},
+ {1, G_9, I_9, H_9},
+ {1, G_8, I_8, H_8},
+ {1, G_7, I_7, H_7},
+ {1, G_6, I_6, H_6},
+ {1, G_5, I_5, H_5},
+ {1, G_4, I_4, H_4},
+ {1, G_3, I_3, H_3},
+ {1, G_2, I_2, H_2},
+
+ {1, D_15, F_15, E_15},
+ {1, D_14, F_14, E_14},
+ {1, D_13, F_13, E_13},
+ {1, D_9, F_9, E_9},
+ {1, D_6, F_6, E_6},
+ {1, D_5, F_5, E_5},
+ {1, D_4, F_4, E_4},
+ {1, D_3, F_3, E_3},
+ {1, D_2, F_2, E_2},
+ {1, D_1, F_1, E_1},
+};
+
+#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, 11, 12, 13, __ },
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28 },
+ { 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 },
+ { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, __, 56, 57 },
+ { 58, __, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, __},
+ { 71, 72, 73, __, __, __, 74, __, __, 75, 76, 77, 78, 79, 80 },
+ },
+ {
+ // LED Index to Physical Position
+ {0, 0}, {18, 0}, {33, 0}, {48, 0}, {62, 0}, {81, 0}, {95, 0}, {110, 0}, {125, 0}, {143, 0}, {158, 0}, {178, 0}, {187, 0}, {203, 0},
+ {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {117,15}, {132,15}, {146,15}, {161,15}, {176,15}, {195,15}, {224,15},
+ {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {139,26}, {154,26}, {173,26}, {187,26}, {201,26}, {224,26},
+ {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {128,38}, {143,38}, {158,38}, {172,38}, {195,38}, {224,38},
+ {8,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {150,49}, {165,49}, {186,49}, {203,52},
+ {2,61}, {20,61}, {38,61}, {94,61}, {147,61}, {161,61}, {178,61}, {192,64}, {203,64}, {224,64},
+ },
+ {
+ // RGB LED Index to Flag
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ }
+};
+#endif
diff --git a/keyboards/lemokey/p1/ansi_encoder/config.h b/keyboards/lemokey/p1/ansi_encoder/config.h
new file mode 100644
index 000000000000..f9492a72d9dd
--- /dev/null
+++ b/keyboards/lemokey/p1/ansi_encoder/config.h
@@ -0,0 +1,48 @@
+/* Copyright 2024 @ 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 .
+ */
+
+#pragma once
+
+#ifdef RGB_MATRIX_ENABLE
+/* RGB Matrix driver configuration */
+# define DRIVER_COUNT 2
+# define RGB_MATRIX_LED_COUNT 81
+
+# define SPI_SCK_PIN A5
+# define SPI_MISO_PIN A6
+# define SPI_MOSI_PIN A7
+
+# define DRIVER_CS_PINS \
+ { B15, C6 }
+# define SNLED27351_SPI_DIVISOR 16
+# define SPI_DRIVER SPIDQ
+
+/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in SNLED27351.h) */
+# define PHASE_CHANNEL MSKPHASE_9CHANNEL
+
+/* Set LED driver current */
+# define SNLED27351_CURRENT_TUNE \
+ { 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C }
+
+/* Caps lock indicating led */
+# define CAPS_LOCK_INDEX 44
+# define DIM_CAPS_LOCK
+
+/* win lock indicating led */
+# define WIN_LOCK_LED_PIN C0
+# define WIN_LOCK_INDEX 72
+# define DIM_WIN_LOCK
+#endif
diff --git a/keyboards/lemokey/p1/ansi_encoder/info.json b/keyboards/lemokey/p1/ansi_encoder/info.json
new file mode 100644
index 000000000000..ec5e3df8f29f
--- /dev/null
+++ b/keyboards/lemokey/p1/ansi_encoder/info.json
@@ -0,0 +1,99 @@
+{
+ "usb": {
+ "pid": "0x0310",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT_ansi_82": {
+ "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": [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.75, "y": 0},
+ {"matrix": [0, 10], "x": 10.75, "y": 0},
+ {"matrix": [0, 11], "x": 11.75, "y": 0},
+ {"matrix": [0, 12], "x": 12.75, "y": 0},
+ {"matrix": [0, 13], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [3, 14], "x": 15.25, "y": 3.25},
+
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
+ {"matrix": [4, 13], "x": 14.25, "y": 4.5},
+
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 9], "x": 10, "y": 5.25},
+ {"matrix": [5, 10], "x": 11, "y": 5.25},
+ {"matrix": [5, 11], "x": 12, "y": 5.25},
+ {"matrix": [5, 12], "x": 13.25, "y": 5.5},
+ {"matrix": [5, 13], "x": 14.25, "y": 5.5},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/lemokey/p1/ansi_encoder/keymaps/default/keymap.c b/keyboards/lemokey/p1/ansi_encoder/keymaps/default/keymap.c
new file mode 100644
index 000000000000..5c4cb9322837
--- /dev/null
+++ b/keyboards/lemokey/p1/ansi_encoder/keymaps/default/keymap.c
@@ -0,0 +1,77 @@
+/* Copyright 3 @ 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 "lemokey_common.h"
+
+// clang-format off
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_ansi_82(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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, KC_SPC, KC_LCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ KC_TRNS, 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_TRNS, RGB_TOG,
+ KC_TRNS, BT_HST1, BT_HST2, BT_HST3, P2P4G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BAT_LVL, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [WIN_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ 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_PGDN,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_TOG,
+ KC_TRNS, BT_HST1, BT_HST2, BT_HST3, P2P4G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BAT_LVL, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [MAC_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if(!process_record_lemokey_common(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/lemokey/p1/ansi_encoder/keymaps/via/keymap.c b/keyboards/lemokey/p1/ansi_encoder/keymaps/via/keymap.c
new file mode 100644
index 000000000000..fe7b76588ee2
--- /dev/null
+++ b/keyboards/lemokey/p1/ansi_encoder/keymaps/via/keymap.c
@@ -0,0 +1,77 @@
+/* Copyright 2024 @ 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 "lemokey_common.h"
+
+// clang-format off
+enum layers {
+ WIN_BASE,
+ WIN_FN,
+ WIN_L2,
+ WIN_L3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [WIN_BASE] = LAYOUT_ansi_82(
+ KC_ESC, 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_DEL, KC_MUTE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ 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_PGUP,
+ 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_PGDN,
+ 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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_TOG,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, GU_TOGG, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L2] = LAYOUT_ansi_82(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_L3] = LAYOUT_ansi_82(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_FN] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
+ [WIN_L2] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [WIN_L3] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
+};
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if(!process_record_lemokey_common(keycode, record)) {
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/lemokey/p1/ansi_encoder/keymaps/via/rules.mk b/keyboards/lemokey/p1/ansi_encoder/keymaps/via/rules.mk
new file mode 100644
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/lemokey/p1/ansi_encoder/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/lemokey/p1/ansi_encoder/rules.mk b/keyboards/lemokey/p1/ansi_encoder/rules.mk
new file mode 100644
index 000000000000..6e7633bfe015
--- /dev/null
+++ b/keyboards/lemokey/p1/ansi_encoder/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/lemokey/p1/config.h b/keyboards/lemokey/p1/config.h
new file mode 100644
index 000000000000..9c8fb27c926e
--- /dev/null
+++ b/keyboards/lemokey/p1/config.h
@@ -0,0 +1,54 @@
+/* Copyright 2024 @ 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 .
+ */
+
+#pragma once
+
+#define UID_BASE 0x1FFFF204U
+
+/* I2C Driver Configuration */
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+/* EEPROM Driver Configuration */
+#define EXTERNAL_EEPROM_BYTE_COUNT 2048
+#define EXTERNAL_EEPROM_PAGE_SIZE 32
+#define EXTERNAL_EEPROM_WRITE_TIME 3
+
+/* User used eeprom */
+//#define EECONFIG_USER_DATA_SIZE 1
+
+#define I2C1_OPMODE OPMODE_I2C
+#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100010
+
+/* Encoder Configuration */
+#define ENCODER_DEFAULT_POS 0x3
+#define ENCODER_MAP_KEY_DELAY 2
+
+# define LED_DRIVER_SHUTDOWN_PIN B14
+
+/* Raw hid command for factory test */
+# define RAW_HID_CMD 0xAB
+
+/* Factory test keys */
+#define FN_KEY_1 MO(1)
+#define FN_KEY_2 MO(3)
+#define FN_BL_TRIG_KEY KC_END
+
+#define MATRIX_IO_DELAY 10
+
+
diff --git a/keyboards/lemokey/p1/halconf.h b/keyboards/lemokey/p1/halconf.h
new file mode 100644
index 000000000000..b26e07d7bc8a
--- /dev/null
+++ b/keyboards/lemokey/p1/halconf.h
@@ -0,0 +1,24 @@
+/* Copyright 2024 @ 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 .
+ */
+
+#pragma once
+
+#define _CHIBIOS_HAL_CONF_VER_8_0_
+
+#define HAL_USE_I2C TRUE
+#define HAL_USE_SPI TRUE
+
+#include_next
diff --git a/keyboards/lemokey/p1/info.json b/keyboards/lemokey/p1/info.json
new file mode 100644
index 000000000000..7dbf58f8fe05
--- /dev/null
+++ b/keyboards/lemokey/p1/info.json
@@ -0,0 +1,67 @@
+{
+ "keyboard_name": "Lemokey P1",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "Keychron",
+ "processor": "WB32F3G71",
+ "bootloader": "wb32-dfu",
+ "usb": {
+ "vid": "0x362D"
+ },
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "raw" : true,
+ "send_string" : true
+ },
+ "matrix_pins": {
+ "cols": ["C14", "C15", "C2", "C3", "A0", "A1", "A2", "A3", "B10", "B12", "B13", "C7", "C8", "C9", "A10"],
+ "rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
+ },
+ "diode_direction": "ROW2COL",
+ "eeprom": {
+ "driver": "i2c"
+ },
+ "encoder": {
+ "rotary": [
+ {"pin_a": "A8", "pin_b": "A9"}
+ ]
+ },
+ "indicators": {
+ "caps_lock": "C1"
+ },
+ "rgb_matrix": {
+ "driver": "snled27351_spi",
+ "sleep": true,
+ "animations": {
+ "band_spiral_val": true,
+ "breathing": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "jellybean_raindrops": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "solid_reactive_multinexus": true,
+ "solid_reactive_multiwide": true,
+ "solid_reactive_simple": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ }
+ },
+ "build": {
+ "debounce_type": "sym_eager_pk"
+ },
+ "debounce": 20
+}
diff --git a/keyboards/lemokey/p1/mcuconf.h b/keyboards/lemokey/p1/mcuconf.h
new file mode 100644
index 000000000000..48e4fa4e67f4
--- /dev/null
+++ b/keyboards/lemokey/p1/mcuconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2024 @ 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_next
+
+#undef WB32_I2C_USE_I2C1
+#define WB32_I2C_USE_I2C1 TRUE
+
+#undef WB32_SPI_USE_QSPI
+#define WB32_SPI_USE_QSPI TRUE
+
+
diff --git a/keyboards/lemokey/p1/p1.c b/keyboards/lemokey/p1/p1.c
new file mode 100644
index 000000000000..2634b2459c66
--- /dev/null
+++ b/keyboards/lemokey/p1/p1.c
@@ -0,0 +1,34 @@
+/* Copyright 2024 @ 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 "quantum.h"
+#include "eeprom.h"
+
+void eeconfig_init_kb(void) {
+#if (EECONFIG_KB_DATA_SIZE) == 0
+ // Reset Keyboard EEPROM value to blank, rather than to a set value
+ eeconfig_update_kb(0);
+#endif
+
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 0;
+ eeconfig_update_keymap(keymap_config.raw);
+
+ eeprom_update_byte(EECONFIG_DEFAULT_LAYER, 1U << 0);
+ default_layer_set(1U << 0);
+
+ eeconfig_init_user();
+}
diff --git a/keyboards/lemokey/p1/readme.md b/keyboards/lemokey/p1/readme.md
new file mode 100644
index 000000000000..b666fcdf2ec9
--- /dev/null
+++ b/keyboards/lemokey/p1/readme.md
@@ -0,0 +1,21 @@
+# Lemokey P1
+
+![Lemokey P1]
+
+A customizable 75% keyboard.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Lemokey P1
+* Hardware Availability: [Lemokey P1 QMK/VIA Wireless Custom Mechanical Keyboard]
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/p1/ansi_encoder:default
+
+Flashing example for this keyboard:
+
+ make keychron/p1/ansi_encoder:default:flash
+
+**Reset Key**: Disconnect the USB cable, toggle mode switch to "Cable", hold down the *Esc* key or reset button underneath space bar, then connect the USB cable.
+
+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).
diff --git a/keyboards/lemokey/p1/rules.mk b/keyboards/lemokey/p1/rules.mk
new file mode 100644
index 000000000000..95cd29f122aa
--- /dev/null
+++ b/keyboards/lemokey/p1/rules.mk
@@ -0,0 +1,3 @@
+include keyboards/lemokey/common/lemokey_common.mk
+
+VPATH += $(TOP_DIR)/keyboards/lemokey
diff --git a/keyboards/lemokey/p1/via_json/p1_ansi_encoder_v1.0.json b/keyboards/lemokey/p1/via_json/p1_ansi_encoder_v1.0.json
new file mode 100644
index 000000000000..3274b2fdae72
--- /dev/null
+++ b/keyboards/lemokey/p1/via_json/p1_ansi_encoder_v1.0.json
@@ -0,0 +1,280 @@
+{
+ "name": "Lemokey P1 ANSI Knob",
+ "vendorId": "0x362D",
+ "productId": "0x0310",
+ "keycodes": ["qmk_lighting"],
+ "menus": [
+ {
+ "label": "Lighting",
+ "content": [
+ {
+ "label": "Backlight",
+ "content": [
+ {
+ "label": "Brightness",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_brightness", 3, 1]
+ },
+ {
+ "label": "Effect",
+ "type": "dropdown",
+ "content": ["id_qmk_rgb_matrix_effect", 3, 2],
+ "options": [
+ ["None", 0],
+ ["Solid Color", 1],
+ ["Breathing", 2],
+ ["Band Spiral Val", 3],
+ ["Cycle All", 4],
+ ["Cycle Left Right", 5],
+ ["Cycle Up Down", 6],
+ ["Rainbow Moving Chevron", 7],
+ ["Cycle Out In", 8],
+ ["Cycle Out In Dual", 9],
+ ["Cycle Pinwheel", 10],
+ ["Cycle Spiral", 11],
+ ["Dual Beacon", 12],
+ ["Rainbow Beacon", 13],
+ ["Jellybean Raindrops", 14],
+ ["Pixel Rain", 15],
+ ["Typing Heatmap", 16],
+ ["Digital Rain", 17],
+ ["Reactive Simple", 18],
+ ["Reactive Multiwide", 19],
+ ["Reactive Multinexus", 20],
+ ["Splash", 21],
+ ["Solid Splash", 22]
+ ]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} > 1",
+ "label": "Effect Speed",
+ "type": "range",
+ "options": [0, 255],
+ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3]
+ },
+ {
+ "showIf": "{id_qmk_rgb_matrix_effect} != 0 && ( {id_qmk_rgb_matrix_effect} < 4 || {id_qmk_rgb_matrix_effect} == 18 || ({id_qmk_rgb_matrix_effect} > 17 && {id_qmk_rgb_matrix_effect} != 21) ) ",
+ "label": "Color",
+ "type": "color",
+ "content": ["id_qmk_rgb_matrix_color", 3, 4]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "customKeycodes": [
+ {"name": "Left Option", "title": "Left Option", "shortName": "LOpt"},
+ {"name": "Right Option", "title": "Right Option", "shortName": "ROpt"},
+ {"name": "Left Cmd", "title": "Left Command", "shortName": "LCmd"},
+ {"name": "Right Cmd", "title": "Right Command", "shortName": "RCmd"},
+ {"name": "Misson Control", "title": "Misson Control in Mac", "shortName": "MCtl"},
+ {"name": "Lanuch Pad", "title": "Lanuch Pad in Windows", "shortName": "LPad"},
+ {"name": "Siri", "title": "Siri in macOS", "shortName": "Siri"},
+ {"name": "Task View", "title": "Task View in Windows", "shortName": "Task"},
+ {"name": "File Explorer", "title": "File Explorer in Windows", "shortName": "File"},
+ {"name": "Screen shot", "title": "Screenshot in macOS", "shortName": "SShot"},
+ {"name": "Cortana", "title": "Cortana in Windows", "shortName": "Cortana"}
+ ],
+ "matrix": {"rows": 6, "cols" : 15},
+ "layouts": {
+ "keymap": [
+ [
+ {
+ "c": "#777777"
+ },
+ "0, 0",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0, 1",
+ "0, 2",
+ "0, 3",
+ "0, 4",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0, 5",
+ "0, 6",
+ "0, 7",
+ "0, 8",
+ {
+ "x": 0.25,
+ "c": "#cccccc"
+ },
+ "0, 9",
+ "0, 10",
+ "0, 11",
+ "0, 12",
+ {
+ "x": 0.25,
+ "c": "#aaaaaa"
+ },
+ "0, 13",
+ {
+ "x": 0.25
+ },
+ "0, 14\n\n\n\n\n\n\n\n\ne0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "c": "#aaaaaa"
+ },
+ "1, 0",
+ {
+ "c": "#cccccc"
+ },
+ "1, 1",
+ "1, 2",
+ "1, 3",
+ "1, 4",
+ "1, 5",
+ "1, 6",
+ "1, 7",
+ "1, 8",
+ "1, 9",
+ "1, 10",
+ "1, 11",
+ "1, 12",
+ {
+ "w": 2,
+ "c": "#aaaaaa"
+ },
+ "1, 13",
+ {
+ "x": 0.25
+ },
+ "1, 14"
+ ],
+ [
+ {
+ "w": 1.5,
+ "c": "#aaaaaa"
+ },
+ "2, 0",
+ {
+ "c": "#cccccc"
+ },
+ "2, 1",
+ "2, 2",
+ "2, 3",
+ "2, 4",
+ "2, 5",
+ "2, 6",
+ "2, 7",
+ "2, 8",
+ "2, 9",
+ "2, 10",
+ "2, 11",
+ "2, 12",
+ {
+ "w": 1.5,
+ "c": "#aaaaaa"
+ },
+ "2, 13",
+ {
+ "x": 0.25
+ },
+ "2, 14"
+ ],
+ [
+ {
+ "w": 1.75,
+ "c": "#aaaaaa"
+ },
+ "3, 0",
+ {
+ "c": "#cccccc"
+ },
+ "3, 1",
+ "3, 2",
+ "3, 3",
+ "3, 4",
+ "3, 5",
+ "3, 6",
+ "3, 7",
+ "3, 8",
+ "3, 9",
+ "3, 10",
+ "3, 11",
+ {
+ "w": 2.25,
+ "c": "#aaaaaa"
+ },
+ "3, 13",
+ {
+ "x": 0.25
+ },
+ "3, 14"
+ ],
+ [
+ {
+ "w": 2.25,
+ "c": "#aaaaaa"
+ },
+ "4, 0",
+ {
+ "c": "#cccccc"
+ },
+ "4, 2",
+ "4, 3",
+ "4, 4",
+ "4, 5",
+ "4, 6",
+ "4, 7",
+ "4, 8",
+ "4, 9",
+ "4, 10",
+ "4, 11",
+ {
+ "w": 1.75,
+ "c": "#aaaaaa"
+ },
+ "4, 12",
+ {
+ "x": 0.25,
+ "y": 0.25
+ },
+ "4, 13"
+ ],
+ [
+ {
+ "y": -0.25,
+ "w": 1.25,
+ "c": "#aaaaaa"
+ },
+ "5, 0",
+ {
+ "w": 1.25
+ },
+ "5, 1",
+ {
+ "w": 1.25
+ },
+ "5, 2",
+ {
+ "w": 6.25,
+ "c": "#cccccc"
+ },
+ "5, 6",
+ {
+ "c": "#aaaaaa"
+ },
+ "5, 9",
+ "5, 10",
+ "5, 11",
+ {
+ "x": 0.25,
+ "y": 0.25
+ },
+ "5, 12",
+ "5, 13",
+ "5, 14"
+ ]
+ ]
+ }
+}
diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h
index c2533ca49cbc..5b6b2655e5dc 100644
--- a/quantum/led_matrix/led_matrix.h
+++ b/quantum/led_matrix/led_matrix.h
@@ -36,6 +36,9 @@
#ifdef CKLED2001
# include "ckled2001-simple.h"
#endif
+#ifdef SNLED27351_SPI
+# include "snled27351-simple-spi.h"
+#endif
#ifndef LED_MATRIX_LED_FLUSH_LIMIT
# define LED_MATRIX_LED_FLUSH_LIMIT 16
diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c
index 13c8935d112f..cd4e374ad347 100644
--- a/quantum/led_matrix/led_matrix_drivers.c
+++ b/quantum/led_matrix/led_matrix_drivers.c
@@ -244,4 +244,23 @@ const led_matrix_driver_t led_matrix_driver = {
.set_value_all = ckled2001_set_value_all,
};
# endif
+#elif defined(SNLED27351_SPI)
+# include "spi_master.h"
+
+static void init(void) {
+ spi_init();
+
+ snled27351_init_drivers();
+}
+
+static void flush(void) {
+ snled27351_flush();
+}
+
+const rgb_matrix_driver_t rgb_matrix_driver = {
+ .init = init,
+ .flush = flush,
+ .set_color = snled27351_set_value,
+ .set_color_all = snled27351_set_value_all,
+};
#endif
diff --git a/quantum/rgb_matrix/rgb_matrix.h b/quantum/rgb_matrix/rgb_matrix.h
index 38040fb0ccc4..c1ce69fcea64 100644
--- a/quantum/rgb_matrix/rgb_matrix.h
+++ b/quantum/rgb_matrix/rgb_matrix.h
@@ -38,6 +38,8 @@
# include "is31flcommon.h"
#elif defined(CKLED2001)
# include "ckled2001.h"
+#elif defined(SNLED27351_SPI)
+# include "snled27351-spi.h"
#elif defined(AW20216)
# include "aw20216.h"
#elif defined(WS2812)
diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c
index 695ecc78a47a..81fa44898afd 100644
--- a/quantum/rgb_matrix/rgb_matrix_drivers.c
+++ b/quantum/rgb_matrix/rgb_matrix_drivers.c
@@ -392,6 +392,25 @@ const rgb_matrix_driver_t rgb_matrix_driver = {
.set_color_all = ckled2001_set_color_all,
};
# endif
+#elif defined(SNLED27351_SPI)
+# include "spi_master.h"
+
+static void init(void) {
+ spi_init();
+
+ snled27351_init_drivers();
+}
+
+static void flush(void) {
+ snled27351_flush();
+}
+
+const rgb_matrix_driver_t rgb_matrix_driver = {
+ .init = init,
+ .flush = flush,
+ .set_color = snled27351_set_color,
+ .set_color_all = snled27351_set_color_all,
+};
#elif defined(AW20216)
# include "spi_master.h"
From d13dd472193a5c455bf9caf5e21d273a0dc00d35 Mon Sep 17 00:00:00 2001
From: Aidan O'Donnell
Date: Fri, 15 Nov 2024 14:36:50 -0800
Subject: [PATCH 27/27] jasmine keymap
---
.../ansi/rgb/keymaps/jasmine_keeb/keymap.c | 147 ++++++++++++++++++
1 file changed, 147 insertions(+)
create mode 100755 keyboards/keychron/c3_pro/ansi/rgb/keymaps/jasmine_keeb/keymap.c
diff --git a/keyboards/keychron/c3_pro/ansi/rgb/keymaps/jasmine_keeb/keymap.c b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/jasmine_keeb/keymap.c
new file mode 100755
index 000000000000..0fa1f2c1af98
--- /dev/null
+++ b/keyboards/keychron/c3_pro/ansi/rgb/keymaps/jasmine_keeb/keymap.c
@@ -0,0 +1,147 @@
+/* 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
+// Disable RGB effects
+// #undef RGBLIGHT_ANIMATIONS
+// #define RGB_DISABLE_WHEN_USB_SUSPENDED true
+// #define RGBLIGHT_ENABLE false
+// #define RGB_MATRIX_ENABLE false
+
+enum layers{
+ BASE,
+ FN,
+};
+
+#define KC_TASK G(KC_TAB)
+#define KC_FLXP G(KC_E)
+
+// Define a custom keycode for the macro
+enum custom_keycodes {
+ EMAL_MACRO = SAFE_RANGE,
+ LOVE_MACRO,
+ HAMM_MACRO,
+ SLIM_MACRO
+};
+
+uint16_t rgb_timer = 0;
+
+// Handle the custom keycode in process_record_user
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case EMAL_MACRO:
+ if (record->event.pressed) {
+ // Replace this with your email address
+ SEND_STRING("Jasmineaizely@gmail.com");
+ }
+ return false;
+ case LOVE_MACRO:
+ if (record->event.pressed) {
+ SEND_STRING("i<3u");
+ rgb_matrix_enable();
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv(HSV_PINK);
+ rgb_timer = timer_read();
+ }
+ return false;
+ case HAMM_MACRO:
+ if (record->event.pressed) {
+ SEND_STRING("okay, okay, lets kill this guy with hammers");
+ rgb_matrix_enable();
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv(HSV_RED);
+ rgb_timer = timer_read();
+ }
+ return false;
+ case SLIM_MACRO:
+ if (record->event.pressed) {
+ SEND_STRING("much respect for my big slime");
+ rgb_matrix_enable();
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv(HSV_GREEN);
+ rgb_timer = timer_read();
+ }
+ return false;
+ case DM_REC1:
+ if (record->event.pressed) {
+ rgb_matrix_enable();
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv(HSV_BLUE);
+ }
+ return true;
+ case DM_PLY1:
+ if (record->event.pressed) {
+ rgb_matrix_enable();
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv(HSV_BLUE);
+ rgb_timer = timer_read();
+ }
+ return true;
+ case DM_REC2:
+ if (record->event.pressed) {
+ rgb_matrix_enable();
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv(HSV_YELLOW);
+ }
+ return true;
+ case DM_PLY2:
+ if (record->event.pressed) {
+ rgb_matrix_enable();
+ rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv(HSV_YELLOW);
+ rgb_timer = timer_read();
+ }
+ return true;
+ case DM_RSTP:
+ rgb_matrix_disable();
+ return true;
+ default:
+ return true;
+ }
+}
+
+void matrix_scan_user(void) {
+ // Turn off RGB after 500ms
+ if (rgb_timer && timer_elapsed(rgb_timer) > 1000) {
+ rgb_matrix_disable();
+ rgb_timer = 0;
+ }
+}
+
+// Disable RGB on keyboard init
+void keyboard_post_init_user(void) {
+ rgb_matrix_disable();
+}
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_tkl_ansi(
+ KC_ESC, 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_PSCR,KC_SCROLL_LOCK,KC_PAUSE,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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, KC_SPC, KC_RALT, MO(FN),KC_APP, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT ),
+
+ [FN] = LAYOUT_tkl_ansi(
+ LOVE_MACRO, DM_PLY1, DM_PLY2, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_MOD,
+ _______, DM_REC1, DM_REC2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DM_RSTP, _______,
+ _______, _______, BL_DOWN, _______, _______, _______, HAMM_MACRO, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, EMAL_MACRO, _______, _______, _______, _______, _______,
+ SLIM_MACRO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+};
\ No newline at end of file