From c6243da12f6643747a24a7aa761e103cc4a848c2 Mon Sep 17 00:00:00 2001 From: lalalademaxiya1 <2831039915@qq.com> Date: Wed, 15 Mar 2023 16:51:53 +0800 Subject: [PATCH 1/7] Update Keychron K Pro series keyboards --- .../keychron/bluetooth/bat_level_animation.c | 0 .../keychron/bluetooth/bat_level_animation.h | 0 keyboards/keychron/bluetooth/battery.h | 0 keyboards/keychron/bluetooth/bluetooth.h | 12 +- keyboards/keychron/bluetooth/bluetooth.mk | 0 .../keychron/bluetooth/bluetooth_config.h | 0 .../keychron/bluetooth/bluetooth_event_type.h | 0 keyboards/keychron/bluetooth/bluetooth_main.c | 0 keyboards/keychron/bluetooth/ckbt51.c | 63 ++-- keyboards/keychron/bluetooth/ckbt51.h | 0 keyboards/keychron/bluetooth/factory_test.c | 0 keyboards/keychron/bluetooth/factory_test.h | 0 keyboards/keychron/bluetooth/indicator.c | 4 +- keyboards/keychron/bluetooth/indicator.h | 0 keyboards/keychron/bluetooth/lpm.c | 0 keyboards/keychron/bluetooth/lpm.h | 0 keyboards/keychron/bluetooth/lpm_stm32l432.c | 11 +- keyboards/keychron/bluetooth/lpm_stm32l432.h | 0 keyboards/keychron/bluetooth/report_buffer.c | 0 keyboards/keychron/bluetooth/report_buffer.h | 0 keyboards/keychron/bluetooth/rtc_timer.c | 0 keyboards/keychron/bluetooth/rtc_timer.h | 0 keyboards/keychron/bluetooth/transport.c | 0 keyboards/keychron/bluetooth/transport.h | 0 keyboards/keychron/k10_pro/config.h | 7 + keyboards/keychron/k10_pro/iso/rgb/config.h | 101 ++++++ keyboards/keychron/k10_pro/iso/rgb/info.json | 133 +++++++ .../k10_pro/iso/rgb/keymaps/default/keymap.c | 59 ++++ .../k10_pro/iso/rgb/keymaps/via/keymap.c | 59 ++++ .../k10_pro/iso/rgb/keymaps/via/rules.mk | 1 + keyboards/keychron/k10_pro/iso/rgb/rgb.c | 175 ++++++++++ keyboards/keychron/k10_pro/iso/rgb/rules.mk | 2 + keyboards/keychron/k10_pro/iso/white/config.h | 76 ++++ .../keychron/k10_pro/iso/white/info.json | 133 +++++++ .../iso/white/keymaps/default/keymap.c | 59 ++++ .../k10_pro/iso/white/keymaps/via/keymap.c | 59 ++++ .../k10_pro/iso/white/keymaps/via/rules.mk | 1 + keyboards/keychron/k10_pro/iso/white/rules.mk | 2 + keyboards/keychron/k10_pro/iso/white/white.c | 173 ++++++++++ keyboards/keychron/k10_pro/k10_pro.c | 18 +- keyboards/keychron/k10_pro/k10_pro.h | 0 keyboards/keychron/k10_pro/readme.md | 2 +- keyboards/keychron/k13_pro/ansi/rgb/config.h | 9 +- keyboards/keychron/k13_pro/ansi/rgb/rgb.c | 184 +++++----- .../keychron/k13_pro/ansi/white/config.h | 7 - keyboards/keychron/k13_pro/ansi/white/white.c | 4 +- keyboards/keychron/k13_pro/config.h | 7 + keyboards/keychron/k13_pro/k13_pro.c | 18 +- keyboards/keychron/k13_pro/matrix.c | 208 +++++------ keyboards/keychron/k13_pro/readme.md | 4 +- keyboards/keychron/k13_pro/rules.mk | 3 - keyboards/keychron/k1_pro/ansi/rgb/config.h | 7 - keyboards/keychron/k1_pro/ansi/rgb/info.json | 2 +- .../k1_pro/ansi/rgb/keymaps/default/keymap.c | 56 +-- .../k1_pro/ansi/rgb/keymaps/via/keymap.c | 56 +-- keyboards/keychron/k1_pro/ansi/rgb/rgb.c | 184 +++++----- keyboards/keychron/k1_pro/ansi/white/config.h | 7 - .../keychron/k1_pro/ansi/white/info.json | 2 +- .../ansi/white/keymaps/default/keymap.c | 8 +- .../k1_pro/ansi/white/keymaps/via/keymap.c | 8 +- keyboards/keychron/k1_pro/ansi/white/white.c | 4 +- keyboards/keychron/k1_pro/config.h | 9 +- keyboards/keychron/k1_pro/k1_pro.c | 18 +- keyboards/keychron/k1_pro/matrix.c | 208 +++++------ keyboards/keychron/k1_pro/readme.md | 4 +- keyboards/keychron/k1_pro/rules.mk | 3 - .../k1_pro/via_json/k1_pro_us_rgb.json | 289 ++++++++++++++++ .../k1_pro/via_json/k1_pro_us_white.json | 228 ++++++++++++ .../ansi/white/keymaps/candysign/config.h} | 16 +- .../ansi/white/keymaps/candysign/keymap.c | 59 ++++ .../ansi/white/keymaps/candysign/rules.mk | 1 + keyboards/keychron/k2_pro/config.h | 7 + keyboards/keychron/k2_pro/jis/rgb/config.h | 101 ++++++ keyboards/keychron/k2_pro/jis/rgb/info.json | 111 ++++++ .../k2_pro/jis/rgb/keymaps/default/keymap.c | 59 ++++ .../k2_pro/jis/rgb/keymaps/via/keymap.c | 59 ++++ .../k2_pro/jis/rgb/keymaps/via/rules.mk | 1 + keyboards/keychron/k2_pro/jis/rgb/rgb.c | 153 +++++++++ keyboards/keychron/k2_pro/jis/rgb/rules.mk | 2 + keyboards/keychron/k2_pro/jis/white/config.h | 76 ++++ keyboards/keychron/k2_pro/jis/white/info.json | 111 ++++++ .../k2_pro/jis/white/keymaps/default/keymap.c | 59 ++++ .../k2_pro/jis/white/keymaps/via/keymap.c | 59 ++++ .../k2_pro/jis/white/keymaps/via/rules.mk | 1 + keyboards/keychron/k2_pro/jis/white/rules.mk | 2 + keyboards/keychron/k2_pro/jis/white/white.c | 151 ++++++++ keyboards/keychron/k2_pro/k2_pro.c | 25 +- keyboards/keychron/k2_pro/k2_pro.h | 33 -- keyboards/keychron/k2_pro/readme.md | 2 +- keyboards/keychron/k3_pro/config.h | 7 + keyboards/keychron/k3_pro/jis/rgb/config.h | 102 ++++++ keyboards/keychron/k3_pro/jis/rgb/info.json | 111 ++++++ .../k3_pro/jis/rgb/keymaps/default/keymap.c | 59 ++++ .../k3_pro/jis/rgb/keymaps/via/keymap.c | 59 ++++ .../k3_pro/jis/rgb/keymaps/via/rules.mk | 1 + keyboards/keychron/k3_pro/jis/rgb/rgb.c | 153 +++++++++ keyboards/keychron/k3_pro/jis/rgb/rules.mk | 2 + keyboards/keychron/k3_pro/jis/white/config.h | 76 ++++ keyboards/keychron/k3_pro/jis/white/info.json | 111 ++++++ .../k3_pro/jis/white/keymaps/default/keymap.c | 59 ++++ .../k3_pro/jis/white/keymaps/via/keymap.c | 59 ++++ .../k3_pro/jis/white/keymaps/via/rules.mk | 1 + keyboards/keychron/k3_pro/jis/white/rules.mk | 2 + keyboards/keychron/k3_pro/jis/white/white.c | 151 ++++++++ keyboards/keychron/k3_pro/k3_pro.c | 18 +- keyboards/keychron/k3_pro/k3_pro.h | 33 -- keyboards/keychron/k3_pro/readme.md | 2 +- .../k3_pro/via_json/k3_pro_jis_rgb .json | 265 ++++++++++++++ .../k3_pro/via_json/k3_pro_jis_white.json | 204 +++++++++++ keyboards/keychron/k4_pro/config.h | 7 + keyboards/keychron/k4_pro/iso/rgb/config.h | 102 ++++++ keyboards/keychron/k4_pro/iso/rgb/info.json | 125 +++++++ .../k4_pro/iso/rgb/keymaps/default/keymap.c | 56 +++ .../k4_pro/iso/rgb/keymaps/via/keymap.c | 56 +++ .../k4_pro/iso/rgb/keymaps/via/rules.mk | 1 + keyboards/keychron/k4_pro/iso/rgb/rgb.c | 167 +++++++++ keyboards/keychron/k4_pro/iso/rgb/rules.mk | 2 + keyboards/keychron/k4_pro/iso/white/config.h | 75 ++++ keyboards/keychron/k4_pro/iso/white/info.json | 125 +++++++ .../k4_pro/iso/white/keymaps/default/keymap.c | 56 +++ .../k4_pro/iso/white/keymaps/via/keymap.c | 56 +++ .../k4_pro/iso/white/keymaps/via/rules.mk | 1 + keyboards/keychron/k4_pro/iso/white/rules.mk | 2 + keyboards/keychron/k4_pro/iso/white/white.c | 165 +++++++++ keyboards/keychron/k4_pro/k4_pro.c | 18 +- keyboards/keychron/k4_pro/k4_pro.h | 16 - keyboards/keychron/k4_pro/readme.md | 2 +- .../k4_pro/via_json/k4_pro_iso_rgb.json | 325 ++++++++++++++++++ .../k4_pro/via_json/k4_pro_iso_white.json | 264 ++++++++++++++ keyboards/keychron/k5_pro/ansi/rgb/config.h | 7 - keyboards/keychron/k5_pro/ansi/rgb/rgb.c | 2 +- keyboards/keychron/k5_pro/ansi/white/config.h | 7 - keyboards/keychron/k5_pro/ansi/white/white.c | 2 +- keyboards/keychron/k5_pro/config.h | 7 + keyboards/keychron/k5_pro/k5_pro.c | 18 +- keyboards/keychron/k5_pro/matrix.c | 206 ++++++----- keyboards/keychron/k5_pro/readme.md | 4 +- .../via_json/k5_pro_ansi_rgb_v1.00.json | 162 +++------ .../via_json/k5_pro_ansi_white_v1.00.json | 114 ++---- keyboards/keychron/k6_pro/config.h | 8 +- keyboards/keychron/k6_pro/jis/rgb/config.h | 97 ++++++ keyboards/keychron/k6_pro/jis/rgb/info.json | 94 +++++ .../k6_pro/jis/rgb/keymaps/default/keymap.c | 63 ++++ .../k6_pro/jis/rgb/keymaps/via/keymap.c | 64 ++++ .../k6_pro/jis/rgb/keymaps/via/rules.mk | 2 + keyboards/keychron/k6_pro/jis/rgb/rgb.c | 133 +++++++ keyboards/keychron/k6_pro/jis/rgb/rules.mk | 2 + keyboards/keychron/k6_pro/k6_pro.c | 18 +- keyboards/keychron/k6_pro/k6_pro.h | 29 -- keyboards/keychron/k6_pro/readme.md | 2 +- .../k6_pro/via_json/k6_pro_jis_rgb.json | 325 +++++++++--------- keyboards/keychron/k7_pro/config.h | 7 + keyboards/keychron/k7_pro/k7_pro.c | 18 +- keyboards/keychron/k7_pro/k7_pro.h | 29 -- keyboards/keychron/k7_pro/readme.md | 2 +- keyboards/keychron/k8_pro/config.h | 7 + keyboards/keychron/k8_pro/k8_pro.c | 28 +- keyboards/keychron/k8_pro/k8_pro.h | 48 --- keyboards/keychron/k8_pro/readme.md | 2 +- keyboards/keychron/k9_pro/ansi/rgb/config.h | 7 - keyboards/keychron/k9_pro/ansi/rgb/rgb.c | 124 +++---- keyboards/keychron/k9_pro/config.h | 7 + keyboards/keychron/k9_pro/k9_pro.c | 20 +- keyboards/keychron/k9_pro/matrix.c | 206 ++++++----- keyboards/keychron/k9_pro/readme.md | 4 +- keyboards/keychron/k9_pro/rules.mk | 3 - .../q2_pro/ansi_encoder/ansi_encoder.c | 136 ++++---- .../keychron/q2_pro/ansi_encoder/config.h | 7 - keyboards/keychron/q2_pro/config.h | 7 + keyboards/keychron/q2_pro/matrix.c | 208 +++++------ keyboards/keychron/q2_pro/q2_pro.c | 18 +- keyboards/keychron/q2_pro/readme.md | 8 +- keyboards/keychron/q2_pro/rules.mk | 3 - .../q3_pro/ansi_encoder/ansi_encoder.c | 186 +++++----- .../keychron/q3_pro/ansi_encoder/config.h | 7 - .../q3_pro/ansi_encoder/keymaps/via/keymap.c | 16 +- keyboards/keychron/q3_pro/config.h | 9 +- keyboards/keychron/q3_pro/matrix.c | 54 ++- keyboards/keychron/q3_pro/q3_pro.c | 18 +- keyboards/keychron/q3_pro/readme.md | 10 +- keyboards/keychron/q3_pro/rules.mk | 3 - 181 files changed, 7739 insertions(+), 1700 deletions(-) mode change 100644 => 100755 keyboards/keychron/bluetooth/bat_level_animation.c mode change 100644 => 100755 keyboards/keychron/bluetooth/bat_level_animation.h mode change 100644 => 100755 keyboards/keychron/bluetooth/battery.h mode change 100644 => 100755 keyboards/keychron/bluetooth/bluetooth.h mode change 100644 => 100755 keyboards/keychron/bluetooth/bluetooth.mk mode change 100644 => 100755 keyboards/keychron/bluetooth/bluetooth_config.h mode change 100644 => 100755 keyboards/keychron/bluetooth/bluetooth_event_type.h mode change 100644 => 100755 keyboards/keychron/bluetooth/bluetooth_main.c mode change 100644 => 100755 keyboards/keychron/bluetooth/ckbt51.c mode change 100644 => 100755 keyboards/keychron/bluetooth/ckbt51.h mode change 100644 => 100755 keyboards/keychron/bluetooth/factory_test.c mode change 100644 => 100755 keyboards/keychron/bluetooth/factory_test.h mode change 100644 => 100755 keyboards/keychron/bluetooth/indicator.c mode change 100644 => 100755 keyboards/keychron/bluetooth/indicator.h mode change 100644 => 100755 keyboards/keychron/bluetooth/lpm.c mode change 100644 => 100755 keyboards/keychron/bluetooth/lpm.h mode change 100644 => 100755 keyboards/keychron/bluetooth/lpm_stm32l432.c mode change 100644 => 100755 keyboards/keychron/bluetooth/lpm_stm32l432.h mode change 100644 => 100755 keyboards/keychron/bluetooth/report_buffer.c mode change 100644 => 100755 keyboards/keychron/bluetooth/report_buffer.h mode change 100644 => 100755 keyboards/keychron/bluetooth/rtc_timer.c mode change 100644 => 100755 keyboards/keychron/bluetooth/rtc_timer.h mode change 100644 => 100755 keyboards/keychron/bluetooth/transport.c mode change 100644 => 100755 keyboards/keychron/bluetooth/transport.h create mode 100755 keyboards/keychron/k10_pro/iso/rgb/config.h create mode 100755 keyboards/keychron/k10_pro/iso/rgb/info.json create mode 100755 keyboards/keychron/k10_pro/iso/rgb/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k10_pro/iso/rgb/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k10_pro/iso/rgb/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k10_pro/iso/rgb/rgb.c create mode 100755 keyboards/keychron/k10_pro/iso/rgb/rules.mk create mode 100755 keyboards/keychron/k10_pro/iso/white/config.h create mode 100755 keyboards/keychron/k10_pro/iso/white/info.json create mode 100755 keyboards/keychron/k10_pro/iso/white/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k10_pro/iso/white/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k10_pro/iso/white/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k10_pro/iso/white/rules.mk create mode 100755 keyboards/keychron/k10_pro/iso/white/white.c mode change 100644 => 100755 keyboards/keychron/k10_pro/k10_pro.c mode change 100644 => 100755 keyboards/keychron/k10_pro/k10_pro.h create mode 100755 keyboards/keychron/k1_pro/via_json/k1_pro_us_rgb.json create mode 100755 keyboards/keychron/k1_pro/via_json/k1_pro_us_white.json rename keyboards/keychron/{q2_pro/chconf.h => k2_pro/ansi/white/keymaps/candysign/config.h} (67%) create mode 100755 keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/keymap.c create mode 100755 keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/rules.mk create mode 100755 keyboards/keychron/k2_pro/jis/rgb/config.h create mode 100755 keyboards/keychron/k2_pro/jis/rgb/info.json create mode 100755 keyboards/keychron/k2_pro/jis/rgb/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k2_pro/jis/rgb/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k2_pro/jis/rgb/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k2_pro/jis/rgb/rgb.c create mode 100755 keyboards/keychron/k2_pro/jis/rgb/rules.mk create mode 100755 keyboards/keychron/k2_pro/jis/white/config.h create mode 100755 keyboards/keychron/k2_pro/jis/white/info.json create mode 100755 keyboards/keychron/k2_pro/jis/white/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k2_pro/jis/white/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k2_pro/jis/white/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k2_pro/jis/white/rules.mk create mode 100755 keyboards/keychron/k2_pro/jis/white/white.c mode change 100644 => 100755 keyboards/keychron/k2_pro/k2_pro.c mode change 100644 => 100755 keyboards/keychron/k2_pro/k2_pro.h create mode 100755 keyboards/keychron/k3_pro/jis/rgb/config.h create mode 100755 keyboards/keychron/k3_pro/jis/rgb/info.json create mode 100755 keyboards/keychron/k3_pro/jis/rgb/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k3_pro/jis/rgb/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k3_pro/jis/rgb/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k3_pro/jis/rgb/rgb.c create mode 100755 keyboards/keychron/k3_pro/jis/rgb/rules.mk create mode 100755 keyboards/keychron/k3_pro/jis/white/config.h create mode 100755 keyboards/keychron/k3_pro/jis/white/info.json create mode 100755 keyboards/keychron/k3_pro/jis/white/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k3_pro/jis/white/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k3_pro/jis/white/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k3_pro/jis/white/rules.mk create mode 100755 keyboards/keychron/k3_pro/jis/white/white.c mode change 100644 => 100755 keyboards/keychron/k3_pro/k3_pro.c mode change 100644 => 100755 keyboards/keychron/k3_pro/k3_pro.h create mode 100755 keyboards/keychron/k3_pro/via_json/k3_pro_jis_rgb .json create mode 100755 keyboards/keychron/k3_pro/via_json/k3_pro_jis_white.json create mode 100755 keyboards/keychron/k4_pro/iso/rgb/config.h create mode 100755 keyboards/keychron/k4_pro/iso/rgb/info.json create mode 100755 keyboards/keychron/k4_pro/iso/rgb/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k4_pro/iso/rgb/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k4_pro/iso/rgb/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k4_pro/iso/rgb/rgb.c create mode 100755 keyboards/keychron/k4_pro/iso/rgb/rules.mk create mode 100755 keyboards/keychron/k4_pro/iso/white/config.h create mode 100755 keyboards/keychron/k4_pro/iso/white/info.json create mode 100755 keyboards/keychron/k4_pro/iso/white/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k4_pro/iso/white/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k4_pro/iso/white/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k4_pro/iso/white/rules.mk create mode 100755 keyboards/keychron/k4_pro/iso/white/white.c mode change 100644 => 100755 keyboards/keychron/k4_pro/k4_pro.c mode change 100644 => 100755 keyboards/keychron/k4_pro/k4_pro.h create mode 100755 keyboards/keychron/k4_pro/via_json/k4_pro_iso_rgb.json create mode 100755 keyboards/keychron/k4_pro/via_json/k4_pro_iso_white.json create mode 100755 keyboards/keychron/k6_pro/jis/rgb/config.h create mode 100755 keyboards/keychron/k6_pro/jis/rgb/info.json create mode 100755 keyboards/keychron/k6_pro/jis/rgb/keymaps/default/keymap.c create mode 100755 keyboards/keychron/k6_pro/jis/rgb/keymaps/via/keymap.c create mode 100755 keyboards/keychron/k6_pro/jis/rgb/keymaps/via/rules.mk create mode 100755 keyboards/keychron/k6_pro/jis/rgb/rgb.c create mode 100755 keyboards/keychron/k6_pro/jis/rgb/rules.mk mode change 100644 => 100755 keyboards/keychron/k6_pro/k6_pro.c mode change 100644 => 100755 keyboards/keychron/k6_pro/k6_pro.h mode change 100644 => 100755 keyboards/keychron/k7_pro/k7_pro.c mode change 100644 => 100755 keyboards/keychron/k7_pro/k7_pro.h mode change 100644 => 100755 keyboards/keychron/k8_pro/k8_pro.c mode change 100644 => 100755 keyboards/keychron/k8_pro/k8_pro.h diff --git a/keyboards/keychron/bluetooth/bat_level_animation.c b/keyboards/keychron/bluetooth/bat_level_animation.c old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/bat_level_animation.h b/keyboards/keychron/bluetooth/bat_level_animation.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/battery.h b/keyboards/keychron/bluetooth/battery.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/bluetooth.h b/keyboards/keychron/bluetooth/bluetooth.h old mode 100644 new mode 100755 index 99d406223d..0ef14e0d06 --- a/keyboards/keychron/bluetooth/bluetooth.h +++ b/keyboards/keychron/bluetooth/bluetooth.h @@ -32,11 +32,11 @@ /* Type of an enumeration of the possible BT state.*/ typedef enum { BLUETOOTH_RESET, - BLUETOOTH_INITIALIZED, // 1 - BLUETOOTH_DISCONNECTED, // 2 - BLUETOOTH_CONNECTED, // 3 - BLUETOOTH_PARING, // 4 - BLUETOOTH_RECONNECTING, // 5 + BLUETOOTH_INITIALIZED, // 1 + BLUETOOTH_DISCONNECTED, // 2 + BLUETOOTH_CONNECTED, // 3 + BLUETOOTH_PARING, // 4 + BLUETOOTH_RECONNECTING, // 5 BLUETOOTH_SUSPEND } bluetooth_state_t; @@ -85,5 +85,3 @@ bluetooth_state_t bluetooth_get_state(void); void bluetooth_low_battery_shutdown(void); bool process_record_kb_bt(uint16_t keycode, keyrecord_t *record); - - diff --git a/keyboards/keychron/bluetooth/bluetooth.mk b/keyboards/keychron/bluetooth/bluetooth.mk old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/bluetooth_config.h b/keyboards/keychron/bluetooth/bluetooth_config.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/bluetooth_event_type.h b/keyboards/keychron/bluetooth/bluetooth_event_type.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/bluetooth_main.c b/keyboards/keychron/bluetooth/bluetooth_main.c old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/ckbt51.c b/keyboards/keychron/bluetooth/ckbt51.c old mode 100644 new mode 100755 index 2be217c091..4653825839 --- a/keyboards/keychron/bluetooth/ckbt51.c +++ b/keyboards/keychron/bluetooth/ckbt51.c @@ -14,6 +14,7 @@ * along with this program. If not, see . */ +#include #include "quantum.h" #include "ckbt51.h" #include "bluetooth.h" @@ -31,7 +32,7 @@ /* CKBT51 disable its uart peripheral to save power if uart inactivity for 3s, need to * assert this pin and wait some time for its uart getting ready before sending data*/ -#define CKBT51_WAKE_WAIT_TIME 3000 // us +#define CKBT51_WAKE_WAIT_TIME 3000 // us enum { /* HID Report */ @@ -150,15 +151,17 @@ void ckbt51_send_cmd(uint8_t* payload, uint8_t len, bool ack_enable, bool retry) systime_t start = 0; - for (i=0; i< 3; i++) { + for (i = 0; i < 3; i++) { writePin(CKBT51_INT_INPUT_PIN, i % 2); start = chVTGetSystemTime(); - while (chTimeI2US(chVTTimeElapsedSinceX(start)) < CKBT51_WAKE_WAIT_TIME / 3) {}; + while (chTimeI2US(chVTTimeElapsedSinceX(start)) < CKBT51_WAKE_WAIT_TIME / 3) { + }; } writePinHigh(CKBT51_INT_INPUT_PIN); uint16_t checksum = 0; - for (i = 0; i < len; i++) checksum += payload[i]; + for (i = 0; i < len; i++) + checksum += payload[i]; i = 0; pkt[i++] = 0xAA; @@ -190,7 +193,7 @@ void ckbt51_send_nkro(uint8_t* report) { memset(payload, 0, PACKET_MAX_LEN); payload[i++] = CKBT51_CMD_SEND_KB_NKRO; - memcpy(payload + i, report, 20); // NKRO report lenght is limited to 20 bytes + memcpy(payload + i, report, 20); // NKRO report lenght is limited to 20 bytes i += 20; ckbt51_send_cmd(payload, i, true, false); @@ -203,7 +206,7 @@ void ckbt51_send_consumer(uint16_t report) { payload[i++] = CKBT51_CMD_SEND_CONSUMER; payload[i++] = report & 0xFF; payload[i++] = ((report) >> 8) & 0xFF; - i += 4; // QMK doesn't send multiple consumer reports, just skip 2nd and 3rd consumer reports + i += 4; // QMK doesn't send multiple consumer reports, just skip 2nd and 3rd consumer reports ckbt51_send_cmd(payload, i, true, false); } @@ -222,14 +225,14 @@ void ckbt51_send_mouse(uint8_t* report) { uint8_t i = 0; memset(payload, 0, PACKET_MAX_LEN); - payload[i++] = CKBT51_CMD_SEND_MOUSE; // Cmd type - payload[i++] = report[1]; // Button - payload[i++] = report[2]; // X + payload[i++] = CKBT51_CMD_SEND_MOUSE; // Cmd type + payload[i++] = report[1]; // Button + payload[i++] = report[2]; // X payload[i++] = (report[2] & 0x80) ? 0xff : 0x00; // ckbt51 use 16bit report, set high byte - payload[i++] = report[3]; // Y + payload[i++] = report[3]; // Y payload[i++] = (report[3] & 0x80) ? 0xff : 0x00; // ckbt51 use 16bit report, set high byte - payload[i++] = report[4]; // V wheel - payload[i++] = report[5]; // H wheel + payload[i++] = report[4]; // V wheel + payload[i++] = report[5]; // H wheel ckbt51_send_cmd(payload, i, false, false); } @@ -255,13 +258,13 @@ void ckbt51_become_discoverable(uint8_t host_idx, void* param) { } pairing_param_t* p = (pairing_param_t*)param; - payload[i++] = CKBT51_CMD_PAIRING; // Cmd type - payload[i++] = host_idx; // Host Index - payload[i++] = p->timeout & 0xFF; // Timeout + payload[i++] = CKBT51_CMD_PAIRING; // Cmd type + payload[i++] = host_idx; // Host Index + payload[i++] = p->timeout & 0xFF; // Timeout payload[i++] = (p->timeout >> 8) & 0xFF; payload[i++] = p->pairingMode; - payload[i++] = p->BRorLE; // BR/LE - payload[i++] = p->txPower; // LE TX POWER + payload[i++] = p->BRorLE; // BR/LE + payload[i++] = p->txPower; // LE TX POWER if (p->leName) { memcpy(&payload[i], p->leName, strlen(p->leName)); i += strlen(p->leName); @@ -276,8 +279,8 @@ void ckbt51_connect(uint8_t hostIndex, uint16_t timeout) { memset(payload, 0, PACKET_MAX_LEN); payload[i++] = CKBT51_CMD_CONNECT; - payload[i++] = hostIndex; // Host index - payload[i++] = timeout & 0xFF; // Timeout + payload[i++] = hostIndex; // Host index + payload[i++] = timeout & 0xFF; // Timeout payload[i++] = (timeout >> 8) & 0xFF; ckbt51_send_cmd(payload, i, true, false); @@ -288,7 +291,7 @@ void ckbt51_disconnect(void) { memset(payload, 0, PACKET_MAX_LEN); payload[i++] = CKBT51_CMD_DISCONNECT; - payload[i++] = 0; // Sleep mode + payload[i++] = 0; // Sleep mode ckbt51_send_cmd(payload, i, true, false); } @@ -331,7 +334,7 @@ void ckbt51_set_param(module_param_t* param) { memcpy(payload + i, param, sizeof(module_param_t)); i += sizeof(module_param_t); - ckbt51_send_cmd(payload, i, false, false); + ckbt51_send_cmd(payload, i, true, false); } void ckbt51_get_param(module_param_t* param) { @@ -351,7 +354,7 @@ void ckbt51_set_local_name(const char* name) { payload[i++] = CKBT51_CMD_SET_NAME; memcpy(payload + i, name, len); i += len; - ckbt51_send_cmd(payload, i, false, false); + ckbt51_send_cmd(payload, i, true, false); } void ckbt51_get_local_name(void) { @@ -406,7 +409,8 @@ void ckbt51_dfu_tx(uint8_t rsp, uint8_t* data, uint8_t len, uint8_t sn) { memcpy(&buf[i], data, len); i += len; - for (uint8_t k = 0; k < i; k++) checksum += buf[i]; + for (uint8_t k = 0; k < i; k++) + checksum += buf[i]; raw_hid_send(buf, RAW_EPSIZE); @@ -440,7 +444,7 @@ void ckbt51_dfu_rx(uint8_t* data, uint8_t length) { bool retry = true; if (sn != data[4]) { - sn = data[4]; + sn = data[4]; retry = false; } @@ -450,6 +454,8 @@ void ckbt51_dfu_rx(uint8_t* data, uint8_t length) { } } +__attribute__((weak)) void ckbt51_default_ack_handler(uint8_t* data, uint8_t len){}; + static void ack_handler(uint8_t* data, uint8_t len) { switch (data[1]) { case CKBT51_CMD_SEND_KB: @@ -471,12 +477,13 @@ static void ack_handler(uint8_t* data, uint8_t len) { break; } break; - default: break; + default: + ckbt51_default_ack_handler(data, len); + break; } } static void query_rsp_handler(uint8_t* data, uint8_t len) { - if (data[2]) return; switch (data[1]) { @@ -593,13 +600,13 @@ void ckbt51_task(void) { for (uint8_t i = 0; i < len; i++) { buf[i] = sdGetTimeout(&BT_DRIVER, TIME_IMMEDIATE); - } wait_for_new_pkt = true; uint16_t checksum = 0; - for (int i = 0; i < len - 2; i++) checksum += buf[i]; + for (int i = 0; i < len - 2; i++) + checksum += buf[i]; if ((checksum & 0xff) == buf[len - 2] && ((checksum >> 8) & 0xff) == buf[len - 1]) { ckbt51_event_handler(buf[0], buf + 1, len - 3, sn); diff --git a/keyboards/keychron/bluetooth/ckbt51.h b/keyboards/keychron/bluetooth/ckbt51.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/factory_test.c b/keyboards/keychron/bluetooth/factory_test.c old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/factory_test.h b/keyboards/keychron/bluetooth/factory_test.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/indicator.c b/keyboards/keychron/bluetooth/indicator.c old mode 100644 new mode 100755 index fa111817dd..d4644dbd0c --- a/keyboards/keychron/bluetooth/indicator.c +++ b/keyboards/keychron/bluetooth/indicator.c @@ -403,7 +403,7 @@ void indicator_battery_low_backlit_enable(bool enable) { } /* Indicating at first time or after the interval */ if ((rtc_time == 0 || t - rtc_time > LOW_BAT_LED_TRIG_INTERVAL) && bat_low_ind_state == 0) { - bat_low_backlit_indicator = enable ? (timer_read32() | 1) : 0; + bat_low_backlit_indicator = enable ? (timer_read32() == 0 ? 1 : timer_read32()) : 0; rtc_time = rtc_timer_read_ms(); bat_low_ind_state = 1; @@ -448,7 +448,7 @@ void indicator_battery_low(void) { bat_low_ind_state |= 0x80; } - bat_low_backlit_indicator = sync_timer_read32() | 1; + bat_low_backlit_indicator = sync_timer_read32() == 0 ? 1 : sync_timer_read32(); /* Restore backligth state */ if ((bat_low_ind_state & 0x0F) > (LOW_BAT_LED_BLINK_TIMES)) { diff --git a/keyboards/keychron/bluetooth/indicator.h b/keyboards/keychron/bluetooth/indicator.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/lpm.c b/keyboards/keychron/bluetooth/lpm.c old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/lpm.h b/keyboards/keychron/bluetooth/lpm.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/lpm_stm32l432.c b/keyboards/keychron/bluetooth/lpm_stm32l432.c old mode 100644 new mode 100755 index 8e9f2fa77f..69db4fc30d --- a/keyboards/keychron/bluetooth/lpm_stm32l432.c +++ b/keyboards/keychron/bluetooth/lpm_stm32l432.c @@ -140,7 +140,6 @@ bool lpm_set(pm_t mode) { } static inline void enter_low_power_mode_prepare(void) { - #if defined(KEEP_USB_CONNECTION_IN_BLUETOOTH_MODE) /* Usb unit is actived and running, stop and disconnect first */ usbStop(&USBD1); @@ -204,15 +203,15 @@ static inline void lpm_wakeup(void) { #ifdef USB_POWER_SENSE_PIN palDisableLineEvent(USB_POWER_SENSE_PIN); -#if defined(KEEP_USB_CONNECTION_IN_BLUETOOTH_MODE) +# if defined(KEEP_USB_CONNECTION_IN_BLUETOOTH_MODE) if (usb_power_connected()) { hsi48_init(); /* Remove USB isolation.*/ - //PWR->CR2 |= PWR_CR2_USV; /* PWR_CR2_USV is available on STM32L4x2xx and STM32L4x3xx devices only. */ + // PWR->CR2 |= PWR_CR2_USV; /* PWR_CR2_USV is available on STM32L4x2xx and STM32L4x3xx devices only. */ usb_power_connect(); usb_start(&USBD1); } -#endif +# endif #endif @@ -277,7 +276,7 @@ void stm32_clock_fast_init(void) { pll_init(); pllsai1_init(); pllsai2_init(); -/* clang-format off */ + /* clang-format off */ /* Other clock-related settings (dividers, MCO etc).*/ RCC->CFGR = STM32_MCOPRE | STM32_MCOSEL | STM32_STOPWUCK | STM32_PPRE2 | STM32_PPRE1 | STM32_HPRE; @@ -289,7 +288,7 @@ void stm32_clock_fast_init(void) { STM32_I2C3SEL | STM32_I2C2SEL | STM32_I2C1SEL | STM32_UART5SEL | STM32_UART4SEL | STM32_USART3SEL | STM32_USART2SEL | STM32_USART1SEL | STM32_LPUART1SEL; -/* clang-format on */ +/* clang-format on */ # if STM32_SAI2SEL != STM32_SAI2SEL_OFF ccipr |= STM32_SAI2SEL; # endif diff --git a/keyboards/keychron/bluetooth/lpm_stm32l432.h b/keyboards/keychron/bluetooth/lpm_stm32l432.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/report_buffer.c b/keyboards/keychron/bluetooth/report_buffer.c old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/report_buffer.h b/keyboards/keychron/bluetooth/report_buffer.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/rtc_timer.c b/keyboards/keychron/bluetooth/rtc_timer.c old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/rtc_timer.h b/keyboards/keychron/bluetooth/rtc_timer.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/transport.c b/keyboards/keychron/bluetooth/transport.c old mode 100644 new mode 100755 diff --git a/keyboards/keychron/bluetooth/transport.h b/keyboards/keychron/bluetooth/transport.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/k10_pro/config.h b/keyboards/keychron/k10_pro/config.h index 4a4c104d5d..0e53adab0b 100644 --- a/keyboards/keychron/k10_pro/config.h +++ b/keyboards/keychron/k10_pro/config.h @@ -44,6 +44,13 @@ #define LED_CAPS_LOCK_PIN A7 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k10_pro/iso/rgb/config.h b/keyboards/keychron/k10_pro/iso/rgb/config.h new file mode 100755 index 0000000000..00e4cef1c1 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/rgb/config.h @@ -0,0 +1,101 @@ +/* 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 +# 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) + +/* Set to infinit, which is use in USB mode by default */ +# define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE + +/* Allow to shutdown driver to save power */ +# define RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE + +/* Turn off backllit if brightness value is low */ +# define RGB_MATRIX_TURN_OFF_VAL 48 + +# define NUM_LOCK_INDEX 37 // NumLock + +# define LOW_BAT_IND_INDEX 99 // Space + +// 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 + +// #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 + +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +// 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 + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D } + +#endif diff --git a/keyboards/keychron/k10_pro/iso/rgb/info.json b/keyboards/keychron/k10_pro/iso/rgb/info.json new file mode 100755 index 0000000000..e567783100 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/rgb/info.json @@ -0,0 +1,133 @@ +{ + "keyboard_name": "Keychron K10 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "usb": { + "vid": "0x3434", + "pid": "0x02A1", + "device_version": "1.0.0" + }, + "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,17], "x":18.5, "y":0}, + {"matrix":[0,18], "x":19.5, "y":0}, + {"matrix":[0,19], "x":20.5, "y":0}, + {"matrix":[0,20], "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":[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,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}, + {"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,19], "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,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,19], "x":20.5, "y":5.25} + ] + } + } +} diff --git a/keyboards/keychron/k10_pro/iso/rgb/keymaps/default/keymap.c b/keyboards/keychron/k10_pro/iso/rgb/keymaps/default/keymap.c new file mode 100755 index 0000000000..96c642deb1 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/rgb/keymaps/default/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_iso_109( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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 ), + + [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, _______, _______, _______, _______, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, 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_CTANA, RGB_MOD, _______, _______, _______, _______, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_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_109( + _______, 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, _______, _______, _______, _______, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/keychron/k10_pro/iso/rgb/keymaps/via/keymap.c b/keyboards/keychron/k10_pro/iso/rgb/keymaps/via/keymap.c new file mode 100755 index 0000000000..96c642deb1 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/rgb/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_iso_109( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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 ), + + [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, _______, _______, _______, _______, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, 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_CTANA, RGB_MOD, _______, _______, _______, _______, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_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_109( + _______, 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, _______, _______, _______, _______, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/keychron/k10_pro/iso/rgb/keymaps/via/rules.mk b/keyboards/keychron/k10_pro/iso/rgb/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k10_pro/iso/rgb/rgb.c b/keyboards/keychron/k10_pro/iso/rgb/rgb.c new file mode 100755 index 0000000000..f23203fdae --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/rgb/rgb.c @@ -0,0 +1,175 @@ +/* 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 +// clang-format off +const ckled2001_led 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, 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, F_1, D_1, E_1}, + {1, F_2, D_2, E_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, F_3, D_3, E_3}, + {1, F_4, D_4, E_4}, + {1, F_5, D_5, E_5}, + + {1, I_16, G_16, H_16}, + {1, I_15, G_15, H_15}, + {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_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_16, J_16, K_16}, + {1, L_15, J_15, K_15}, + {1, L_14, J_14, K_14}, + {1, L_10, J_10, K_10}, + {1, L_6, J_6, K_6}, + {1, L_5, J_5, K_5}, + {1, L_4, J_4, K_4}, + {1, L_3, J_3, K_3}, + {1, L_2, J_2, K_2}, + {1, L_1, J_1, K_1}, + {1, F_10, D_10, E_10}, + {1, F_11, D_11, E_11}, + {1, F_12, D_12, E_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, 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, 74, 54, 55, 56, 57, 58, 59, 60 }, + { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, __, __, __, 75, 76, 77, __ }, + { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, __, 91, __, 92, 93, 94, 95 }, + { 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}, {88,0}, {99,0}, {114,0}, {125,0}, {135,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}, {62,15}, {73,15}, {83,15}, {94,15}, {104,15}, {114,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}, {88,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}, {49,40}, {60,40}, {70,40}, {81,40}, {91,40}, {101,40}, {112,40}, {122,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}, {75,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}, {144,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, + 1, 8, 8, 8, 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, 1, 1, 1, 1, 1, 4, 4, + } +}; +#endif diff --git a/keyboards/keychron/k10_pro/iso/rgb/rules.mk b/keyboards/keychron/k10_pro/iso/rgb/rules.mk new file mode 100755 index 0000000000..7af34ccd60 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/rgb/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = CKLED2001 diff --git a/keyboards/keychron/k10_pro/iso/white/config.h b/keyboards/keychron/k10_pro/iso/white/config.h new file mode 100755 index 0000000000..cbf7a9c800 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/white/config.h @@ -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 . + */ + +#pragma once + +#ifdef LED_MATRIX_ENABLE +/* LED Matrix Driver Configuration */ +# define DRIVER_COUNT 1 +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_1_LED_TOTAL 109 +# define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL + +/* Set to infinit, which is use in USB mode by default */ +# define LED_MATRIX_TIMEOUT LED_MATRIX_TIMEOUT_INFINITE + +/* Allow to shutdown driver to save power */ +# define LED_MATRIX_DRIVER_SHUTDOWN_ENABLE + +/* Turn off backllit if brightness value is low */ +# define LED_MATRIX_TURN_OFF_VAL 48 + +# define LOW_BAT_IND_INDEX 99 // Space + +// LED Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects + +# define LED_MATRIX_KEYPRESSES + +# define ENABLE_LED_MATRIX_NONE +# define ENABLE_LED_MATRIX_SOLID +// #define ENABLE_LED_MATRIX_ALPHAS_MODS +# define ENABLE_LED_MATRIX_BREATHING +// #define ENABLE_LED_MATRIX_BAND +# define ENABLE_LED_MATRIX_BAND_PINWHEEL +# define ENABLE_LED_MATRIX_BAND_SPIRAL +# define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_LED_MATRIX_CYCLE_UP_DOWN +# define ENABLE_LED_MATRIX_CYCLE_OUT_IN +# define ENABLE_LED_MATRIX_DUAL_BEACON + +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +// #define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_LED_MATRIX_SOLID_SPLASH +// #define ENABLE_LED_MATRIX_SOLID_MULTISPLASH + +# define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT +# define ENABLE_LED_MATRIX_WAVE_UP_DOWN +# define ENABLE_LED_MATRIX_EFFECT_MAX + +/* Use first 8 channels of LED driver */ +# define PHASE_CHANNEL MSKPHASE_8CHANNEL + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 } + +#endif diff --git a/keyboards/keychron/k10_pro/iso/white/info.json b/keyboards/keychron/k10_pro/iso/white/info.json new file mode 100755 index 0000000000..88e94fb3f0 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/white/info.json @@ -0,0 +1,133 @@ +{ + "keyboard_name": "Keychron K10 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "usb": { + "vid": "0x3434", + "pid": "0x02A4", + "device_version": "1.0.0" + }, + "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,17], "x":18.5, "y":0}, + {"matrix":[0,18], "x":19.5, "y":0}, + {"matrix":[0,19], "x":20.5, "y":0}, + {"matrix":[0,20], "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":[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,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}, + {"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,19], "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,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,19], "x":20.5, "y":5.25} + ] + } + } +} diff --git a/keyboards/keychron/k10_pro/iso/white/keymaps/default/keymap.c b/keyboards/keychron/k10_pro/iso/white/keymaps/default/keymap.c new file mode 100755 index 0000000000..2705c2cd2b --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/white/keymaps/default/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_iso_109( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP, 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_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, _______, _______, BL_TOGG, _______, _______, _______, _______, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TRNS, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, 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_CTANA, 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_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( + RESET, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG, _______, _______, _______, _______, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TRNS, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/keychron/k10_pro/iso/white/keymaps/via/keymap.c b/keyboards/keychron/k10_pro/iso/white/keymaps/via/keymap.c new file mode 100755 index 0000000000..2705c2cd2b --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/white/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_iso_109( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_SIRI, BL_STEP, 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_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, _______, _______, BL_TOGG, _______, _______, _______, _______, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TRNS, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, 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_CTANA, 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_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( + RESET, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG, _______, _______, _______, _______, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_TRNS, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/keychron/k10_pro/iso/white/keymaps/via/rules.mk b/keyboards/keychron/k10_pro/iso/white/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/white/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k10_pro/iso/white/rules.mk b/keyboards/keychron/k10_pro/iso/white/rules.mk new file mode 100755 index 0000000000..6b0c2a0769 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/white/rules.mk @@ -0,0 +1,2 @@ +LED_MATRIX_ENABLE = yes +LED_MATRIX_DRIVER = CKLED2001 \ No newline at end of file diff --git a/keyboards/keychron/k10_pro/iso/white/white.c b/keyboards/keychron/k10_pro/iso/white/white.c new file mode 100755 index 0000000000..80beefce76 --- /dev/null +++ b/keyboards/keychron/k10_pro/iso/white/white.c @@ -0,0 +1,173 @@ +/* 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 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, G_2}, + {0, G_3}, + {0, G_4}, + {0, G_5}, + + {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_15}, + {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}, +}; + +#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, 74, 54, 55, 56, 57, 58, 59, 60 }, + { 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, __, 73, __, __, __, 75, 76, 77, __ }, + { 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, __, 90, __, 91, __, 92, 93, 94, 95 }, + { 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}, {88,0}, {99,0}, {114,0}, {125,0}, {135,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}, {62,15}, {73,15}, {83,15}, {94,15}, {104,15}, {114,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}, {88,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}, {49,40}, {60,40}, {70,40}, {81,40}, {91,40}, {101,40}, {112,40}, {122,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}, {75,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}, {144,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, + 1, 8, 8, 8, 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, 1, 1, 1, 1, 1, 4, 4, + } +}; +#endif diff --git a/keyboards/keychron/k10_pro/k10_pro.c b/keyboards/keychron/k10_pro/k10_pro.c old mode 100644 new mode 100755 index ec0eb70acb..077b3fd86e --- a/keyboards/keychron/k10_pro/k10_pro.c +++ b/keyboards/keychron/k10_pro/k10_pro.c @@ -196,7 +196,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -224,6 +225,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k10_pro/k10_pro.h b/keyboards/keychron/k10_pro/k10_pro.h old mode 100644 new mode 100755 diff --git a/keyboards/keychron/k10_pro/readme.md b/keyboards/keychron/k10_pro/readme.md index e4187e4ad4..dc8ec63c28 100644 --- a/keyboards/keychron/k10_pro/readme.md +++ b/keyboards/keychron/k10_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K10 Pro -![Keychron K10 Pro](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/keychronk10pro1-1675418457918.jpg?v=1675418462) +![Keychron K10 Pro](https://drive.google.com/file/d/13vC9UEIpxM1wMguPAX05lKisuQfUWtEf/view?usp=share_link) A customizable 108 keys keyboard. diff --git a/keyboards/keychron/k13_pro/ansi/rgb/config.h b/keyboards/keychron/k13_pro/ansi/rgb/config.h index d1a7fec5a7..eca9f2550a 100755 --- a/keyboards/keychron/k13_pro/ansi/rgb/config.h +++ b/keyboards/keychron/k13_pro/ansi/rgb/config.h @@ -25,13 +25,6 @@ # define DRIVER_2_LED_TOTAL 43 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -/* 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 - /* Set to infinit, which is use in USB mode by default */ # define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE @@ -41,7 +34,7 @@ /* Turn off backllit if brightness value is low */ # define RGB_MATRIX_BRIGHTNESS_TURN_OFF_VAL 48 -# define LOW_BAT_IND_INDEX 79 +# define LOW_BAT_IND_INDEX 82 // RGB Matrix Animation modes. Explicitly enabled // For full list of effects, see: diff --git a/keyboards/keychron/k13_pro/ansi/rgb/rgb.c b/keyboards/keychron/k13_pro/ansi/rgb/rgb.c index 13a25e5026..05e3707aa6 100755 --- a/keyboards/keychron/k13_pro/ansi/rgb/rgb.c +++ b/keyboards/keychron/k13_pro/ansi/rgb/rgb.c @@ -1,4 +1,4 @@ -/* Copyright 2021 @ 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,107 +19,107 @@ // clang-format off #ifdef RGB_MATRIX_ENABLE const ckled2001_led 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}, - {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}, - {1, F_8, D_8, E_8}, + {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}, + {1, F_8, D_8, E_8}, - {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}, - {1, F_9, D_9, E_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}, + {1, F_9, D_9, E_9}, - {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, F_6, D_6, E_6}, + {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, F_6, D_6, E_6}, - {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_15, G_15, H_15}, - {1, I_16, G_16, H_16}, - {1, I_13, G_13, H_13}, + {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_15, G_15, H_15}, + {1, I_16, G_16, H_16}, + {1, I_13, G_13, H_13}, - {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_16, A_16, B_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_16, A_16, B_16}, - {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}, - {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}, + {1, C_15, A_15, B_15} }; #define __ NO_LED diff --git a/keyboards/keychron/k13_pro/ansi/white/config.h b/keyboards/keychron/k13_pro/ansi/white/config.h index c71da66dde..e746986802 100755 --- a/keyboards/keychron/k13_pro/ansi/white/config.h +++ b/keyboards/keychron/k13_pro/ansi/white/config.h @@ -23,13 +23,6 @@ # define DRIVER_1_LED_TOTAL 90 # define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL -/* 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 - /* Set to infinit, which is use in USB mode by default */ # define LED_MATRIX_TIMEOUT LED_MATRIX_TIMEOUT_INFINITE diff --git a/keyboards/keychron/k13_pro/ansi/white/white.c b/keyboards/keychron/k13_pro/ansi/white/white.c index 2db95f5eac..22d108609e 100755 --- a/keyboards/keychron/k13_pro/ansi/white/white.c +++ b/keyboards/keychron/k13_pro/ansi/white/white.c @@ -1,4 +1,4 @@ -/* Copyright 2021 @ 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 @@ // clang-format off #ifdef LED_MATRIX_ENABLE const ckled2001_led g_ckled2001_leds[LED_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +/* Refer to CKLED2001 manual for these locations * driver * | LED address * | | */ diff --git a/keyboards/keychron/k13_pro/config.h b/keyboards/keychron/k13_pro/config.h index b254219bcf..1b8ea0404c 100755 --- a/keyboards/keychron/k13_pro/config.h +++ b/keyboards/keychron/k13_pro/config.h @@ -40,6 +40,13 @@ #define LED_CAPS_LOCK_PIN A0 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k13_pro/k13_pro.c b/keyboards/keychron/k13_pro/k13_pro.c index 61b8e4debb..af0ebc442e 100755 --- a/keyboards/keychron/k13_pro/k13_pro.c +++ b/keyboards/keychron/k13_pro/k13_pro.c @@ -201,7 +201,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -229,6 +230,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k13_pro/matrix.c b/keyboards/keychron/k13_pro/matrix.c index 072cfc3280..22d2ac1e11 100755 --- a/keyboards/keychron/k13_pro/matrix.c +++ b/keyboards/keychron/k13_pro/matrix.c @@ -14,70 +14,15 @@ * along with this program. If not, see . */ -#include "stdint.h" -#include "hal.h" -#include "gpio.h" #include "quantum.h" #define HC595_STCP B0 #define HC595_SHCP A1 #define HC595_DS A7 -#define DIRECT_COL_NUM 1 - pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; -static inline void HC595_delay(uint16_t n) { - while (n-- > 0) { - asm volatile("nop" ::: "memory"); - } -} - -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI -// clang-format off -const SPIConfig hs_spicfg = { - .circular = false, - .slave = false, - .data_cb = NULL, - .error_cb = NULL, - .ssport = PAL_PORT(HC595_STCP), - .sspad = PAL_PAD(HC595_STCP), - .cr1 = SPI_CR1_BR_1, - .cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 | SPI_CR2_SSOE | SPI_CR2_NSSP -}; -// clang-format on -#endif -static void HC595_output(uint16_t data) { -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - spiSend(&SPID1, 1, &data); -#else - uint8_t i; - uint8_t n = 1; - - for (i = 16; i > 0; i--) { - writePinLow(HC595_SHCP); - - if (data & 0x8000) - writePinHigh(HC595_DS); - else - writePinLow(HC595_DS); - - data <<= 1; - - HC595_delay(n); - - writePinHigh(HC595_SHCP); - HC595_delay(n); - } - - HC595_delay(n); - writePinLow(HC595_STCP); - HC595_delay(n); - writePinHigh(HC595_STCP); -#endif -} - static inline void setPinOutput_writeLow(pin_t pin) { ATOMIC_BLOCK_FORCEON { setPinOutput(pin); @@ -85,7 +30,14 @@ static inline void setPinOutput_writeLow(pin_t pin) { } } -static inline void setPinInputHigh_atomic(pin_t 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); } @@ -99,16 +51,65 @@ static inline uint8_t readMatrixPin(pin_t pin) { } } +static inline void HC595_delay(uint16_t n) { + while (n-- > 0) { + asm volatile("nop" ::: "memory"); + } +} + +static void HC595_output(uint16_t data) { + ATOMIC_BLOCK_FORCEON { + for (uint8_t i = 0; i < MATRIX_COLS; i++) { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + data = data >> 1; + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + } + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + +static void HC595_output_oneBit(uint8_t data) { + ATOMIC_BLOCK_FORCEON { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + static bool select_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 1) { - if (pin != NO_PIN) { - setPinOutput_writeLow(pin); - return true; - } + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; } else { - HC595_output(~(0x01 << (col - 1))); + if (col == 1) { + HC595_output_oneBit(0x00); + } return true; } return false; @@ -117,81 +118,96 @@ static bool select_col(uint8_t col) { static void unselect_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 1) { - if (pin != NO_PIN) { - setPinInputHigh_atomic(pin); - } + if (pin != NO_PIN) { +#ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +#else + setPinInput_high(pin); +#endif } else { - if (col >= MATRIX_COLS - 1) HC595_output(0xFFFF); + HC595_output_oneBit(0x01); } } static void unselect_cols(void) { - if (col_pins[0] != NO_PIN) setPinInputHigh_atomic(col_pins[0]); - HC595_output(0xFFFF); + 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 + setPinInput_high(pin); +#endif + } else { + if (x == 1) HC595_output(0xFFFF); + } + } } void select_all_cols(void) { - if (col_pins[0] != NO_PIN) setPinOutput_writeLow(col_pins[0]); - HC595_output(0x0000); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + pin_t pin = col_pins[x]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + } else { + if (x == 1) HC595_output(0x0000); + } + } } -void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { +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 } - HC595_delay(100); + matrix_output_select_delay(); // 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] |= (MATRIX_ROW_SHIFTER << current_col); - // key_pressed = true; + current_matrix[row_index] |= row_shifter; + key_pressed = true; } else { // Pin HI, clear col bit - current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); + current_matrix[row_index] &= ~row_shifter; } } + // Unselect col unselect_col(current_col); - HC595_delay(100); + matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH } void matrix_init_custom(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - if (row_pins[x] != NO_PIN) { - setPinInputHigh_atomic(row_pins[x]); - } - } -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - palSetPadMode(PAL_PORT(HC595_SHCP), PAL_PAD(HC595_SHCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* SCK */ - palSetPadMode(PAL_PORT(HC595_DS), PAL_PAD(HC595_DS), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MOSI*/ - palSetPadMode(PAL_PORT(HC595_STCP), PAL_PAD(HC595_STCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* CS*/ - spiStart(&SPID1, &hs_spicfg); -#else setPinOutput(HC595_DS); setPinOutput(HC595_STCP); setPinOutput(HC595_SHCP); -#endif + + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + if (row_pins[x] != NO_PIN) { + setPinInput_high(row_pins[x]); + } + } + unselect_cols(); } bool matrix_scan_custom(matrix_row_t current_matrix[]) { - bool matrix_has_changed = false; - matrix_row_t curr_matrix[MATRIX_ROWS] = {0}; // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - matrix_read_rows_on_col(curr_matrix, current_col); + 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); } - matrix_has_changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; - if (matrix_has_changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); + bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; + if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); - return matrix_has_changed; + return changed; } diff --git a/keyboards/keychron/k13_pro/readme.md b/keyboards/keychron/k13_pro/readme.md index be867fd0d0..82fe3d7b26 100755 --- a/keyboards/keychron/k13_pro/readme.md +++ b/keyboards/keychron/k13_pro/readme.md @@ -3,8 +3,8 @@ A customizable 80% TKL keyboard. * Keyboard Maintainer: [Keychron](https://github.com/keychron) -* Hardware Supported: Keychron K1 Pro -* Hardware Availability: [Keychron](https://www.keychron.com) +* Hardware Supported: Keychron K13 Pro +* Hardware Availability: [Keychron K13 Pro](https://drive.google.com/file/d/17S4Afhfs4DmwBcnkvo94ipLIVgL3rsy7/view?usp=share_link) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/keychron/k13_pro/rules.mk b/keyboards/keychron/k13_pro/rules.mk index 1de119ff73..ee301839c3 100755 --- a/keyboards/keychron/k13_pro/rules.mk +++ b/keyboards/keychron/k13_pro/rules.mk @@ -7,9 +7,6 @@ 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 # USB Nkey 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 BLUETOOTH_ENABLE = no diff --git a/keyboards/keychron/k1_pro/ansi/rgb/config.h b/keyboards/keychron/k1_pro/ansi/rgb/config.h index e7104c07e7..e6227054cc 100755 --- a/keyboards/keychron/k1_pro/ansi/rgb/config.h +++ b/keyboards/keychron/k1_pro/ansi/rgb/config.h @@ -25,13 +25,6 @@ # define DRIVER_2_LED_TOTAL 40 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -/* 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 - /* Set to infinit, which is use in USB mode by default */ # define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE diff --git a/keyboards/keychron/k1_pro/ansi/rgb/info.json b/keyboards/keychron/k1_pro/ansi/rgb/info.json index 85f9e78d1e..ca4b4d079d 100755 --- a/keyboards/keychron/k1_pro/ansi/rgb/info.json +++ b/keyboards/keychron/k1_pro/ansi/rgb/info.json @@ -11,7 +11,7 @@ "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}, diff --git a/keyboards/keychron/k1_pro/ansi/rgb/keymaps/default/keymap.c b/keyboards/keychron/k1_pro/ansi/rgb/keymaps/default/keymap.c index e2fddd9e4e..9cc8864559 100755 --- a/keyboards/keychron/k1_pro/ansi/rgb/keymaps/default/keymap.c +++ b/keyboards/keychron/k1_pro/ansi/rgb/keymaps/default/keymap.c @@ -25,35 +25,35 @@ enum layers{ }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[MAC_BASE] = LAYOUT_ansi_87( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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_BASE] = LAYOUT_tkl_ansi( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, - _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -[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_CTANA, RGB_MOD, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_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_RGUI, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [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_CTANA, RGB_MOD, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_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_RGUI, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), -[WIN_FN] = LAYOUT_ansi_87( - _______, 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, - _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + [WIN_FN] = LAYOUT_tkl_ansi( + _______, 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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; diff --git a/keyboards/keychron/k1_pro/ansi/rgb/keymaps/via/keymap.c b/keyboards/keychron/k1_pro/ansi/rgb/keymaps/via/keymap.c index e2fddd9e4e..9cc8864559 100755 --- a/keyboards/keychron/k1_pro/ansi/rgb/keymaps/via/keymap.c +++ b/keyboards/keychron/k1_pro/ansi/rgb/keymaps/via/keymap.c @@ -25,35 +25,35 @@ enum layers{ }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[MAC_BASE] = LAYOUT_ansi_87( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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_BASE] = LAYOUT_tkl_ansi( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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( - _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RGB_TOG, - _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + [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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), -[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_CTANA, RGB_MOD, - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_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_RGUI, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [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_CTANA, RGB_MOD, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_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_RGUI, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), -[WIN_FN] = LAYOUT_ansi_87( - _______, 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, - _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) + [WIN_FN] = LAYOUT_tkl_ansi( + _______, 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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) }; diff --git a/keyboards/keychron/k1_pro/ansi/rgb/rgb.c b/keyboards/keychron/k1_pro/ansi/rgb/rgb.c index ce087a2d78..33fb65b997 100755 --- a/keyboards/keychron/k1_pro/ansi/rgb/rgb.c +++ b/keyboards/keychron/k1_pro/ansi/rgb/rgb.c @@ -1,4 +1,4 @@ -/* Copyright 2021 @ 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,104 +19,104 @@ // clang-format off #ifdef RGB_MATRIX_ENABLE const ckled2001_led 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}, - {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}, - {1, F_8, D_8, E_8}, + {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}, + {1, F_8, D_8, E_8}, - {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}, - {1, F_9, D_9, E_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}, + {1, F_9, D_9, E_9}, - {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, F_6, D_6, E_6}, + {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, F_6, D_6, E_6}, - {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_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, 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_16, A_16, B_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_16, A_16, B_16}, - {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}, - {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}, + {1, C_15, A_15, B_15} }; #define __ NO_LED @@ -143,9 +143,9 @@ led_config_t g_led_config = { }, { // RGB LED Index to Flag - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, - 1, 8, 8, 8, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 8, 8, 8, 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 diff --git a/keyboards/keychron/k1_pro/ansi/white/config.h b/keyboards/keychron/k1_pro/ansi/white/config.h index 74821447f8..ac29af2439 100755 --- a/keyboards/keychron/k1_pro/ansi/white/config.h +++ b/keyboards/keychron/k1_pro/ansi/white/config.h @@ -23,13 +23,6 @@ # define DRIVER_1_LED_TOTAL 87 # define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL -/* 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 - /* Set to infinit, which is use in USB mode by default */ # define LED_MATRIX_TIMEOUT LED_MATRIX_TIMEOUT_INFINITE diff --git a/keyboards/keychron/k1_pro/ansi/white/info.json b/keyboards/keychron/k1_pro/ansi/white/info.json index 6bc3562e6e..8b7ad7c4b8 100755 --- a/keyboards/keychron/k1_pro/ansi/white/info.json +++ b/keyboards/keychron/k1_pro/ansi/white/info.json @@ -11,7 +11,7 @@ "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}, diff --git a/keyboards/keychron/k1_pro/ansi/white/keymaps/default/keymap.c b/keyboards/keychron/k1_pro/ansi/white/keymaps/default/keymap.c index 84f25a2c77..2eb4c94345 100755 --- a/keyboards/keychron/k1_pro/ansi/white/keymaps/default/keymap.c +++ b/keyboards/keychron/k1_pro/ansi/white/keymaps/default/keymap.c @@ -25,7 +25,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_LNPD, 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 +33,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, _______, _______, BL_TOGG, _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, BAT_LVL, 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_CTANA, 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 +49,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_RGUI, 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_FILE, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG, _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/keychron/k1_pro/ansi/white/keymaps/via/keymap.c b/keyboards/keychron/k1_pro/ansi/white/keymaps/via/keymap.c index 84f25a2c77..2eb4c94345 100755 --- a/keyboards/keychron/k1_pro/ansi/white/keymaps/via/keymap.c +++ b/keyboards/keychron/k1_pro/ansi/white/keymaps/via/keymap.c @@ -25,7 +25,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_LNPD, 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 +33,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, _______, _______, BL_TOGG, _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, BAT_LVL, 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_CTANA, 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 +49,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_RGUI, 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_FILE, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG, _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_STEP, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/keychron/k1_pro/ansi/white/white.c b/keyboards/keychron/k1_pro/ansi/white/white.c index d071614ff5..8f9a509ff4 100755 --- a/keyboards/keychron/k1_pro/ansi/white/white.c +++ b/keyboards/keychron/k1_pro/ansi/white/white.c @@ -1,4 +1,4 @@ -/* Copyright 2021 @ 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 @@ // clang-format off #ifdef LED_MATRIX_ENABLE const ckled2001_led g_ckled2001_leds[LED_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +/* Refer to CKLED2001 manual for these locations * driver * | LED address * | | */ diff --git a/keyboards/keychron/k1_pro/config.h b/keyboards/keychron/k1_pro/config.h index b254219bcf..92a91a236d 100755 --- a/keyboards/keychron/k1_pro/config.h +++ b/keyboards/keychron/k1_pro/config.h @@ -1,4 +1,4 @@ -/* Copyright 2021 @ 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 @@ -40,6 +40,13 @@ #define LED_CAPS_LOCK_PIN A0 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k1_pro/k1_pro.c b/keyboards/keychron/k1_pro/k1_pro.c index 8bb75b7b55..60189fc0fd 100755 --- a/keyboards/keychron/k1_pro/k1_pro.c +++ b/keyboards/keychron/k1_pro/k1_pro.c @@ -201,7 +201,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -229,6 +230,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k1_pro/matrix.c b/keyboards/keychron/k1_pro/matrix.c index 072cfc3280..22d2ac1e11 100755 --- a/keyboards/keychron/k1_pro/matrix.c +++ b/keyboards/keychron/k1_pro/matrix.c @@ -14,70 +14,15 @@ * along with this program. If not, see . */ -#include "stdint.h" -#include "hal.h" -#include "gpio.h" #include "quantum.h" #define HC595_STCP B0 #define HC595_SHCP A1 #define HC595_DS A7 -#define DIRECT_COL_NUM 1 - pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; -static inline void HC595_delay(uint16_t n) { - while (n-- > 0) { - asm volatile("nop" ::: "memory"); - } -} - -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI -// clang-format off -const SPIConfig hs_spicfg = { - .circular = false, - .slave = false, - .data_cb = NULL, - .error_cb = NULL, - .ssport = PAL_PORT(HC595_STCP), - .sspad = PAL_PAD(HC595_STCP), - .cr1 = SPI_CR1_BR_1, - .cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 | SPI_CR2_SSOE | SPI_CR2_NSSP -}; -// clang-format on -#endif -static void HC595_output(uint16_t data) { -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - spiSend(&SPID1, 1, &data); -#else - uint8_t i; - uint8_t n = 1; - - for (i = 16; i > 0; i--) { - writePinLow(HC595_SHCP); - - if (data & 0x8000) - writePinHigh(HC595_DS); - else - writePinLow(HC595_DS); - - data <<= 1; - - HC595_delay(n); - - writePinHigh(HC595_SHCP); - HC595_delay(n); - } - - HC595_delay(n); - writePinLow(HC595_STCP); - HC595_delay(n); - writePinHigh(HC595_STCP); -#endif -} - static inline void setPinOutput_writeLow(pin_t pin) { ATOMIC_BLOCK_FORCEON { setPinOutput(pin); @@ -85,7 +30,14 @@ static inline void setPinOutput_writeLow(pin_t pin) { } } -static inline void setPinInputHigh_atomic(pin_t 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); } @@ -99,16 +51,65 @@ static inline uint8_t readMatrixPin(pin_t pin) { } } +static inline void HC595_delay(uint16_t n) { + while (n-- > 0) { + asm volatile("nop" ::: "memory"); + } +} + +static void HC595_output(uint16_t data) { + ATOMIC_BLOCK_FORCEON { + for (uint8_t i = 0; i < MATRIX_COLS; i++) { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + data = data >> 1; + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + } + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + +static void HC595_output_oneBit(uint8_t data) { + ATOMIC_BLOCK_FORCEON { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + static bool select_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 1) { - if (pin != NO_PIN) { - setPinOutput_writeLow(pin); - return true; - } + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; } else { - HC595_output(~(0x01 << (col - 1))); + if (col == 1) { + HC595_output_oneBit(0x00); + } return true; } return false; @@ -117,81 +118,96 @@ static bool select_col(uint8_t col) { static void unselect_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 1) { - if (pin != NO_PIN) { - setPinInputHigh_atomic(pin); - } + if (pin != NO_PIN) { +#ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +#else + setPinInput_high(pin); +#endif } else { - if (col >= MATRIX_COLS - 1) HC595_output(0xFFFF); + HC595_output_oneBit(0x01); } } static void unselect_cols(void) { - if (col_pins[0] != NO_PIN) setPinInputHigh_atomic(col_pins[0]); - HC595_output(0xFFFF); + 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 + setPinInput_high(pin); +#endif + } else { + if (x == 1) HC595_output(0xFFFF); + } + } } void select_all_cols(void) { - if (col_pins[0] != NO_PIN) setPinOutput_writeLow(col_pins[0]); - HC595_output(0x0000); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + pin_t pin = col_pins[x]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + } else { + if (x == 1) HC595_output(0x0000); + } + } } -void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { +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 } - HC595_delay(100); + matrix_output_select_delay(); // 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] |= (MATRIX_ROW_SHIFTER << current_col); - // key_pressed = true; + current_matrix[row_index] |= row_shifter; + key_pressed = true; } else { // Pin HI, clear col bit - current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); + current_matrix[row_index] &= ~row_shifter; } } + // Unselect col unselect_col(current_col); - HC595_delay(100); + matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH } void matrix_init_custom(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - if (row_pins[x] != NO_PIN) { - setPinInputHigh_atomic(row_pins[x]); - } - } -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - palSetPadMode(PAL_PORT(HC595_SHCP), PAL_PAD(HC595_SHCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* SCK */ - palSetPadMode(PAL_PORT(HC595_DS), PAL_PAD(HC595_DS), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MOSI*/ - palSetPadMode(PAL_PORT(HC595_STCP), PAL_PAD(HC595_STCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* CS*/ - spiStart(&SPID1, &hs_spicfg); -#else setPinOutput(HC595_DS); setPinOutput(HC595_STCP); setPinOutput(HC595_SHCP); -#endif + + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + if (row_pins[x] != NO_PIN) { + setPinInput_high(row_pins[x]); + } + } + unselect_cols(); } bool matrix_scan_custom(matrix_row_t current_matrix[]) { - bool matrix_has_changed = false; - matrix_row_t curr_matrix[MATRIX_ROWS] = {0}; // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - matrix_read_rows_on_col(curr_matrix, current_col); + 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); } - matrix_has_changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; - if (matrix_has_changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); + bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; + if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); - return matrix_has_changed; + return changed; } diff --git a/keyboards/keychron/k1_pro/readme.md b/keyboards/keychron/k1_pro/readme.md index 485c381a4d..b98588e5d0 100755 --- a/keyboards/keychron/k1_pro/readme.md +++ b/keyboards/keychron/k1_pro/readme.md @@ -1,10 +1,12 @@ # Keychron K1 Pro +![Keychron K1 Pro](https://drive.google.com/file/d/132Qd8etzeb0t0GjfxGxMZ2h9Irr-XUj_/view?usp=share_link) + A customizable 80% TKL keyboard. * Keyboard Maintainer: [Keychron](https://github.com/keychron) * Hardware Supported: Keychron K1 Pro -* Hardware Availability: [Keychron](https://www.keychron.com) +* Hardware Availability: [Keychron K1 Pro QMK/VIA Wireless Custom Mechanical Keyboard](https://www.keychron.com/products/keychron-k1-pro-qmk-via-wireless-custom-mechanical-keyboard) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/keychron/k1_pro/rules.mk b/keyboards/keychron/k1_pro/rules.mk index 1de119ff73..ee301839c3 100755 --- a/keyboards/keychron/k1_pro/rules.mk +++ b/keyboards/keychron/k1_pro/rules.mk @@ -7,9 +7,6 @@ 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 # USB Nkey 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 BLUETOOTH_ENABLE = no diff --git a/keyboards/keychron/k1_pro/via_json/k1_pro_us_rgb.json b/keyboards/keychron/k1_pro/via_json/k1_pro_us_rgb.json new file mode 100755 index 0000000000..84fd847776 --- /dev/null +++ b/keyboards/keychron/k1_pro/via_json/k1_pro_us_rgb.json @@ -0,0 +1,289 @@ +{ + "name": "Keychron K1 Pro", + "vendorId": "0x3434", + "productId": "0x0210", + "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, availabe in macOS", "shortName": "MCtrl"}, + {"name": "Launch pad", "title": "Launch pad, availabe in macOS", "shortName": "LPad"}, + {"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": "Siri", "title": "Siri in macOS", "shortName": "Siri"}, + {"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"}, + {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, + {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, + {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} + ], + "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/k1_pro/via_json/k1_pro_us_white.json b/keyboards/keychron/k1_pro/via_json/k1_pro_us_white.json new file mode 100755 index 0000000000..79e74c5929 --- /dev/null +++ b/keyboards/keychron/k1_pro/via_json/k1_pro_us_white.json @@ -0,0 +1,228 @@ +{ + "name": "Keychron K1 Pro", + "vendorId": "0x3434", + "productId": "0x0213", + "keycodes": ["qmk_lighting"], + "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, availabe in macOS", "shortName": "MCtrl"}, + {"name": "Launch pad", "title": "Launch pad, availabe in macOS", "shortName": "LPad"}, + {"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": "Siri", "title": "Siri in macOS", "shortName": "Siri"}, + {"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"}, + {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, + {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, + {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} + ], + "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/q2_pro/chconf.h b/keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/config.h similarity index 67% rename from keyboards/keychron/q2_pro/chconf.h rename to keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/config.h index 3f4365ac24..8aafbc3840 100755 --- a/keyboards/keychron/q2_pro/chconf.h +++ b/keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/config.h @@ -1,4 +1,4 @@ -/* Copyright 2023 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,17 +14,7 @@ * along with this program. If not, see . */ -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/acheron/arctic/chconf.h -r platforms/chibios/common/configs/chconf.h` - */ - #pragma once -#define CH_CFG_ST_FREQUENCY 10000 - -#define CH_CFG_OPTIMIZE_SPEED FALSE - -#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE - -#include_next +#undef PRODUCT +#define PRODUCT "CANDYSIGN KB1 Pro" diff --git a/keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/keymap.c b/keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/keymap.c new file mode 100755 index 0000000000..d685e3a413 --- /dev/null +++ b/keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/keymap.c @@ -0,0 +1,59 @@ +/* Copyright 2022 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[MAC_BASE] = LAYOUT_ansi_84( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + 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_84( + 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, BL_TOGG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_TOGG, BL_STEP, BL_INC, 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, BL_DEC, 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, 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, KC_TRNS), + +[WIN_BASE] = LAYOUT_ansi_84( + KC_ESC, KC_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, 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, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + 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_84( + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, BL_TOGG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + BL_TOGG, BL_STEP, BL_INC, 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, BL_DEC, 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, 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, KC_TRNS) +}; diff --git a/keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/rules.mk b/keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k2_pro/ansi/white/keymaps/candysign/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k2_pro/config.h b/keyboards/keychron/k2_pro/config.h index 6f71e26b81..e595335891 100644 --- a/keyboards/keychron/k2_pro/config.h +++ b/keyboards/keychron/k2_pro/config.h @@ -44,6 +44,13 @@ #define LED_CAPS_LOCK_PIN A7 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k2_pro/jis/rgb/config.h b/keyboards/keychron/k2_pro/jis/rgb/config.h new file mode 100755 index 0000000000..e43dd9d52a --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/rgb/config.h @@ -0,0 +1,101 @@ +/* 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 +# define DRIVER_1_LED_COUNT 47 +# define DRIVER_2_LED_COUNT 40 +# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_COUNT + DRIVER_2_LED_COUNT) + +/* Set to infinit, which is use in USB mode by default */ +# define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE + +/* Allow shutdown of led driver to save power */ +# define RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE +/* Turn off backlight on low brightness to save power */ +# define RGB_MATRIX_BRIGHTNESS_TURN_OFF_VAL 32 + +# define DIM_CAPS_LOCK +# define CAPS_LOCK_INDEX 46 +# define LOW_BAT_IND_INDEX 79 + +/* 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 + +// # 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 + +/* enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined */ +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +/* 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 + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 } + +#endif diff --git a/keyboards/keychron/k2_pro/jis/rgb/info.json b/keyboards/keychron/k2_pro/jis/rgb/info.json new file mode 100755 index 0000000000..8910572942 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/rgb/info.json @@ -0,0 +1,111 @@ +{ + "keyboard_name": "Keychron K2 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lokher", + "usb": { + "vid": "0x3434", + "pid": "0x0223", + "device_version": "1.0.0" + }, + "processor": "STM32L432", + "bootloader": "stm32-dfu", + "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":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, "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}, + {"matrix":[1,14], "x":14, "y":1}, + {"matrix":[1,15], "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,15], "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}, + {"matrix":[2,13], "x":13.75, "y":2, "w":1.25, "h":2}, + {"matrix":[3,15], "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}, + {"matrix":[4,13], "x":13.25, "y":4, "w":1.75}, + {"matrix":[4,15], "x":15, "y":4}, + + {"matrix":[5,0], "x":0, "y":5, "w":1.25}, + {"matrix":[5,1], "x":1.25, "y":5}, + {"matrix":[5,2], "x":2.25, "y":5, "w":1.25}, + {"matrix":[5,3], "x":3.5, "y":5}, + {"matrix":[5,6], "x":4.5, "y":5, "w":4.5}, + {"matrix":[5,8], "x":9, "y":5}, + {"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,15], "x":15, "y":5} + ] + } + } +} diff --git a/keyboards/keychron/k2_pro/jis/rgb/keymaps/default/keymap.c b/keyboards/keychron/k2_pro/jis/rgb/keymaps/default/keymap.c new file mode 100755 index 0000000000..92dfaf4ce4 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/rgb/keymaps/default/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_INT3, KC_BSPC, KC_PGUP, // 32 + KC_TAB, KC_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, // 46 + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, // 61 + 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_END, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [MAC_FN] = LAYOUT( + 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, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), + + [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_PSCR, 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_INT3, KC_PGUP, + KC_TAB, KC_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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT( + 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, KC_TRNS, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/keychron/k2_pro/jis/rgb/keymaps/via/keymap.c b/keyboards/keychron/k2_pro/jis/rgb/keymaps/via/keymap.c new file mode 100755 index 0000000000..92dfaf4ce4 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/rgb/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_INT3, KC_BSPC, KC_PGUP, // 32 + KC_TAB, KC_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, // 46 + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, // 61 + 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_END, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [MAC_FN] = LAYOUT( + 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, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), + + [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_PSCR, 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_INT3, KC_PGUP, + KC_TAB, KC_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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT( + 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, KC_TRNS, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/keychron/k2_pro/jis/rgb/keymaps/via/rules.mk b/keyboards/keychron/k2_pro/jis/rgb/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k2_pro/jis/rgb/rgb.c b/keyboards/keychron/k2_pro/jis/rgb/rgb.c new file mode 100755 index 0000000000..5ed4c3a0de --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/rgb/rgb.c @@ -0,0 +1,153 @@ +/* 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 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}, + + {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, 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_16, D_16, E_16}, + + {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, C_1, A_1, B_1}, + + {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, 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_8, D_8, E_8}, + {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_1, D_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, 59, __, 45 }, + { 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, __, 58, __, 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 } + }, + { + // LED Index to Physical Position + {0,0}, {15,0}, {30,0}, {45,0}, {60,0}, {75,0}, {90,0}, {105,0}, {119,0}, {134,0}, {149,0}, {164,0}, {179,0}, {194,0}, {209,0}, {224,0}, + {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {119,13}, {134,13}, {149,13}, {164,13}, {179,13}, {194,13}, {209,13}, {224,13}, + {4,26}, {22,26}, {37,26}, {52,26}, {67,26}, {82,26}, {97,26}, {112,26}, {127,26}, {142,26}, {157,26}, {172,26}, {187,26}, {224,26}, + {6,38}, {26,38}, {41,38}, {56,38}, {71,38}, {86,38}, {101,38}, {116,38}, {131,38}, {146,38}, {161,38}, {175,38}, {190,38}, {211,34}, {224,38}, + {9,51}, {34,51}, {49,51}, {64,51}, {78,51}, {93,51}, {108,51}, {123,51}, {138,51}, {153,51}, {168,51}, {183,51}, {204,51}, {224,51}, + {2,64}, {19,64}, {35,64}, {52,64}, {93,64}, {134,64}, {149,64}, {164,64}, {179,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, 1, + 1, 8, 8, 8, 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, 1, 1, 1, + 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1 + } +}; +#endif diff --git a/keyboards/keychron/k2_pro/jis/rgb/rules.mk b/keyboards/keychron/k2_pro/jis/rgb/rules.mk new file mode 100755 index 0000000000..f5f4192470 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/rgb/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = CKLED2001 \ No newline at end of file diff --git a/keyboards/keychron/k2_pro/jis/white/config.h b/keyboards/keychron/k2_pro/jis/white/config.h new file mode 100755 index 0000000000..0dfb6ab8eb --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/white/config.h @@ -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 . + */ + +#pragma once + +#ifdef LED_MATRIX_ENABLE +/* LED matrix driver configuration */ +# define DRIVER_COUNT 1 +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_1_LED_COUNT 87 +# define LED_MATRIX_LED_COUNT DRIVER_1_LED_COUNT + +/* Set to infinit, which is use in USB mode by default */ +# define LED_MATRIX_TIMEOUT LED_MATRIX_TIMEOUT_INFINITE +/* Allow shutdown of led driver to save power */ +# define LED_MATRIX_DRIVER_SHUTDOWN_ENABLE +/* Turn off backlight on low brightness to save power */ +# define LED_MATRIX_BRIGHTNESS_TURN_OFF_VAL 32 + +# define DIM_CAPS_LOCK +# define CAPS_LOCK_INDEX 46 +# define LOW_BAT_IND_INDEX 79 + +/* LED Matrix Animation modes. Explicitly enabled + * For full list of effects, see: + * https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects + */ +# define LED_MATRIX_KEYPRESSES + +# define ENABLE_LED_MATRIX_NONE +# define ENABLE_LED_MATRIX_SOLID +// # define ENABLE_LED_MATRIX_ALPHAS_MODS +# define ENABLE_LED_MATRIX_BREATHING +// # define ENABLE_LED_MATRIX_BAND +# define ENABLE_LED_MATRIX_BAND_PINWHEEL +# define ENABLE_LED_MATRIX_BAND_SPIRAL +# define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_LED_MATRIX_CYCLE_UP_DOWN +# define ENABLE_LED_MATRIX_CYCLE_OUT_IN +# define ENABLE_LED_MATRIX_DUAL_BEACON + +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_LED_MATRIX_SOLID_SPLASH +// # define ENABLE_LED_MATRIX_SOLID_MULTISPLASH + +# define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT +# define ENABLE_LED_MATRIX_WAVE_UP_DOWN +# define ENABLE_LED_MATRIX_EFFECT_MAX + +/* Use first 6 channels of LED driver */ +# define PHASE_CHANNEL MSKPHASE_6CHANNEL + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 } + +#endif diff --git a/keyboards/keychron/k2_pro/jis/white/info.json b/keyboards/keychron/k2_pro/jis/white/info.json new file mode 100755 index 0000000000..8910572942 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/white/info.json @@ -0,0 +1,111 @@ +{ + "keyboard_name": "Keychron K2 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lokher", + "usb": { + "vid": "0x3434", + "pid": "0x0223", + "device_version": "1.0.0" + }, + "processor": "STM32L432", + "bootloader": "stm32-dfu", + "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":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, "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}, + {"matrix":[1,14], "x":14, "y":1}, + {"matrix":[1,15], "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,15], "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}, + {"matrix":[2,13], "x":13.75, "y":2, "w":1.25, "h":2}, + {"matrix":[3,15], "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}, + {"matrix":[4,13], "x":13.25, "y":4, "w":1.75}, + {"matrix":[4,15], "x":15, "y":4}, + + {"matrix":[5,0], "x":0, "y":5, "w":1.25}, + {"matrix":[5,1], "x":1.25, "y":5}, + {"matrix":[5,2], "x":2.25, "y":5, "w":1.25}, + {"matrix":[5,3], "x":3.5, "y":5}, + {"matrix":[5,6], "x":4.5, "y":5, "w":4.5}, + {"matrix":[5,8], "x":9, "y":5}, + {"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,15], "x":15, "y":5} + ] + } + } +} diff --git a/keyboards/keychron/k2_pro/jis/white/keymaps/default/keymap.c b/keyboards/keychron/k2_pro/jis/white/keymaps/default/keymap.c new file mode 100755 index 0000000000..92dfaf4ce4 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/white/keymaps/default/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_INT3, KC_BSPC, KC_PGUP, // 32 + KC_TAB, KC_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, // 46 + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, // 61 + 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_END, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [MAC_FN] = LAYOUT( + 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, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), + + [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_PSCR, 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_INT3, KC_PGUP, + KC_TAB, KC_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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT( + 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, KC_TRNS, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/keychron/k2_pro/jis/white/keymaps/via/keymap.c b/keyboards/keychron/k2_pro/jis/white/keymaps/via/keymap.c new file mode 100755 index 0000000000..92dfaf4ce4 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/white/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_INT3, KC_BSPC, KC_PGUP, // 32 + KC_TAB, KC_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, // 46 + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, // 61 + 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_END, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [MAC_FN] = LAYOUT( + 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, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), + + [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_PSCR, 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_INT3, KC_PGUP, + KC_TAB, KC_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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT( + 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, KC_TRNS, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), +}; diff --git a/keyboards/keychron/k2_pro/jis/white/keymaps/via/rules.mk b/keyboards/keychron/k2_pro/jis/white/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/white/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k2_pro/jis/white/rules.mk b/keyboards/keychron/k2_pro/jis/white/rules.mk new file mode 100755 index 0000000000..6b0c2a0769 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/white/rules.mk @@ -0,0 +1,2 @@ +LED_MATRIX_ENABLE = yes +LED_MATRIX_DRIVER = CKLED2001 \ No newline at end of file diff --git a/keyboards/keychron/k2_pro/jis/white/white.c b/keyboards/keychron/k2_pro/jis/white/white.c new file mode 100755 index 0000000000..67b6330864 --- /dev/null +++ b/keyboards/keychron/k2_pro/jis/white/white.c @@ -0,0 +1,151 @@ +/* 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 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, A_2}, + {0, A_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, 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_1}, + + {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, C_3}, + {0, D_1}, + + {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_4}, + {0, E_3}, + {0, E_1}, + + {0, F_16}, + {0, F_15}, + {0, F_14}, + {0, F_13}, + {0, F_10}, + {0, F_8}, + {0, F_7}, + {0, F_6}, + {0, F_5}, + {0, F_4}, + {0, F_3}, + {0, F_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, 59, __, 45 }, + { 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, __, 58, __, 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 } + }, + { + // LED Index to Physical Position + {0,0}, {15,0}, {30,0}, {45,0}, {60,0}, {75,0}, {90,0}, {105,0}, {119,0}, {134,0}, {149,0}, {164,0}, {179,0}, {194,0}, {209,0}, {224,0}, + {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {119,13}, {134,13}, {149,13}, {164,13}, {179,13}, {194,13}, {209,13}, {224,13}, + {4,26}, {22,26}, {37,26}, {52,26}, {67,26}, {82,26}, {97,26}, {112,26}, {127,26}, {142,26}, {157,26}, {172,26}, {187,26}, {224,26}, + {6,38}, {26,38}, {41,38}, {56,38}, {71,38}, {86,38}, {101,38}, {116,38}, {131,38}, {146,38}, {161,38}, {175,38}, {190,38}, {211,34}, {224,38}, + {9,51}, {34,51}, {49,51}, {64,51}, {78,51}, {93,51}, {108,51}, {123,51}, {138,51}, {153,51}, {168,51}, {183,51}, {204,51}, {224,51}, + {2,64}, {19,64}, {35,64}, {52,64}, {93,64}, {134,64}, {149,64}, {164,64}, {179,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, 1, + 1, 8, 8, 8, 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, 1, 1, 1, + 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1 + } +}; +#endif diff --git a/keyboards/keychron/k2_pro/k2_pro.c b/keyboards/keychron/k2_pro/k2_pro.c old mode 100644 new mode 100755 index 9442f20307..b63b20652b --- a/keyboards/keychron/k2_pro/k2_pro.c +++ b/keyboards/keychron/k2_pro/k2_pro.c @@ -48,7 +48,7 @@ key_combination_t key_comb_list[4] = { }; #ifdef KC_BLUETOOTH_ENABLE -bool firstDisconnect = true; +bool firstDisconnect = true; bool bt_factory_reset = false; static virtual_timer_t pairing_key_timer; extern uint8_t g_pwm_buffer[DRIVER_COUNT][192]; @@ -154,7 +154,7 @@ void keyboard_post_init_kb(void) { ckbt51_init(false); bluetooth_init(); -# endif +#endif power_on_indicator_timer_buffer = sync_timer_read32() | 1; writePin(BAT_LOW_LED_PIN, BAT_LOW_LED_PIN_ON_STATE); @@ -182,14 +182,15 @@ void matrix_scan_kb(void) { #ifdef FACTORY_RESET_TASK FACTORY_RESET_TASK(); -# endif +#endif matrix_scan_user(); } #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -201,6 +202,7 @@ static void ckbt51_param_init(void) { .verndor_id = 0, // Must be 0x3434 .product_id = PRODUCT_ID}; ckbt51_set_param(¶m); + (void)param; } void bluetooth_enter_disconnected_kb(uint8_t host_idx) { @@ -217,6 +219,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k2_pro/k2_pro.h b/keyboards/keychron/k2_pro/k2_pro.h old mode 100644 new mode 100755 index c89cdbf63f..d542b11bd6 --- a/keyboards/keychron/k2_pro/k2_pro.h +++ b/keyboards/keychron/k2_pro/k2_pro.h @@ -50,36 +50,3 @@ enum { BAT_LVL, NEW_SAFE_RANGE, }; - -#define LAYOUT_ansi_84( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3F, \ - K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ - K50, K51, K52, K56, K59, K5A, K5B, K5C, K5D, K5F \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, K3F }, \ - { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F }, \ - { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, ___, K5F } \ -} - -#define LAYOUT_iso_85( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3D, K2F, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K2D, K3F, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ - K50, K51, K52, K56, K59, K5A, K5B, K5C, K5D, K5F \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, K3F }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F }, \ - { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, ___, K5F } \ -} - diff --git a/keyboards/keychron/k2_pro/readme.md b/keyboards/keychron/k2_pro/readme.md index 77f8752e8c..0fcad1af38 100644 --- a/keyboards/keychron/k2_pro/readme.md +++ b/keyboards/keychron/k2_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K2 Pro -![Keychron K2 Pro](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/keychronk8proqmkviawirelessmechanicalkeyboard4-1670300101659.jpg?v=1670300103) +![Keychron K2 Pro](https://drive.google.com/file/d/1AKk8VqiGtesZ1FBeFjVTBqW81kA8C3rD/view?usp=share_link) A customizable 84 keys TKL keyboard. diff --git a/keyboards/keychron/k3_pro/config.h b/keyboards/keychron/k3_pro/config.h index c31f3cc18b..d0b867d8e3 100644 --- a/keyboards/keychron/k3_pro/config.h +++ b/keyboards/keychron/k3_pro/config.h @@ -47,6 +47,13 @@ #define LED_CAPS_LOCK_PIN A0 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k3_pro/jis/rgb/config.h b/keyboards/keychron/k3_pro/jis/rgb/config.h new file mode 100755 index 0000000000..ccb766077c --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/rgb/config.h @@ -0,0 +1,102 @@ +/* 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 +# define DRIVER_1_LED_COUNT 47 +# define DRIVER_2_LED_COUNT 40 +# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_COUNT + DRIVER_2_LED_COUNT) + +/* Set to infinit, which is use in USB mode by default */ +# define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE + +/* Allow shutdown of led driver to save power */ +# define RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE +/* Turn off backlight on low brightness to save power */ +# define RGB_MATRIX_BRIGHTNESS_TURN_OFF_VAL 48 + +/* Caps lock indicating led */ +# define DIM_CAPS_LOCK +# define CAPS_LOCK_INDEX 46 +# define LOW_BAT_IND_INDEX 79 + +/* 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 + +// # 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 + +/* enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined */ +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +/* 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 + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } + +#endif diff --git a/keyboards/keychron/k3_pro/jis/rgb/info.json b/keyboards/keychron/k3_pro/jis/rgb/info.json new file mode 100755 index 0000000000..380e7c4f3d --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/rgb/info.json @@ -0,0 +1,111 @@ +{ + "keyboard_name": "Keychron K3 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lokher", + "usb": { + "vid": "0x3434", + "pid": "0x0232", + "device_version": "1.0.0" + }, + "processor": "STM32L432", + "bootloader": "stm32-dfu", + "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":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, "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}, + {"matrix":[1,14], "x":14, "y":1}, + {"matrix":[1,15], "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,15], "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":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2}, + {"matrix":[3,15], "x":15, "y":3}, + + {"matrix":[4, 0], "x":0, "y":4.25, "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}, + {"matrix":[4,14], "x":13.25, "y":4.25, "w":1.75}, + {"matrix":[4,15], "x":15, "y":4}, + + {"matrix":[5, 0], "x":0, "y":5}, + {"matrix":[5, 1], "x":1, "y":5}, + {"matrix":[5, 2], "x":2, "y":5}, + {"matrix":[5, 3], "x":3, "y":5.25}, + {"matrix":[5, 6], "x":4, "y":5, "w":5}, + {"matrix":[5, 9], "x":9, "y":5.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, "y":5}, + {"matrix":[5,14], "x":14, "y":5}, + {"matrix":[5,15], "x":15, "y":5} + ] + } + } +} diff --git a/keyboards/keychron/k3_pro/jis/rgb/keymaps/default/keymap.c b/keyboards/keychron/k3_pro/jis/rgb/keymaps/default/keymap.c new file mode 100755 index 0000000000..982b8caaa5 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/rgb/keymaps/default/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_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_END, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [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_PSCR, 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_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_END, + KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT( + _______, 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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/keychron/k3_pro/jis/rgb/keymaps/via/keymap.c b/keyboards/keychron/k3_pro/jis/rgb/keymaps/via/keymap.c new file mode 100755 index 0000000000..982b8caaa5 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/rgb/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_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_END, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [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_PSCR, 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_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_END, + KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT( + _______, 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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/keychron/k3_pro/jis/rgb/keymaps/via/rules.mk b/keyboards/keychron/k3_pro/jis/rgb/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k3_pro/jis/rgb/rgb.c b/keyboards/keychron/k3_pro/jis/rgb/rgb.c new file mode 100755 index 0000000000..d78ea186c0 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/rgb/rgb.c @@ -0,0 +1,153 @@ +/* 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 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}, + + {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, 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_16, C_16, B_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}, + {0, A_14, C_14, B_14}, + {1, I_16, G_16, H_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, C_16, A_16, B_16}, + + {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_7, D_7, E_7}, + {1, F_10, D_10, E_10}, + {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, 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, 59, __, 45 }, + { 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, __, 58, __, 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 } + }, + { + // LED Index to Physical Position + {0,0}, {15,0}, {30,0}, {45,0}, {60,0}, {75,0}, {90,0}, {105,0}, {119,0}, {134,0}, {149,0}, {164,0}, {179,0}, {194,0}, {209,0}, {224,0}, + {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {119,13}, {134,13}, {149,13}, {164,13}, {179,13}, {194,13}, {209,13}, {224,13}, + {4,26}, {22,26}, {37,26}, {52,26}, {67,26}, {82,26}, {97,26}, {112,26}, {127,26}, {142,26}, {157,26}, {172,26}, {187,26}, {224,26}, + {6,38}, {26,38}, {41,38}, {56,38}, {71,38}, {86,38}, {101,38}, {116,38}, {131,38}, {146,38}, {161,38}, {175,38}, {190,38}, {207,32}, {224,38}, + {9,51}, {34,51}, {49,51}, {64,51}, {78,51}, {93,51}, {108,51}, {123,51}, {138,51}, {153,51}, {168,51}, {183,51}, {203,51}, {224,51}, + {0,64}, {15,64}, {30,64}, {45,64}, {90,64}, {134,64}, {149,64}, {164,64}, {179,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, 1, + 4, 8, 8, 8, 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, + 4, 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 + } +}; +#endif diff --git a/keyboards/keychron/k3_pro/jis/rgb/rules.mk b/keyboards/keychron/k3_pro/jis/rgb/rules.mk new file mode 100755 index 0000000000..f5f4192470 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/rgb/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = CKLED2001 \ No newline at end of file diff --git a/keyboards/keychron/k3_pro/jis/white/config.h b/keyboards/keychron/k3_pro/jis/white/config.h new file mode 100755 index 0000000000..7e1b851372 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/white/config.h @@ -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 . + */ + +#pragma once + +#ifdef LED_MATRIX_ENABLE +/* LED matrix driver configuration */ +# define DRIVER_COUNT 1 +# define DRIVER_ADDR_1 0b1110100 +# define LED_MATRIX_LED_COUNT 87 + +/* Set to infinit, which is use in USB mode by default */ +# define LED_MATRIX_TIMEOUT LED_MATRIX_TIMEOUT_INFINITE +/* Allow shutdown of led driver to save power */ +# define LED_MATRIX_DRIVER_SHUTDOWN_ENABLE +/* Turn off backlight on low brightness to save power */ +# define LED_MATRIX_BRIGHTNESS_TURN_OFF_VAL 48 + +/* Caps lock indicating led */ +# define DIM_CAPS_LOCK +# define CAPS_LOCK_INDEX 46 +# define LOW_BAT_IND_INDEX 79 + +/* LED Matrix Animation modes. Explicitly enabled + * For full list of effects, see: + * https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects + */ +# define LED_MATRIX_KEYPRESSES + +# define ENABLE_LED_MATRIX_NONE +# define ENABLE_LED_MATRIX_SOLID +// # define ENABLE_LED_MATRIX_ALPHAS_MODS +# define ENABLE_LED_MATRIX_BREATHING +// # define ENABLE_LED_MATRIX_BAND +# define ENABLE_LED_MATRIX_BAND_PINWHEEL +# define ENABLE_LED_MATRIX_BAND_SPIRAL +# define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_LED_MATRIX_CYCLE_UP_DOWN +# define ENABLE_LED_MATRIX_CYCLE_OUT_IN +# define ENABLE_LED_MATRIX_DUAL_BEACON + +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_LED_MATRIX_SOLID_SPLASH +// # define ENABLE_LED_MATRIX_SOLID_MULTISPLASH + +# define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT +# define ENABLE_LED_MATRIX_WAVE_UP_DOWN +# define ENABLE_LED_MATRIX_EFFECT_MAX + +/* Use first 6 channels of LED driver */ +# define PHASE_CHANNEL MSKPHASE_6CHANNEL + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 } + +#endif diff --git a/keyboards/keychron/k3_pro/jis/white/info.json b/keyboards/keychron/k3_pro/jis/white/info.json new file mode 100755 index 0000000000..ec8f9c09d9 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/white/info.json @@ -0,0 +1,111 @@ +{ + "keyboard_name": "Keychron K3 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lokher", + "usb": { + "vid": "0x3434", + "pid": "0x0235", + "device_version": "1.0.0" + }, + "processor": "STM32L432", + "bootloader": "stm32-dfu", + "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":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, "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}, + {"matrix":[1,14], "x":14, "y":1}, + {"matrix":[1,15], "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,15], "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":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2}, + {"matrix":[3,15], "x":15, "y":3}, + + {"matrix":[4,0], "x":0, "y":4.25, "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}, + {"matrix":[4,14], "x":13.25, "y":4.25, "w":1.75}, + {"matrix":[4,15], "x":15, "y":4}, + + {"matrix":[5, 0], "x":0, "y":5}, + {"matrix":[5, 1], "x":1, "y":5}, + {"matrix":[5, 2], "x":2, "y":5}, + {"matrix":[5,3], "x":3, "y":5.25}, + {"matrix":[5, 6], "x":4, "y":5, "w":5}, + {"matrix":[5,9], "x":9, "y":5.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, "y":5}, + {"matrix":[5,14], "x":14, "y":5}, + {"matrix":[5,15], "x":15, "y":5} + ] + } + } +} diff --git a/keyboards/keychron/k3_pro/jis/white/keymaps/default/keymap.c b/keyboards/keychron/k3_pro/jis/white/keymaps/default/keymap.c new file mode 100755 index 0000000000..398ef2dce7 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/white/keymaps/default/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_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_END, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [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, _______, _______, BL_TOGG, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [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_PSCR, 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_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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT( + _______, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/keychron/k3_pro/jis/white/keymaps/via/keymap.c b/keyboards/keychron/k3_pro/jis/white/keymaps/via/keymap.c new file mode 100755 index 0000000000..398ef2dce7 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/white/keymaps/via/keymap.c @@ -0,0 +1,59 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_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_END, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [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, _______, _______, BL_TOGG, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [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_PSCR, 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_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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_FN] = LAYOUT( + _______, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, BL_TOGG, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/keychron/k3_pro/jis/white/keymaps/via/rules.mk b/keyboards/keychron/k3_pro/jis/white/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/white/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k3_pro/jis/white/rules.mk b/keyboards/keychron/k3_pro/jis/white/rules.mk new file mode 100755 index 0000000000..6b0c2a0769 --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/white/rules.mk @@ -0,0 +1,2 @@ +LED_MATRIX_ENABLE = yes +LED_MATRIX_DRIVER = CKLED2001 \ No newline at end of file diff --git a/keyboards/keychron/k3_pro/jis/white/white.c b/keyboards/keychron/k3_pro/jis/white/white.c new file mode 100755 index 0000000000..c90e87bd8f --- /dev/null +++ b/keyboards/keychron/k3_pro/jis/white/white.c @@ -0,0 +1,151 @@ +/* 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 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, F_16}, + + {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, 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_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, D_14}, + {0, C_16}, + + {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_15}, + {0, B_16}, + + {0, A_1}, + {0, A_2}, + {0, A_3}, + {0, A_4}, + {0, A_7}, + {0, A_10}, + {0, A_11}, + {0, A_12}, + {0, A_13}, + {0, A_14}, + {0, A_15}, + {0, A_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, 59, __, 45 }, + { 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, __, 58, __, 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 } + }, + { + // LED Index to Physical Position + {0,0}, {15,0}, {30,0}, {45,0}, {60,0}, {75,0}, {90,0}, {105,0}, {119,0}, {134,0}, {149,0}, {164,0}, {179,0}, {194,0}, {209,0}, {224,0}, + {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {119,13}, {134,13}, {149,13}, {164,13}, {179,13}, {194,13}, {209,13}, {224,13}, + {4,26}, {22,26}, {37,26}, {52,26}, {67,26}, {82,26}, {97,26}, {112,26}, {127,26}, {142,26}, {157,26}, {172,26}, {187,26}, {224,26}, + {6,38}, {26,38}, {41,38}, {56,38}, {71,38}, {86,38}, {101,38}, {116,38}, {131,38}, {146,38}, {161,38}, {175,38}, {190,38}, {207,32}, {224,38}, + {9,51}, {34,51}, {49,51}, {64,51}, {78,51}, {93,51}, {108,51}, {123,51}, {138,51}, {153,51}, {168,51}, {183,51}, {203,51}, {224,51}, + {0,64}, {15,64}, {30,64}, {45,64}, {90,64}, {134,64}, {149,64}, {164,64}, {179,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, 1, + 4, 8, 8, 8, 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, + 4, 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 + } +}; +#endif diff --git a/keyboards/keychron/k3_pro/k3_pro.c b/keyboards/keychron/k3_pro/k3_pro.c old mode 100644 new mode 100755 index 08412fb9ab..6c9c4e92f5 --- a/keyboards/keychron/k3_pro/k3_pro.c +++ b/keyboards/keychron/k3_pro/k3_pro.c @@ -194,7 +194,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -222,6 +223,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k3_pro/k3_pro.h b/keyboards/keychron/k3_pro/k3_pro.h old mode 100644 new mode 100755 index eb120493ef..46aa84ba20 --- a/keyboards/keychron/k3_pro/k3_pro.h +++ b/keyboards/keychron/k3_pro/k3_pro.h @@ -50,36 +50,3 @@ enum { BAT_LVL, NEW_SAFE_RANGE, }; - -#define LAYOUT_ansi_84( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3F, \ - K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, K4F, \ - K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, K3F }, \ - { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, ___, K4D, K4E, K4F }, \ - { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F } \ -} - -#define LAYOUT_iso_85( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3F, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, K4F, \ - K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, K3F }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, ___, K4D, K4E, K4F }, \ - { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F } \ -} - diff --git a/keyboards/keychron/k3_pro/readme.md b/keyboards/keychron/k3_pro/readme.md index 18142d246a..8b8e69cfd8 100644 --- a/keyboards/keychron/k3_pro/readme.md +++ b/keyboards/keychron/k3_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K3 Pro -![Keychron K3 Pro](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/keychronk3proqmkvialowprofilewirelessmechanicalkeyboardwithanultraslimbodyandhotswappable-1665930065228.jpg?v=1665930068) +![Keychron K3 Pro](https://drive.google.com/file/d/106D9XIteQUf03WZreI1-oRYJ8iSz34qm/view?usp=share_link) A customizable 84 keys TKL keyboard. diff --git a/keyboards/keychron/k3_pro/via_json/k3_pro_jis_rgb .json b/keyboards/keychron/k3_pro/via_json/k3_pro_jis_rgb .json new file mode 100755 index 0000000000..0bc8cafb67 --- /dev/null +++ b/keyboards/keychron/k3_pro/via_json/k3_pro_jis_rgb .json @@ -0,0 +1,265 @@ +{ + "name": "Keychron K3 Pro", + "vendorId": "0x3434", + "productId": "0x0232", + "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, availabe in macOS", "shortName": "MCtrl"}, + {"name": "Launch pad", "title": "Launch pad, availabe in macOS", "shortName": "LPad"}, + {"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": "Siri", "title": "Siri in macOS", "shortName": "Siri"}, + {"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"}, + {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, + {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, + {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} + ], + "matrix": {"rows": 6, "cols": 16}, + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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" + }, + "1,13", + "1,14", + "1,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "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": "#aaaaaa" + }, + "3,13", + { + "x": 1.25 + }, + "3,15" + ], + [ + { + "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", + { + "c": "#aaaaaa" + }, + "4,11", + "4,13", + { + "c": "#777777", + "w": 1.75 + }, + "4,14", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + "5,0", + "5,1", + "5,2", + "5,3", + { + "c": "#cccccc", + "w": 5 + }, + "5,6", + { + "c": "#aaaaaa" + }, + "5,9", + "5,10", + "5,11", + "5,12", + { + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] + } +} diff --git a/keyboards/keychron/k3_pro/via_json/k3_pro_jis_white.json b/keyboards/keychron/k3_pro/via_json/k3_pro_jis_white.json new file mode 100755 index 0000000000..41e4bfd0c3 --- /dev/null +++ b/keyboards/keychron/k3_pro/via_json/k3_pro_jis_white.json @@ -0,0 +1,204 @@ +{ + "name": "Keychron K3 Pro", + "vendorId": "0x3434", + "productId": "0x0235", + "keycodes": ["qmk_lighting"], + "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, availabe in macOS", "shortName": "MCtrl"}, + {"name": "Launch pad", "title": "Launch pad, availabe in macOS", "shortName": "LPad"}, + {"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": "Siri", "title": "Siri in macOS", "shortName": "Siri"}, + {"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"}, + {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, + {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, + {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} + ], + "matrix": {"rows": 6, "cols": 16}, + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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" + }, + "1,13", + "1,14", + "1,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "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": "#aaaaaa" + }, + "3,13", + { + "x": 1.25 + }, + "3,15" + ], + [ + { + "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", + { + "c": "#aaaaaa" + }, + "4,11", + "4,13", + { + "c": "#777777", + "w": 1.75 + }, + "4,14", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + "5,0", + "5,1", + "5,2", + "5,3", + { + "c": "#cccccc", + "w": 5 + }, + "5,6", + { + "c": "#aaaaaa" + }, + "5,9", + "5,10", + "5,11", + "5,12", + { + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] + } +} diff --git a/keyboards/keychron/k4_pro/config.h b/keyboards/keychron/k4_pro/config.h index f206b504f5..b1c7d7d9a8 100644 --- a/keyboards/keychron/k4_pro/config.h +++ b/keyboards/keychron/k4_pro/config.h @@ -40,6 +40,13 @@ #define DIP_SWITCH_PINS \ { A8 } +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k4_pro/iso/rgb/config.h b/keyboards/keychron/k4_pro/iso/rgb/config.h new file mode 100755 index 0000000000..4ead364553 --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/rgb/config.h @@ -0,0 +1,102 @@ +/* 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 +# define DRIVER_1_LED_COUNT 48 +# define DRIVER_2_LED_COUNT 53 +# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_COUNT + DRIVER_2_LED_COUNT) + +/* Set to infinit, which is use in USB mode by default */ +# define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE + +/* Allow shutdown of led driver to save power */ +# define RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE +/* Turn off backlight on low brightness to save power */ +# define RGB_MATRIX_BRIGHTNESS_TURN_OFF_VAL 48 + +/* Indication led */ +# define CAPS_LOCK_INDEX 54 +# define NUM_LOCK_INDEX 33 +# define LOW_BAT_IND_INDEX 92 + +/* 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 + +// # 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 + +/* enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined */ +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +/* 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 + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 } + +#endif diff --git a/keyboards/keychron/k4_pro/iso/rgb/info.json b/keyboards/keychron/k4_pro/iso/rgb/info.json new file mode 100755 index 0000000000..9d6adf0fc4 --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/rgb/info.json @@ -0,0 +1,125 @@ +{ + "keyboard_name": "Keychron K4 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "usb": { + "vid": "0x3434", + "pid": "0x0241", + "device_version": "1.0.0" + }, + "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,17], "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,14], "x":15.5, "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":[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.5, "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, "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,14], "x":15.5, "y":3.25}, + {"matrix":[3,15], "x":16.5, "y":3.25}, + {"matrix":[3,16], "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,12], "x":12.25, "y":4.25, "w":1.75}, + {"matrix":[4,13], "x":14.25, "y":4.5}, + {"matrix":[4,14], "x":15.5, "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, "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/k4_pro/iso/rgb/keymaps/default/keymap.c b/keyboards/keychron/k4_pro/iso/rgb/keymaps/default/keymap.c new file mode 100755 index 0000000000..6477ab0878 --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/rgb/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_iso_101( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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 ), + [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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, 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 ), + [WIN_FN] = LAYOUT_iso_101( + _______, 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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/keychron/k4_pro/iso/rgb/keymaps/via/keymap.c b/keyboards/keychron/k4_pro/iso/rgb/keymaps/via/keymap.c new file mode 100755 index 0000000000..6477ab0878 --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/rgb/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_iso_101( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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 ), + [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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, 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 ), + [WIN_FN] = LAYOUT_iso_101( + _______, 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, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/keychron/k4_pro/iso/rgb/keymaps/via/rules.mk b/keyboards/keychron/k4_pro/iso/rgb/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/rgb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k4_pro/iso/rgb/rgb.c b/keyboards/keychron/k4_pro/iso/rgb/rgb.c new file mode 100755 index 0000000000..87a2214109 --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/rgb/rgb.c @@ -0,0 +1,167 @@ +/* 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 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, F_1, D_1, E_1}, + {1, F_2, D_2, E_2}, + {1, F_3, D_3, E_3}, + + {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}, + {1, F_4, D_4, E_4}, + {1, F_5, D_5, E_5}, + + {0, F_1, D_1, E_1}, + {0, F_2, D_2, E_2}, + {0, F_3, D_3, E_3}, + {0, F_4, D_4, E_4}, + {0, F_5, D_5, E_5}, + {0, 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}, + {1, F_6, D_6, E_6}, + {1, F_7, D_7, E_7}, + + {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, C_2, A_2, B_2}, + {1, C_1, A_1, B_1}, + {1, F_8, D_8, E_8}, + + {1, I_16, G_16, H_16}, + {1, I_15, G_15, H_15}, + {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_2, G_2, H_2}, + {1, I_1, G_1, H_1}, + {1, F_9, D_9, E_9}, + {1, F_10, D_10, E_10}, + + {1, L_16, J_16, K_16}, + {1, L_15, J_15, K_15}, + {1, L_14, J_14, K_14}, + {1, L_10, J_10, K_10}, + {1, L_6, J_6, K_6}, + {1, L_5, J_5, K_5}, + {1, L_4, J_4, K_4}, + {1, L_3, J_3, K_3}, + {1, L_2, J_2, K_2}, + {1, L_1, J_1, K_1}, + {1, F_11, D_11, E_11}, + {1, F_12, D_12, E_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, 16, 17 }, + { 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, 67, 50, 51, 52, 53 }, + { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, __, 66, 68, 69, 70, 18 }, + { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88 }, + { 89, 90, 91, __, __, __, 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}, + {2,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {87,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55}, + {2,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, 4, 4, 4, 4, + 1, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 1, 1, 1, 1, 1, 4, 4, + } +}; +#endif diff --git a/keyboards/keychron/k4_pro/iso/rgb/rules.mk b/keyboards/keychron/k4_pro/iso/rgb/rules.mk new file mode 100755 index 0000000000..7af34ccd60 --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/rgb/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = CKLED2001 diff --git a/keyboards/keychron/k4_pro/iso/white/config.h b/keyboards/keychron/k4_pro/iso/white/config.h new file mode 100755 index 0000000000..96530c7a1f --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/white/config.h @@ -0,0 +1,75 @@ +/* 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_COUNT 1 +# define DRIVER_ADDR_1 0b1110100 +# define DRIVER_1_LED_COUNT 101 +# define LED_MATRIX_LED_COUNT DRIVER_1_LED_COUNT + +/* Set to infinit, which is use in USB mode by default */ +# define LED_MATRIX_TIMEOUT LED_MATRIX_TIMEOUT_INFINITE +/* Allow shutdown of led driver to save power */ +# define LED_MATRIX_DRIVER_SHUTDOWN_ENABLE +/* Turn off backlight on low brightness to save power */ +# define LED_MATRIX_BRIGHTNESS_TURN_OFF_VAL 48 + +/* Indicatoon led */ +# define LOW_BAT_IND_INDEX 92 + +/* LED Matrix Animation modes. Explicitly enabled + * For full list of effects, see: + * https://docs.qmk.fm/#/feature_led_matrix?id=led-matrix-effects + */ +# define LED_MATRIX_KEYPRESSES + +# define ENABLE_LED_MATRIX_NONE +# define ENABLE_LED_MATRIX_SOLID +// # define ENABLE_LED_MATRIX_ALPHAS_MODS +# define ENABLE_LED_MATRIX_BREATHING +// # define ENABLE_LED_MATRIX_BAND +# define ENABLE_LED_MATRIX_BAND_PINWHEEL +# define ENABLE_LED_MATRIX_BAND_SPIRAL +# define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_LED_MATRIX_CYCLE_UP_DOWN +# define ENABLE_LED_MATRIX_CYCLE_OUT_IN +# define ENABLE_LED_MATRIX_DUAL_BEACON + +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS +# define ENABLE_LED_MATRIX_SOLID_SPLASH +// # define ENABLE_LED_MATRIX_SOLID_MULTISPLASH + +# define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT +# define ENABLE_LED_MATRIX_WAVE_UP_DOWN +# define ENABLE_LED_MATRIX_EFFECT_MAX + +/* Use first 6 channels of LED driver */ +# define PHASE_CHANNEL MSKPHASE_7CHANNEL + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 } + +#endif diff --git a/keyboards/keychron/k4_pro/iso/white/info.json b/keyboards/keychron/k4_pro/iso/white/info.json new file mode 100755 index 0000000000..2ca310c935 --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/white/info.json @@ -0,0 +1,125 @@ +{ + "keyboard_name": "Keychron K4 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "usb": { + "vid": "0x3434", + "pid": "0x0244", + "device_version": "1.0.0" + }, + "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,17], "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,14], "x":15.5, "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":[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.5, "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, "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,14], "x":15.5, "y":3.25}, + {"matrix":[3,15], "x":16.5, "y":3.25}, + {"matrix":[3,16], "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,12], "x":12.25, "y":4.25, "w":1.75}, + {"matrix":[4,13], "x":14.25, "y":4.5}, + {"matrix":[4,14], "x":15.5, "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, "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/k4_pro/iso/white/keymaps/default/keymap.c b/keyboards/keychron/k4_pro/iso/white/keymaps/default/keymap.c new file mode 100755 index 0000000000..63e5c618cf --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/white/keymaps/default/keymap.c @@ -0,0 +1,56 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_iso_101( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_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, _______, _______, _______, _______, _______, BL_TOGG, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, 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, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_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_FILE, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, BL_TOGG, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/keychron/k4_pro/iso/white/keymaps/via/keymap.c b/keyboards/keychron/k4_pro/iso/white/keymaps/via/keymap.c new file mode 100755 index 0000000000..63e5c618cf --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/white/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* 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 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_iso_101( + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_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, _______, _______, _______, _______, _______, BL_TOGG, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, 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, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_TAB, KC_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_FILE, BL_DEC, BL_INC, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, BL_TOGG, + _______, BT_HST1, BT_HST2, BT_HST3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + BL_TOGG, BL_STEP, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, BAT_LVL, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/keychron/k4_pro/iso/white/keymaps/via/rules.mk b/keyboards/keychron/k4_pro/iso/white/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/white/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/k4_pro/iso/white/rules.mk b/keyboards/keychron/k4_pro/iso/white/rules.mk new file mode 100755 index 0000000000..6b0c2a0769 --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/white/rules.mk @@ -0,0 +1,2 @@ +LED_MATRIX_ENABLE = yes +LED_MATRIX_DRIVER = CKLED2001 \ No newline at end of file diff --git a/keyboards/keychron/k4_pro/iso/white/white.c b/keyboards/keychron/k4_pro/iso/white/white.c new file mode 100755 index 0000000000..ae0890c6cf --- /dev/null +++ b/keyboards/keychron/k4_pro/iso/white/white.c @@ -0,0 +1,165 @@ +/* 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 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, A_2}, + {0, A_1}, + {0, G_1}, + {0, G_2}, + {0, G_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, B_1}, + {0, G_4}, + {0, G_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_2}, + {0, C_1}, + {0, G_6}, + {0, G_7}, + + {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, C_3}, + {0, D_2}, + {0, D_1}, + {0, G_8}, + + {0, E_16}, + {0, E_15}, + {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_4}, + {0, E_3}, + {0, E_2}, + {0, E_1}, + {0, G_9}, + {0, G_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_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, 16, 17 }, + { 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, 67, 50, 51, 52, 53 }, + { 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, __, 66, 68, 69, 70, 18 }, + { 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88 }, + { 89, 90, 91, __, __, __, 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}, + {2,49}, {15,49}, {27,49}, {39,49}, {51,49}, {63,49}, {75,49}, {87,49}, {100,49}, {112,49}, {124,49}, {136,49}, {152,49}, {172,52}, {188,49}, {200,49}, {212,49}, {224,55}, + {2,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, 4, 4, 4, 4, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 1, 1, 1, 1, 1, 4, 4, + } +}; +#endif diff --git a/keyboards/keychron/k4_pro/k4_pro.c b/keyboards/keychron/k4_pro/k4_pro.c old mode 100644 new mode 100755 index f3d3e679d9..4c3afbac5b --- a/keyboards/keychron/k4_pro/k4_pro.c +++ b/keyboards/keychron/k4_pro/k4_pro.c @@ -189,7 +189,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -217,6 +218,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k4_pro/k4_pro.h b/keyboards/keychron/k4_pro/k4_pro.h old mode 100644 new mode 100755 index 4518a35abf..46aa84ba20 --- a/keyboards/keychron/k4_pro/k4_pro.h +++ b/keyboards/keychron/k4_pro/k4_pro.h @@ -50,19 +50,3 @@ enum { BAT_LVL, NEW_SAFE_RANGE, }; - -#define LAYOUT_ansi_100( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K3H, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, K3G, \ - K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, \ - K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F, K3G, K3H }, \ - { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H }, \ - { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H } \ -} diff --git a/keyboards/keychron/k4_pro/readme.md b/keyboards/keychron/k4_pro/readme.md index a1c94167da..3cbe1adc81 100644 --- a/keyboards/keychron/k4_pro/readme.md +++ b/keyboards/keychron/k4_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K4 Pro -![Keychron K4 Pro](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/keychron-k4-pro-wireless-custom-mechanical-keyboard1-1672887299925.jpg?v=1672887302) +![Keychron K4 Pro](https://drive.google.com/file/d/1zkIRtf7GCvkOeq1oT07D9WXIPmoieS8p/view?usp=share_link) A customizable 100 keys keyboard. diff --git a/keyboards/keychron/k4_pro/via_json/k4_pro_iso_rgb.json b/keyboards/keychron/k4_pro/via_json/k4_pro_iso_rgb.json new file mode 100755 index 0000000000..4a86620f38 --- /dev/null +++ b/keyboards/keychron/k4_pro/via_json/k4_pro_iso_rgb.json @@ -0,0 +1,325 @@ +{ + "name": "Keychron K4 Pro", + "vendorId": "0x3434", + "productId": "0x0241", + "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, availabe in macOS", "shortName": "MCtrl"}, + {"name": "Launch pad", "title": "Launch pad, availabe in macOS", "shortName": "LPad"}, + {"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": "Siri", "title": "Siri in macOS", "shortName": "Siri"}, + {"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"}, + {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, + {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, + {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} + ], + "matrix": {"rows": 6, "cols": 18}, + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + { + "x": 0.5 + }, + "0,15", + "0,16", + "0,17", + "3,17" + ], + [ + { + "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.5, + "c": "#cccccc" + }, + "1,14", + "1,15", + "1,16", + "1,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "3,13", + { + "x": 0.5, + "c": "#cccccc" + }, + "2,14", + "2,15", + "2,16", + { + "h": 2 + }, + "2,17" + ], + [ + { + "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": "#aaaaaa" + }, + "2,13", + { + "x": 1.75, + "c": "#cccccc" + }, + "3,14", + "3,15", + "3,16" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,0", + "4,1", + { + "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,12", + { + "x": 1.5, + "c": "#cccccc" + }, + "4,14", + "4,15", + "4,16", + { + "h": 2 + }, + "4,17" + ], + [ + { + "y": -0.75, + "x": 14.25, + "c": "#777777" + }, + "4,13" + ], + [ + { + "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", + { + "x": 3.5, + "c": "#cccccc" + }, + "5,16", + "5,17" + ], + [ + { + "y": -0.75, + "x": 13.25, + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] + } +} diff --git a/keyboards/keychron/k4_pro/via_json/k4_pro_iso_white.json b/keyboards/keychron/k4_pro/via_json/k4_pro_iso_white.json new file mode 100755 index 0000000000..8462a7f8ac --- /dev/null +++ b/keyboards/keychron/k4_pro/via_json/k4_pro_iso_white.json @@ -0,0 +1,264 @@ +{ + "name": "Keychron K4 Pro", + "vendorId": "0x3434", + "productId": "0x0244", + "keycodes": ["qmk_lighting"], + "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, availabe in macOS", "shortName": "MCtrl"}, + {"name": "Launch pad", "title": "Launch pad, availabe in macOS", "shortName": "LPad"}, + {"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": "Siri", "title": "Siri in macOS", "shortName": "Siri"}, + {"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"}, + {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, + {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, + {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} + ], + "matrix": {"rows": 6, "cols": 18}, + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + { + "x": 0.5 + }, + "0,15", + "0,16", + "0,17", + "3,17" + ], + [ + { + "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.5, + "c": "#cccccc" + }, + "1,14", + "1,15", + "1,16", + "1,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "3,13", + { + "x": 0.5, + "c": "#cccccc" + }, + "2,14", + "2,15", + "2,16", + { + "h": 2 + }, + "2,17" + ], + [ + { + "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": "#aaaaaa" + }, + "2,13", + { + "x": 1.75, + "c": "#cccccc" + }, + "3,14", + "3,15", + "3,16" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "4,0", + "4,1", + { + "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,12", + { + "x": 1.5, + "c": "#cccccc" + }, + "4,14", + "4,15", + "4,16", + { + "h": 2 + }, + "4,17" + ], + [ + { + "y": -0.75, + "x": 14.25, + "c": "#777777" + }, + "4,13" + ], + [ + { + "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", + { + "x": 3.5, + "c": "#cccccc" + }, + "5,16", + "5,17" + ], + [ + { + "y": -0.75, + "x": 13.25, + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] + } +} diff --git a/keyboards/keychron/k5_pro/ansi/rgb/config.h b/keyboards/keychron/k5_pro/ansi/rgb/config.h index 7c0deb60e1..83294b9d52 100755 --- a/keyboards/keychron/k5_pro/ansi/rgb/config.h +++ b/keyboards/keychron/k5_pro/ansi/rgb/config.h @@ -25,13 +25,6 @@ # define DRIVER_2_LED_TOTAL 50 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -/* 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 - /* Set to infinit, which is use in USB mode by default */ # define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE diff --git a/keyboards/keychron/k5_pro/ansi/rgb/rgb.c b/keyboards/keychron/k5_pro/ansi/rgb/rgb.c index 4eb555ed64..f20c3d1e97 100755 --- a/keyboards/keychron/k5_pro/ansi/rgb/rgb.c +++ b/keyboards/keychron/k5_pro/ansi/rgb/rgb.c @@ -19,7 +19,7 @@ // clang-format off #ifdef RGB_MATRIX_ENABLE const ckled2001_led 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 diff --git a/keyboards/keychron/k5_pro/ansi/white/config.h b/keyboards/keychron/k5_pro/ansi/white/config.h index 5c7351d955..3c2d99a4cf 100755 --- a/keyboards/keychron/k5_pro/ansi/white/config.h +++ b/keyboards/keychron/k5_pro/ansi/white/config.h @@ -23,13 +23,6 @@ # define DRIVER_1_LED_TOTAL 108 # define LED_MATRIX_LED_COUNT DRIVER_1_LED_TOTAL -/* 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 - /* Set to infinit, which is use in USB mode by default */ # define LED_MATRIX_TIMEOUT LED_MATRIX_TIMEOUT_INFINITE diff --git a/keyboards/keychron/k5_pro/ansi/white/white.c b/keyboards/keychron/k5_pro/ansi/white/white.c index 2826b0249b..214f7a4238 100755 --- a/keyboards/keychron/k5_pro/ansi/white/white.c +++ b/keyboards/keychron/k5_pro/ansi/white/white.c @@ -19,7 +19,7 @@ // clang-format off #ifdef LED_MATRIX_ENABLE const ckled2001_led g_ckled2001_leds[LED_MATRIX_LED_COUNT] = { -/* Refer to IS31 manual for these locations +/* Refer to CKLED2001 manual for these locations * driver * | LED address * | | */ diff --git a/keyboards/keychron/k5_pro/config.h b/keyboards/keychron/k5_pro/config.h index e9ed742789..92a4b1192f 100755 --- a/keyboards/keychron/k5_pro/config.h +++ b/keyboards/keychron/k5_pro/config.h @@ -41,6 +41,13 @@ #define LED_CAPS_LOCK_PIN A0 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k5_pro/k5_pro.c b/keyboards/keychron/k5_pro/k5_pro.c index 408d2c60ef..42940fff2b 100755 --- a/keyboards/keychron/k5_pro/k5_pro.c +++ b/keyboards/keychron/k5_pro/k5_pro.c @@ -201,7 +201,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -215,6 +216,21 @@ static void ckbt51_param_init(void) { ckbt51_set_param(¶m); } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_enter_disconnected_kb(uint8_t host_idx) { if (bt_factory_reset) { bt_factory_reset = false; diff --git a/keyboards/keychron/k5_pro/matrix.c b/keyboards/keychron/k5_pro/matrix.c index 3bae52ab1a..3b422d9d2b 100755 --- a/keyboards/keychron/k5_pro/matrix.c +++ b/keyboards/keychron/k5_pro/matrix.c @@ -14,9 +14,6 @@ * along with this program. If not, see . */ -#include "stdint.h" -#include "hal.h" -#include "gpio.h" #include "quantum.h" #define HC595_STCP B0 @@ -26,56 +23,6 @@ pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; -static inline void HC595_delay(uint16_t n) { - while (n-- > 0) { - asm volatile("nop" ::: "memory"); - } -} - -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI -// clang-format off -const SPIConfig hs_spicfg = { - .circular = false, - .slave = false, - .data_cb = NULL, - .error_cb = NULL, - .ssport = PAL_PORT(HC595_STCP), - .sspad = PAL_PAD(HC595_STCP), - .cr1 = SPI_CR1_BR_1, - .cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 | SPI_CR2_SSOE | SPI_CR2_NSSP -}; -// clang-format on -#endif -static void HC595_output(uint32_t data) { -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - spiSend(&SPID1, 1, &data); -#else - uint8_t i; - uint8_t n = 1; - - for (i = 0; i < MATRIX_COLS; i++) { - writePinLow(HC595_SHCP); - - if (data & 0x0001) - writePinHigh(HC595_DS); - else - writePinLow(HC595_DS); - - data >>= 1; - - HC595_delay(n); - - writePinHigh(HC595_SHCP); - HC595_delay(n); - } - - HC595_delay(n); - writePinLow(HC595_STCP); - HC595_delay(n); - writePinHigh(HC595_STCP); -#endif -} - static inline void setPinOutput_writeLow(pin_t pin) { ATOMIC_BLOCK_FORCEON { setPinOutput(pin); @@ -83,7 +30,14 @@ static inline void setPinOutput_writeLow(pin_t pin) { } } -static inline void setPinInputHigh_atomic(pin_t 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); } @@ -97,16 +51,65 @@ static inline uint8_t readMatrixPin(pin_t pin) { } } +static inline void HC595_delay(uint16_t n) { + while (n-- > 0) { + asm volatile("nop" ::: "memory"); + } +} + +static void HC595_output(uint32_t data) { + ATOMIC_BLOCK_FORCEON { + for (uint8_t i = 0; i < MATRIX_COLS; i++) { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + data = data >> 1; + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + } + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + +static void HC595_output_oneBit(uint8_t data) { + ATOMIC_BLOCK_FORCEON { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + static bool select_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 0) { - if (pin != NO_PIN) { - setPinOutput_writeLow(pin); - return true; - } + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; } else { - HC595_output(~(0x01 << (MATRIX_COLS - 1 - col))); + if (col == 0) { + HC595_output_oneBit(0x00); + } return true; } return false; @@ -115,81 +118,96 @@ static bool select_col(uint8_t col) { static void unselect_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 0) { - if (pin != NO_PIN) { - setPinInputHigh_atomic(pin); - } + if (pin != NO_PIN) { +#ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +#else + setPinInput_high(pin); +#endif } else { - if (col >= MATRIX_COLS - 1) HC595_output(0xFFFFFFFF); + HC595_output_oneBit(0x01); } } static void unselect_cols(void) { - if (col_pins[0] != NO_PIN) setPinInputHigh_atomic(col_pins[0]); - HC595_output(0xFFFFFFFF); + 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 + setPinInput_high(pin); +#endif + } else { + if (x == 0) HC595_output(0xFFFFFFFF); + } + } } void select_all_cols(void) { - if (col_pins[0] != NO_PIN) setPinOutput_writeLow(col_pins[0]); - HC595_output(0x00000000); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + pin_t pin = col_pins[x]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + } else { + if (x == 0) HC595_output(0x00000000); + } + } } -void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { +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 } - HC595_delay(100); + matrix_output_select_delay(); // 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] |= (MATRIX_ROW_SHIFTER << current_col); - // key_pressed = true; + current_matrix[row_index] |= row_shifter; + key_pressed = true; } else { // Pin HI, clear col bit - current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); + current_matrix[row_index] &= ~row_shifter; } } + // Unselect col unselect_col(current_col); - HC595_delay(100); + matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH } void matrix_init_custom(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - if (row_pins[x] != NO_PIN) { - setPinInputHigh_atomic(row_pins[x]); - } - } -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - palSetPadMode(PAL_PORT(HC595_SHCP), PAL_PAD(HC595_SHCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* SCK */ - palSetPadMode(PAL_PORT(HC595_DS), PAL_PAD(HC595_DS), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MOSI*/ - palSetPadMode(PAL_PORT(HC595_STCP), PAL_PAD(HC595_STCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* CS*/ - spiStart(&SPID1, &hs_spicfg); -#else setPinOutput(HC595_DS); setPinOutput(HC595_STCP); setPinOutput(HC595_SHCP); -#endif + + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + if (row_pins[x] != NO_PIN) { + setPinInput_high(row_pins[x]); + } + } + unselect_cols(); } bool matrix_scan_custom(matrix_row_t current_matrix[]) { - bool matrix_has_changed = false; - matrix_row_t curr_matrix[MATRIX_ROWS] = {0}; // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - matrix_read_rows_on_col(curr_matrix, current_col); + 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); } - matrix_has_changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; - if (matrix_has_changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); + bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; + if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); - return matrix_has_changed; + return changed; } diff --git a/keyboards/keychron/k5_pro/readme.md b/keyboards/keychron/k5_pro/readme.md index 63b070d3b6..a02434fa90 100755 --- a/keyboards/keychron/k5_pro/readme.md +++ b/keyboards/keychron/k5_pro/readme.md @@ -1,10 +1,12 @@ # Keychron K5 Pro +![Keychron K3 Pro](https://drive.google.com/file/d/1Sfc0C-Ye0S2wW6eYiaJfluRCJI-b-UKE/view?usp=share_link) + A customizable 100% keyboard. * Keyboard Maintainer: [Keychron](https://github.com/keychron) * Hardware Supported: Keychron K5 Pro -* Hardware Availability: [Keychron](https://www.keychron.com) +* Hardware Availability: [Keychron K5 Pro]() Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/keychron/k5_pro/via_json/k5_pro_ansi_rgb_v1.00.json b/keyboards/keychron/k5_pro/via_json/k5_pro_ansi_rgb_v1.00.json index c6dad89b84..7528f32040 100755 --- a/keyboards/keychron/k5_pro/via_json/k5_pro_ansi_rgb_v1.00.json +++ b/keyboards/keychron/k5_pro/via_json/k5_pro_ansi_rgb_v1.00.json @@ -21,29 +21,29 @@ "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. CYCKE_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] + ["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] ] }, { @@ -54,7 +54,7 @@ "content": ["id_qmk_rgb_matrix_effect_speed", 3, 3] }, { - "showIf": "{id_qmk_rgb_matrix_effect} != 0", + "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] @@ -65,81 +65,21 @@ } ], "customKeycodes": [ - { - "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": "Mission Control", - "title": "Mission Control in macOS", - "shortName": "MCtrl" - }, - { - "name": "Launch Pad", - "title": "Launch Pad in macOS", - "shortName": "LPad" - }, - { - "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": "Siri", - "title": "Siri in macOS", - "shortName": "Siri" - }, - { - "name": "Bluetooth Host 1", - "title": "Bluetooth Host 1", - "shortName": "BTH1" - }, - { - "name": "Bluetooth Host 2", - "title": "Bluetooth Host 2", - "shortName": "BTH2" - }, - { - "name": "Bluetooth Host 3", - "title": "Bluetooth Host 3", - "shortName": "BTH3" - }, - { - "name": "Battery Level", - "title": "Show battery level", - "shortName": "Batt" - } + {"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, availabe in macOS", "shortName": "MCtrl"}, + {"name": "Launch pad", "title": "Launch pad, availabe in macOS", "shortName": "LPad"}, + {"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": "Siri", "title": "Siri in macOS", "shortName": "Siri"}, + {"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"}, + {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, + {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, + {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} ], "matrix": {"rows": 6, "cols": 21}, "layouts": { @@ -158,27 +98,31 @@ "0,3", "0,4", { - "x": 0.5 + "x": 0.5, + "c": "#aaaaaa" }, "0,5", "0,6", "0,7", "0,8", { - "x": 0.5 + "x": 0.5, + "c": "#cccccc" }, "0,9", "0,10", "0,11", "0,12", { - "x": 0.25 + "x": 0.25, + "c": "#aaaaaa" }, "0,14", "0,15", "0,16", { - "x": 0.25 + "x": 0.25, + "c": "#cccccc" }, "0,17", "0,18", @@ -187,9 +131,13 @@ ], [ { - "y": 0.25 + "y": 0.25, + "c": "#aaaaaa" }, "1,0", + { + "c": "#cccccc" + }, "1,1", "1,2", "1,3", @@ -244,12 +192,12 @@ "2,11", "2,12", { + "c": "#aaaaaa", "w": 1.5 }, "2,13", { - "x": 0.25, - "c": "#aaaaaa" + "x": 0.25 }, "2,14", "2,15", @@ -369,12 +317,10 @@ }, "5,11", { - "c": "#cccccc", "w": 1.25 }, "5,12", { - "c": "#aaaaaa", "w": 1.25 }, "5,13", diff --git a/keyboards/keychron/k5_pro/via_json/k5_pro_ansi_white_v1.00.json b/keyboards/keychron/k5_pro/via_json/k5_pro_ansi_white_v1.00.json index e11af48486..75db3294af 100755 --- a/keyboards/keychron/k5_pro/via_json/k5_pro_ansi_white_v1.00.json +++ b/keyboards/keychron/k5_pro/via_json/k5_pro_ansi_white_v1.00.json @@ -4,81 +4,21 @@ "productId": "0x0253", "keycodes": ["qmk_lighting"], "customKeycodes": [ - { - "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": "Mission Control", - "title": "Mission Control in macOS", - "shortName": "MCtrl" - }, - { - "name": "Launch Pad", - "title": "Launch Pad in macOS", - "shortName": "LPad" - }, - { - "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": "Siri", - "title": "Siri in macOS", - "shortName": "Siri" - }, - { - "name": "Bluetooth Host 1", - "title": "Bluetooth Host 1", - "shortName": "BTH1" - }, - { - "name": "Bluetooth Host 2", - "title": "Bluetooth Host 2", - "shortName": "BTH2" - }, - { - "name": "Bluetooth Host 3", - "title": "Bluetooth Host 3", - "shortName": "BTH3" - }, - { - "name": "Battery Level", - "title": "Show battery level", - "shortName": "Batt" - } + {"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, availabe in macOS", "shortName": "MCtrl"}, + {"name": "Launch pad", "title": "Launch pad, availabe in macOS", "shortName": "LPad"}, + {"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": "Siri", "title": "Siri in macOS", "shortName": "Siri"}, + {"name": "Bluetooth Host 1", "title": "Bluetooth Host 1", "shortName": "BTH1"}, + {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, + {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, + {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} ], "matrix": {"rows": 6, "cols": 21}, "layouts": { @@ -97,27 +37,31 @@ "0,3", "0,4", { - "x": 0.5 + "x": 0.5, + "c": "#aaaaaa" }, "0,5", "0,6", "0,7", "0,8", { - "x": 0.5 + "x": 0.5, + "c": "#cccccc" }, "0,9", "0,10", "0,11", "0,12", { - "x": 0.25 + "x": 0.25, + "c": "#aaaaaa" }, "0,14", "0,15", "0,16", { - "x": 0.25 + "x": 0.25, + "c": "#cccccc" }, "0,17", "0,18", @@ -126,9 +70,13 @@ ], [ { - "y": 0.25 + "y": 0.25, + "c": "#aaaaaa" }, "1,0", + { + "c": "#cccccc" + }, "1,1", "1,2", "1,3", @@ -183,12 +131,12 @@ "2,11", "2,12", { + "c": "#aaaaaa", "w": 1.5 }, "2,13", { - "x": 0.25, - "c": "#aaaaaa" + "x": 0.25 }, "2,14", "2,15", @@ -308,12 +256,10 @@ }, "5,11", { - "c": "#cccccc", "w": 1.25 }, "5,12", { - "c": "#aaaaaa", "w": 1.25 }, "5,13", diff --git a/keyboards/keychron/k6_pro/config.h b/keyboards/keychron/k6_pro/config.h index 025d1fe783..81e02a5fef 100644 --- a/keyboards/keychron/k6_pro/config.h +++ b/keyboards/keychron/k6_pro/config.h @@ -44,6 +44,13 @@ #define LED_CAPS_LOCK_PIN A7 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 @@ -60,7 +67,6 @@ # define HOST_DEVICES_COUNT 3 - # if defined(RGB_MATRIX_ENABLE) || defined(LED_MATRIX_ENABLE) # define LED_DRIVER_SHUTDOWN_PIN C14 diff --git a/keyboards/keychron/k6_pro/jis/rgb/config.h b/keyboards/keychron/k6_pro/jis/rgb/config.h new file mode 100755 index 0000000000..cae428a714 --- /dev/null +++ b/keyboards/keychron/k6_pro/jis/rgb/config.h @@ -0,0 +1,97 @@ +/* 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 . + */ + +#ifdef RGB_MATRIX_ENABLE +/* RGB Matrix Driver Configuration */ +# define DRIVER_COUNT 2 + +# define DRIVER_ADDR_1 0b1110111 +# define DRIVER_ADDR_2 0b1110100 +# define DRIVER_1_LED_COUNT 30 +# define DRIVER_2_LED_COUNT 41 +# define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_COUNT + DRIVER_2_LED_COUNT) + +/* Set to infinit, which is use in USB mode by default */ +# define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE +/* Allow shutdown of led driver to save power */ +# define RGB_MATRIX_DRIVER_SHUTDOWN_ENABLE +/* Turn off backlight on low brightness to save power */ +# define RGB_MATRIX_BRIGHTNESS_TURN_OFF_VAL 32 + +# define DIM_CAPS_LOCK +# define CAPS_LOCK_INDEX 30 +# define LOW_BAT_IND_INDEX 63 + +// 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 + +// #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 + +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +# define ENABLE_RGB_MATRIX_DIGITAL_RAIN + +// 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 + +/* Set LED driver current */ +# define CKLED2001_CURRENT_TUNE \ + { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 } + +#endif diff --git a/keyboards/keychron/k6_pro/jis/rgb/info.json b/keyboards/keychron/k6_pro/jis/rgb/info.json new file mode 100755 index 0000000000..fde6618319 --- /dev/null +++ b/keyboards/keychron/k6_pro/jis/rgb/info.json @@ -0,0 +1,94 @@ +{ + "keyboard_name": "Keychron K6 Pro", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lokher", + "usb": { + "vid": "0x3434", + "pid": "0x0262", + "device_version": "1.0.0" + }, + "processor": "STM32L432", + "bootloader": "stm32-dfu", + "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":10, "y":0}, + {"matrix":[0,11], "x":11, "y":0}, + {"matrix":[0,12], "x":12, "y":0}, + {"matrix":[2,12], "x":13, "y":0}, + {"matrix":[0,13], "x":14, "y":0}, + {"matrix":[0,14], "x":15, "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":[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":[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}, + {"matrix":[3,13], "x":13.25, "y":3, "w":1.75}, + {"matrix":[3,14], "x":15, "y":3}, + + {"matrix":[4,0], "x":0, "y":4, "w":1.25}, + {"matrix":[4,1], "x":1.25, "y":4}, + {"matrix":[4,2], "x":2.25, "y":4, "w":1.25}, + {"matrix":[4,3], "x":3.5, "y":4}, + {"matrix":[4,6], "x":4.5, "y":4, "w":4.5}, + {"matrix":[4,8], "x":9, "y":4}, + {"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} + ] + } + } +} diff --git a/keyboards/keychron/k6_pro/jis/rgb/keymaps/default/keymap.c b/keyboards/keychron/k6_pro/jis/rgb/keymaps/default/keymap.c new file mode 100755 index 0000000000..573314c824 --- /dev/null +++ b/keyboards/keychron/k6_pro/jis/rgb/keymaps/default/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, + WIN_BASE, + MAC_FN1, + WIN_FN1, + FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_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, 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_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_NUHS, 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_INT1, KC_RSFT, KC_PGDN, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, MO(MAC_FN1),MO(FN2), KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_BASE] = LAYOUT( + KC_ESC, KC_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, 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_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_NUHS, 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_INT1, KC_RSFT, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, MO(WIN_FN1),MO(FN2), KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [MAC_FN1] = LAYOUT( + KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), + + [WIN_FN1] = LAYOUT( + KC_GRV, 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, KC_TRNS, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), + + [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_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, KC_TRNS, KC_TRNS, KC_TRNS, BAT_LVL, 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), +}; diff --git a/keyboards/keychron/k6_pro/jis/rgb/keymaps/via/keymap.c b/keyboards/keychron/k6_pro/jis/rgb/keymaps/via/keymap.c new file mode 100755 index 0000000000..34101f9c8a --- /dev/null +++ b/keyboards/keychron/k6_pro/jis/rgb/keymaps/via/keymap.c @@ -0,0 +1,64 @@ +/* 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, + WIN_BASE, + MAC_FN1, + WIN_FN1, + FN2 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT( + KC_ESC, KC_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, 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_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_NUHS, 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_INT1, KC_RSFT, KC_PGDN, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, MO(MAC_FN1),MO(FN2), KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [WIN_BASE] = LAYOUT( + KC_ESC, KC_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, 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_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_NUHS, 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_INT1, KC_RSFT, KC_PGDN, + KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, MO(WIN_FN1),MO(FN2), KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), + + [MAC_FN1] = LAYOUT( + KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), + + [WIN_FN1] = LAYOUT( + KC_GRV, 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, KC_TRNS, RGB_TOG, + KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), + + [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_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, KC_TRNS, KC_TRNS, KC_TRNS, BAT_LVL, 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), +}; + diff --git a/keyboards/keychron/k6_pro/jis/rgb/keymaps/via/rules.mk b/keyboards/keychron/k6_pro/jis/rgb/keymaps/via/rules.mk new file mode 100755 index 0000000000..4eae6e776c --- /dev/null +++ b/keyboards/keychron/k6_pro/jis/rgb/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +OPT_DEFS += -DDYNAMIC_KEYMAP_LAYER_COUNT=5 diff --git a/keyboards/keychron/k6_pro/jis/rgb/rgb.c b/keyboards/keychron/k6_pro/jis/rgb/rgb.c new file mode 100755 index 0000000000..edf78e538c --- /dev/null +++ b/keyboards/keychron/k6_pro/jis/rgb/rgb.c @@ -0,0 +1,133 @@ +/* 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" + +// clang-format off +#ifdef RGB_MATRIX_ENABLE +const ckled2001_led g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to CKLED2001 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C_16, A_16, B_16}, + {0, C_15, A_15, B_15}, + {0, C_14, A_14, B_14}, + {0, C_13, A_13, B_13}, + {0, C_12, A_12, B_12}, + {0, C_11, A_11, B_11}, + {0, C_10, A_10, B_10}, + {0, C_9, A_9, B_9}, + {0, C_8, A_8, B_8}, + {0, C_7, A_7, B_7}, + {0, C_6, A_6, B_6}, + {0, C_5, A_5, B_5}, + {0, C_4, A_4, B_4}, + {1, C_4, A_4, B_4}, + {0, C_3, A_3, B_3}, + {0, C_2, A_2, B_2}, + + {0, F_16, D_16, E_16}, + {0, F_15, D_15, E_15}, + {0, F_14, D_14, E_14}, + {0, F_13, D_13, E_13}, + {0, F_12, D_12, E_12}, + {0, F_11, D_11, E_11}, + {0, F_10, D_10, E_10}, + {0, F_9, D_9, E_9}, + {0, F_8, D_8, E_8}, + {0, F_7, D_7, E_7}, + {0, F_6, D_6, E_6}, + {0, F_5, D_5, E_5}, + {0, F_4, D_4, E_4}, + {0, F_2, D_2, E_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_3, D_3, E_3}, + {1, C_2, A_2, B_2}, + + {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_2, G_2, H_2}, + + {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_8, D_8, E_8}, + {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}, +}; + +#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, 43, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 13, 42, 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 } + }, + { + // LED Index to Physical Position + {0, 0}, {14, 0}, {29, 0}, {44, 0}, {59, 0}, {74, 0}, {89, 0}, {104, 0}, {119, 0}, {134, 0}, {149, 0}, {164, 0}, {179, 0}, {194,0}, {209, 0}, {224, 0}, + {3,16}, {22,16}, {37,16}, {52,16}, {67,16}, {82,16}, {97, 16}, {112, 16}, {126, 16}, {141, 16}, {156, 16}, {171, 16}, {186, 16}, {224, 16}, + {5,32}, {26,32}, {41,32}, {55,32}, {70,32}, {85,32}, {100,32}, {115, 32}, {130, 32}, {145, 32}, {160, 32}, {175, 32}, {204, 32}, {207, 24}, {224, 32}, + {9,48}, {33,48}, {48,48}, {63,48}, {78,48}, {93,48}, {108,48}, {123, 48}, {138, 48}, {153, 48}, {167, 48}, {182, 48}, {203, 48}, {224, 48}, + {1,64}, {18,64}, {35,64}, {52,64}, {93,64}, {134, 64}, {149, 64}, {164, 64}, {179, 64}, {194, 64}, {209, 64}, {224, 64} + }, + { + // RGB LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 8, 8, 8, 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, + 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, + } +}; +#endif diff --git a/keyboards/keychron/k6_pro/jis/rgb/rules.mk b/keyboards/keychron/k6_pro/jis/rgb/rules.mk new file mode 100755 index 0000000000..f5f4192470 --- /dev/null +++ b/keyboards/keychron/k6_pro/jis/rgb/rules.mk @@ -0,0 +1,2 @@ +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = CKLED2001 \ No newline at end of file diff --git a/keyboards/keychron/k6_pro/k6_pro.c b/keyboards/keychron/k6_pro/k6_pro.c old mode 100644 new mode 100755 index 6af3ecdf7b..f29cd82ad5 --- a/keyboards/keychron/k6_pro/k6_pro.c +++ b/keyboards/keychron/k6_pro/k6_pro.c @@ -186,7 +186,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -214,6 +215,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k6_pro/k6_pro.h b/keyboards/keychron/k6_pro/k6_pro.h old mode 100644 new mode 100755 index b967a45ead..d542b11bd6 --- a/keyboards/keychron/k6_pro/k6_pro.h +++ b/keyboards/keychron/k6_pro/k6_pro.h @@ -50,32 +50,3 @@ enum { BAT_LVL, NEW_SAFE_RANGE, }; - -#define LAYOUT_ansi_68( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ - K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4E \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, K2E }, \ - { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ - { K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C, K4D, K4E }, \ -} - -#define LAYOUT_iso_69( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ - K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4E \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D, K1E }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K1D, K2E }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ - { K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C, K4D, K4E }, \ -} - diff --git a/keyboards/keychron/k6_pro/readme.md b/keyboards/keychron/k6_pro/readme.md index 899373d506..b197df2d32 100644 --- a/keyboards/keychron/k6_pro/readme.md +++ b/keyboards/keychron/k6_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K6 Pro -![Keychron K6 Pro](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/keychronk6pr0qmkviawirelesscustommechanicalkeyboard-1659094228146.jpg?v=1659094230) +![Keychron K6 Pro](https://drive.google.com/file/d/1X1Qk--x6v6I8Ds9umPF1wliTm9Mnd_RH/view?usp=share_link) A customizable 68 keys TKL keyboard. diff --git a/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json b/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json index 93b943d022..a9ddb73821 100644 --- a/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json +++ b/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json @@ -82,167 +82,168 @@ {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} ], "matrix": {"rows": 5, "cols": 15}, - "layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "2,12", - "0,13", - { - "c": "#cccccc" - }, - "0,14" - ], - [ - { - "w":1.50, - "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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "1,13", - { - "c": "#cccccc" - }, - "1,14" - ], - [ - { - "w":1.75, - "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,13", - { - "x": 1.25, - "c": "#cccccc" - }, - "2,14" - ], - [ - { - "w":2.25, - "c": "#aaaaaa" - }, - "3,0", - { - "c": "#cccccc" - }, - "3,2", - "3,3", - "3,4", - "3,5", - "3,6", - "3,7", - "3,8", - "3,9", - "3,10", - "3,11", - "3,12", - { - "w":1.75, - "c": "#aaaaaa" - }, - "3,13", - { - "c": "#cccccc" - }, - "3,14" - ], - [ - { - "w":1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "w":1 - }, - "4,1", - { - "w":1.25 - }, - "4,2", - { - "w":1, - "c": "#cccccc" - }, - "4,3", - { - "w":4.5 - }, - "4,6", - { - "c": "#aaaaaa" - }, - "4,8", - "4,9", - { - "c": "#cccccc" - }, - "4,10", - "4,11", - { - "c": "#777777" - }, - "4,12", - "4,13", - "4,14" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + "2,12", + "0,13", + { + "c": "#cccccc" + }, + "0,14" + ], + [ + { + "w":1.50, + "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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "1,13", + { + "c": "#cccccc" + }, + "1,14" + ], + [ + { + "w":1.75, + "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,13", + { + "x": 1.25, + "c": "#cccccc" + }, + "2,14" + ], + [ + { + "w":2.25, + "c": "#aaaaaa" + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + "3,12", + { + "w":1.75, + "c": "#aaaaaa" + }, + "3,13", + { + "c": "#cccccc" + }, + "3,14" + ], + [ + { + "w":1.25, + "c": "#aaaaaa" + }, + "4,0", + { + "w":1 + }, + "4,1", + { + "w":1.25 + }, + "4,2", + { + "w":1, + "c": "#cccccc" + }, + "4,3", + { + "w":4.5 + }, + "4,6", + { + "c": "#aaaaaa" + }, + "4,8", + "4,9", + { + "c": "#cccccc" + }, + "4,10", + "4,11", + { + "c": "#777777" + }, + "4,12", + "4,13", + "4,14" + ] + ] } } diff --git a/keyboards/keychron/k7_pro/config.h b/keyboards/keychron/k7_pro/config.h index 4fcdd90a9f..1703f746d1 100644 --- a/keyboards/keychron/k7_pro/config.h +++ b/keyboards/keychron/k7_pro/config.h @@ -47,6 +47,13 @@ #define LED_CAPS_LOCK_PIN A0 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k7_pro/k7_pro.c b/keyboards/keychron/k7_pro/k7_pro.c old mode 100644 new mode 100755 index 31259eff2c..19f4c7cc40 --- a/keyboards/keychron/k7_pro/k7_pro.c +++ b/keyboards/keychron/k7_pro/k7_pro.c @@ -186,7 +186,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -214,6 +215,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k7_pro/k7_pro.h b/keyboards/keychron/k7_pro/k7_pro.h old mode 100644 new mode 100755 index 7fbfbf92be..d542b11bd6 --- a/keyboards/keychron/k7_pro/k7_pro.h +++ b/keyboards/keychron/k7_pro/k7_pro.h @@ -50,32 +50,3 @@ enum { BAT_LVL, NEW_SAFE_RANGE, }; - -#define LAYOUT_ansi_68( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ - K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, ___, K2F }, \ - { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \ - { K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D, K4E, K4F }, \ -} - -#define LAYOUT_iso_69( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0F, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1F, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2F, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, K3F, \ - K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E, K4F \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, ___, K0F }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, ___, K1F }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, ___, K2F }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \ - { K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D, K4E, K4F }, \ -} - diff --git a/keyboards/keychron/k7_pro/readme.md b/keyboards/keychron/k7_pro/readme.md index 9dd303a47a..f8881345ba 100644 --- a/keyboards/keychron/k7_pro/readme.md +++ b/keyboards/keychron/k7_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K7 Pro -![Keychron K7 Pro](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/keychron-k7-pro-camerashot-photo-1-1676860139452.jpg?v=1676860142) +![Keychron K7 Pro](https://drive.google.com/file/d/1BSy1l3bs-EW-TgPWDY3qpPCSWVV3nqdQ/view?usp=share_link) A customizable 68 keys TKL low profile switch keyboard. diff --git a/keyboards/keychron/k8_pro/config.h b/keyboards/keychron/k8_pro/config.h index 84e86b388f..79c56e1a2c 100644 --- a/keyboards/keychron/k8_pro/config.h +++ b/keyboards/keychron/k8_pro/config.h @@ -44,6 +44,13 @@ #define LED_CAPS_LOCK_PIN A7 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k8_pro/k8_pro.c b/keyboards/keychron/k8_pro/k8_pro.c old mode 100644 new mode 100755 index f8b4f6d99e..4b7a4f42fb --- a/keyboards/keychron/k8_pro/k8_pro.c +++ b/keyboards/keychron/k8_pro/k8_pro.c @@ -48,7 +48,7 @@ key_combination_t key_comb_list[4] = { }; #ifdef KC_BLUETOOTH_ENABLE -bool firstDisconnect = true; +bool firstDisconnect = true; bool bt_factory_reset = false; static virtual_timer_t pairing_key_timer; extern uint8_t g_pwm_buffer[DRIVER_COUNT][192]; @@ -154,14 +154,14 @@ void keyboard_post_init_kb(void) { ckbt51_init(false); bluetooth_init(); -# endif +#endif power_on_indicator_timer_buffer = sync_timer_read32() | 1; writePin(BAT_LOW_LED_PIN, BAT_LOW_LED_PIN_ON_STATE); writePin(LED_CAPS_LOCK_PIN, LED_PIN_ON_STATE); -# ifdef KC_BLUETOOTH_ENABLE +#ifdef KC_BLUETOOTH_ENABLE writePin(H3, HOST_LED_PIN_ON_STATE); -# endif +#endif keyboard_post_init_user(); } @@ -189,14 +189,15 @@ void matrix_scan_kb(void) { #ifdef FACTORY_RESET_TASK FACTORY_RESET_TASK(); -# endif +#endif matrix_scan_user(); } #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -224,6 +225,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k8_pro/k8_pro.h b/keyboards/keychron/k8_pro/k8_pro.h old mode 100644 new mode 100755 index 07be83643e..a71b06ec83 --- a/keyboards/keychron/k8_pro/k8_pro.h +++ b/keyboards/keychron/k8_pro/k8_pro.h @@ -50,51 +50,3 @@ enum { BAT_LVL, NEW_SAFE_RANGE, }; - -#define LAYOUT_ansi_87( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ - K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ - K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, ___, K0E, K0F, K0G }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, ___, ___ }, \ - { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, ___, K4D, ___, K4F, ___ }, \ - { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \ -} - -#define LAYOUT_iso_88( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \ - K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, ___, K0E, K0F, K0G }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3D, K2E, K2F, K2G }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K2D, ___, ___, ___ }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, ___, K4D, ___, K4F, ___ }, \ - { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \ -} - -#define LAYOUT_jis_91( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ - K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ - K50, K51, K52, K53, K56, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3D, K2E, K2F, K2G }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K2D, ___, ___, ___ }, \ - { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \ - { K50, K51, K52, K53, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \ -} diff --git a/keyboards/keychron/k8_pro/readme.md b/keyboards/keychron/k8_pro/readme.md index e44c406920..f9dbc5920c 100644 --- a/keyboards/keychron/k8_pro/readme.md +++ b/keyboards/keychron/k8_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K8 Pro -![Keychron K8 Pro](https://cdn.shopify.com/s/files/1/0059/0630/1017/t/5/assets/keychronk8proqmkviawirelessmechanicalkeyboardformacwindowsosaprofilepbtkeycapspcbscrewinstabilizerwithhotswappablegaterongpromechanicalswitchcompatiblewithmxcherrypandakailhwithrgbbacklightaluminumframe-1645094681965.jpg) +![Keychron K8 Pro](https://drive.google.com/file/d/1UWZKX_vN2O5VxjHdVP0XIJjG4KnvBpjo/view?usp=share_link) A customizable 87 keys TKL keyboard. diff --git a/keyboards/keychron/k9_pro/ansi/rgb/config.h b/keyboards/keychron/k9_pro/ansi/rgb/config.h index a0c543a105..9fa8482dfe 100755 --- a/keyboards/keychron/k9_pro/ansi/rgb/config.h +++ b/keyboards/keychron/k9_pro/ansi/rgb/config.h @@ -23,13 +23,6 @@ # define DRIVER_1_LED_COUNT 61 # define RGB_MATRIX_LED_COUNT DRIVER_1_LED_COUNT -/* 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 - /* Set to infinite, which is use in USB mode by default */ # define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE diff --git a/keyboards/keychron/k9_pro/ansi/rgb/rgb.c b/keyboards/keychron/k9_pro/ansi/rgb/rgb.c index c6c1025f6f..5c21608995 100755 --- a/keyboards/keychron/k9_pro/ansi/rgb/rgb.c +++ b/keyboards/keychron/k9_pro/ansi/rgb/rgb.c @@ -19,77 +19,77 @@ // clang-format off #ifdef RGB_MATRIX_ENABLE const ckled2001_led 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, 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_13, J_13, K_13}, - {0, L_14, J_14, K_14}, + {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_13, J_13, K_13}, + {0, L_14, J_14, K_14}, - {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_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, 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_14, D_14, E_14}, + {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_14, D_14, E_14}, - {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_14, A_14, B_14}, + {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_14, A_14, B_14}, - {0, C_15, A_15, B_15}, - {0, C_16, A_16, B_16}, - {0, F_15, D_15, E_15}, - {0, F_16, D_16, E_16}, - {0, I_15, G_15, H_15}, - {0, I_16, G_16, H_16}, - {0, L_15, J_15, K_15}, - {0, L_16, J_16, K_16}, + {0, C_15, A_15, B_15}, + {0, C_16, A_16, B_16}, + {0, F_15, D_15, E_15}, + {0, F_16, D_16, E_16}, + {0, I_15, G_15, H_15}, + {0, I_16, G_16, H_16}, + {0, L_15, J_15, K_15}, + {0, L_16, J_16, K_16}, }; #define __ NO_LED diff --git a/keyboards/keychron/k9_pro/config.h b/keyboards/keychron/k9_pro/config.h index ecc63874cf..2aaa8929fa 100755 --- a/keyboards/keychron/k9_pro/config.h +++ b/keyboards/keychron/k9_pro/config.h @@ -41,6 +41,13 @@ #define LED_CAPS_LOCK_PIN A0 #define LED_PIN_ON_STATE 1 +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN A10 diff --git a/keyboards/keychron/k9_pro/k9_pro.c b/keyboards/keychron/k9_pro/k9_pro.c index d28b8728d5..6edf3a914b 100755 --- a/keyboards/keychron/k9_pro/k9_pro.c +++ b/keyboards/keychron/k9_pro/k9_pro.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 @@ -192,7 +192,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -220,6 +221,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/k9_pro/matrix.c b/keyboards/keychron/k9_pro/matrix.c index cfad39b5c9..c6710b22d5 100755 --- a/keyboards/keychron/k9_pro/matrix.c +++ b/keyboards/keychron/k9_pro/matrix.c @@ -14,9 +14,6 @@ * along with this program. If not, see . */ -#include "stdint.h" -#include "hal.h" -#include "gpio.h" #include "quantum.h" #define HC595_STCP B0 @@ -26,56 +23,6 @@ pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; -static inline void HC595_delay(uint16_t n) { - while (n-- > 0) { - asm volatile("nop" ::: "memory"); - } -} - -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI -// clang-format off -const SPIConfig hs_spicfg = { - .circular = false, - .slave = false, - .data_cb = NULL, - .error_cb = NULL, - .ssport = PAL_PORT(HC595_STCP), - .sspad = PAL_PAD(HC595_STCP), - .cr1 = SPI_CR1_BR_1, - .cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 | SPI_CR2_SSOE | SPI_CR2_NSSP -}; -// clang-format on -#endif -static void HC595_output(uint16_t data) { -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - spiSend(&SPID1, 1, &data); -#else - uint8_t i; - uint8_t n = 1; - - for (i = 16; i > 0; i--) { - writePinLow(HC595_SHCP); - - if (data & 0x8000) - writePinHigh(HC595_DS); - else - writePinLow(HC595_DS); - - data <<= 1; - - HC595_delay(n); - - writePinHigh(HC595_SHCP); - HC595_delay(n); - } - - HC595_delay(n); - writePinLow(HC595_STCP); - HC595_delay(n); - writePinHigh(HC595_STCP); -#endif -} - static inline void setPinOutput_writeLow(pin_t pin) { ATOMIC_BLOCK_FORCEON { setPinOutput(pin); @@ -83,7 +30,14 @@ static inline void setPinOutput_writeLow(pin_t pin) { } } -static inline void setPinInputHigh_atomic(pin_t 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); } @@ -97,16 +51,65 @@ static inline uint8_t readMatrixPin(pin_t pin) { } } +static inline void HC595_delay(uint16_t n) { + while (n-- > 0) { + asm volatile("nop" ::: "memory"); + } +} + +static void HC595_output(uint16_t data) { + ATOMIC_BLOCK_FORCEON { + for (uint8_t i = 0; i < MATRIX_COLS; i++) { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + data = data >> 1; + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + } + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + +static void HC595_output_oneBit(uint8_t data) { + ATOMIC_BLOCK_FORCEON { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + static bool select_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 0) { - if (pin != NO_PIN) { - setPinOutput_writeLow(pin); - return true; - } + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; } else { - HC595_output(~(0x01 << col)); + if (col == 0) { + HC595_output_oneBit(0x00); + } return true; } return false; @@ -115,81 +118,96 @@ static bool select_col(uint8_t col) { static void unselect_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 0) { - if (pin != NO_PIN) { - setPinInputHigh_atomic(pin); - } + if (pin != NO_PIN) { +#ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +#else + setPinInput_high(pin); +#endif } else { - if (col >= MATRIX_COLS - 1) HC595_output(0xFFFF); + HC595_output_oneBit(0x01); } } static void unselect_cols(void) { - if (col_pins[0] != NO_PIN) setPinInputHigh_atomic(col_pins[0]); - HC595_output(0xFFFF); + 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 + setPinInput_high(pin); +#endif + } else { + if (x == 0) HC595_output(0xFFFF); + } + } } void select_all_cols(void) { - if (col_pins[0] != NO_PIN) setPinOutput_writeLow(col_pins[0]); - HC595_output(0x0000); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + pin_t pin = col_pins[x]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + } else { + if (x == 0) HC595_output(0x0000); + } + } } -void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { +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 } - HC595_delay(100); + matrix_output_select_delay(); // 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] |= (MATRIX_ROW_SHIFTER << current_col); - // key_pressed = true; + current_matrix[row_index] |= row_shifter; + key_pressed = true; } else { // Pin HI, clear col bit - current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); + current_matrix[row_index] &= ~row_shifter; } } + // Unselect col unselect_col(current_col); - HC595_delay(100); + matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH } void matrix_init_custom(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - if (row_pins[x] != NO_PIN) { - setPinInputHigh_atomic(row_pins[x]); - } - } -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - palSetPadMode(PAL_PORT(HC595_SHCP), PAL_PAD(HC595_SHCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* SCK */ - palSetPadMode(PAL_PORT(HC595_DS), PAL_PAD(HC595_DS), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MOSI*/ - palSetPadMode(PAL_PORT(HC595_STCP), PAL_PAD(HC595_STCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* CS*/ - spiStart(&SPID1, &hs_spicfg); -#else setPinOutput(HC595_DS); setPinOutput(HC595_STCP); setPinOutput(HC595_SHCP); -#endif + + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + if (row_pins[x] != NO_PIN) { + setPinInput_high(row_pins[x]); + } + } + unselect_cols(); } bool matrix_scan_custom(matrix_row_t current_matrix[]) { - bool matrix_has_changed = false; - matrix_row_t curr_matrix[MATRIX_ROWS] = {0}; // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - matrix_read_rows_on_col(curr_matrix, current_col); + 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); } - matrix_has_changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; - if (matrix_has_changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); + bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; + if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); - return matrix_has_changed; + return changed; } diff --git a/keyboards/keychron/k9_pro/readme.md b/keyboards/keychron/k9_pro/readme.md index f3b5aa7c86..a42f295a0a 100755 --- a/keyboards/keychron/k9_pro/readme.md +++ b/keyboards/keychron/k9_pro/readme.md @@ -1,10 +1,12 @@ # Keychron K9 Pro +![Keychron K9 Pro]() + A customizable 60% keyboard. * Keyboard Maintainer: [Keychron](https://github.com/keychron) * Hardware Supported: Keychron K9 Pro -* Hardware Availability: [Keychron](https://www.keychron.com/) +* Hardware Availability: [Keychron K9 Pro]() Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/keychron/k9_pro/rules.mk b/keyboards/keychron/k9_pro/rules.mk index 1de119ff73..ee301839c3 100755 --- a/keyboards/keychron/k9_pro/rules.mk +++ b/keyboards/keychron/k9_pro/rules.mk @@ -7,9 +7,6 @@ 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 # USB Nkey 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 BLUETOOTH_ENABLE = no diff --git a/keyboards/keychron/q2_pro/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q2_pro/ansi_encoder/ansi_encoder.c index e74af39920..ca92d5e5f1 100755 --- a/keyboards/keychron/q2_pro/ansi_encoder/ansi_encoder.c +++ b/keyboards/keychron/q2_pro/ansi_encoder/ansi_encoder.c @@ -18,83 +18,83 @@ #ifdef RGB_MATRIX_ENABLE const ckled2001_led 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, C_16, A_16, B_16}, - {0, C_15, A_15, B_15}, - {0, C_14, A_14, B_14}, - {0, C_13, A_13, B_13}, - {0, C_12, A_12, B_12}, - {0, C_11, A_11, B_11}, - {0, C_10, A_10, B_10}, - {0, C_9, A_9, B_9}, - {0, C_8, A_8, B_8}, - {0, C_7, A_7, B_7}, - {0, C_6, A_6, B_6}, - {0, C_5, A_5, B_5}, - {0, C_4, A_4, B_4}, - {0, C_3, A_3, B_3}, - {0, C_1, A_1, B_1}, + {0, C_16, A_16, B_16}, + {0, C_15, A_15, B_15}, + {0, C_14, A_14, B_14}, + {0, C_13, A_13, B_13}, + {0, C_12, A_12, B_12}, + {0, C_11, A_11, B_11}, + {0, C_10, A_10, B_10}, + {0, C_9, A_9, B_9}, + {0, C_8, A_8, B_8}, + {0, C_7, A_7, B_7}, + {0, C_6, A_6, B_6}, + {0, C_5, A_5, B_5}, + {0, C_4, A_4, B_4}, + {0, C_3, A_3, B_3}, + {0, C_1, A_1, B_1}, - {0, F_16, D_16, E_16}, - {0, F_15, D_15, E_15}, - {0, F_14, D_14, E_14}, - {0, F_13, D_13, E_13}, - {0, F_12, D_12, E_12}, - {0, F_11, D_11, E_11}, - {0, F_10, D_10, E_10}, - {0, F_9, D_9, E_9}, - {0, F_8, D_8, E_8}, - {0, F_7, D_7, E_7}, - {0, F_6, D_6, E_6}, - {0, F_5, D_5, E_5}, - {0, F_4, D_4, E_4}, - {0, F_3, D_3, E_3}, - {0, F_1, D_1, E_1}, + {0, F_16, D_16, E_16}, + {0, F_15, D_15, E_15}, + {0, F_14, D_14, E_14}, + {0, F_13, D_13, E_13}, + {0, F_12, D_12, E_12}, + {0, F_11, D_11, E_11}, + {0, F_10, D_10, E_10}, + {0, F_9, D_9, E_9}, + {0, F_8, D_8, E_8}, + {0, F_7, D_7, E_7}, + {0, F_6, D_6, E_6}, + {0, F_5, D_5, E_5}, + {0, F_4, D_4, E_4}, + {0, F_3, D_3, E_3}, + {0, F_1, D_1, E_1}, - {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, C_1, A_1, B_1}, + {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, C_1, A_1, B_1}, - {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_2, G_2, H_2}, + {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_2, G_2, H_2}, - {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, 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} }; #define __ NO_LED diff --git a/keyboards/keychron/q2_pro/ansi_encoder/config.h b/keyboards/keychron/q2_pro/ansi_encoder/config.h index 5812a72a1d..9349e263bc 100755 --- a/keyboards/keychron/q2_pro/ansi_encoder/config.h +++ b/keyboards/keychron/q2_pro/ansi_encoder/config.h @@ -28,13 +28,6 @@ # define DRIVER_2_LED_TOTAL 37 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) -/* 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 - /* Set to infinit, which is use in USB mode by default */ # define RGB_MATRIX_TIMEOUT RGB_MATRIX_TIMEOUT_INFINITE diff --git a/keyboards/keychron/q2_pro/config.h b/keyboards/keychron/q2_pro/config.h index b42ea8559b..756af46e08 100755 --- a/keyboards/keychron/q2_pro/config.h +++ b/keyboards/keychron/q2_pro/config.h @@ -36,6 +36,13 @@ #define DIP_SWITCH_PINS \ { A8 } +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN C15 diff --git a/keyboards/keychron/q2_pro/matrix.c b/keyboards/keychron/q2_pro/matrix.c index b20774d370..c6710b22d5 100755 --- a/keyboards/keychron/q2_pro/matrix.c +++ b/keyboards/keychron/q2_pro/matrix.c @@ -14,70 +14,15 @@ * along with this program. If not, see . */ -#include "stdint.h" -#include "hal.h" -#include "gpio.h" #include "quantum.h" #define HC595_STCP B0 #define HC595_SHCP A1 #define HC595_DS A7 -#define DIRECT_COL_NUM 1 - pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; -static inline void HC595_delay(uint16_t n) { - while (n-- > 0) { - asm volatile("nop" ::: "memory"); - } -} - -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI -// clang-format off -const SPIConfig hs_spicfg = { - .circular = false, - .slave = false, - .data_cb = NULL, - .error_cb = NULL, - .ssport = PAL_PORT(HC595_STCP), - .sspad = PAL_PAD(HC595_STCP), - .cr1 = SPI_CR1_BR_1, - .cr2 = SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0 | SPI_CR2_SSOE | SPI_CR2_NSSP -}; -// clang-format on -#endif -static void HC595_output(uint16_t data) { -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - spiSend(&SPID1, 1, &data); -#else - uint8_t i; - uint8_t n = 1; - - for (i = 16; i > 0; i--) { - writePinLow(HC595_SHCP); - - if (data & 0x8000) - writePinHigh(HC595_DS); - else - writePinLow(HC595_DS); - - data <<= 1; - - HC595_delay(n); - - writePinHigh(HC595_SHCP); - HC595_delay(n); - } - - HC595_delay(n); - writePinLow(HC595_STCP); - HC595_delay(n); - writePinHigh(HC595_STCP); -#endif -} - static inline void setPinOutput_writeLow(pin_t pin) { ATOMIC_BLOCK_FORCEON { setPinOutput(pin); @@ -85,7 +30,14 @@ static inline void setPinOutput_writeLow(pin_t pin) { } } -static inline void setPinInputHigh_atomic(pin_t 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); } @@ -99,16 +51,65 @@ static inline uint8_t readMatrixPin(pin_t pin) { } } +static inline void HC595_delay(uint16_t n) { + while (n-- > 0) { + asm volatile("nop" ::: "memory"); + } +} + +static void HC595_output(uint16_t data) { + ATOMIC_BLOCK_FORCEON { + for (uint8_t i = 0; i < MATRIX_COLS; i++) { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + data = data >> 1; + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + } + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + +static void HC595_output_oneBit(uint8_t data) { + ATOMIC_BLOCK_FORCEON { + if (data & 0x1) { + writePinHigh(HC595_DS); + } else { + writePinLow(HC595_DS); + } + + writePinHigh(HC595_SHCP); + HC595_delay(1); + writePinLow(HC595_SHCP); + HC595_delay(1); + + writePinHigh(HC595_STCP); + HC595_delay(1); + writePinLow(HC595_STCP); + HC595_delay(1); + } +} + static bool select_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 0) { - if (pin != NO_PIN) { - setPinOutput_writeLow(pin); - return true; - } + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + return true; } else { - HC595_output(~(0x01 << col)); + if (col == 0) { + HC595_output_oneBit(0x00); + } return true; } return false; @@ -117,81 +118,96 @@ static bool select_col(uint8_t col) { static void unselect_col(uint8_t col) { pin_t pin = col_pins[col]; - if (col < 0) { - if (pin != NO_PIN) { - setPinInputHigh_atomic(pin); - } + if (pin != NO_PIN) { +#ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +#else + setPinInput_high(pin); +#endif } else { - if (col >= MATRIX_COLS - 1) HC595_output(0xFFFF); + HC595_output_oneBit(0x01); } } static void unselect_cols(void) { - if (col_pins[0] != NO_PIN) setPinInputHigh_atomic(col_pins[0]); - HC595_output(0xFFFF); + 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 + setPinInput_high(pin); +#endif + } else { + if (x == 0) HC595_output(0xFFFF); + } + } } void select_all_cols(void) { - if (col_pins[0] != NO_PIN) setPinOutput_writeLow(col_pins[0]); - HC595_output(0x0000); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + pin_t pin = col_pins[x]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + } else { + if (x == 0) HC595_output(0x0000); + } + } } -void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { +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 } - HC595_delay(100); + matrix_output_select_delay(); // 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] |= (MATRIX_ROW_SHIFTER << current_col); - // key_pressed = true; + current_matrix[row_index] |= row_shifter; + key_pressed = true; } else { // Pin HI, clear col bit - current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col); + current_matrix[row_index] &= ~row_shifter; } } + // Unselect col unselect_col(current_col); - HC595_delay(100); + matrix_output_unselect_delay(current_col, key_pressed); // wait for all Row signals to go HIGH } void matrix_init_custom(void) { - for (uint8_t x = 0; x < MATRIX_ROWS; x++) { - if (row_pins[x] != NO_PIN) { - setPinInputHigh_atomic(row_pins[x]); - } - } -#ifdef DRIVE_SHRIFT_REGISTER_WITH_SPI - palSetPadMode(PAL_PORT(HC595_SHCP), PAL_PAD(HC595_SHCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* SCK */ - palSetPadMode(PAL_PORT(HC595_DS), PAL_PAD(HC595_DS), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* MOSI*/ - palSetPadMode(PAL_PORT(HC595_STCP), PAL_PAD(HC595_STCP), PAL_MODE_ALTERNATE(5) | PAL_STM32_OSPEED_HIGHEST); /* CS*/ - spiStart(&SPID1, &hs_spicfg); -#else setPinOutput(HC595_DS); setPinOutput(HC595_STCP); setPinOutput(HC595_SHCP); -#endif + + for (uint8_t x = 0; x < MATRIX_ROWS; x++) { + if (row_pins[x] != NO_PIN) { + setPinInput_high(row_pins[x]); + } + } + unselect_cols(); } bool matrix_scan_custom(matrix_row_t current_matrix[]) { - bool matrix_has_changed = false; - matrix_row_t curr_matrix[MATRIX_ROWS] = {0}; // Set col, read rows - for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - matrix_read_rows_on_col(curr_matrix, current_col); + 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); } - matrix_has_changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; - if (matrix_has_changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); + bool changed = memcmp(current_matrix, curr_matrix, sizeof(curr_matrix)) != 0; + if (changed) memcpy(current_matrix, curr_matrix, sizeof(curr_matrix)); - return matrix_has_changed; + return changed; } diff --git a/keyboards/keychron/q2_pro/q2_pro.c b/keyboards/keychron/q2_pro/q2_pro.c index 1c430e4e66..72e36b4a54 100755 --- a/keyboards/keychron/q2_pro/q2_pro.c +++ b/keyboards/keychron/q2_pro/q2_pro.c @@ -176,7 +176,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -204,6 +205,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/q2_pro/readme.md b/keyboards/keychron/q2_pro/readme.md index c7cbdfe0b0..f46a26f308 100755 --- a/keyboards/keychron/q2_pro/readme.md +++ b/keyboards/keychron/q2_pro/readme.md @@ -1,18 +1,20 @@ # Keychron Q2 Pro +![Keychron Q2 Pro]() + A customizable 60% keyboard. * Keyboard Maintainer: [Keychron](https://github.com/keychron) * Hardware Supported: Keychron Q2 Pro -* Hardware Availability: [Keychron](https://www.keychron.com/) +* Hardware Availability: [Keychron Q2 Pro]() Make example for this keyboard (after setting up your build environment): - make keychron/q2_pro/ansi/rgb:default + make keychron/q2_pro/ansi_encoder:default Flashing example for this keyboard: - make keychron/q2_pro/ansi/rgb:default:flash + make keychron/q2_pro/ansi_encoder:default:flash **Reset Key**: Connect the USB cable, toggle mode switch to "Off", hold down the *Esc* key or reset button underneath space bar, then toggle then switch to "Cable". diff --git a/keyboards/keychron/q2_pro/rules.mk b/keyboards/keychron/q2_pro/rules.mk index d1f9ae0f7c..0824dfed8b 100755 --- a/keyboards/keychron/q2_pro/rules.mk +++ b/keyboards/keychron/q2_pro/rules.mk @@ -7,9 +7,6 @@ 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 # USB Nkey Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output DIP_SWITCH_ENABLE = yes BLUETOOTH_ENABLE = no BLUETOOTH_DRIVER = custom diff --git a/keyboards/keychron/q3_pro/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q3_pro/ansi_encoder/ansi_encoder.c index 0109bbd699..79a02ccfc5 100755 --- a/keyboards/keychron/q3_pro/ansi_encoder/ansi_encoder.c +++ b/keyboards/keychron/q3_pro/ansi_encoder/ansi_encoder.c @@ -19,109 +19,109 @@ // clang-format off #ifdef RGB_MATRIX_ENABLE const ckled2001_led 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}, - {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, C_4, A_4, B_4}, // 16 + {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, C_4, A_4, B_4}, // 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, C_14, A_14, B_14}, - {0, C_15, A_15, B_15}, - {0, C_16, A_16, B_16}, - {1, C_2, A_2, B_2}, // 17 + {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}, + {1, C_2, A_2, B_2}, // 17 - {1, F_13, D_13, E_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}, - {1, C_1, A_1, B_1}, // 17 + {1, F_13, D_13, E_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}, + {1, C_1, A_1, B_1}, // 17 - {1, F_12, D_12, E_12}, - {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}, // 13 + {1, F_12, D_12, E_12}, + {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}, // 13 - {1, F_8, D_8, E_8}, - {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}, // 13 + {1, F_8, D_8, E_8}, + {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}, // 13 - {1, F_7, D_7, E_7}, - {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, I_2, G_2, H_2}, + {1, F_7, D_7, E_7}, + {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, I_2, G_2, H_2}, }; #define __ NO_LED @@ -148,7 +148,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, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 4, 8, 4, 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, diff --git a/keyboards/keychron/q3_pro/ansi_encoder/config.h b/keyboards/keychron/q3_pro/ansi_encoder/config.h index ef89dd14b3..8c0fbb754c 100755 --- a/keyboards/keychron/q3_pro/ansi_encoder/config.h +++ b/keyboards/keychron/q3_pro/ansi_encoder/config.h @@ -26,13 +26,6 @@ # define DRIVER_2_LED_COUNT 44 # define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_COUNT + DRIVER_2_LED_COUNT) -/* 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 - /* 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/q3_pro/ansi_encoder/keymaps/via/keymap.c b/keyboards/keychron/q3_pro/ansi_encoder/keymaps/via/keymap.c index c83f780278..7751eb94e5 100755 --- a/keyboards/keychron/q3_pro/ansi_encoder/keymaps/via/keymap.c +++ b/keyboards/keychron/q3_pro/ansi_encoder/keymaps/via/keymap.c @@ -29,10 +29,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_BASE] = LAYOUT_ansi_92( KC_MUTE, KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, 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), + MACRO01, KC_TAB, KC_Q, KC_W, KC_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, + MACRO02, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + MACRO03, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + MACRO04, 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_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, @@ -45,10 +45,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [WIN_BASE] = LAYOUT_ansi_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_PSCR, KC_CTANA, RGB_MOD, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_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), + MACRO01, KC_TAB, KC_Q, KC_W, KC_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, + MACRO02, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + MACRO03, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + MACRO04, 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_92( RGB_TOG, _______, 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, diff --git a/keyboards/keychron/q3_pro/config.h b/keyboards/keychron/q3_pro/config.h index 7dc65d60da..a4f7aca1a5 100755 --- a/keyboards/keychron/q3_pro/config.h +++ b/keyboards/keychron/q3_pro/config.h @@ -36,6 +36,13 @@ #define DIP_SWITCH_PINS \ { A8 } +/* 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 + #ifdef KC_BLUETOOTH_ENABLE /* Hardware configuration */ # define USB_BT_MODE_SELECT_PIN C15 @@ -48,8 +55,6 @@ # define USB_POWER_CONNECTED_LEVEL 0 # define BAT_LOW_LED_PIN_STATE 1 -// # define BAT_LOW_LED_PIN NO_PIN -// # define BAT_LOW_LED_PIN_ON_STATE 1 # define HOST_DEVICES_COUNT 3 diff --git a/keyboards/keychron/q3_pro/matrix.c b/keyboards/keychron/q3_pro/matrix.c index 6dadb7cc27..f9d71e31a0 100755 --- a/keyboards/keychron/q3_pro/matrix.c +++ b/keyboards/keychron/q3_pro/matrix.c @@ -27,11 +27,9 @@ pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; extern indicator_config_t indicator_config; static uint32_t power_on_indicator_timer_buffer; -extern bool bat_low_led_pin_state; +extern bool bat_low_led_pin_state; -#ifndef POWER_ON_LED_DURATION -# define POWER_ON_LED_DURATION 3000 -#endif +#define POWER_ON_LED_DURATION 3000 static inline void HC595_delay(uint16_t n) { while (n-- > 0) { @@ -72,7 +70,7 @@ static inline void setPinOutput_writeLow(pin_t pin) { } } -static inline void setPinInputHigh_atomic(pin_t pin) { +static inline void setPinInput_high(pin_t pin) { ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); } @@ -141,7 +139,11 @@ static void unselect_col(uint8_t col) { uint32_t value = 0; if (pin != NO_PIN) { - setPinInputHigh_atomic(pin); +#ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +#else + setPinInput_high(pin); +#endif } else { if (power_on_indicator_timer_buffer) { if (sync_timer_elapsed32(power_on_indicator_timer_buffer) > POWER_ON_LED_DURATION) { @@ -202,17 +204,37 @@ static void unselect_col(uint8_t col) { } static void unselect_cols(void) { - if (col_pins[0] != NO_PIN) setPinInputHigh_atomic(col_pins[0]); - HC595_output(0xFFFFFFFF); - power_on_indicator_timer_buffer = sync_timer_read32() | 1; + 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 + setPinInput_high(pin); +#endif + } else { + if (x == 0) { + HC595_output(0xFFFFFFFF); + power_on_indicator_timer_buffer = sync_timer_read32() | 1; + } + } + } } void select_all_cols(void) { - if (col_pins[0] != NO_PIN) setPinOutput_writeLow(col_pins[0]); - if (host_keyboard_led_state().caps_lock) { - HC595_output(0x00000000 | (2 << 0)); - } else { - HC595_output(0x00000000); + for (uint8_t x = 0; x < MATRIX_COLS; x++) { + pin_t pin = col_pins[x]; + if (pin != NO_PIN) { + setPinOutput_writeLow(pin); + } else { + if (x == 0) { + if (host_keyboard_led_state().caps_lock) { + HC595_output(0x00000000 | (2 << 0)); + } else { + HC595_output(0x00000000); + } + } + } } } @@ -245,11 +267,13 @@ 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_atomic(row_pins[x]); + setPinInput_high(row_pins[x]); } } + unselect_cols(); } diff --git a/keyboards/keychron/q3_pro/q3_pro.c b/keyboards/keychron/q3_pro/q3_pro.c index bd66427785..b6c9815d02 100755 --- a/keyboards/keychron/q3_pro/q3_pro.c +++ b/keyboards/keychron/q3_pro/q3_pro.c @@ -176,7 +176,8 @@ void matrix_scan_kb(void) { #ifdef KC_BLUETOOTH_ENABLE static void ckbt51_param_init(void) { /* Set bluetooth device name */ - ckbt51_set_local_name(STR(PRODUCT)); + // ckbt51_set_local_name(STR(PRODUCT)); + ckbt51_set_local_name(PRODUCT); /* Set bluetooth parameters */ module_param_t param = {.event_mode = 0x02, .connected_idle_timeout = 7200, @@ -204,6 +205,21 @@ void bluetooth_enter_disconnected_kb(uint8_t host_idx) { } } +void ckbt51_default_ack_handler(uint8_t *data, uint8_t len) { + if (data[1] == 0x45) { + module_param_t param = {.event_mode = 0x02, + .connected_idle_timeout = 7200, + .pairing_timeout = 180, + .pairing_mode = 0, + .reconnect_timeout = 5, + .report_rate = 90, + .vendor_id_source = 1, + .verndor_id = 0, // Must be 0x3434 + .product_id = PRODUCT_ID}; + ckbt51_set_param(¶m); + } +} + void bluetooth_pre_task(void) { static uint8_t mode = 1; diff --git a/keyboards/keychron/q3_pro/readme.md b/keyboards/keychron/q3_pro/readme.md index 0929ad417e..d3008e7690 100755 --- a/keyboards/keychron/q3_pro/readme.md +++ b/keyboards/keychron/q3_pro/readme.md @@ -1,18 +1,20 @@ # Keychron Q3 Pro +![Keychron Q3 Pro]() + A customizable 80% TKL keyboard. * Keyboard Maintainer: [Keychron](https://github.com/keychron) -* Hardware Supported: Keychron K2 Pro -* Hardware Availability: [Keychron K2 Pro QMK/VIA Wireless Mechanical Keyboard](https://www.keychron.com/products/keychron-k2-pro-qmk-via-wireless-mechanical-keyboard) +* Hardware Supported: Keychron Q3 Pro +* Hardware Availability: [Keychron Q3 Pro]() Make example for this keyboard (after setting up your build environment): - make keychron/q3_pro/encoder/ansi/rgb:default + make keychron/q3_pro/ansi_encoder:default Flashing example for this keyboard: - make keychron/q3_pro/encoder/ansi/rgb:default:flash + make keychron/q3_pro/ansi_encoder:default:flash **Reset Key**: Connect the USB cable, toggle mode switch to "Off", hold down the *Esc* key or reset button underneath space bar, then toggle then switch to "Cable". diff --git a/keyboards/keychron/q3_pro/rules.mk b/keyboards/keychron/q3_pro/rules.mk index 1697bc331e..5f5fafa281 100755 --- a/keyboards/keychron/q3_pro/rules.mk +++ b/keyboards/keychron/q3_pro/rules.mk @@ -7,9 +7,6 @@ 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 # USB Nkey 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 BLUETOOTH_ENABLE = no From 75e4424287040ec570def18142390810a0b62389 Mon Sep 17 00:00:00 2001 From: lalalademaxiya1 <2831039915@qq.com> Date: Wed, 15 Mar 2023 17:06:21 +0800 Subject: [PATCH 2/7] Update readme.md --- keyboards/keychron/k13_pro/readme.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/keyboards/keychron/k13_pro/readme.md b/keyboards/keychron/k13_pro/readme.md index 82fe3d7b26..eb6ffefcd3 100755 --- a/keyboards/keychron/k13_pro/readme.md +++ b/keyboards/keychron/k13_pro/readme.md @@ -1,10 +1,12 @@ # Keychron K13 Pro +![Keychron K13 Pro](https://drive.google.com/file/d/17S4Afhfs4DmwBcnkvo94ipLIVgL3rsy7/view?usp=share_link) + A customizable 80% TKL keyboard. * Keyboard Maintainer: [Keychron](https://github.com/keychron) * Hardware Supported: Keychron K13 Pro -* Hardware Availability: [Keychron K13 Pro](https://drive.google.com/file/d/17S4Afhfs4DmwBcnkvo94ipLIVgL3rsy7/view?usp=share_link) +* Hardware Availability: [Keychron K13 Pro]() Make example for this keyboard (after setting up your build environment): From 1ff70d666a4c5f8ffa45adbdbd3f2628a4cbbdb4 Mon Sep 17 00:00:00 2001 From: lalalademaxiya1 <2831039915@qq.com> Date: Thu, 16 Mar 2023 11:49:53 +0800 Subject: [PATCH 3/7] Added pal callback function for Q2Pro and Q3Pro --- .../k10_pro/via_json/k10_pro_ansi_rgb.json | 510 +++++++++--------- .../k10_pro/via_json/k10_pro_ansi_white.json | 510 +++++++++--------- keyboards/keychron/k2_pro/jis/rgb/info.json | 2 +- keyboards/keychron/k2_pro/jis/white/info.json | 2 +- .../k2_pro/jis/white/keymaps/default/keymap.c | 16 +- .../k2_pro/jis/white/keymaps/via/keymap.c | 16 +- keyboards/keychron/k2_pro/readme.md | 2 +- .../k2_pro/via_json/k2_pro_ansi_rgb.json | 354 ++++++------ .../k2_pro/via_json/k2_pro_ansi_white.json | 353 ++++++------ .../k2_pro/via_json/k2_pro_iso_rgb.json | 367 ++++++------- .../k2_pro/via_json/k2_pro_iso_white.json | 368 ++++++------- .../k3_pro/via_json/k3_pro_ansi_rgb.json | 354 ++++++------ .../k3_pro/via_json/k3_pro_ansi_white.json | 354 ++++++------ .../k3_pro/via_json/k3_pro_iso_rgb .json | 368 ++++++------- .../k3_pro/via_json/k3_pro_iso_white.json | 365 +++++++------ .../k4_pro/via_json/k4_pro_ansi_rgb.json | 457 ++++++++-------- .../k4_pro/via_json/k4_pro_ansi_white.json | 457 ++++++++-------- .../k6_pro/via_json/k6_pro_ansi_rgb.json | 313 ++++++----- .../k6_pro/via_json/k6_pro_ansi_white.json | 311 ++++++----- .../k6_pro/via_json/k6_pro_iso_rgb.json | 329 +++++------ .../k6_pro/via_json/k6_pro_iso_white.json | 327 +++++------ .../k6_pro/via_json/k6_pro_jis_rgb.json | 62 +-- .../k7_pro/via_json/k7_pro_ansi_rgb.json | 307 ++++++----- .../k7_pro/via_json/k7_pro_ansi_white.json | 307 ++++++----- .../k8_pro/via_json/k8_pro_ansi_rgb.json | 404 +++++++------- .../k8_pro/via_json/k8_pro_ansi_white.json | 402 +++++++------- .../k8_pro/via_json/k8_pro_iso_rgb.json | 412 +++++++------- .../k8_pro/via_json/k8_pro_iso_white.json | 410 +++++++------- .../k8_pro/via_json/k8_pro_jis_rgb.json | 412 +++++++------- .../k8_pro/via_json/k8_pro_jis_white.json | 412 +++++++------- keyboards/keychron/q2_pro/q2_pro.c | 21 + keyboards/keychron/q3_pro/q3_pro.c | 17 + quantum/encoder.c | 17 +- quantum/encoder.h | 1 + 34 files changed, 4729 insertions(+), 4590 deletions(-) diff --git a/keyboards/keychron/k10_pro/via_json/k10_pro_ansi_rgb.json b/keyboards/keychron/k10_pro/via_json/k10_pro_ansi_rgb.json index 0301d74da8..a63cc2a3c4 100644 --- a/keyboards/keychron/k10_pro/via_json/k10_pro_ansi_rgb.json +++ b/keyboards/keychron/k10_pro/via_json/k10_pro_ansi_rgb.json @@ -80,257 +80,265 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 21}, -"layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "x": 1.0, - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - { - "x": 0.5 - }, - "0,5", - "0,6", - "0,7", - "0,8", - { - "x": 0.5 - }, - "0,9", - "0,10", - "0,11", - "0,12", - { - "x": 0.25 - }, - "0,14", - "0,15", - "0,16", - { - "x": 0.25 - }, - "0,17", - "0,18", - "0,19", - "0,20" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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 - }, - "1,17", - "1,18", - "1,19", - "1,20" - ], - [ - { - "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 - }, - "2,13", - { - "c": "#aaaaaa" - }, - { - "x": 0.25 - }, - "2,14", - "2,15", - "2,16", - { - "x": 0.25 - }, - "2,17", - "2,18", - "2,19", - { - "h": 2 - }, - "2,20" - ], - [ - { - "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": "#cccccc", - "x": 3.5 - }, - "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", - { - "c": "#cccccc", - "x": 1.25 - }, - "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", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,10", - { - "w": 1.25 - }, - "5,11", - { - "w": 1.25, - "c": "#cccccc" - }, - "5,12", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,13", - { - "x": 0.25, - "c": "#777777" - }, - "5,14", - "5,15", - "5,16", - { - "c": "#cccccc", - "x": 0.25 - }, - "5,17", - "5,18", - "5,19" - ] -] + "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", + { + "x": 0.25, + "c": "#cccccc" + }, + "0,17", + "0,18", + "0,19", + "0,20" + ], + [ + { + "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", + { + "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" + }, + "5,17", + "5,18", + "5,19" + ] + ] } } diff --git a/keyboards/keychron/k10_pro/via_json/k10_pro_ansi_white.json b/keyboards/keychron/k10_pro/via_json/k10_pro_ansi_white.json index 1efc78fb18..a3ba225638 100644 --- a/keyboards/keychron/k10_pro/via_json/k10_pro_ansi_white.json +++ b/keyboards/keychron/k10_pro/via_json/k10_pro_ansi_white.json @@ -20,257 +20,265 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 21}, -"layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "x": 1.0, - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - { - "x": 0.5 - }, - "0,5", - "0,6", - "0,7", - "0,8", - { - "x": 0.5 - }, - "0,9", - "0,10", - "0,11", - "0,12", - { - "x": 0.25 - }, - "0,14", - "0,15", - "0,16", - { - "x": 0.25 - }, - "0,17", - "0,18", - "0,19", - "0,20" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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 - }, - "1,17", - "1,18", - "1,19", - "1,20" - ], - [ - { - "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 - }, - "2,13", - { - "c": "#aaaaaa" - }, - { - "x": 0.25 - }, - "2,14", - "2,15", - "2,16", - { - "x": 0.25 - }, - "2,17", - "2,18", - "2,19", - { - "h": 2 - }, - "2,20" - ], - [ - { - "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": "#cccccc", - "x": 3.5 - }, - "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", - { - "c": "#cccccc", - "x": 1.25 - }, - "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", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,10", - { - "w": 1.25 - }, - "5,11", - { - "w": 1.25, - "c": "#cccccc" - }, - "5,12", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,13", - { - "x": 0.25, - "c": "#777777" - }, - "5,14", - "5,15", - "5,16", - { - "c": "#cccccc", - "x": 0.25 - }, - "5,17", - "5,18", - "5,19" - ] -] + "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", + { + "x": 0.25, + "c": "#cccccc" + }, + "0,17", + "0,18", + "0,19", + "0,20" + ], + [ + { + "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", + { + "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" + }, + "5,17", + "5,18", + "5,19" + ] + ] } } diff --git a/keyboards/keychron/k2_pro/jis/rgb/info.json b/keyboards/keychron/k2_pro/jis/rgb/info.json index 8910572942..a7fb5bcdbf 100755 --- a/keyboards/keychron/k2_pro/jis/rgb/info.json +++ b/keyboards/keychron/k2_pro/jis/rgb/info.json @@ -5,7 +5,7 @@ "maintainer": "lokher", "usb": { "vid": "0x3434", - "pid": "0x0223", + "pid": "0x0222", "device_version": "1.0.0" }, "processor": "STM32L432", diff --git a/keyboards/keychron/k2_pro/jis/white/info.json b/keyboards/keychron/k2_pro/jis/white/info.json index 8910572942..a1356e3eab 100755 --- a/keyboards/keychron/k2_pro/jis/white/info.json +++ b/keyboards/keychron/k2_pro/jis/white/info.json @@ -5,7 +5,7 @@ "maintainer": "lokher", "usb": { "vid": "0x3434", - "pid": "0x0223", + "pid": "0x0225", "device_version": "1.0.0" }, "processor": "STM32L432", diff --git a/keyboards/keychron/k2_pro/jis/white/keymaps/default/keymap.c b/keyboards/keychron/k2_pro/jis/white/keymaps/default/keymap.c index 92dfaf4ce4..8fc7ec7e4e 100755 --- a/keyboards/keychron/k2_pro/jis/white/keymaps/default/keymap.c +++ b/keyboards/keychron/k2_pro/jis/white/keymaps/default/keymap.c @@ -26,7 +26,7 @@ enum layers{ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_BASE] = LAYOUT( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_DEL, RGB_MOD, + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_INT3, KC_BSPC, KC_PGUP, // 32 KC_TAB, KC_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, // 46 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, // 61 @@ -34,15 +34,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), [MAC_FN] = LAYOUT( - 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, RGB_TOG, + 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, BL_TOGG, KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, + BL_TOGG, BL_STEP, BL_UP, 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, BL_DOWN, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), [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_PSCR, KC_DEL, 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_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_INT3, KC_PGUP, KC_TAB, KC_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,10 +50,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), [WIN_FN] = LAYOUT( - 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, KC_TRNS, RGB_TOG, + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, BL_TOGG, KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, + BL_TOGG, BL_STEP, BL_UP, 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, BL_DOWN, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), }; diff --git a/keyboards/keychron/k2_pro/jis/white/keymaps/via/keymap.c b/keyboards/keychron/k2_pro/jis/white/keymaps/via/keymap.c index 92dfaf4ce4..8fc7ec7e4e 100755 --- a/keyboards/keychron/k2_pro/jis/white/keymaps/via/keymap.c +++ b/keyboards/keychron/k2_pro/jis/white/keymaps/via/keymap.c @@ -26,7 +26,7 @@ enum layers{ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MAC_BASE] = LAYOUT( - KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, KC_DEL, RGB_MOD, + KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LNPD, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_SNAP, 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_INT3, KC_BSPC, KC_PGUP, // 32 KC_TAB, KC_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, // 46 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME, // 61 @@ -34,15 +34,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD,MO(MAC_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), [MAC_FN] = LAYOUT( - 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, RGB_TOG, + 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, BL_TOGG, KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, + BL_TOGG, BL_STEP, BL_UP, 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, BL_DOWN, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), [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_PSCR, KC_DEL, 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_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_INT3, KC_PGUP, KC_TAB, KC_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,10 +50,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(WIN_FN),KC_LEFT, KC_UP, KC_DOWN, KC_RGHT), [WIN_FN] = LAYOUT( - 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, KC_TRNS, RGB_TOG, + KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FILE, BL_DOWN, BL_UP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, BL_TOGG, KC_TRNS, BT_HST1, BT_HST2, BT_HST3, 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, + BL_TOGG, BL_STEP, BL_UP, 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, BL_DOWN, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS), }; diff --git a/keyboards/keychron/k2_pro/readme.md b/keyboards/keychron/k2_pro/readme.md index 0fcad1af38..5eb8fa477e 100644 --- a/keyboards/keychron/k2_pro/readme.md +++ b/keyboards/keychron/k2_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K2 Pro -![Keychron K2 Pro](https://drive.google.com/file/d/1AKk8VqiGtesZ1FBeFjVTBqW81kA8C3rD/view?usp=share_link) +![Keychron K2 Pro](https://drive.google.com/file/d/1etYZoY0CpTp2bf-gf7htmjaLzYmdTeIU/view?usp=share_link) A customizable 84 keys TKL keyboard. diff --git a/keyboards/keychron/k2_pro/via_json/k2_pro_ansi_rgb.json b/keyboards/keychron/k2_pro/via_json/k2_pro_ansi_rgb.json index 8f1a1cf01b..89ee59fbca 100644 --- a/keyboards/keychron/k2_pro/via_json/k2_pro_ansi_rgb.json +++ b/keyboards/keychron/k2_pro/via_json/k2_pro_ansi_rgb.json @@ -80,182 +80,186 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 16}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - "0,15" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - "1,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 - }, - "2,13", - { - "c": "#aaaaaa" - }, - "2,15" - ], - [ - { - "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": "#cccccc" - }, - "3,15" - ], - [ - { - "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", - { - "c": "#aaaaaa", - "w": 1.75 - }, - "4,12", - { - "c": "#777777" - }, - "4,13", - { - "c": "#cccccc" - }, - "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" - }, - "5,9", - "5,10", - "5,11", - { - "c": "#777777" - }, - "5,12", - "5,13", - "5,15" - ] -] + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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", + "1,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", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "2,13", + "2,15" + ], + [ + { + "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" + }, + "3,15" + ], + [ + { + "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,12", + { + "c": "#777777" + }, + "4,13", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + { + "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,9", + "5,10", + "5,11", + { + "c": "#777777" + }, + "5,12", + "5,13", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k2_pro/via_json/k2_pro_ansi_white.json b/keyboards/keychron/k2_pro/via_json/k2_pro_ansi_white.json index 40ca875373..fe6cf04c66 100644 --- a/keyboards/keychron/k2_pro/via_json/k2_pro_ansi_white.json +++ b/keyboards/keychron/k2_pro/via_json/k2_pro_ansi_white.json @@ -19,181 +19,186 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 16}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - "0,15" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - "1,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 - }, - "2,13", - { - "c": "#aaaaaa" - }, - "2,15" - ], - [ - { - "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": "#cccccc" - }, - "3,15" - ], - [ - { - "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", - { - "c": "#aaaaaa", - "w": 1.75 - }, - "4,12", - { - "c": "#777777" - }, - "4,13", - { - "c": "#cccccc" - }, - "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" - }, - "5,9", - "5,10", - "5,11", - { - "c": "#777777" - }, - "5,12", - "5,13", - "5,15" - ] -] + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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", + "1,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", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "2,13", + "2,15" + ], + [ + { + "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" + }, + "3,15" + ], + [ + { + "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,12", + { + "c": "#777777" + }, + "4,13", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + { + "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,9", + "5,10", + "5,11", + { + "c": "#777777" + }, + "5,12", + "5,13", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k2_pro/via_json/k2_pro_iso_rgb.json b/keyboards/keychron/k2_pro/via_json/k2_pro_iso_rgb.json index 94920bc47e..de9a24ab44 100644 --- a/keyboards/keychron/k2_pro/via_json/k2_pro_iso_rgb.json +++ b/keyboards/keychron/k2_pro/via_json/k2_pro_iso_rgb.json @@ -80,187 +80,194 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 16}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - "0,15" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - "1,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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "2,13", - { - "c": "#aaaaaa" - }, - "2,15" - ], - [ - { - "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", - "3,13", - { - "c": "#cccccc" - }, - { - "x": 1.25 - }, - "3,15" - ], - [ - { - "w": 1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "c": "#cccccc" - }, - "4,1", - "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,12", - { - "c": "#777777" - }, - "4,13", - { - "c": "#cccccc" - }, - "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" - }, - "5,9", - "5,10", - "5,11", - { - "c": "#777777" - }, - "5,12", - "5,13", - "5,15" - ] -] + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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", + "1,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "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": "#aaaaaa" + }, + "3,13", + { + "x": 1.25 + }, + "3,15" + ], + [ + { + "w": 1.25 + }, + "4,0", + "4,1", + { + "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,12", + { + "c": "#777777" + }, + "4,13", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + { + "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,9", + "5,10", + "5,11", + { + "c": "#777777" + }, + "5,12", + "5,13", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k2_pro/via_json/k2_pro_iso_white.json b/keyboards/keychron/k2_pro/via_json/k2_pro_iso_white.json index 61d89dce22..d67f9f77ef 100644 --- a/keyboards/keychron/k2_pro/via_json/k2_pro_iso_white.json +++ b/keyboards/keychron/k2_pro/via_json/k2_pro_iso_white.json @@ -19,188 +19,194 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 16}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - "0,15" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - "1,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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "2,13", - { - "c": "#aaaaaa" - }, - "2,15" - ], - [ - { - "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", - "3,13", - { - "c": "#cccccc" - }, - { - "x": 1.25 - }, - "3,15" - ], - [ - { - "w": 1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "c": "#cccccc" - }, - "4,1", - "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,12", - { - "c": "#777777" - }, - "4,13", - { - "c": "#cccccc" - }, - "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" - }, - "5,9", - "5,10", - "5,11", - { - "c": "#777777" - }, - "5,12", - "5,13", - "5,15" - ] -] + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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", + "1,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "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": "#aaaaaa" + }, + "3,13", + { + "x": 1.25 + }, + "3,15" + ], + [ + { + "w": 1.25 + }, + "4,0", + "4,1", + { + "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,12", + { + "c": "#777777" + }, + "4,13", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + { + "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,9", + "5,10", + "5,11", + { + "c": "#777777" + }, + "5,12", + "5,13", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k3_pro/via_json/k3_pro_ansi_rgb.json b/keyboards/keychron/k3_pro/via_json/k3_pro_ansi_rgb.json index e334217adb..c06e51c636 100644 --- a/keyboards/keychron/k3_pro/via_json/k3_pro_ansi_rgb.json +++ b/keyboards/keychron/k3_pro/via_json/k3_pro_ansi_rgb.json @@ -80,182 +80,186 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 16}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - "0,15" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - "1,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 - }, - "2,13", - { - "c": "#aaaaaa" - }, - "2,15" - ], - [ - { - "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": "#cccccc" - }, - "3,15" - ], - [ - { - "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", - { - "c": "#aaaaaa", - "w": 1.75 - }, - "4,13", - { - "c": "#777777" - }, - "4,14", - { - "c": "#cccccc" - }, - "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" - }, - "5,10", - "5,11", - "5,12", - { - "c": "#777777" - }, - "5,13", - "5,14", - "5,15" - ] -] + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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", + "1,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", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "2,13", + "2,15" + ], + [ + { + "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" + }, + "3,15" + ], + [ + { + "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", + { + "c": "#777777" + }, + "4,14", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + { + "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", + { + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k3_pro/via_json/k3_pro_ansi_white.json b/keyboards/keychron/k3_pro/via_json/k3_pro_ansi_white.json index 95c17b6a4c..1784904397 100644 --- a/keyboards/keychron/k3_pro/via_json/k3_pro_ansi_white.json +++ b/keyboards/keychron/k3_pro/via_json/k3_pro_ansi_white.json @@ -19,182 +19,186 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 16}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - "0,15" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - "1,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 - }, - "2,13", - { - "c": "#aaaaaa" - }, - "2,15" - ], - [ - { - "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": "#cccccc" - }, - "3,15" - ], - [ - { - "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", - { - "c": "#aaaaaa", - "w": 1.75 - }, - "4,13", - { - "c": "#777777" - }, - "4,14", - { - "c": "#cccccc" - }, - "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" - }, - "5,10", - "5,11", - "5,12", - { - "c": "#777777" - }, - "5,13", - "5,14", - "5,15" - ] -] + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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", + "1,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", + { + "c": "#aaaaaa", + "w": 1.5 + }, + "2,13", + "2,15" + ], + [ + { + "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" + }, + "3,15" + ], + [ + { + "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", + { + "c": "#777777" + }, + "4,14", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + { + "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", + { + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k3_pro/via_json/k3_pro_iso_rgb .json b/keyboards/keychron/k3_pro/via_json/k3_pro_iso_rgb .json index a3375c5551..cd5bdd373f 100644 --- a/keyboards/keychron/k3_pro/via_json/k3_pro_iso_rgb .json +++ b/keyboards/keychron/k3_pro/via_json/k3_pro_iso_rgb .json @@ -20,188 +20,194 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 16}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - "0,15" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - "1,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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "2,13", - { - "c": "#aaaaaa" - }, - "2,15" - ], - [ - { - "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", - "3,13", - { - "c": "#cccccc" - }, - { - "x": 1.25 - }, - "3,15" - ], - [ - { - "w": 1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "c": "#cccccc" - }, - "4,1", - "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", - { - "c": "#777777" - }, - "4,14", - { - "c": "#cccccc" - }, - "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" - }, - "5,10", - "5,11", - "5,12", - { - "c": "#777777" - }, - "5,13", - "5,14", - "5,15" - ] -] + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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", + "1,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "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": "#aaaaaa" + }, + "3,13", + { + "x": 1.25 + }, + "3,15" + ], + [ + { + "w": 1.25 + }, + "4,0", + "4,1", + { + "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", + { + "c": "#777777" + }, + "4,14", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + { + "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", + { + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k3_pro/via_json/k3_pro_iso_white.json b/keyboards/keychron/k3_pro/via_json/k3_pro_iso_white.json index 185b0c7831..e855ccac6d 100644 --- a/keyboards/keychron/k3_pro/via_json/k3_pro_iso_white.json +++ b/keyboards/keychron/k3_pro/via_json/k3_pro_iso_white.json @@ -22,184 +22,191 @@ ], "matrix": {"rows": 6, "cols": 16}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - "0,15" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - "1,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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "2,13", - { - "c": "#aaaaaa" - }, - "2,15" - ], - [ - { - "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", - "3,13", - { - "c": "#cccccc" - }, - { - "x": 1.25 - }, - "3,15" - ], - [ - { - "w": 1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "c": "#cccccc" - }, - "4,1", - "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", - { - "c": "#777777" - }, - "4,14", - { - "c": "#cccccc" - }, - "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" - }, - "5,10", - "5,11", - "5,12", - { - "c": "#777777" - }, - "5,13", - "5,14", - "5,15" - ] -] + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + "0,15" + ], + [ + "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", + "1,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "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": "#aaaaaa" + }, + "3,13", + { + "x": 1.25 + }, + "3,15" + ], + [ + { + "w": 1.25 + }, + "4,0", + "4,1", + { + "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", + { + "c": "#777777" + }, + "4,14", + { + "c": "#aaaaaa" + }, + "4,15" + ], + [ + { + "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", + { + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k4_pro/via_json/k4_pro_ansi_rgb.json b/keyboards/keychron/k4_pro/via_json/k4_pro_ansi_rgb.json index daf83d4802..8db94e1c66 100644 --- a/keyboards/keychron/k4_pro/via_json/k4_pro_ansi_rgb.json +++ b/keyboards/keychron/k4_pro/via_json/k4_pro_ansi_rgb.json @@ -80,228 +80,241 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 18}, -"layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - { - "x":0.55 - }, - "0,15", - "0,16", - "0,17", - "3,17" - ], - [ - { - "y":0.26 - }, - "1,0", - "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.00 - }, - "1,13", - { - "x":0.55, - "c": "#cccccc" - }, - "1,14", - "1,15", - "1,16", - "1,17" - ], - [ - { - "w":1.50 - }, - "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.50 - }, - "2,13", - { - "c": "#aaaaaa", - "x":0.56 - }, - "2,14", - "2,15", - "2,16", - { - "h":2.00 - }, - "2,17" - ], - [ - { - "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.56, - "c": "#cccccc" - }, - "3,14", - "3,15", - "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":1.75 - }, - "4,12", - { - "x":0.28, - "y": 0.25, - "c": "#777777" - }, - "4,13", - { - "x":0.28, - "y": -0.25, - "c": "#cccccc" - }, - "4,14", - "4,15", - "4,16", - { - "h":2 - }, - "4,17" - ], - [ - { - "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", - { - "c": "#cccccc" - }, - "5,11", - { - "c": "#aaaaaa" - }, - "5,12", - { - "x":0.28, - "y": 0.25, - "c": "#777777" - }, - "5,13", - "5,14", - "5,15", - { - "x":0.28, - "y": -0.25, - "c": "#cccccc" - }, - "5,16", - "5,17" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + { + "x": 0.5500000000000007 + }, + "0,15", + "0,16", + "0,17", + "3,17" + ], + [ + { + "y": 0.26 + }, + "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.5500000000000007, + "c": "#cccccc" + }, + "1,14", + "1,15", + "1,16", + "1,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.5600000000000005, + "c": "#cccccc" + }, + "2,14", + "2,15", + "2,16", + { + "h": 2 + }, + "2,17" + ], + [ + { + "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": 0.5600000000000005, + "c": "#cccccc" + }, + "3,14", + "3,15", + "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": 1.75 + }, + "4,12", + { + "x": 1.5599999999999987, + "c": "#cccccc" + }, + "4,14", + "4,15", + "4,16", + { + "h": 2 + }, + "4,17" + ], + [ + { + "y": -0.75, + "x": 14.28, + "c": "#777777" + }, + "4,13" + ], + [ + { + "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", + { + "x": 3.5600000000000023, + "c": "#cccccc" + }, + "5,16", + "5,17" + ], + [ + { + "y": -0.75, + "x": 13.28, + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k4_pro/via_json/k4_pro_ansi_white.json b/keyboards/keychron/k4_pro/via_json/k4_pro_ansi_white.json index 15a66ad702..a26782c88d 100644 --- a/keyboards/keychron/k4_pro/via_json/k4_pro_ansi_white.json +++ b/keyboards/keychron/k4_pro/via_json/k4_pro_ansi_white.json @@ -19,228 +19,241 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 18}, -"layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - "0,13", - "0,14", - { - "x":0.55 - }, - "0,15", - "0,16", - "0,17", - "3,17" - ], - [ - { - "y":0.26 - }, - "1,0", - "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.00 - }, - "1,13", - { - "x":0.55, - "c": "#cccccc" - }, - "1,14", - "1,15", - "1,16", - "1,17" - ], - [ - { - "w":1.50 - }, - "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.50 - }, - "2,13", - { - "c": "#aaaaaa", - "x":0.56 - }, - "2,14", - "2,15", - "2,16", - { - "h":2.00 - }, - "2,17" - ], - [ - { - "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.56, - "c": "#cccccc" - }, - "3,14", - "3,15", - "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":1.75 - }, - "4,12", - { - "x":0.28, - "y": 0.25, - "c": "#777777" - }, - "4,13", - { - "x":0.28, - "y": -0.25, - "c": "#cccccc" - }, - "4,14", - "4,15", - "4,16", - { - "h":2 - }, - "4,17" - ], - [ - { - "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", - { - "c": "#cccccc" - }, - "5,11", - { - "c": "#aaaaaa" - }, - "5,12", - { - "x":0.28, - "y": 0.25, - "c": "#777777" - }, - "5,13", - "5,14", - "5,15", - { - "x":0.28, - "y": -0.25, - "c": "#cccccc" - }, - "5,16", - "5,17" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "0,13", + "0,14", + { + "x": 0.5500000000000007 + }, + "0,15", + "0,16", + "0,17", + "3,17" + ], + [ + { + "y": 0.26 + }, + "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.5500000000000007, + "c": "#cccccc" + }, + "1,14", + "1,15", + "1,16", + "1,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.5600000000000005, + "c": "#cccccc" + }, + "2,14", + "2,15", + "2,16", + { + "h": 2 + }, + "2,17" + ], + [ + { + "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": 0.5600000000000005, + "c": "#cccccc" + }, + "3,14", + "3,15", + "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": 1.75 + }, + "4,12", + { + "x": 1.5599999999999987, + "c": "#cccccc" + }, + "4,14", + "4,15", + "4,16", + { + "h": 2 + }, + "4,17" + ], + [ + { + "y": -0.75, + "x": 14.28, + "c": "#777777" + }, + "4,13" + ], + [ + { + "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", + { + "x": 3.5600000000000023, + "c": "#cccccc" + }, + "5,16", + "5,17" + ], + [ + { + "y": -0.75, + "x": 13.28, + "c": "#777777" + }, + "5,13", + "5,14", + "5,15" + ] + ] } } diff --git a/keyboards/keychron/k6_pro/via_json/k6_pro_ansi_rgb.json b/keyboards/keychron/k6_pro/via_json/k6_pro_ansi_rgb.json index 39f1933b08..284e9ed2d3 100644 --- a/keyboards/keychron/k6_pro/via_json/k6_pro_ansi_rgb.json +++ b/keyboards/keychron/k6_pro/via_json/k6_pro_ansi_rgb.json @@ -80,163 +80,162 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 5, "cols": 15}, - "layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - { - "w":2.00 - }, - "0,13", - { - "c": "#cccccc" - }, - "0,14" - ], - [ - { - "w":1.50, - "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":1.50 - }, - "1,13", - "1,14" - ], - [ - { - "w":1.75, - "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", - { - "w":2.25, - "c": "#777777" - }, - "2,13", - { - "c": "#cccccc" - }, - "2,14" - ], - [ - { - "w":2.25, - "c": "#aaaaaa" - }, - "3,0", - { - "c": "#cccccc" - }, - "3,2", - "3,3", - "3,4", - "3,5", - "3,6", - "3,7", - "3,8", - "3,9", - "3,10", - "3,11", - { - "w":1.75, - "c": "#aaaaaa" - }, - "3,12", - { - "c": "#777777" - }, - "3,13", - { - "c": "#cccccc" - }, - "3,14" - ], - [ - { - "w":1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "w":1.25 - }, - "4,1", - { - "w":1.25 - }, - "4,2", - { - "w":6.25, - "c": "#cccccc" - }, - "4,6", - { - "c": "#aaaaaa" - }, - "4,9", - { - "c": "#cccccc" - }, - "4,10", - "4,11", - { - "c": "#777777" - }, - "4,12", - "4,13", - "4,14" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,13", + "0,14" + ], + [ + { + "w": 1.5 + }, + "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": 1.5 + }, + "1,13", + "1,14" + ], + [ + { + "w": 1.75 + }, + "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", + { + "c": "#777777", + "w": 2.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,14" + ], + [ + { + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,12", + { + "c": "#777777" + }, + "3,13", + { + "c": "#aaaaaa" + }, + "3,14" + ], + [ + { + "w": 1.25 + }, + "4,0", + { + "w": 1.25 + }, + "4,1", + { + "w": 1.25 + }, + "4,2", + { + "c": "#cccccc", + "w": 6.25 + }, + "4,6", + { + "c": "#aaaaaa" + }, + "4,9", + "4,10", + "4,11", + { + "c": "#777777" + }, + "4,12", + "4,13", + "4,14" + ] + ] } } diff --git a/keyboards/keychron/k6_pro/via_json/k6_pro_ansi_white.json b/keyboards/keychron/k6_pro/via_json/k6_pro_ansi_white.json index 26d6bf7834..84c85cdd1f 100644 --- a/keyboards/keychron/k6_pro/via_json/k6_pro_ansi_white.json +++ b/keyboards/keychron/k6_pro/via_json/k6_pro_ansi_white.json @@ -21,161 +21,160 @@ {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} ], "matrix": {"rows": 5, "cols": 15}, - "layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - { - "w":2.00 - }, - "0,13", - { - "c": "#cccccc" - }, - "0,14" - ], - [ - { - "w":1.50, - "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":1.50 - }, - "1,13", - "1,14" - ], - [ - { - "w":1.75, - "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", - { - "w":2.25, - "c": "#777777" - }, - "2,13", - { - "c": "#cccccc" - }, - "2,14" - ], - [ - { - "w":2.25, - "c": "#aaaaaa" - }, - "3,0", - { - "c": "#cccccc" - }, - "3,2", - "3,3", - "3,4", - "3,5", - "3,6", - "3,7", - "3,8", - "3,9", - "3,10", - "3,11", - { - "w":1.75, - "c": "#aaaaaa" - }, - "3,12", - { - "c": "#777777" - }, - "3,13", - { - "c": "#cccccc" - }, - "3,14" - ], - [ - { - "w":1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "w":1.25 - }, - "4,1", - { - "w":1.25 - }, - "4,2", - { - "w":6.25, - "c": "#cccccc" - }, - "4,6", - { - "c": "#aaaaaa" - }, - "4,9", - { - "c": "#cccccc" - }, - "4,10", - "4,11", - { - "c": "#777777" - }, - "4,12", - "4,13", - "4,14" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + { + "c": "#aaaaaa" + }, + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + { + "c": "#cccccc" + }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,13", + "0,14" + ], + [ + { + "w": 1.5 + }, + "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": 1.5 + }, + "1,13", + "1,14" + ], + [ + { + "w": 1.75 + }, + "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", + { + "c": "#777777", + "w": 2.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,14" + ], + [ + { + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,12", + { + "c": "#777777" + }, + "3,13", + { + "c": "#aaaaaa" + }, + "3,14" + ], + [ + { + "w": 1.25 + }, + "4,0", + { + "w": 1.25 + }, + "4,1", + { + "w": 1.25 + }, + "4,2", + { + "c": "#cccccc", + "w": 6.25 + }, + "4,6", + { + "c": "#aaaaaa" + }, + "4,9", + "4,10", + "4,11", + { + "c": "#777777" + }, + "4,12", + "4,13", + "4,14" + ] + ] } } diff --git a/keyboards/keychron/k6_pro/via_json/k6_pro_iso_rgb.json b/keyboards/keychron/k6_pro/via_json/k6_pro_iso_rgb.json index 47519ca522..9addc88194 100644 --- a/keyboards/keychron/k6_pro/via_json/k6_pro_iso_rgb.json +++ b/keyboards/keychron/k6_pro/via_json/k6_pro_iso_rgb.json @@ -80,170 +80,171 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 5, "cols": 15}, - "layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - { - "w":2.00 - }, - "0,13", - { - "c": "#cccccc" - }, - "0,14" - ], - [ - { - "w":1.50, - "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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "1,13", - { - "c": "#cccccc" - }, - "1,14" - ], - [ - { - "w":1.75, - "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,13", - { - "x": 1.25, - "c": "#cccccc" - }, - "2,14" - ], - [ - { - "w":1.25, - "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":1.75, - "c": "#aaaaaa" - }, - "3,12", - { - "c": "#777777" - }, - "3,13", - { - "c": "#cccccc" - }, - "3,14" - ], - [ - { - "w":1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "w":1.25 - }, - "4,1", - { - "w":1.25 - }, - "4,2", - { - "w":6.25, - "c": "#cccccc" - }, - "4,6", - { - "c": "#aaaaaa" - }, - "4,9", - { - "c": "#cccccc" - }, - "4,10", - "4,11", - { - "c": "#777777" - }, - "4,12", - "4,13", - "4,14" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "w":2.00 + }, + "0,13", + { + "c": "#cccccc" + }, + "0,14" + ], + [ + { + "w":1.50, + "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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "1,13", + { + "c": "#cccccc" + }, + "1,14" + ], + [ + { + "w":1.75, + "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,13", + { + "x": 1.25, + "c": "#cccccc" + }, + "2,14" + ], + [ + { + "w":1.25, + "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":1.75, + "c": "#aaaaaa" + }, + "3,12", + { + "c": "#777777" + }, + "3,13", + { + "c": "#cccccc" + }, + "3,14" + ], + [ + { + "w":1.25, + "c": "#aaaaaa" + }, + "4,0", + { + "w":1.25 + }, + "4,1", + { + "w":1.25 + }, + "4,2", + { + "w":6.25, + "c": "#cccccc" + }, + "4,6", + { + "c": "#aaaaaa" + }, + "4,9", + { + "c": "#cccccc" + }, + "4,10", + "4,11", + { + "c": "#777777" + }, + "4,12", + "4,13", + "4,14" + ] + ] } } diff --git a/keyboards/keychron/k6_pro/via_json/k6_pro_iso_white.json b/keyboards/keychron/k6_pro/via_json/k6_pro_iso_white.json index c2bffbad7c..209bb52afd 100644 --- a/keyboards/keychron/k6_pro/via_json/k6_pro_iso_white.json +++ b/keyboards/keychron/k6_pro/via_json/k6_pro_iso_white.json @@ -21,168 +21,169 @@ {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} ], "matrix": {"rows": 5, "cols": 15}, - "layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - { - "w":2.00 - }, - "0,13", - { - "c": "#cccccc" - }, - "0,14" - ], - [ - { - "w":1.50, - "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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "1,13", - { - "c": "#cccccc" - }, - "1,14" - ], - [ - { - "w":1.75, - "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,13", - { - "x": 1.25, - "c": "#cccccc" - }, - "2,14" - ], - [ - { - "w":1.25, - "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":1.75, - "c": "#aaaaaa" - }, - "3,12", - { - "c": "#777777" - }, - "3,13", - { - "c": "#cccccc" - }, - "3,14" - ], - [ - { - "w":1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "w":1.25 - }, - "4,1", - { - "w":1.25 - }, - "4,2", - { - "w":6.25, - "c": "#cccccc" - }, - "4,6", - { - "c": "#aaaaaa" - }, - "4,9", - { - "c": "#cccccc" - }, - "4,10", - "4,11", - { - "c": "#777777" - }, - "4,12", - "4,13", - "4,14" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "w":2.00 + }, + "0,13", + { + "c": "#cccccc" + }, + "0,14" + ], + [ + { + "w":1.50, + "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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "1,13", + { + "c": "#cccccc" + }, + "1,14" + ], + [ + { + "w":1.75, + "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,13", + { + "x": 1.25, + "c": "#cccccc" + }, + "2,14" + ], + [ + { + "w":1.25, + "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":1.75, + "c": "#aaaaaa" + }, + "3,12", + { + "c": "#777777" + }, + "3,13", + { + "c": "#cccccc" + }, + "3,14" + ], + [ + { + "w":1.25, + "c": "#aaaaaa" + }, + "4,0", + { + "w":1.25 + }, + "4,1", + { + "w":1.25 + }, + "4,2", + { + "w":6.25, + "c": "#cccccc" + }, + "4,6", + { + "c": "#aaaaaa" + }, + "4,9", + { + "c": "#cccccc" + }, + "4,10", + "4,11", + { + "c": "#777777" + }, + "4,12", + "4,13", + "4,14" + ] + ] } } diff --git a/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json b/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json index a9ddb73821..515e233a3f 100644 --- a/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json +++ b/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json @@ -80,11 +80,11 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 5, "cols": 15}, "layouts": { "keymap": [ - [ + [ { "c": "#777777" }, @@ -96,25 +96,30 @@ "0,2", "0,3", "0,4", + { + "c": "#aaaaaa" + }, "0,5", "0,6", "0,7", "0,8", "0,9", - "0,10", - "0,11", - "0,12", - "2,12", - "0,13", { "c": "#cccccc" }, + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa" + }, + "2,12", + "0,13", "0,14" ], [ { - "w":1.50, - "c": "#aaaaaa" + "w": 1.5 }, "1,0", { @@ -143,14 +148,13 @@ }, "1,13", { - "c": "#cccccc" + "c": "#aaaaaa" }, "1,14" ], [ { - "w":1.75, - "c": "#aaaaaa" + "w": 1.75 }, "2,0", { @@ -167,17 +171,18 @@ "2,9", "2,10", "2,11", + { + "c": "#aaaaaa" + }, "2,13", { - "x": 1.25, - "c": "#cccccc" + "x": 1.25 }, "2,14" ], [ { - "w":2.25, - "c": "#aaaaaa" + "w": 2.25 }, "3,0", { @@ -193,38 +198,30 @@ "3,9", "3,10", "3,11", - "3,12", { - "w":1.75, "c": "#aaaaaa" }, - "3,13", + "3,12", { - "c": "#cccccc" + "w": 1.75 }, + "3,13", "3,14" ], [ { - "w":1.25, - "c": "#aaaaaa" + "w": 1.25 }, "4,0", - { - "w":1 - }, "4,1", { - "w":1.25 + "w": 1.25 }, "4,2", - { - "w":1, - "c": "#cccccc" - }, "4,3", { - "w":4.5 + "c": "#cccccc", + "w": 4.5 }, "4,6", { @@ -232,9 +229,6 @@ }, "4,8", "4,9", - { - "c": "#cccccc" - }, "4,10", "4,11", { diff --git a/keyboards/keychron/k7_pro/via_json/k7_pro_ansi_rgb.json b/keyboards/keychron/k7_pro/via_json/k7_pro_ansi_rgb.json index a94b23cdec..50b05af2a7 100644 --- a/keyboards/keychron/k7_pro/via_json/k7_pro_ansi_rgb.json +++ b/keyboards/keychron/k7_pro/via_json/k7_pro_ansi_rgb.json @@ -80,163 +80,156 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 5, "cols": 16}, - "layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - { - "w":2.00 - }, - "0,13", - { - "c": "#cccccc" - }, - "0,15" - ], - [ - { - "w":1.50, - "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":1.50 - }, - "1,13", - "1,15" - ], - [ - { - "w":1.75, - "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", - { - "w":2.25, - "c": "#777777" - }, - "2,13", - { - "c": "#cccccc" - }, - "2,15" - ], - [ - { - "w":2.25, - "c": "#aaaaaa" - }, - "3,0", - { - "c": "#cccccc" - }, - "3,2", - "3,3", - "3,4", - "3,5", - "3,6", - "3,7", - "3,8", - "3,9", - "3,10", - "3,11", - { - "w":1.75, - "c": "#aaaaaa" - }, - "3,13", - { - "c": "#777777" - }, - "3,14", - { - "c": "#cccccc" - }, - "3,15" - ], - [ - { - "w":1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "w":1.25 - }, - "4,1", - { - "w":1.25 - }, - "4,2", - { - "w":6.25, - "c": "#cccccc" - }, - "4,6", - { - "c": "#aaaaaa" - }, - "4,10", - { - "c": "#cccccc" - }, - "4,11", - "4,12", - { - "c": "#777777" - }, - "4,13", - "4,14", - "4,15" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,13", + "0,15" + ], + [ + { + "w": 1.5 + }, + "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": 1.5 + }, + "1,13", + "1,15" + ], + [ + { + "w": 1.75 + }, + "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", + { + "c": "#777777", + "w": 2.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,13", + { + "c": "#777777" + }, + "3,14", + { + "c": "#aaaaaa" + }, + "3,15" + ], + [ + { + "w": 1.25 + }, + "4,0", + { + "w": 1.25 + }, + "4,1", + { + "w": 1.25 + }, + "4,2", + { + "c": "#cccccc", + "w": 6.25 + }, + "4,6", + { + "c": "#aaaaaa" + }, + "4,10", + "4,11", + "4,12", + { + "c": "#777777" + }, + "4,13", + "4,14", + "4,15" + ] + ] } } diff --git a/keyboards/keychron/k7_pro/via_json/k7_pro_ansi_white.json b/keyboards/keychron/k7_pro/via_json/k7_pro_ansi_white.json index 3769ee5876..9d33e3a728 100644 --- a/keyboards/keychron/k7_pro/via_json/k7_pro_ansi_white.json +++ b/keyboards/keychron/k7_pro/via_json/k7_pro_ansi_white.json @@ -19,163 +19,156 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 5, "cols": 16}, - "layouts":{ - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - "0,5", - "0,6", - "0,7", - "0,8", - "0,9", - "0,10", - "0,11", - "0,12", - { - "w":2.00 - }, - "0,13", - { - "c": "#cccccc" - }, - "0,15" - ], - [ - { - "w":1.50, - "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":1.50 - }, - "1,13", - "1,15" - ], - [ - { - "w":1.75, - "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", - { - "w":2.25, - "c": "#777777" - }, - "2,13", - { - "c": "#cccccc" - }, - "2,15" - ], - [ - { - "w":2.25, - "c": "#aaaaaa" - }, - "3,0", - { - "c": "#cccccc" - }, - "3,2", - "3,3", - "3,4", - "3,5", - "3,6", - "3,7", - "3,8", - "3,9", - "3,10", - "3,11", - { - "w":1.75, - "c": "#aaaaaa" - }, - "3,13", - { - "c": "#777777" - }, - "3,14", - { - "c": "#cccccc" - }, - "3,15" - ], - [ - { - "w":1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "w":1.25 - }, - "4,1", - { - "w":1.25 - }, - "4,2", - { - "w":6.25, - "c": "#cccccc" - }, - "4,6", - { - "c": "#aaaaaa" - }, - "4,10", - { - "c": "#cccccc" - }, - "4,11", - "4,12", - { - "c": "#777777" - }, - "4,13", - "4,14", - "4,15" - ]] + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "0,0", + { + "c": "#cccccc" + }, + "0,1", + "0,2", + "0,3", + "0,4", + "0,5", + "0,6", + "0,7", + "0,8", + "0,9", + "0,10", + "0,11", + "0,12", + { + "c": "#aaaaaa", + "w": 2 + }, + "0,13", + "0,15" + ], + [ + { + "w": 1.5 + }, + "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": 1.5 + }, + "1,13", + "1,15" + ], + [ + { + "w": 1.75 + }, + "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", + { + "c": "#777777", + "w": 2.25 + }, + "2,13", + { + "c": "#aaaaaa" + }, + "2,15" + ], + [ + { + "w": 2.25 + }, + "3,0", + { + "c": "#cccccc" + }, + "3,2", + "3,3", + "3,4", + "3,5", + "3,6", + "3,7", + "3,8", + "3,9", + "3,10", + "3,11", + { + "c": "#aaaaaa", + "w": 1.75 + }, + "3,13", + { + "c": "#777777" + }, + "3,14", + { + "c": "#aaaaaa" + }, + "3,15" + ], + [ + { + "w": 1.25 + }, + "4,0", + { + "w": 1.25 + }, + "4,1", + { + "w": 1.25 + }, + "4,2", + { + "c": "#cccccc", + "w": 6.25 + }, + "4,6", + { + "c": "#aaaaaa" + }, + "4,10", + "4,11", + "4,12", + { + "c": "#777777" + }, + "4,13", + "4,14", + "4,15" + ] + ] } } diff --git a/keyboards/keychron/k8_pro/via_json/k8_pro_ansi_rgb.json b/keyboards/keychron/k8_pro/via_json/k8_pro_ansi_rgb.json index 23760da415..c7fb4fd806 100644 --- a/keyboards/keychron/k8_pro/via_json/k8_pro_ansi_rgb.json +++ b/keyboards/keychron/k8_pro/via_json/k8_pro_ansi_rgb.json @@ -80,208 +80,210 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 17}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "x": 1.0, - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - { - "x": 0.5 - }, - "0,5", - "0,6", - "0,7", - "0,8", - { - "x": 0.5 - }, - "0,9", - "0,10", - "0,11", - "0,12", - { - "x": 0.25 - }, - "0,14", - "0,15", - "0,16" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - { - "w": 1.5 - }, - "2,13", - { - "c": "#aaaaaa" - }, - { - "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" - ], - [ - { - "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", - { - "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", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,10", - { - "w": 1.25 - }, - "5,11", - { - "w": 1.25, - "c": "#cccccc" - }, - "5,12", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,13", - { - "x": 0.25, - "c": "#777777" - }, - "5,14", - "5,15", - "5,16" - ] -] + "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/k8_pro/via_json/k8_pro_ansi_white.json b/keyboards/keychron/k8_pro/via_json/k8_pro_ansi_white.json index e7ba87de5d..73edacfb06 100644 --- a/keyboards/keychron/k8_pro/via_json/k8_pro_ansi_white.json +++ b/keyboards/keychron/k8_pro/via_json/k8_pro_ansi_white.json @@ -22,205 +22,207 @@ ], "matrix": {"rows": 6, "cols": 17}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "x": 1.0, - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - { - "x": 0.5 - }, - "0,5", - "0,6", - "0,7", - "0,8", - { - "x": 0.5 - }, - "0,9", - "0,10", - "0,11", - "0,12", - { - "x": 0.25 - }, - "0,14", - "0,15", - "0,16" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - { - "w": 1.5 - }, - "2,13", - { - "c": "#aaaaaa" - }, - { - "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" - ], - [ - { - "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", - { - "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", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,10", - { - "w": 1.25 - }, - "5,11", - { - "w": 1.25, - "c": "#cccccc" - }, - "5,12", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,13", - { - "x": 0.25, - "c": "#777777" - }, - "5,14", - "5,15", - "5,16" - ] -] + "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/k8_pro/via_json/k8_pro_iso_rgb.json b/keyboards/keychron/k8_pro/via_json/k8_pro_iso_rgb.json index db0d15ab01..f345c7554a 100644 --- a/keyboards/keychron/k8_pro/via_json/k8_pro_iso_rgb.json +++ b/keyboards/keychron/k8_pro/via_json/k8_pro_iso_rgb.json @@ -80,211 +80,215 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 17}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "x": 1.0, - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - { - "x": 0.5 - }, - "0,5", - "0,6", - "0,7", - "0,8", - { - "x": 0.5 - }, - "0,9", - "0,10", - "0,11", - "0,12", - { - "x": 0.25 - }, - "0,14", - "0,15", - "0,16" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "2,13", - { - "c": "#aaaaaa" - }, - { - "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", - "3,13" - ], - [ - { - "w": 1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "c": "#cccccc" - }, - "4,1", - "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", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,10", - { - "w": 1.25 - }, - "5,11", - { - "w": 1.25, - "c": "#cccccc" - }, - "5,12", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,13", - { - "x": 0.25, - "c": "#777777" - }, - "5,14", - "5,15", - "5,16" - ] -] + "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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "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": "#aaaaaa" + }, + "3,13" + ], + [ + { + "w": 1.25 + }, + "4,0", + "4,1", + { + "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/k8_pro/via_json/k8_pro_iso_white.json b/keyboards/keychron/k8_pro/via_json/k8_pro_iso_white.json index 3f41280d78..457a3a4279 100644 --- a/keyboards/keychron/k8_pro/via_json/k8_pro_iso_white.json +++ b/keyboards/keychron/k8_pro/via_json/k8_pro_iso_white.json @@ -22,208 +22,212 @@ ], "matrix": {"rows": 6, "cols": 17}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "x": 1.0, - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - { - "x": 0.5 - }, - "0,5", - "0,6", - "0,7", - "0,8", - { - "x": 0.5 - }, - "0,9", - "0,10", - "0,11", - "0,12", - { - "x": 0.25 - }, - "0,14", - "0,15", - "0,16" - ], - [ - { - "y": 0.25 - }, - "1,0", - "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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "2,13", - { - "c": "#aaaaaa" - }, - { - "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", - "3,13" - ], - [ - { - "w": 1.25, - "c": "#aaaaaa" - }, - "4,0", - { - "c": "#cccccc" - }, - "4,1", - "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", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,10", - { - "w": 1.25 - }, - "5,11", - { - "w": 1.25, - "c": "#cccccc" - }, - "5,12", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,13", - { - "x": 0.25, - "c": "#777777" - }, - "5,14", - "5,15", - "5,16" - ] -] + "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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "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": "#aaaaaa" + }, + "3,13" + ], + [ + { + "w": 1.25 + }, + "4,0", + "4,1", + { + "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/k8_pro/via_json/k8_pro_jis_rgb.json b/keyboards/keychron/k8_pro/via_json/k8_pro_jis_rgb.json index b7b9713e44..d1572f02a4 100644 --- a/keyboards/keychron/k8_pro/via_json/k8_pro_jis_rgb.json +++ b/keyboards/keychron/k8_pro/via_json/k8_pro_jis_rgb.json @@ -80,209 +80,215 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 17}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "x": 1.0, - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - { - "x": 0.5 - }, - "0,5", - "0,6", - "0,7", - "0,8", - { - "x": 0.5 - }, - "0,9", - "0,10", - "0,11", - "0,12", - { - "x": 0.25 - }, - "0,14", - "0,15", - "0,16" - ], - [ - { - "y": 0.25 - }, - "1,0", - "1,1", - "1,2", - "1,3", - "1,4", - "1,5", - "1,6", - "1,7", - "1,8", - "1,9", - "1,10", - "1,11", - "1,12", - "1,13", - "0,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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "2,13", - { - "c": "#aaaaaa" - }, - { - "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", - "3,13" - ], - [ - { - "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", - "4,12", - { - "c": "#aaaaaa", - "w":1.75 - }, - "4,13", - { - "x": 1.25, - "c": "#777777" - }, - "4,15" - ], - [ - { - "c": "#aaaaaa", - "w": 1.25 - }, - "5,0", - "5,1", - { - "w": 1.25 - }, - "5,2", - { - "c": "#cccccc" - }, - "5,3", - { - "w":4.75 - }, - "5,6", - "5,9", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,10", - { - "w": 1.25 - }, - - "5,11", - { - "c": "#cccccc" - }, - "5,12", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,13", - { - "x": 0.25, - "c": "#777777" - }, - "5,14", - "5,15", - "5,16" - ] -] - } + "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" + }, + "1,13", + "0,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "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": "#aaaaaa" + }, + "3,13" + ], + [ + { + "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" + }, + "4,12", + { + "w": 1.75 + }, + "4,13", + { + "x": 1.25, + "c": "#777777" + }, + "4,15" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "5,0", + "5,1", + { + "w": 1.25 + }, + "5,2", + "5,3", + { + "c": "#cccccc", + "w": 4.75 + }, + "5,6", + { + "c": "#aaaaaa" + }, + "5,9", + { + "w": 1.25 + }, + "5,10", + { + "w": 1.25 + }, + "5,11", + "5,12", + { + "w": 1.25 + }, + "5,13", + { + "x": 0.25, + "c": "#777777" + }, + "5,14", + "5,15", + "5,16" + ] + ] + } } diff --git a/keyboards/keychron/k8_pro/via_json/k8_pro_jis_white.json b/keyboards/keychron/k8_pro/via_json/k8_pro_jis_white.json index cc492e66e0..4abc685456 100644 --- a/keyboards/keychron/k8_pro/via_json/k8_pro_jis_white.json +++ b/keyboards/keychron/k8_pro/via_json/k8_pro_jis_white.json @@ -19,209 +19,215 @@ {"name": "Bluetooth Host 2", "title": "Bluetooth Host 2", "shortName": "BTH2"}, {"name": "Bluetooth Host 3", "title": "Bluetooth Host 3", "shortName": "BTH3"}, {"name": "Battery Level", "title": "Show battery level", "shortName": "Batt"} - ], + ], "matrix": {"rows": 6, "cols": 17}, "layouts": { - "keymap":[ - [ - { - "c": "#777777" - }, - "0,0", - { - "x": 1.0, - "c": "#cccccc" - }, - "0,1", - "0,2", - "0,3", - "0,4", - { - "x": 0.5 - }, - "0,5", - "0,6", - "0,7", - "0,8", - { - "x": 0.5 - }, - "0,9", - "0,10", - "0,11", - "0,12", - { - "x": 0.25 - }, - "0,14", - "0,15", - "0,16" - ], - [ - { - "y": 0.25 - }, - "1,0", - "1,1", - "1,2", - "1,3", - "1,4", - "1,5", - "1,6", - "1,7", - "1,8", - "1,9", - "1,10", - "1,11", - "1,12", - "1,13", - "0,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", - { - "x": 0.25, - "c": "#777777", - "w": 1.25, - "h": 2, - "w2": 1.5, - "h2": 1, - "x2": -0.25 - }, - "2,13", - { - "c": "#aaaaaa" - }, - { - "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", - "3,13" - ], - [ - { - "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", - "4,12", - { - "c": "#aaaaaa", - "w":1.75 - }, - "4,13", - { - "x": 1.25, - "c": "#777777" - }, - "4,15" - ], - [ - { - "c": "#aaaaaa", - "w": 1.25 - }, - "5,0", - "5,1", - { - "w": 1.25 - }, - "5,2", - { - "c": "#cccccc" - }, - "5,3", - { - "w":4.75 - }, - "5,6", - "5,9", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,10", - { - "w": 1.25 - }, - - "5,11", - { - "c": "#cccccc" - }, - "5,12", - { - "w": 1.25, - "c": "#aaaaaa" - }, - "5,13", - { - "x": 0.25, - "c": "#777777" - }, - "5,14", - "5,15", - "5,16" - ] -] - } + "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" + }, + "1,13", + "0,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", + { + "x": 0.25, + "c": "#777777", + "w": 1.25, + "h": 2, + "w2": 1.5, + "h2": 1, + "x2": -0.25 + }, + "2,13", + { + "x": 0.25, + "c": "#aaaaaa" + }, + "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": "#aaaaaa" + }, + "3,13" + ], + [ + { + "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" + }, + "4,12", + { + "w": 1.75 + }, + "4,13", + { + "x": 1.25, + "c": "#777777" + }, + "4,15" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "5,0", + "5,1", + { + "w": 1.25 + }, + "5,2", + "5,3", + { + "c": "#cccccc", + "w": 4.75 + }, + "5,6", + { + "c": "#aaaaaa" + }, + "5,9", + { + "w": 1.25 + }, + "5,10", + { + "w": 1.25 + }, + "5,11", + "5,12", + { + "w": 1.25 + }, + "5,13", + { + "x": 0.25, + "c": "#777777" + }, + "5,14", + "5,15", + "5,16" + ] + ] + } } diff --git a/keyboards/keychron/q2_pro/q2_pro.c b/keyboards/keychron/q2_pro/q2_pro.c index 72e36b4a54..55551bbc58 100755 --- a/keyboards/keychron/q2_pro/q2_pro.c +++ b/keyboards/keychron/q2_pro/q2_pro.c @@ -141,6 +141,14 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return true; } +#ifdef KC_BLUETOOTH_ENABLE +void encoder0_pad_cb(void *param) { + (void)param; + + encoder_insert_state(); +} +#endif + void keyboard_post_init_kb(void) { dip_switch_read(true); @@ -155,6 +163,15 @@ void keyboard_post_init_kb(void) { ckbt51_init(false); bluetooth_init(); + + pin_t encoders_pad_a[NUM_ENCODERS] = ENCODERS_PAD_A; + pin_t encoders_pad_b[NUM_ENCODERS] = ENCODERS_PAD_B; + for (uint8_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], encoder0_pad_cb, NULL); + palSetLineCallback(encoders_pad_b[i], encoder0_pad_cb, NULL); + } #endif keyboard_post_init_user(); @@ -289,3 +306,7 @@ void raw_hid_receive(uint8_t *data, uint8_t length) { } } #endif + +void restart_usb_driver(USBDriver *usbp) { + (void)usbp; +} diff --git a/keyboards/keychron/q3_pro/q3_pro.c b/keyboards/keychron/q3_pro/q3_pro.c index b6c9815d02..a3437ff669 100755 --- a/keyboards/keychron/q3_pro/q3_pro.c +++ b/keyboards/keychron/q3_pro/q3_pro.c @@ -140,6 +140,14 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { return true; } +#ifdef KC_BLUETOOTH_ENABLE +void encoder0_pad_cb(void *param) { + (void)param; + + encoder_insert_state(); +} +#endif + void keyboard_post_init_kb(void) { dip_switch_read(true); @@ -154,6 +162,15 @@ void keyboard_post_init_kb(void) { ckbt51_init(false); bluetooth_init(); + + pin_t encoders_pad_a[NUM_ENCODERS] = ENCODERS_PAD_A; + pin_t encoders_pad_b[NUM_ENCODERS] = ENCODERS_PAD_B; + for (uint8_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], encoder0_pad_cb, NULL); + palSetLineCallback(encoders_pad_b[i], encoder0_pad_cb, NULL); + } #endif keyboard_post_init_user(); diff --git a/quantum/encoder.c b/quantum/encoder.c index 3aee340249..25ddab0c3c 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -54,8 +54,9 @@ 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_external_update[NUM_ENCODERS] = {false}; // encoder counts static uint8_t thisCount; @@ -221,10 +222,11 @@ 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_external_update[i]) { encoder_state[i] <<= 2; encoder_state[i] |= new_status; changed |= encoder_update(i, encoder_state[i]); + encoder_external_update[i] = false; } } return changed; @@ -268,3 +270,12 @@ void encoder_update_raw(uint8_t *slave_state) { if (changed) last_encoder_activity_trigger(); } #endif + +void encoder_insert_state(void) { + for (uint8_t i = 0; i < thisCount; i++) { + encoder_state[i] <<= 2; + encoder_state[i] |= (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); + encoder_pulses[i] += encoder_LUT[encoder_state[i] & 0xF]; + encoder_external_update[i] = true; + } +} diff --git a/quantum/encoder.h b/quantum/encoder.h index 4eb67fa25d..bc02889ee8 100644 --- a/quantum/encoder.h +++ b/quantum/encoder.h @@ -25,6 +25,7 @@ bool encoder_read(void); bool encoder_update_kb(uint8_t index, bool clockwise); bool encoder_update_user(uint8_t index, bool clockwise); +void encoder_insert_state(void); #ifdef SPLIT_KEYBOARD From 89be39f130c8a16db6763c849cbff2975fd3a9b9 Mon Sep 17 00:00:00 2001 From: lalalademaxiya1 <2831039915@qq.com> Date: Thu, 16 Mar 2023 12:16:36 +0800 Subject: [PATCH 4/7] Update encoder.c and encoder.h --- quantum/encoder.c | 22 ++++++++++------------ quantum/encoder.h | 2 +- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/quantum/encoder.c b/quantum/encoder.c index 25ddab0c3c..7b3738f9a1 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -56,7 +56,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_external_update[NUM_ENCODERS] = {false}; +static bool encoder_interrupt_update[NUM_ENCODERS] = {false}; // encoder counts static uint8_t thisCount; @@ -222,16 +222,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 || encoder_external_update[i]) { + 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_external_update[i] = false; + encoder_interrupt_update[i] = false; } } return changed; } +void encoder_inerrupt_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); @@ -270,12 +277,3 @@ void encoder_update_raw(uint8_t *slave_state) { if (changed) last_encoder_activity_trigger(); } #endif - -void encoder_insert_state(void) { - for (uint8_t i = 0; i < thisCount; i++) { - encoder_state[i] <<= 2; - encoder_state[i] |= (readPin(encoders_pad_a[i]) << 0) | (readPin(encoders_pad_b[i]) << 1); - encoder_pulses[i] += encoder_LUT[encoder_state[i] & 0xF]; - encoder_external_update[i] = true; - } -} diff --git a/quantum/encoder.h b/quantum/encoder.h index bc02889ee8..fb0fd18aa8 100644 --- a/quantum/encoder.h +++ b/quantum/encoder.h @@ -25,7 +25,7 @@ bool encoder_read(void); bool encoder_update_kb(uint8_t index, bool clockwise); bool encoder_update_user(uint8_t index, bool clockwise); -void encoder_insert_state(void); +void encoder_inerrupt_read(uint8_t index); #ifdef SPLIT_KEYBOARD From 0b639a4dee0d71cf21d03aca8988168471d48e99 Mon Sep 17 00:00:00 2001 From: lalalademaxiya1 <2831039915@qq.com> Date: Thu, 16 Mar 2023 12:26:58 +0800 Subject: [PATCH 5/7] Update readme.md --- keyboards/keychron/k5_pro/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/keychron/k5_pro/readme.md b/keyboards/keychron/k5_pro/readme.md index a02434fa90..a53b180b5e 100755 --- a/keyboards/keychron/k5_pro/readme.md +++ b/keyboards/keychron/k5_pro/readme.md @@ -1,6 +1,6 @@ # Keychron K5 Pro -![Keychron K3 Pro](https://drive.google.com/file/d/1Sfc0C-Ye0S2wW6eYiaJfluRCJI-b-UKE/view?usp=share_link) +![Keychron K5 Pro](https://drive.google.com/file/d/1Sfc0C-Ye0S2wW6eYiaJfluRCJI-b-UKE/view?usp=share_link) A customizable 100% keyboard. From 0170134118ae902a804cefd7bdff8bc122d25da4 Mon Sep 17 00:00:00 2001 From: lalalademaxiya1 <2831039915@qq.com> Date: Thu, 16 Mar 2023 14:23:24 +0800 Subject: [PATCH 6/7] Update k6_pro_jis_rgb.json --- keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json b/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json index 515e233a3f..c8cb3f7e4a 100644 --- a/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json +++ b/keyboards/keychron/k6_pro/via_json/k6_pro_jis_rgb.json @@ -103,10 +103,10 @@ "0,6", "0,7", "0,8", - "0,9", { "c": "#cccccc" }, + "0,9", "0,10", "0,11", "0,12", From 0f35f0e2ed1343765422bc9abf4fe240768b4130 Mon Sep 17 00:00:00 2001 From: lalalademaxiya1 <2831039915@qq.com> Date: Thu, 16 Mar 2023 14:56:17 +0800 Subject: [PATCH 7/7] Update encoder.c --- quantum/encoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/encoder.c b/quantum/encoder.c index 7b3738f9a1..e2029fa376 100644 --- a/quantum/encoder.c +++ b/quantum/encoder.c @@ -40,6 +40,7 @@ extern volatile bool isLeftHand; static pin_t encoders_pad_a[NUM_ENCODERS_MAX_PER_SIDE] = ENCODERS_PAD_A; static pin_t encoders_pad_b[NUM_ENCODERS_MAX_PER_SIDE] = ENCODERS_PAD_B; +static bool encoder_interrupt_update[NUM_ENCODERS] = {false}; #ifdef ENCODER_RESOLUTIONS static uint8_t encoder_resolutions[NUM_ENCODERS] = ENCODER_RESOLUTIONS; @@ -56,7 +57,6 @@ 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;