/*---------------------------------------------------------*\ | QMKKechronController_Devices.cpp | | | | Keychron device matrix correction data | | | | This file is part of the OpenRGB project | | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ #include "QMKKeychronController_Devices.h" #define KEYCHRON_PATCH_ENTRIES_COUNT(entries) (sizeof(entries) / sizeof(keychron_patch_entry)) /*---------------------------------------------------------*\ | Keychron Patch Types | | The Keychron protocol does not provide RGB matrix X/Y | | coordinates, only the position in the wiring matrix. | | For most Keychron keyboards, the wiring matrix mostly | | matches the physical position, but there are often a | | few misplaced LEDs. Implement a matrix patching system | | to apply keyboard-specific patches for these misplaced | | LEDs. | \*---------------------------------------------------------*/ /*---------------------------------------------------------*\ | Geometry Group 1: | | 0x0522 C2 Pro 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_001_patch_entries[] = { { 35, 1, 19 }, { 36, 1, 20 }, { 56, 2, 19 }, { 57, 2, 20 }, { 70, 3, 12 }, { 73, 3, 19 }, { 85, 4, 12 }, { 89, 4, 19 }, { 90, 4, 20 }, { 103, 5, 19 }, }; static const keychron_patch keychron_c2_pro_8k_patch = { KEYCHRON_C2_PRO_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_001_patch_entries), keychron_group_001_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 2: | | 0x0532 C3 Pro 8K JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_002_patch_entries[] = { { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 29, 1, 13 }, { 30, 1, 14 }, { 31, 1, 15 }, { 32, 1, 16 }, { 33, 1, 17 }, { 48, 2, 15 }, { 49, 2, 16 }, { 50, 2, 17 }, { 63, 3, 12 }, { 77, 4, 16 }, { 88, 5, 15 }, { 89, 5, 16 }, { 90, 5, 17 }, }; static const keychron_patch keychron_c3_pro_8k_jis_patch = { KEYCHRON_C3_PRO_8K_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_002_patch_entries), keychron_group_002_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 3: | | 0x0A11 K1 Max ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_003_patch_entries[] = { { 62, 3, 12 }, { 75, 4, 12 }, }; static const keychron_patch keychron_k1_max_iso_patch = { KEYCHRON_K1_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_003_patch_entries), keychron_group_003_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 4: | | 0x0A12 K1 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_004_patch_entries[] = { { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 33, 1, 17 }, { 48, 2, 15 }, { 49, 2, 16 }, { 50, 2, 17 }, { 63, 3, 12 }, { 77, 4, 16 }, { 88, 5, 15 }, { 89, 5, 16 }, { 90, 5, 17 }, }; static const keychron_patch keychron_k1_max_jis_patch = { KEYCHRON_K1_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_004_patch_entries), keychron_group_004_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 5: | | 0x0A10 K1 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_005_patch_entries[] = { { 62, 3, 12 }, { 74, 4, 12 }, }; static const keychron_patch keychron_k1_max_patch = { KEYCHRON_K1_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_005_patch_entries), keychron_group_005_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 6: | | 0x0D12 K1 Version 6 JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_006_patch_entries[] = { { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 30, 1, 14 }, { 31, 1, 15 }, { 32, 1, 16 }, { 33, 1, 17 }, { 48, 2, 15 }, { 49, 2, 16 }, { 50, 2, 17 }, { 63, 3, 12 }, { 77, 4, 16 }, { 88, 5, 15 }, { 89, 5, 16 }, { 90, 5, 17 }, }; static const keychron_patch keychron_k1_v6_jis_patch = { KEYCHRON_K1_V6_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_006_patch_entries), keychron_group_006_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 9: | | 0x0AA1 K10 Max ISO | | 0x16A1 K10 Ultra 8K ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_009_patch_entries[] = { { 19, 0, 20 }, { 40, 1, 20 }, { 61, 2, 20 }, { 90, 4, 12 }, { 95, 4, 20 }, { 107, 5, 17 }, }; static const keychron_patch keychron_k10_max_iso_patch = { KEYCHRON_K10_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_009_patch_entries), keychron_group_009_patch_entries }; static const keychron_patch keychron_k10_ultra_8k_iso_16a1_patch = { KEYCHRON_K10_ULTRA_8K_ISO_16A1_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_009_patch_entries), keychron_group_009_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 10: | | 0x0AA2 K10 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_010_patch_entries[] = { { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 16, 0, 18 }, { 17, 0, 19 }, { 18, 0, 20 }, { 19, 0, 21 }, { 33, 1, 13 }, { 34, 1, 14 }, { 35, 1, 15 }, { 36, 1, 16 }, { 37, 1, 17 }, { 38, 1, 18 }, { 39, 1, 19 }, { 40, 1, 20 }, { 41, 1, 21 }, { 56, 2, 15 }, { 57, 2, 16 }, { 58, 2, 17 }, { 59, 2, 18 }, { 60, 2, 19 }, { 61, 2, 20 }, { 62, 2, 21 }, { 76, 3, 18 }, { 77, 3, 19 }, { 78, 3, 20 }, { 92, 4, 16 }, { 93, 4, 18 }, { 94, 4, 19 }, { 95, 4, 20 }, { 96, 4, 21 }, { 107, 5, 15 }, { 108, 5, 16 }, { 109, 5, 17 }, { 111, 5, 20 }, }; static const keychron_patch keychron_k10_max_jis_patch = { KEYCHRON_K10_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_010_patch_entries), keychron_group_010_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 11: | | 0x0AA0 K10 Max | | 0x16A0 K10 Ultra 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_011_patch_entries[] = { { 19, 0, 20 }, { 40, 1, 20 }, { 61, 2, 20 }, { 89, 4, 12 }, { 94, 4, 20 }, { 106, 5, 17 }, }; static const keychron_patch keychron_k10_max_patch = { KEYCHRON_K10_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_011_patch_entries), keychron_group_011_patch_entries }; static const keychron_patch keychron_k10_ultra_8k_patch = { KEYCHRON_K10_ULTRA_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_011_patch_entries), keychron_group_011_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 12: | | 0x16A3 K10 Ultra 8K ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_012_patch_entries[] = { { 36, 1, 20 }, { 57, 2, 20 }, { 86, 4, 12 }, { 91, 4, 20 }, { 103, 5, 17 }, }; static const keychron_patch keychron_k10_ultra_8k_iso_16a3_patch = { KEYCHRON_K10_ULTRA_8K_ISO_16A3_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_012_patch_entries), keychron_group_012_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 13: | | 0x0DA1 K10 Version 2 ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_013_patch_entries[] = { { 70, 3, 12 }, { 86, 4, 12 }, { 104, 5, 19 }, }; static const keychron_patch keychron_k10_v2_iso_patch = { KEYCHRON_K10_V2_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_013_patch_entries), keychron_group_013_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 14: | | 0x0DA2 K10 Version 2 JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_014_patch_entries[] = { { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 30, 1, 14 }, { 31, 1, 15 }, { 32, 1, 16 }, { 33, 1, 17 }, { 34, 1, 18 }, { 35, 1, 19 }, { 36, 1, 20 }, { 37, 1, 21 }, { 52, 2, 15 }, { 53, 2, 16 }, { 54, 2, 17 }, { 55, 2, 18 }, { 56, 2, 19 }, { 57, 2, 20 }, { 58, 2, 21 }, { 71, 3, 12 }, { 72, 3, 18 }, { 73, 3, 19 }, { 74, 3, 20 }, { 88, 4, 16 }, { 89, 4, 18 }, { 90, 4, 19 }, { 91, 4, 20 }, { 92, 4, 21 }, { 103, 5, 15 }, { 104, 5, 16 }, { 105, 5, 17 }, { 106, 5, 18 }, { 107, 5, 20 }, }; static const keychron_patch keychron_k10_v2_jis_patch = { KEYCHRON_K10_V2_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_014_patch_entries), keychron_group_014_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 15: | | 0x0DA0 K10X | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_015_patch_entries[] = { { 70, 3, 12 }, { 85, 4, 12 }, { 103, 5, 19 }, }; static const keychron_patch keychron_k10x_patch = { KEYCHRON_K10X_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_015_patch_entries), keychron_group_015_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 16: | | 0x0AB4 K11 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_016_patch_entries[] = { { 17, 2, 12 }, { 22, 3, 12 }, { 23, 3, 13 }, { 24, 3, 14 }, { 46, 4, 4 }, { 67, 4, 8 }, { 69, 4, 10 }, }; static const keychron_patch keychron_k11_max_iso_knob_patch = { KEYCHRON_K11_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_016_patch_entries), keychron_group_016_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 17: | | 0x0AB5 K11 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_017_patch_entries[] = { { 7, 0, 16 }, { 13, 1, 16 }, { 16, 2, 11 }, { 17, 2, 12 }, { 19, 2, 16 }, { 22, 3, 13 }, { 23, 3, 14 }, { 24, 3, 15 }, { 25, 3, 16 }, { 30, 4, 15 }, { 31, 4, 16 }, { 32, 4, 17 }, { 35, 1, 5 }, { 36, 1, 6 }, { 40, 2, 5 }, { 44, 3, 6 }, { 48, 3, 7 }, { 51, 4, 5 }, { 52, 1, 7 }, { 56, 2, 6 }, { 57, 2, 7 }, { 61, 3, 8 }, { 62, 2, 8 }, { 63, 2, 9 }, { 64, 2, 10 }, { 65, 4, 7 }, { 66, 3, 9 }, { 67, 3, 10 }, { 68, 3, 11 }, { 69, 3, 12 }, { 70, 4, 8 }, { 72, 4, 10 }, }; static const keychron_patch keychron_k11_max_jis_knob_patch = { KEYCHRON_K11_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_017_patch_entries), keychron_group_017_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 18: | | 0x0AB3 K11 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_018_patch_entries[] = { { 42, 2, 12 }, { 55, 3, 12 }, { 56, 3, 13 }, { 60, 4, 4 }, { 63, 4, 8 }, { 65, 4, 10 }, { 66, 4, 14 }, { 67, 4, 15 }, { 68, 4, 16 }, }; static const keychron_patch keychron_k11_max_knob_patch = { KEYCHRON_K11_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_018_patch_entries), keychron_group_018_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 19: | | 0x0AD1 K13 Max ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_019_patch_entries[] = { { 62, 3, 12 }, { 78, 4, 12 }, }; static const keychron_patch keychron_k13_max_iso_patch = { KEYCHRON_K13_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_019_patch_entries), keychron_group_019_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 20: | | 0x0AD2 K13 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_020_patch_entries[] = { { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 33, 1, 17 }, { 48, 2, 15 }, { 49, 2, 16 }, { 50, 2, 17 }, { 63, 3, 12 }, { 64, 3, 15 }, { 65, 3, 16 }, { 66, 3, 17 }, { 80, 4, 16 }, { 91, 5, 15 }, { 92, 5, 16 }, { 93, 5, 17 }, }; static const keychron_patch keychron_k13_max_jis_patch = { KEYCHRON_K13_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_020_patch_entries), keychron_group_020_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 21: | | 0x0AD0 K13 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_021_patch_entries[] = { { 62, 3, 12 }, { 77, 4, 12 }, }; static const keychron_patch keychron_k13_max_patch = { KEYCHRON_K13_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_021_patch_entries), keychron_group_021_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 22: | | 0x0AF1 K15 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_022_patch_entries[] = { { 15, 1, 16 }, { 22, 2, 16 }, { 29, 3, 16 }, { 40, 5, 14 }, { 41, 5, 15 }, { 42, 5, 16 }, { 63, 5, 4 }, { 89, 5, 11 }, { 90, 5, 12 }, }; static const keychron_patch keychron_k15_max_iso_knob_patch = { KEYCHRON_K15_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_022_patch_entries), keychron_group_022_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 23: | | 0x0AF2 K15 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_023_patch_entries[] = { { 7, 0, 16 }, { 16, 1, 17 }, { 23, 2, 17 }, { 30, 3, 17 }, { 33, 4, 2 }, { 37, 4, 16 }, { 42, 5, 15 }, { 43, 5, 16 }, { 44, 5, 17 }, { 61, 4, 3 }, { 62, 4, 4 }, { 63, 4, 5 }, { 91, 5, 11 }, { 92, 5, 12 }, }; static const keychron_patch keychron_k15_max_jis_knob_patch = { KEYCHRON_K15_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_023_patch_entries), keychron_group_023_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 24: | | 0x0AF0 K15 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_024_patch_entries[] = { { 15, 1, 16 }, { 22, 2, 16 }, { 29, 3, 16 }, { 32, 4, 2 }, { 39, 5, 14 }, { 40, 5, 15 }, { 41, 5, 16 }, { 57, 3, 6 }, { 58, 4, 3 }, { 59, 4, 4 }, { 60, 4, 5 }, { 61, 4, 6 }, { 63, 5, 4 }, { 64, 5, 6 }, { 87, 5, 8 }, { 89, 5, 7 }, }; static const keychron_patch keychron_k15_max_knob_patch = { KEYCHRON_K15_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_024_patch_entries), keychron_group_024_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 25: | | 0x0A01 K17 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_025_patch_entries[] = { { 33, 1, 13 }, { 52, 2, 13 }, { 70, 3, 12 }, }; static const keychron_patch keychron_k17_max_iso_knob_patch = { KEYCHRON_K17_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_025_patch_entries), keychron_group_025_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 26: | | 0x0A02 K17 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_026_patch_entries[] = { { 53, 2, 13 }, { 71, 3, 12 }, { 88, 4, 13 }, { 103, 5, 14 }, { 104, 5, 15 }, { 105, 5, 16 }, { 106, 5, 17 }, }; static const keychron_patch keychron_k17_max_jis_knob_patch = { KEYCHRON_K17_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_026_patch_entries), keychron_group_026_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 27: | | 0x0A00 K17 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_027_patch_entries[] = { { 33, 1, 13 }, { 52, 2, 13 }, { 70, 3, 12 }, }; static const keychron_patch keychron_k17_max_knob_patch = { KEYCHRON_K17_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_027_patch_entries), keychron_group_027_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 28: | | 0x0E20 K2 HE ANSI | | 0x0E30 K3 HE | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_028_patch_entries[] = { { 30, 1, 15 }, { 45, 2, 15 }, { 59, 3, 15 }, { 72, 4, 14 }, { 73, 4, 15 }, { 81, 5, 13 }, { 82, 5, 14 }, { 83, 5, 15 }, }; static const keychron_patch keychron_k2_he_ansi_patch = { KEYCHRON_K2_HE_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_028_patch_entries), keychron_group_028_patch_entries }; static const keychron_patch keychron_k3_he_patch = { KEYCHRON_K3_HE_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_028_patch_entries), keychron_group_028_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 29: | | 0x0E21 K2 HE ISO | | 0x0E31 K3 HE ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_029_patch_entries[] = { { 30, 1, 15 }, { 45, 2, 15 }, { 59, 3, 15 }, { 73, 4, 14 }, { 74, 4, 15 }, { 79, 5, 10 }, { 80, 5, 11 }, { 81, 5, 12 }, { 82, 5, 13 }, { 83, 5, 14 }, { 84, 5, 15 }, }; static const keychron_patch keychron_k2_he_iso_patch = { KEYCHRON_K2_HE_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_029_patch_entries), keychron_group_029_patch_entries }; static const keychron_patch keychron_k3_he_iso_patch = { KEYCHRON_K3_HE_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_029_patch_entries), keychron_group_029_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 30: | | 0x0E22 K2 HE JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_030_patch_entries[] = { { 46, 2, 15 }, { 60, 3, 15 }, { 74, 4, 15 }, { 80, 5, 9 }, { 81, 5, 10 }, { 82, 5, 11 }, { 83, 5, 12 }, { 84, 5, 13 }, { 85, 5, 14 }, { 86, 5, 15 }, }; static const keychron_patch keychron_k2_he_jis_patch = { KEYCHRON_K2_HE_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_030_patch_entries), keychron_group_030_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 31: | | 0x0A21 K2 Max ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_031_patch_entries[] = { { 58, 3, 12 }, { 73, 4, 14 }, { 79, 5, 10 }, { 80, 5, 11 }, { 81, 5, 12 }, { 82, 5, 13 }, { 83, 5, 14 }, }; static const keychron_patch keychron_k2_max_iso_patch = { KEYCHRON_K2_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_031_patch_entries), keychron_group_031_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 32: | | 0x0A22 K2 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_032_patch_entries[] = { { 59, 3, 12 }, }; static const keychron_patch keychron_k2_max_jis_patch = { KEYCHRON_K2_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_032_patch_entries), keychron_group_032_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 33: | | 0x0A20 K2 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_033_patch_entries[] = { { 58, 3, 12 }, { 72, 4, 14 }, { 78, 5, 10 }, { 79, 5, 11 }, { 80, 5, 12 }, { 81, 5, 13 }, { 82, 5, 14 }, }; static const keychron_patch keychron_k2_max_patch = { KEYCHRON_K2_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_033_patch_entries), keychron_group_033_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 34: | | 0x0A31 K3 Max ISO | | 0x0D21 K2 Version 3 ISO | | 0x0D31 K3 Version 3 ISO | | 0x1631 K3 Ultra 8K ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_034_patch_entries[] = { { 58, 3, 12 }, { 72, 4, 12 }, }; static const keychron_patch keychron_k3_max_iso_patch = { KEYCHRON_K3_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_034_patch_entries), keychron_group_034_patch_entries }; static const keychron_patch keychron_k2_v3_iso_patch = { KEYCHRON_K2_V3_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_034_patch_entries), keychron_group_034_patch_entries }; static const keychron_patch keychron_k3_v3_iso_patch = { KEYCHRON_K3_V3_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_034_patch_entries), keychron_group_034_patch_entries }; static const keychron_patch keychron_k3_ultra_8k_iso_patch = { KEYCHRON_K3_ULTRA_8K_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_034_patch_entries), keychron_group_034_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 35: | | 0x0A32 K3 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_035_patch_entries[] = { { 59, 3, 12 }, { 72, 4, 12 }, { 73, 4, 13 }, }; static const keychron_patch keychron_k3_max_jis_patch = { KEYCHRON_K3_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_035_patch_entries), keychron_group_035_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 36: | | 0x0A30 K3 Max | | 0x0D20 K2X | | 0x0D30 K3X | | 0x0D3B K3 Max SE | | 0x1630 K3 Ultra 8K ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_036_patch_entries[] = { { 58, 3, 12 }, { 71, 4, 12 }, }; static const keychron_patch keychron_k3_max_patch = { KEYCHRON_K3_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_036_patch_entries), keychron_group_036_patch_entries }; static const keychron_patch keychron_k2x_patch = { KEYCHRON_K2X_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_036_patch_entries), keychron_group_036_patch_entries }; static const keychron_patch keychron_k3x_patch = { KEYCHRON_K3X_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_036_patch_entries), keychron_group_036_patch_entries }; static const keychron_patch keychron_k3_max_se_patch = { KEYCHRON_K3_MAX_SE_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_036_patch_entries), keychron_group_036_patch_entries }; static const keychron_patch keychron_k3_ultra_8k_ansi_patch = { KEYCHRON_K3_ULTRA_8K_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_036_patch_entries), keychron_group_036_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 37: | | 0x0E40 K4 HE | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_037_patch_entries[] = { { 32, 1, 13 }, { 67, 3, 12 }, { 82, 4, 12 }, }; static const keychron_patch keychron_k4_he_patch = { KEYCHRON_K4_HE_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_037_patch_entries), keychron_group_037_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 38: | | 0x0E41 K4 HE ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_038_patch_entries[] = { { 32, 1, 13 }, { 67, 3, 12 }, { 83, 4, 12 }, }; static const keychron_patch keychron_k4_he_iso_patch = { KEYCHRON_K4_HE_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_038_patch_entries), keychron_group_038_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 39: | | 0x0E42 K4 HE JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_039_patch_entries[] = { { 68, 3, 12 }, { 83, 4, 12 }, { 84, 4, 13 }, }; static const keychron_patch keychron_k4_he_jis_patch = { KEYCHRON_K4_HE_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_039_patch_entries), keychron_group_039_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 40: | | 0x0A40 K4 Max Ansi | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_040_patch_entries[] = { { 18, 0, 18 }, { 33, 1, 15 }, { 34, 1, 16 }, { 35, 1, 17 }, { 36, 1, 18 }, { 51, 2, 15 }, { 52, 2, 16 }, { 53, 2, 17 }, { 54, 2, 18 }, { 67, 3, 12 }, { 68, 3, 15 }, { 69, 3, 16 }, { 70, 3, 17 }, { 83, 4, 14 }, { 84, 4, 15 }, { 85, 4, 16 }, { 86, 4, 17 }, { 87, 4, 18 }, }; static const keychron_patch keychron_k4_max_ansi_patch = { KEYCHRON_K4_MAX_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_040_patch_entries), keychron_group_040_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 41: | | 0x0D42 K4X JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_041_patch_entries[] = { { 68, 3, 12 }, { 94, 5, 9 }, { 95, 5, 10 }, { 96, 5, 11 }, { 97, 5, 12 }, { 98, 5, 13 }, { 99, 5, 14 }, }; static const keychron_patch keychron_k4x_jis_patch = { KEYCHRON_K4X_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_041_patch_entries), keychron_group_041_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 42: | | 0x0A51 K5 Max ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_042_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 74, 3, 12 }, { 90, 4, 12 }, }; static const keychron_patch keychron_k5_max_iso_patch = { KEYCHRON_K5_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_042_patch_entries), keychron_group_042_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 43: | | 0x0A52 K5 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_043_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 16, 0, 18 }, { 17, 0, 19 }, { 18, 0, 20 }, { 19, 0, 21 }, { 34, 1, 14 }, { 35, 1, 15 }, { 36, 1, 16 }, { 37, 1, 17 }, { 38, 1, 18 }, { 39, 1, 19 }, { 40, 1, 20 }, { 41, 1, 21 }, { 56, 2, 15 }, { 57, 2, 16 }, { 58, 2, 17 }, { 59, 2, 18 }, { 60, 2, 19 }, { 61, 2, 20 }, { 62, 2, 21 }, { 75, 3, 12 }, { 76, 3, 18 }, { 77, 3, 19 }, { 78, 3, 20 }, { 92, 4, 16 }, { 93, 4, 18 }, { 94, 4, 19 }, { 95, 4, 20 }, { 96, 4, 21 }, { 102, 5, 10 }, { 103, 5, 11 }, { 104, 5, 12 }, { 105, 5, 13 }, { 106, 5, 14 }, { 107, 5, 15 }, { 108, 5, 16 }, { 109, 5, 17 }, { 110, 5, 18 }, { 111, 5, 20 }, }; static const keychron_patch keychron_k5_max_jis_0a52_patch = { KEYCHRON_K5_MAX_JIS_0A52_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_043_patch_entries), keychron_group_043_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 44: | | 0x0A50 K5 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_044_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 74, 3, 12 }, { 89, 4, 12 }, }; static const keychron_patch keychron_k5_max_patch = { KEYCHRON_K5_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_044_patch_entries), keychron_group_044_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 45: | | 0x0D51 K5X ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_045_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 18, 0, 19 }, { 19, 0, 20 }, { 39, 1, 19 }, { 40, 1, 20 }, { 60, 2, 19 }, { 61, 2, 20 }, { 74, 3, 12 }, { 77, 3, 19 }, { 90, 4, 12 }, { 94, 4, 19 }, { 95, 4, 20 }, { 108, 5, 19 }, }; static const keychron_patch keychron_k5x_iso_patch = { KEYCHRON_K5X_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_045_patch_entries), keychron_group_045_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 46: | | 0x0E60 K6 HE | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_046_patch_entries[] = { { 42, 2, 12 }, }; static const keychron_patch keychron_k6_he_patch = { KEYCHRON_K6_HE_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_046_patch_entries), keychron_group_046_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 47: | | 0x0A71 K7 Max ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_047_patch_entries[] = { { 42, 2, 12 }, { 56, 3, 12 }, }; static const keychron_patch keychron_k7_max_iso_patch = { KEYCHRON_K7_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_047_patch_entries), keychron_group_047_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 48: | | 0x0A72 K7 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_048_patch_entries[] = { { 43, 2, 12 }, }; static const keychron_patch keychron_k7_max_jis_patch = { KEYCHRON_K7_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_048_patch_entries), keychron_group_048_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 49: | | 0x0A76 K7 Max JIS V2 | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_049_patch_entries[] = { { 43, 2, 12 }, }; static const keychron_patch keychron_k7_max_jis_v2_patch = { KEYCHRON_K7_MAX_JIS_V2_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_049_patch_entries), keychron_group_049_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 50: | | 0x0A70 K7 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_050_patch_entries[] = { { 42, 2, 12 }, { 55, 3, 12 }, }; static const keychron_patch keychron_k7_max_patch = { KEYCHRON_K7_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_050_patch_entries), keychron_group_050_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 51: | | 0x0E80 K8 HE | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_051_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 32, 1, 16 }, { 49, 2, 16 }, { 62, 3, 12 }, { 74, 4, 12 }, { 80, 5, 10 }, { 81, 5, 11 }, { 82, 5, 12 }, { 83, 5, 13 }, { 84, 5, 14 }, { 85, 5, 15 }, { 86, 5, 16 }, }; static const keychron_patch keychron_k8_he_patch = { KEYCHRON_K8_HE_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_051_patch_entries), keychron_group_051_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 52: | | 0x0E81 K8 HE ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_052_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 32, 1, 16 }, { 49, 2, 16 }, { 62, 3, 12 }, { 75, 4, 12 }, { 81, 5, 10 }, { 82, 5, 11 }, { 83, 5, 12 }, { 84, 5, 13 }, { 85, 5, 14 }, { 86, 5, 15 }, { 87, 5, 16 }, }; static const keychron_patch keychron_k8_he_iso_patch = { KEYCHRON_K8_HE_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_052_patch_entries), keychron_group_052_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 53: | | 0x0E82 K8 HE JIS RBG | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_053_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 29, 1, 13 }, { 30, 1, 14 }, { 31, 1, 15 }, { 32, 1, 16 }, { 33, 1, 17 }, { 48, 2, 15 }, { 49, 2, 16 }, { 50, 2, 17 }, { 63, 3, 12 }, { 77, 4, 16 }, { 83, 5, 9 }, { 84, 5, 10 }, { 85, 5, 11 }, { 86, 5, 12 }, { 87, 5, 13 }, { 88, 5, 15 }, { 89, 5, 16 }, { 90, 5, 17 }, }; static const keychron_patch keychron_k8_he_jis_rbg_patch = { KEYCHRON_K8_HE_JIS_RBG_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_053_patch_entries), keychron_group_053_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 54: | | 0x0A82 K8 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_054_patch_entries[] = { { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 29, 1, 13 }, { 30, 1, 14 }, { 31, 1, 15 }, { 32, 1, 16 }, { 33, 1, 17 }, { 48, 2, 15 }, { 49, 2, 16 }, { 50, 2, 17 }, { 63, 3, 12 }, { 77, 4, 16 }, { 83, 5, 10 }, { 84, 5, 11 }, { 85, 5, 12 }, { 86, 5, 13 }, { 87, 5, 14 }, { 88, 5, 15 }, { 89, 5, 16 }, { 90, 5, 17 }, }; static const keychron_patch keychron_k8_max_jis_patch = { KEYCHRON_K8_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_054_patch_entries), keychron_group_054_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 55: | | 0x0A90 K9 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_055_patch_entries[] = { { 40, 2, 12 }, { 52, 3, 12 }, }; static const keychron_patch keychron_k9_max_patch = { KEYCHRON_K9_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_055_patch_entries), keychron_group_055_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 56: | | 0x1500 Keychron C0 HE 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_056_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 34, 6, 5 }, }; static const keychron_patch keychron_c0_he_8k_patch = { KEYCHRON_C0_HE_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_056_patch_entries), keychron_group_056_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 57: | | 0x051D C1 Pro 8K ISO | | 0x0531 C3 Pro Iso 8K | | 0x0A81 K8 Max ISO | | 0x0D11 K1X ISO | | 0x0D81 K8 Version 2 ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_057_patch_entries[] = { { 62, 3, 12 }, { 75, 4, 12 }, }; static const keychron_patch keychron_c1_pro_8k_iso_patch = { KEYCHRON_C1_PRO_8K_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_057_patch_entries), keychron_group_057_patch_entries }; static const keychron_patch keychron_c3_pro_iso_8k_patch = { KEYCHRON_C3_PRO_ISO_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_057_patch_entries), keychron_group_057_patch_entries }; static const keychron_patch keychron_k8_max_iso_patch = { KEYCHRON_K8_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_057_patch_entries), keychron_group_057_patch_entries }; static const keychron_patch keychron_k1x_iso_patch = { KEYCHRON_K1X_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_057_patch_entries), keychron_group_057_patch_entries }; static const keychron_patch keychron_k8_v2_iso_patch = { KEYCHRON_K8_V2_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_057_patch_entries), keychron_group_057_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 58: | | 0x051E C1 Pro 8K JIS | | 0x0D82 K8 Version 2 JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_058_patch_entries[] = { { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 30, 1, 14 }, { 31, 1, 15 }, { 32, 1, 16 }, { 33, 1, 17 }, { 48, 2, 15 }, { 49, 2, 16 }, { 50, 2, 17 }, { 63, 3, 12 }, { 77, 4, 16 }, { 88, 5, 15 }, { 89, 5, 16 }, { 90, 5, 17 }, }; static const keychron_patch keychron_c1_pro_8k_jis_patch = { KEYCHRON_C1_PRO_8K_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_058_patch_entries), keychron_group_058_patch_entries }; static const keychron_patch keychron_k8_v2_jis_patch = { KEYCHRON_K8_V2_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_058_patch_entries), keychron_group_058_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 59: | | 0x052D C2 Pro ISO 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_059_patch_entries[] = { { 35, 1, 19 }, { 36, 1, 20 }, { 56, 2, 19 }, { 57, 2, 20 }, { 70, 3, 12 }, { 73, 3, 19 }, { 86, 4, 12 }, { 90, 4, 19 }, { 91, 4, 20 }, { 104, 5, 19 }, }; static const keychron_patch keychron_c2_pro_iso_8k_patch = { KEYCHRON_C2_PRO_ISO_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_059_patch_entries), keychron_group_059_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 60: | | 0x0405 Keychron J1 | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_060_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 28, 1, 13 }, { 43, 2, 13 }, { 76, 5, 9 }, { 77, 5, 10 }, { 78, 5, 11 }, }; static const keychron_patch keychron_j1_patch = { KEYCHRON_J1_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_060_patch_entries), keychron_group_060_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 61: | | 0x0406 J2 | | 0x0456 J2 ANSI Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_061_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 28, 1, 13 }, { 43, 2, 13 }, { 77, 5, 9 }, { 78, 5, 10 }, { 79, 5, 11 }, }; static const keychron_patch keychron_j2_patch = { KEYCHRON_J2_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_061_patch_entries), keychron_group_061_patch_entries }; static const keychron_patch keychron_j2_ansi_knob_patch = { KEYCHRON_J2_ANSI_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_061_patch_entries), keychron_group_061_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 62: | | 0x0416 J2 HE 8K ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_062_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 22, 1, 7 }, { 23, 1, 8 }, { 24, 1, 9 }, { 25, 1, 10 }, { 26, 1, 11 }, { 27, 1, 12 }, { 28, 1, 13 }, { 37, 2, 7 }, { 38, 2, 8 }, { 39, 2, 9 }, { 40, 2, 10 }, { 41, 2, 11 }, { 42, 2, 12 }, { 43, 2, 13 }, { 52, 3, 7 }, { 53, 3, 8 }, { 54, 3, 9 }, { 55, 3, 10 }, { 56, 3, 11 }, { 57, 3, 12 }, { 65, 4, 7 }, { 66, 4, 8 }, { 67, 4, 9 }, { 68, 4, 10 }, { 69, 4, 11 }, { 70, 4, 12 }, }; static const keychron_patch keychron_j2_he_8k_ansi_patch = { KEYCHRON_J2_HE_8K_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_062_patch_entries), keychron_group_062_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 63: | | 0x042D J3 SE Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_063_patch_entries[] = { { 16, 0, 18 }, { 35, 1, 18 }, { 54, 2, 18 }, { 67, 3, 12 }, { 87, 4, 18 }, { 99, 5, 17 }, }; static const keychron_patch keychron_j3_se_knob_patch = { KEYCHRON_J3_SE_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_063_patch_entries), keychron_group_063_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 64: | | 0x0408 J4 | | 0x0457 J4 ANSI | | 0x0521 C1 Pro 8K | | 0x0530 C3 Pro 8K | | 0x0A80 K8 Max | | 0x0D10 K1X US | | 0x0D80 K8 Version 2 | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_064_patch_entries[] = { { 62, 3, 12 }, { 74, 4, 12 }, }; static const keychron_patch keychron_j4_patch = { KEYCHRON_J4_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_064_patch_entries), keychron_group_064_patch_entries }; static const keychron_patch keychron_j4_ansi_patch = { KEYCHRON_J4_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_064_patch_entries), keychron_group_064_patch_entries }; static const keychron_patch keychron_c1_pro_8k_patch = { KEYCHRON_C1_PRO_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_064_patch_entries), keychron_group_064_patch_entries }; static const keychron_patch keychron_c3_pro_8k_patch = { KEYCHRON_C3_PRO_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_064_patch_entries), keychron_group_064_patch_entries }; static const keychron_patch keychron_k8_max_patch = { KEYCHRON_K8_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_064_patch_entries), keychron_group_064_patch_entries }; static const keychron_patch keychron_k1x_us_patch = { KEYCHRON_K1X_US_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_064_patch_entries), keychron_group_064_patch_entries }; static const keychron_patch keychron_k8_v2_patch = { KEYCHRON_K8_V2_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_064_patch_entries), keychron_group_064_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 65: | | 0x0409 J5 | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_065_patch_entries[] = { { 17, 0, 18 }, { 18, 0, 19 }, { 19, 0, 20 }, { 38, 1, 18 }, { 39, 1, 19 }, { 40, 1, 20 }, { 59, 2, 18 }, { 60, 2, 19 }, { 61, 2, 20 }, { 76, 3, 18 }, { 77, 3, 19 }, { 92, 4, 18 }, { 93, 4, 19 }, { 94, 4, 20 }, { 107, 5, 19 }, }; static const keychron_patch keychron_j5_patch = { KEYCHRON_J5_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_065_patch_entries), keychron_group_065_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 66: | | 0x0453 J5 ANSI Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_066_patch_entries[] = { { 74, 3, 12 }, { 89, 4, 12 }, }; static const keychron_patch keychron_j5_ansi_knob_patch = { KEYCHRON_J5_ANSI_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_066_patch_entries), keychron_group_066_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 67: | | 0x0A06 K0 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_067_patch_entries[] = { { 23, 4, 4 }, }; static const keychron_patch keychron_k0_max_patch = { KEYCHRON_K0_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_067_patch_entries), keychron_group_067_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 68: | | 0x1620 K2 Ultra 8K ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_068_patch_entries[] = { { 58, 3, 12 }, }; static const keychron_patch keychron_k2_ultra_8k_ansi_patch = { KEYCHRON_K2_ULTRA_8K_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_068_patch_entries), keychron_group_068_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 69: | | 0x1621 K2 Ultra 8K ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_069_patch_entries[] = { { 58, 3, 12 }, }; static const keychron_patch keychron_k2_ultra_8k_iso_patch = { KEYCHRON_K2_ULTRA_8K_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_069_patch_entries), keychron_group_069_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 70: | | 0x0D22 K2 Version 3 JIS | | 0x0D32 K3 Version 3 JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_070_patch_entries[] = { { 59, 3, 12 }, { 72, 4, 12 }, { 73, 4, 13 }, }; static const keychron_patch keychron_k2_v3_jis_patch = { KEYCHRON_K2_V3_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_070_patch_entries), keychron_group_070_patch_entries }; static const keychron_patch keychron_k3_v3_jis_patch = { KEYCHRON_K3_V3_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_070_patch_entries), keychron_group_070_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 71: | | 0x0A41 K4 Max ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_071_patch_entries[] = { { 18, 0, 18 }, { 33, 1, 15 }, { 34, 1, 16 }, { 35, 1, 17 }, { 36, 1, 18 }, { 51, 2, 15 }, { 52, 2, 16 }, { 53, 2, 17 }, { 54, 2, 18 }, { 67, 3, 12 }, { 68, 3, 15 }, { 69, 3, 16 }, { 70, 3, 17 }, { 84, 4, 14 }, { 85, 4, 15 }, { 86, 4, 16 }, { 87, 4, 17 }, { 88, 4, 18 }, }; static const keychron_patch keychron_k4_max_iso_patch = { KEYCHRON_K4_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_071_patch_entries), keychron_group_071_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 72: | | 0x0A42 K4 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_072_patch_entries[] = { { 18, 0, 18 }, { 32, 1, 13 }, { 33, 1, 14 }, { 34, 1, 15 }, { 35, 1, 16 }, { 36, 1, 17 }, { 37, 1, 18 }, { 52, 2, 15 }, { 53, 2, 16 }, { 54, 2, 17 }, { 55, 2, 18 }, { 68, 3, 12 }, { 69, 3, 15 }, { 70, 3, 16 }, { 71, 3, 17 }, { 84, 4, 13 }, { 85, 4, 14 }, { 86, 4, 15 }, { 87, 4, 16 }, { 88, 4, 17 }, { 89, 4, 18 }, }; static const keychron_patch keychron_k4_max_jis_patch = { KEYCHRON_K4_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_072_patch_entries), keychron_group_072_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 73: | | 0x1640 K4 Ultra 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_073_patch_entries[] = { { 32, 1, 13 }, { 54, 2, 18 }, { 87, 4, 18 }, { 92, 5, 10 }, { 93, 5, 11 }, { 94, 5, 12 }, { 95, 5, 13 }, { 96, 5, 14 }, { 97, 5, 15 }, }; static const keychron_patch keychron_k4_ultra_8k_patch = { KEYCHRON_K4_ULTRA_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_073_patch_entries), keychron_group_073_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 74: | | 0x0D41 K4 Version 3 ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_074_patch_entries[] = { { 67, 3, 12 }, { 72, 4, 2 }, { 73, 4, 3 }, { 74, 4, 4 }, { 75, 4, 5 }, { 76, 4, 6 }, { 77, 4, 7 }, { 78, 4, 8 }, { 79, 4, 9 }, { 80, 4, 10 }, { 81, 4, 11 }, { 82, 4, 12 }, { 83, 4, 13 }, { 84, 4, 15 }, { 85, 4, 16 }, { 86, 4, 17 }, { 87, 4, 18 }, { 88, 4, 19 }, { 93, 5, 10 }, { 94, 5, 11 }, { 95, 5, 12 }, { 96, 5, 13 }, { 97, 5, 14 }, }; static const keychron_patch keychron_k4_v3_iso_patch = { KEYCHRON_K4_V3_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_074_patch_entries), keychron_group_074_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 75: | | 0x0D40 K4 Version 3 | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_075_patch_entries[] = { { 67, 3, 12 }, { 83, 4, 14 }, { 92, 5, 10 }, { 93, 5, 11 }, { 94, 5, 12 }, { 95, 5, 13 }, { 96, 5, 14 }, }; static const keychron_patch keychron_k4_v3_patch = { KEYCHRON_K4_V3_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_075_patch_entries), keychron_group_075_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 76: | | 0x0A58 K5 Max JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_076_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 16, 0, 18 }, { 17, 0, 19 }, { 18, 0, 20 }, { 19, 0, 21 }, { 34, 1, 14 }, { 35, 1, 15 }, { 36, 1, 16 }, { 37, 1, 17 }, { 38, 1, 18 }, { 39, 1, 19 }, { 40, 1, 20 }, { 41, 1, 21 }, { 56, 2, 15 }, { 57, 2, 16 }, { 58, 2, 17 }, { 59, 2, 18 }, { 60, 2, 19 }, { 61, 2, 20 }, { 62, 2, 21 }, { 75, 3, 12 }, { 76, 3, 18 }, { 77, 3, 19 }, { 78, 3, 20 }, { 92, 4, 16 }, { 93, 4, 18 }, { 94, 4, 19 }, { 95, 4, 20 }, { 96, 4, 21 }, { 102, 5, 10 }, { 103, 5, 11 }, { 104, 5, 12 }, { 105, 5, 13 }, { 106, 5, 14 }, { 107, 5, 15 }, { 108, 5, 16 }, { 109, 5, 17 }, { 110, 5, 18 }, { 111, 5, 20 }, }; static const keychron_patch keychron_k5_max_jis_0a58_patch = { KEYCHRON_K5_MAX_JIS_0A58_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_076_patch_entries), keychron_group_076_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 77: | | 0x1650 K5 Ultra 8K Knob ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_077_patch_entries[] = { { 20, 0, 20 }, { 41, 1, 20 }, { 62, 2, 20 }, { 75, 3, 12 }, { 90, 4, 12 }, { 95, 4, 20 }, }; static const keychron_patch keychron_k5_ultra_8k_knob_ansi_patch = { KEYCHRON_K5_ULTRA_8K_KNOB_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_077_patch_entries), keychron_group_077_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 78: | | 0x1651 K5 Ultra 8K Knob ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_078_patch_entries[] = { { 20, 0, 20 }, { 41, 1, 20 }, { 62, 2, 20 }, { 75, 3, 12 }, { 91, 4, 12 }, { 96, 4, 20 }, }; static const keychron_patch keychron_k5_ultra_8k_knob_iso_patch = { KEYCHRON_K5_ULTRA_8K_KNOB_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_078_patch_entries), keychron_group_078_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 79: | | 0x0D50 K5 Version 2 | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_079_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 18, 0, 19 }, { 19, 0, 20 }, { 39, 1, 19 }, { 40, 1, 20 }, { 60, 2, 19 }, { 61, 2, 20 }, { 74, 3, 12 }, { 77, 3, 19 }, { 89, 4, 12 }, { 93, 4, 19 }, { 94, 4, 20 }, { 107, 5, 19 }, }; static const keychron_patch keychron_k5_v2_patch = { KEYCHRON_K5_V2_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_079_patch_entries), keychron_group_079_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 80: | | 0x0D52 K5 Version 2 JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_080_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 16, 0, 18 }, { 17, 0, 19 }, { 18, 0, 20 }, { 19, 0, 21 }, { 34, 1, 14 }, { 35, 1, 15 }, { 36, 1, 16 }, { 37, 1, 17 }, { 38, 1, 18 }, { 39, 1, 19 }, { 40, 1, 20 }, { 41, 1, 21 }, { 56, 2, 15 }, { 57, 2, 16 }, { 58, 2, 17 }, { 59, 2, 18 }, { 60, 2, 19 }, { 61, 2, 20 }, { 62, 2, 21 }, { 75, 3, 12 }, { 76, 3, 18 }, { 77, 3, 19 }, { 78, 3, 20 }, { 92, 4, 16 }, { 93, 4, 18 }, { 94, 4, 19 }, { 95, 4, 20 }, { 96, 4, 21 }, { 102, 5, 10 }, { 103, 5, 11 }, { 104, 5, 12 }, { 105, 5, 13 }, { 106, 5, 14 }, { 107, 5, 15 }, { 108, 5, 16 }, { 109, 5, 17 }, { 110, 5, 18 }, { 111, 5, 20 }, }; static const keychron_patch keychron_k5_v2_jis_patch = { KEYCHRON_K5_V2_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_080_patch_entries), keychron_group_080_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 81: | | 0x0E61 K6 HE ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_081_patch_entries[] = { { 14, 0, 15 }, { 29, 1, 15 }, { 42, 2, 12 }, { 43, 2, 15 }, { 57, 3, 14 }, { 58, 3, 15 }, { 63, 4, 10 }, { 64, 4, 11 }, { 65, 4, 12 }, { 66, 4, 13 }, { 67, 4, 14 }, { 68, 4, 15 }, }; static const keychron_patch keychron_k6_he_iso_patch = { KEYCHRON_K6_HE_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_081_patch_entries), keychron_group_081_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 82: | | 0x1680 K8 Ultra 8K ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_082_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 62, 3, 12 }, { 74, 4, 12 }, }; static const keychron_patch keychron_k8_ultra_8k_ansi_patch = { KEYCHRON_K8_ULTRA_8K_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_082_patch_entries), keychron_group_082_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 83: | | 0x1681 K8 Ultra 8K ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_083_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 75, 4, 12 }, }; static const keychron_patch keychron_k8_ultra_8k_iso_patch = { KEYCHRON_K8_ULTRA_8K_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_083_patch_entries), keychron_group_083_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 84: | | 0x0B14 Q1 HE | | 0x0B15 Q1 HE ANSI V2 SILENT | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_084_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 29, 1, 15 }, { 44, 2, 15 }, { 58, 3, 15 }, { 70, 4, 12 }, { 76, 5, 10 }, { 77, 5, 11 }, { 78, 5, 12 }, { 79, 5, 13 }, { 80, 5, 14 }, { 81, 5, 15 }, }; static const keychron_patch keychron_q1_he_patch = { KEYCHRON_Q1_HE_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_084_patch_entries), keychron_group_084_patch_entries }; static const keychron_patch keychron_q1_he_ansi_v2_silent_patch = { KEYCHRON_Q1_HE_ANSI_V2_SILENT_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_084_patch_entries), keychron_group_084_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 85: | | 0x1010 Q1 HE 8K ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_085_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 29, 1, 15 }, { 31, 2, 2 }, { 32, 2, 3 }, { 33, 2, 4 }, { 34, 2, 5 }, { 35, 2, 6 }, { 36, 2, 7 }, { 37, 2, 8 }, { 38, 2, 9 }, { 39, 2, 10 }, { 40, 2, 11 }, { 41, 2, 12 }, { 42, 2, 13 }, { 43, 2, 14 }, { 44, 2, 15 }, { 46, 3, 2 }, { 47, 3, 3 }, { 48, 3, 4 }, { 49, 3, 5 }, { 50, 3, 6 }, { 51, 3, 7 }, { 52, 3, 8 }, { 53, 3, 9 }, { 54, 3, 10 }, { 55, 3, 11 }, { 56, 3, 12 }, { 57, 3, 13 }, { 58, 3, 15 }, { 70, 4, 12 }, { 76, 5, 10 }, { 77, 5, 11 }, { 78, 5, 12 }, { 79, 5, 13 }, { 80, 5, 14 }, { 81, 5, 15 }, }; static const keychron_patch keychron_q1_he_8k_ansi_patch = { KEYCHRON_Q1_HE_8K_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_085_patch_entries), keychron_group_085_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 86: | | 0x1011 Q1 HE 8K ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_086_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 29, 1, 15 }, { 44, 2, 15 }, { 58, 3, 15 }, { 71, 4, 12 }, { 77, 5, 10 }, { 78, 5, 11 }, { 79, 5, 12 }, { 80, 5, 13 }, { 81, 5, 14 }, { 82, 5, 15 }, }; static const keychron_patch keychron_q1_he_8k_iso_knob_patch = { KEYCHRON_Q1_HE_8K_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_086_patch_entries), keychron_group_086_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 87: | | 0x12B0 Q11 Ultra 8K Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_087_patch_entries[] = { { 40, 2, 7 }, { 41, 2, 8 }, { 42, 2, 9 }, { 43, 2, 10 }, { 44, 2, 11 }, { 45, 2, 12 }, { 46, 2, 13 }, { 47, 2, 14 }, { 51, 3, 3 }, { 52, 3, 4 }, { 53, 3, 5 }, { 54, 3, 6 }, { 55, 3, 7 }, }; static const keychron_patch keychron_q11_ultra_8k_knob_patch = { KEYCHRON_Q11_ULTRA_8K_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_087_patch_entries), keychron_group_087_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 88: | | 0x12B2 Q11 Ultra 8K Knob ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_088_patch_entries[] = { { 40, 2, 7 }, { 41, 2, 8 }, { 42, 2, 9 }, { 43, 2, 10 }, { 44, 2, 11 }, { 45, 2, 12 }, { 46, 2, 13 }, { 47, 2, 14 }, { 51, 3, 3 }, { 52, 3, 4 }, { 53, 3, 5 }, { 54, 3, 6 }, { 55, 3, 7 }, { 83, 5, 4 }, }; static const keychron_patch keychron_q11_ultra_8k_knob_iso_patch = { KEYCHRON_Q11_ULTRA_8K_KNOB_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_088_patch_entries), keychron_group_088_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 89: | | 0x0BC1 Q12 HE ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_089_patch_entries[] = { { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 17, 0, 18 }, { 18, 0, 19 }, { 37, 1, 19 }, { 56, 2, 19 }, { 73, 3, 19 }, { 89, 4, 15 }, { 90, 4, 16 }, { 92, 5, 0 }, { 97, 5, 9 }, { 98, 5, 14 }, { 99, 5, 15 }, { 100, 5, 16 }, { 101, 5, 17 }, { 102, 5, 18 }, { 103, 5, 19 }, }; static const keychron_patch keychron_q12_he_iso_knob_patch = { KEYCHRON_Q12_HE_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_089_patch_entries), keychron_group_089_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 90: | | 0x0BC0 Q12 HE Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_090_patch_entries[] = { { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 17, 0, 18 }, { 18, 0, 19 }, { 37, 1, 19 }, { 56, 2, 19 }, { 61, 3, 6 }, { 62, 3, 7 }, { 63, 3, 8 }, { 64, 3, 9 }, { 65, 3, 10 }, { 66, 3, 11 }, { 67, 3, 12 }, { 68, 3, 13 }, { 69, 3, 14 }, { 70, 3, 15 }, { 71, 3, 16 }, { 72, 3, 17 }, { 73, 3, 19 }, { 88, 4, 15 }, { 89, 4, 16 }, { 91, 5, 0 }, { 97, 5, 14 }, { 98, 5, 15 }, { 99, 5, 16 }, { 100, 5, 17 }, { 101, 5, 18 }, { 102, 5, 19 }, }; static const keychron_patch keychron_q12_he_knob_patch = { KEYCHRON_Q12_HE_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_090_patch_entries), keychron_group_090_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 91: | | 0x08D2 Q13 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_091_patch_entries[] = { { 43, 4, 2 }, { 82, 5, 5 }, { 107, 5, 8 }, { 108, 5, 10 }, }; static const keychron_patch keychron_q13_max_jis_knob_patch = { KEYCHRON_Q13_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_091_patch_entries), keychron_group_091_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 92: | | 0x12D0 Q13 Ultra 8K Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_092_patch_entries[] = { { 4, 0, 13 }, { 5, 0, 14 }, { 43, 4, 2 }, { 75, 4, 3 }, { 76, 4, 4 }, { 77, 4, 5 }, { 78, 4, 6 }, { 79, 5, 3 }, { 80, 5, 4 }, { 81, 5, 6 }, { 82, 0, 9 }, { 83, 0, 10 }, { 84, 0, 11 }, { 85, 0, 12 }, { 104, 5, 8 }, }; static const keychron_patch keychron_q13_ultra_8k_knob_patch = { KEYCHRON_Q13_ULTRA_8K_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_092_patch_entries), keychron_group_092_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 95: | | 0x1020 Q2 HE 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_095_patch_entries[] = { { 55, 3, 12 }, { 56, 3, 13 }, }; static const keychron_patch keychron_q2_he_8k_patch = { KEYCHRON_Q2_HE_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_095_patch_entries), keychron_group_095_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 96: | | 0x1030 Q3 HE 8K | | 0x1033 Q3 HE 8K ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_096_patch_entries[] = { { 75, 4, 12 }, }; static const keychron_patch keychron_q3_he_8k_patch = { KEYCHRON_Q3_HE_8K_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_096_patch_entries), keychron_group_096_patch_entries }; static const keychron_patch keychron_q3_he_8k_ansi_patch = { KEYCHRON_Q3_HE_8K_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_096_patch_entries), keychron_group_096_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 97: | | 0x1032 Q3 HE 8K JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_097_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, }; static const keychron_patch keychron_q3_he_8k_jis_patch = { KEYCHRON_Q3_HE_8K_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_097_patch_entries), keychron_group_097_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 98: | | 0x0B32 Q3 HE JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_098_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 31, 1, 14 }, { 32, 1, 15 }, { 33, 1, 16 }, { 34, 1, 17 }, { 49, 2, 15 }, { 50, 2, 16 }, { 51, 2, 17 }, { 64, 3, 12 }, { 78, 4, 16 }, { 84, 5, 9 }, { 85, 5, 10 }, { 86, 5, 11 }, { 87, 5, 12 }, { 88, 5, 13 }, { 89, 5, 15 }, { 90, 5, 16 }, { 91, 5, 17 }, }; static const keychron_patch keychron_q3_he_jis_knob_patch = { KEYCHRON_Q3_HE_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_098_patch_entries), keychron_group_098_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 99: | | 0x1231 Q3 Ultra 8K Knob ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_099_patch_entries[] = { { 63, 3, 12 }, { 76, 4, 12 }, }; static const keychron_patch keychron_q3_ultra_8k_knob_iso_patch = { KEYCHRON_Q3_ULTRA_8K_KNOB_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_099_patch_entries), keychron_group_099_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 100: | | 0x1050 Q5 HE 8K | | 0x1053 Q5 HE 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_100_patch_entries[] = { { 84, 4, 12 }, { 85, 4, 13 }, { 100, 5, 15 }, }; static const keychron_patch keychron_q5_he_8k_1050_patch = { KEYCHRON_Q5_HE_8K_1050_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_100_patch_entries), keychron_group_100_patch_entries }; static const keychron_patch keychron_q5_he_8k_1053_patch = { KEYCHRON_Q5_HE_8K_1053_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_100_patch_entries), keychron_group_100_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 101: | | 0x1250 Q5 Ultra 8K Knob | | 0x1253 Q5 Ultra 8K Knob ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_101_patch_entries[] = { { 55, 2, 18 }, }; static const keychron_patch keychron_q5_ultra_8k_knob_patch = { KEYCHRON_Q5_ULTRA_8K_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_101_patch_entries), keychron_group_101_patch_entries }; static const keychron_patch keychron_q5_ultra_8k_knob_ansi_patch = { KEYCHRON_Q5_ULTRA_8K_KNOB_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_101_patch_entries), keychron_group_101_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 102: | | 0x1060 Q6 HE 8K | | 0x1063 Q6 HE 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_102_patch_entries[] = { { 90, 4, 12 }, { 108, 5, 19 }, }; static const keychron_patch keychron_q6_he_8k_1060_patch = { KEYCHRON_Q6_HE_8K_1060_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_102_patch_entries), keychron_group_102_patch_entries }; static const keychron_patch keychron_q6_he_8k_1063_patch = { KEYCHRON_Q6_HE_8K_1063_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_102_patch_entries), keychron_group_102_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 103: | | 0x1061 Q6 HE 8K ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_103_patch_entries[] = { { 91, 4, 12 }, { 109, 5, 19 }, }; static const keychron_patch keychron_q6_he_8k_iso_patch = { KEYCHRON_Q6_HE_8K_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_103_patch_entries), keychron_group_103_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 104: | | 0x1062 Q6 HE 8K JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_104_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 17, 0, 18 }, { 18, 0, 19 }, { 19, 0, 20 }, { 20, 0, 21 }, { 112, 5, 20 }, }; static const keychron_patch keychron_q6_he_8k_jis_patch = { KEYCHRON_Q6_HE_8K_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_104_patch_entries), keychron_group_104_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 105: | | 0x0B60 Q6 HE ANSI Knob | | 0x0B63 Q6 HE ANSI Knob | | 0x0B64 Keychron Q6 HE Version 2 ANSI Knob Silent | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_105_patch_entries[] = { { 90, 4, 12 }, { 100, 5, 10 }, { 101, 5, 11 }, { 102, 5, 12 }, { 103, 5, 13 }, { 108, 5, 19 }, }; static const keychron_patch keychron_q6_he_ansi_knob_0b60_patch = { KEYCHRON_Q6_HE_ANSI_KNOB_0B60_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_105_patch_entries), keychron_group_105_patch_entries }; static const keychron_patch keychron_q6_he_ansi_knob_0b63_patch = { KEYCHRON_Q6_HE_ANSI_KNOB_0B63_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_105_patch_entries), keychron_group_105_patch_entries }; static const keychron_patch keychron_q6_he_v2_ansi_knob_silent_patch = { KEYCHRON_Q6_HE_V2_ANSI_KNOB_SILENT_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_105_patch_entries), keychron_group_105_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 106: | | 0x0B61 Q6 HE ISO Knob | | 0x0B65 Q6 HE Version 2 ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_106_patch_entries[] = { { 91, 4, 12 }, { 101, 5, 10 }, { 102, 5, 11 }, { 103, 5, 12 }, { 104, 5, 13 }, { 109, 5, 19 }, }; static const keychron_patch keychron_q6_he_iso_knob_patch = { KEYCHRON_Q6_HE_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_106_patch_entries), keychron_group_106_patch_entries }; static const keychron_patch keychron_q6_he_version2_iso_patch = { KEYCHRON_Q6_HE_VERSION2_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_106_patch_entries), keychron_group_106_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 107: | | 0x0B62 Q6 HE JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_107_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 17, 0, 18 }, { 18, 0, 19 }, { 19, 0, 20 }, { 20, 0, 21 }, { 35, 1, 14 }, { 36, 1, 15 }, { 37, 1, 16 }, { 38, 1, 17 }, { 39, 1, 18 }, { 40, 1, 19 }, { 41, 1, 20 }, { 42, 1, 21 }, { 57, 2, 15 }, { 58, 2, 16 }, { 59, 2, 17 }, { 60, 2, 18 }, { 61, 2, 19 }, { 62, 2, 20 }, { 63, 2, 21 }, { 77, 3, 18 }, { 78, 3, 19 }, { 79, 3, 20 }, { 93, 4, 16 }, { 94, 4, 18 }, { 95, 4, 19 }, { 96, 4, 20 }, { 97, 4, 21 }, { 103, 5, 9 }, { 104, 5, 10 }, { 105, 5, 11 }, { 106, 5, 12 }, { 107, 5, 13 }, { 108, 5, 15 }, { 109, 5, 16 }, { 110, 5, 17 }, { 111, 5, 18 }, { 112, 5, 20 }, }; static const keychron_patch keychron_q6_he_jis_knob_patch = { KEYCHRON_Q6_HE_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_107_patch_entries), keychron_group_107_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 108: | | 0x1260 Q6 Ultra 8K ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_108_patch_entries[] = { { 19, 0, 20 }, { 40, 1, 20 }, { 77, 3, 20 }, { 107, 5, 20 }, }; static const keychron_patch keychron_q6_ultra_8k_ansi_patch = { KEYCHRON_Q6_ULTRA_8K_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_108_patch_entries), keychron_group_108_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 109: | | 0x1261 Q6 Ultra 8K Knob ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_109_patch_entries[] = { { 20, 0, 20 }, { 41, 1, 20 }, { 62, 2, 20 }, { 96, 4, 20 }, { 109, 5, 19 }, }; static const keychron_patch keychron_q6_ultra_8k_knob_iso_patch = { KEYCHRON_Q6_ULTRA_8K_KNOB_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_109_patch_entries), keychron_group_109_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 110: | | 0x0F10 V1 8K ANSI Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_110_patch_entries[] = { { 43, 2, 13 }, { 57, 3, 12 }, { 70, 4, 12 }, }; static const keychron_patch keychron_v1_8k_ansi_knob_patch = { KEYCHRON_V1_8K_ANSI_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_110_patch_entries), keychron_group_110_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 111: | | 0x0C11 V1 Ultra 8K ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_111_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 57, 3, 12 }, }; static const keychron_patch keychron_v1_ultra_8k_iso_patch = { KEYCHRON_V1_ULTRA_8K_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_111_patch_entries), keychron_group_111_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 112: | | 0x0C12 V1 Ultra 8K JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_112_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, }; static const keychron_patch keychron_v1_ultra_8k_jis_patch = { KEYCHRON_V1_ULTRA_8K_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_112_patch_entries), keychron_group_112_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 115: | | 0x0C32 V3 Ultra 8K Knob JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_115_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 31, 1, 14 }, { 32, 1, 15 }, { 33, 1, 16 }, { 34, 1, 17 }, { 49, 2, 15 }, { 50, 2, 16 }, { 51, 2, 17 }, { 78, 4, 16 }, { 89, 5, 15 }, { 90, 5, 16 }, { 91, 5, 17 }, }; static const keychron_patch keychron_v3_ultra_8k_knob_jis_patch = { KEYCHRON_V3_ULTRA_8K_KNOB_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_115_patch_entries), keychron_group_115_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 116: | | 0x0F50 V5 8K ANSI Knob | | 0x0F53 V5 8K ANSI Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_116_patch_entries[] = { { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, }; static const keychron_patch keychron_v5_8k_ansi_knob_0f50_patch = { KEYCHRON_V5_8K_ANSI_KNOB_0F50_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_116_patch_entries), keychron_group_116_patch_entries }; static const keychron_patch keychron_v5_8k_ansi_knob_0f53_patch = { KEYCHRON_V5_8K_ANSI_KNOB_0F53_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_116_patch_entries), keychron_group_116_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 117: | | 0x0F60 V6 8K ANSI Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_117_patch_entries[] = { { 78, 2, 20 }, { 107, 5, 18 }, { 108, 4, 20 }, }; static const keychron_patch keychron_v6_8k_ansi_knob_patch = { KEYCHRON_V6_8K_ANSI_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_117_patch_entries), keychron_group_117_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 118: | | 0x0C60 V6 Ultra ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_118_patch_entries[] = { { 20, 0, 20 }, { 41, 1, 20 }, { 62, 2, 20 }, { 95, 4, 20 }, }; static const keychron_patch keychron_v6_ultra_ansi_patch = { KEYCHRON_V6_ULTRA_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_118_patch_entries), keychron_group_118_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 120: | | 0x1012 Q1 HE 8K JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_120_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 45, 2, 15 }, { 59, 3, 15 }, { 79, 5, 9 }, { 80, 5, 10 }, { 81, 5, 11 }, { 82, 5, 12 }, { 83, 5, 13 }, { 84, 5, 14 }, { 85, 5, 15 }, }; static const keychron_patch keychron_q1_he_8k_jis_patch = { KEYCHRON_Q1_HE_8K_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_120_patch_entries), keychron_group_120_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 121: | | 0x0B11 Q1 HE ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_121_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 29, 1, 15 }, { 44, 2, 15 }, { 58, 3, 15 }, { 70, 4, 11 }, { 71, 4, 12 }, { 77, 5, 10 }, { 78, 5, 11 }, { 79, 5, 12 }, { 80, 5, 13 }, { 81, 5, 14 }, { 82, 5, 15 }, }; static const keychron_patch keychron_q1_he_iso_patch = { KEYCHRON_Q1_HE_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_121_patch_entries), keychron_group_121_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 122: | | 0x0B12 Q1 HE JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_122_patch_entries[] = { { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 29, 1, 14 }, { 30, 1, 15 }, { 45, 2, 15 }, { 59, 3, 15 }, { 79, 5, 9 }, { 80, 5, 10 }, { 81, 5, 11 }, { 82, 5, 12 }, { 83, 5, 13 }, { 84, 5, 14 }, { 85, 5, 15 }, }; static const keychron_patch keychron_q1_he_jis_patch = { KEYCHRON_Q1_HE_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_122_patch_entries), keychron_group_122_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 123: | | 0x0B10 Q1 HE Knob | | 0x0B13 Keychron Q1 HE DAYZ | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_123_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 29, 1, 15 }, { 44, 2, 15 }, { 58, 3, 15 }, { 69, 4, 11 }, { 70, 4, 12 }, { 79, 5, 13 }, { 80, 5, 14 }, { 81, 5, 15 }, }; static const keychron_patch keychron_q1_he_knob_patch = { KEYCHRON_Q1_HE_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_123_patch_entries), keychron_group_123_patch_entries }; static const keychron_patch keychron_q1_he_dayz_patch = { KEYCHRON_Q1_HE_DAYZ_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_123_patch_entries), keychron_group_123_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 124: | | 0x0811 Q1 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_124_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 29, 1, 15 }, { 44, 2, 15 }, { 58, 3, 15 }, { 71, 4, 12 }, { 77, 5, 10 }, { 78, 5, 11 }, { 79, 5, 12 }, { 80, 5, 13 }, { 81, 5, 14 }, { 82, 5, 15 }, }; static const keychron_patch keychron_q1_max_iso_knob_patch = { KEYCHRON_Q1_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_124_patch_entries), keychron_group_124_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 125: | | 0x0812 Q1 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_125_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 30, 1, 15 }, { 45, 2, 15 }, { 59, 3, 15 }, { 79, 5, 9 }, { 80, 5, 10 }, { 81, 5, 11 }, { 82, 5, 12 }, { 83, 5, 13 }, { 84, 5, 14 }, { 85, 5, 15 }, }; static const keychron_patch keychron_q1_max_jis_knob_patch = { KEYCHRON_Q1_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_125_patch_entries), keychron_group_125_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 126: | | 0x0810 Q1 Max Knob | | 0x1210 Q1 Ultra 8K ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_126_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 29, 1, 15 }, { 44, 2, 15 }, { 58, 3, 15 }, { 70, 4, 12 }, { 76, 5, 10 }, { 77, 5, 11 }, { 78, 5, 12 }, { 79, 5, 13 }, { 80, 5, 14 }, { 81, 5, 15 }, }; static const keychron_patch keychron_q1_max_knob_patch = { KEYCHRON_Q1_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_126_patch_entries), keychron_group_126_patch_entries }; static const keychron_patch keychron_q1_ultra_8k_ansi_patch = { KEYCHRON_Q1_ULTRA_8K_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_126_patch_entries), keychron_group_126_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 127: | | 0x08A1 Q10 Max ISO knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_127_patch_entries[] = { { 4, 0, 13 }, { 5, 0, 14 }, { 6, 0, 15 }, { 7, 0, 16 }, { 15, 1, 16 }, { 22, 2, 16 }, { 26, 3, 11 }, { 27, 3, 12 }, { 28, 3, 13 }, { 29, 3, 16 }, { 40, 5, 14 }, { 41, 5, 15 }, { 42, 5, 16 }, { 63, 5, 4 }, { 64, 5, 5 }, { 66, 0, 9 }, { 67, 0, 10 }, { 68, 0, 11 }, { 69, 0, 12 }, { 79, 3, 7 }, { 80, 3, 8 }, { 81, 3, 9 }, { 82, 3, 10 }, { 89, 5, 10 }, { 90, 5, 11 }, }; static const keychron_patch keychron_q10_max_iso_knob_patch = { KEYCHRON_Q10_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_127_patch_entries), keychron_group_127_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 128: | | 0x08A2 Q10 MAX JIS | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_128_patch_entries[] = { { 4, 0, 13 }, { 5, 0, 14 }, { 6, 0, 15 }, { 7, 0, 17 }, { 16, 1, 17 }, { 20, 2, 13 }, { 21, 2, 14 }, { 22, 2, 15 }, { 23, 2, 17 }, { 30, 3, 17 }, { 33, 4, 2 }, { 37, 4, 16 }, { 42, 5, 15 }, { 43, 5, 16 }, { 44, 5, 17 }, { 61, 4, 3 }, { 62, 4, 4 }, { 63, 4, 5 }, { 64, 4, 6 }, { 67, 5, 6 }, { 68, 0, 9 }, { 69, 0, 10 }, { 70, 0, 11 }, { 71, 0, 12 }, { 76, 2, 8 }, { 77, 2, 9 }, { 78, 2, 10 }, { 79, 2, 11 }, { 80, 2, 12 }, }; static const keychron_patch keychron_q10_max_jis_patch = { KEYCHRON_Q10_MAX_JIS_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_128_patch_entries), keychron_group_128_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 129: | | 0x08A0 Q10 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_129_patch_entries[] = { { 4, 0, 13 }, { 5, 0, 14 }, { 6, 0, 15 }, { 7, 0, 16 }, { 15, 1, 16 }, { 19, 2, 13 }, { 20, 2, 14 }, { 21, 2, 15 }, { 22, 2, 16 }, { 29, 3, 16 }, { 39, 5, 14 }, { 40, 5, 15 }, { 41, 5, 16 }, { 62, 5, 4 }, { 63, 5, 5 }, { 65, 0, 9 }, { 66, 0, 10 }, { 67, 0, 11 }, { 68, 0, 12 }, { 73, 2, 8 }, { 74, 2, 9 }, { 75, 2, 10 }, { 76, 2, 11 }, { 77, 2, 12 }, { 87, 5, 9 }, { 88, 5, 11 }, { 89, 5, 12 }, }; static const keychron_patch keychron_q10_max_knob_patch = { KEYCHRON_Q10_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_129_patch_entries), keychron_group_129_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 130: | | 0x08C4 Q12 MAX ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_130_patch_entries[] = { { 73, 3, 18 }, { 92, 5, 0 }, }; static const keychron_patch keychron_q12_max_iso_knob_patch = { KEYCHRON_Q12_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_130_patch_entries), keychron_group_130_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 131: | | 0x08C5 Q12 MAX JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_131_patch_entries[] = { { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 17, 0, 18 }, { 18, 0, 19 }, { 38, 1, 19 }, { 57, 2, 19 }, { 74, 3, 19 }, { 79, 4, 5 }, { 93, 5, 0 }, { 100, 5, 13 }, { 101, 5, 14 }, { 102, 5, 15 }, { 103, 5, 16 }, { 104, 5, 17 }, { 105, 5, 18 }, { 106, 5, 19 }, }; static const keychron_patch keychron_q12_max_jis_knob_patch = { KEYCHRON_Q12_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_131_patch_entries), keychron_group_131_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 132: | | 0x08C3 Q12 MAX Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_132_patch_entries[] = { { 73, 3, 18 }, { 91, 5, 0 }, }; static const keychron_patch keychron_q12_max_knob_patch = { KEYCHRON_Q12_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_132_patch_entries), keychron_group_132_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 133: | | 0x08D0 Q13 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_133_patch_entries[] = { { 4, 0, 13 }, { 5, 0, 14 }, { 43, 4, 2 }, { 75, 4, 3 }, { 76, 4, 4 }, { 77, 4, 5 }, { 78, 4, 6 }, { 79, 5, 3 }, { 80, 5, 4 }, { 81, 5, 6 }, { 82, 0, 9 }, { 83, 0, 10 }, { 84, 0, 11 }, { 85, 0, 12 }, { 104, 5, 8 }, }; static const keychron_patch keychron_q13_max_knob_patch = { KEYCHRON_Q13_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_133_patch_entries), keychron_group_133_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 134: | | 0x08E0 Q14 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_134_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 18 }, { 8, 0, 19 }, { 9, 0, 20 }, { 10, 0, 21 }, { 15, 1, 5 }, { 16, 1, 6 }, { 17, 1, 7 }, { 18, 1, 17 }, { 19, 1, 18 }, { 20, 1, 19 }, { 21, 1, 21 }, { 26, 2, 5 }, { 27, 2, 6 }, { 28, 2, 18 }, { 29, 2, 19 }, { 30, 2, 20 }, { 31, 2, 21 }, { 36, 3, 6 }, { 37, 3, 17 }, { 38, 3, 18 }, { 39, 3, 19 }, { 40, 3, 21 }, { 47, 4, 17 }, { 48, 4, 18 }, { 49, 4, 20 }, { 54, 5, 19 }, { 55, 5, 20 }, { 56, 5, 21 }, { 57, 0, 8 }, { 58, 0, 9 }, { 59, 0, 10 }, { 60, 0, 11 }, { 61, 1, 8 }, { 62, 1, 9 }, { 63, 1, 10 }, { 64, 1, 11 }, { 65, 2, 9 }, { 66, 2, 8 }, { 67, 2, 10 }, { 68, 2, 11 }, { 69, 3, 8 }, { 70, 3, 9 }, { 71, 3, 10 }, { 72, 3, 11 }, { 73, 4, 8 }, { 74, 4, 9 }, { 75, 4, 10 }, { 76, 4, 11 }, { 77, 5, 8 }, { 79, 5, 11 }, { 80, 0, 14 }, { 81, 0, 15 }, { 82, 0, 16 }, { 83, 0, 17 }, { 84, 1, 13 }, { 85, 1, 14 }, { 86, 1, 15 }, { 87, 1, 16 }, { 88, 2, 13 }, { 89, 2, 14 }, { 90, 2, 15 }, { 91, 2, 16 }, { 92, 2, 17 }, { 93, 3, 13 }, { 94, 3, 14 }, { 95, 3, 15 }, { 96, 3, 16 }, { 97, 4, 12 }, { 98, 4, 13 }, { 99, 4, 14 }, { 100, 4, 15 }, { 101, 4, 16 }, { 103, 5, 15 }, { 104, 5, 16 }, }; static const keychron_patch keychron_q14_max_knob_patch = { KEYCHRON_Q14_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_134_patch_entries), keychron_group_134_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 135: | | 0x08F0 Q15 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_135_patch_entries[] = { { 60, 4, 6 }, }; static const keychron_patch keychron_q15_max_knob_patch = { KEYCHRON_Q15_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_135_patch_entries), keychron_group_135_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 136: | | 0x0B20 Q2 HE Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_136_patch_entries[] = { { 42, 2, 12 }, }; static const keychron_patch keychron_q2_he_knob_patch = { KEYCHRON_Q2_HE_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_136_patch_entries), keychron_group_136_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 137: | | 0x0821 Q2 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_137_patch_entries[] = { { 43, 2, 14 }, { 56, 3, 12 }, { 57, 3, 13 }, }; static const keychron_patch keychron_q2_max_iso_knob_patch = { KEYCHRON_Q2_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_137_patch_entries), keychron_group_137_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 138: | | 0x0822 Q2 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_138_patch_entries[] = { { 0, 0, 15 }, { 30, 1, 15 }, { 44, 2, 15 }, { 64, 4, 9 }, { 65, 4, 10 }, { 66, 4, 11 }, { 67, 4, 12 }, { 68, 4, 13 }, { 69, 4, 14 }, { 70, 4, 15 }, }; static const keychron_patch keychron_q2_max_jis_knob_patch = { KEYCHRON_Q2_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_138_patch_entries), keychron_group_138_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 139: | | 0x0820 Q2 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_139_patch_entries[] = { { 14, 0, 15 }, { 29, 1, 15 }, { 43, 2, 15 }, { 55, 3, 12 }, { 61, 4, 10 }, { 62, 4, 11 }, { 63, 4, 12 }, { 64, 4, 13 }, { 65, 4, 14 }, { 66, 4, 15 }, }; static const keychron_patch keychron_q2_max_knob_patch = { KEYCHRON_Q2_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_139_patch_entries), keychron_group_139_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 140: | | 0x0B30 Q3 HE | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_140_patch_entries[] = { { 13, 0, 13 }, { 14, 0, 14 }, { 15, 0, 15 }, { 16, 0, 16 }, { 33, 1, 16 }, { 50, 2, 16 }, { 63, 3, 12 }, { 75, 4, 12 }, { 85, 5, 14 }, { 86, 5, 15 }, { 87, 5, 16 }, }; static const keychron_patch keychron_q3_he_patch = { KEYCHRON_Q3_HE_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_140_patch_entries), keychron_group_140_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 141: | | 0x0B31 Q3 HE ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_141_patch_entries[] = { { 13, 0, 13 }, { 14, 0, 14 }, { 15, 0, 15 }, { 16, 0, 16 }, { 33, 1, 16 }, { 50, 2, 16 }, { 63, 3, 12 }, { 76, 4, 12 }, { 86, 5, 14 }, { 87, 5, 15 }, { 88, 5, 16 }, }; static const keychron_patch keychron_q3_he_iso_knob_patch = { KEYCHRON_Q3_HE_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_141_patch_entries), keychron_group_141_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 142: | | 0x0831 Q3 Max ISO Knob | | 0x1031 Q3 HE 8K ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_142_patch_entries[] = { { 76, 4, 12 }, }; static const keychron_patch keychron_q3_max_iso_knob_patch = { KEYCHRON_Q3_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_142_patch_entries), keychron_group_142_patch_entries }; static const keychron_patch keychron_q3_he_8k_iso_patch = { KEYCHRON_Q3_HE_8K_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_142_patch_entries), keychron_group_142_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 143: | | 0x0832 Q3 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_143_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 31, 1, 14 }, { 32, 1, 15 }, { 33, 1, 16 }, { 34, 1, 17 }, { 49, 2, 15 }, { 50, 2, 16 }, { 51, 2, 17 }, { 64, 3, 12 }, }; static const keychron_patch keychron_q3_max_jis_knob_patch = { KEYCHRON_Q3_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_143_patch_entries), keychron_group_143_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 144: | | 0x0830 Q3 Max Knob | | 0x1230 Q3 Ultra | | 0x1610 K1 Ultra 8K Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_144_patch_entries[] = { { 63, 3, 12 }, { 75, 4, 12 }, }; static const keychron_patch keychron_q3_max_knob_patch = { KEYCHRON_Q3_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_144_patch_entries), keychron_group_144_patch_entries }; static const keychron_patch keychron_q3_ultra_patch = { KEYCHRON_Q3_ULTRA_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_144_patch_entries), keychron_group_144_patch_entries }; static const keychron_patch keychron_k1_ultra_8k_knob_patch = { KEYCHRON_K1_ULTRA_8K_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_144_patch_entries), keychron_group_144_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 145: | | 0x0B40 Q4 HE | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_145_patch_entries[] = { { 40, 2, 12 }, { 57, 4, 10 }, { 58, 4, 11 }, { 59, 4, 12 }, }; static const keychron_patch keychron_q4_he_patch = { KEYCHRON_Q4_HE_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_145_patch_entries), keychron_group_145_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 146: | | 0x0B51 Q5 HE ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_146_patch_entries[] = { { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 16, 0, 18 }, { 17, 0, 19 }, { 32, 1, 15 }, { 33, 1, 16 }, { 34, 1, 17 }, { 35, 1, 18 }, { 36, 1, 19 }, { 51, 2, 15 }, { 52, 2, 16 }, { 53, 2, 17 }, { 54, 2, 18 }, { 55, 2, 19 }, { 69, 3, 15 }, { 70, 3, 16 }, { 71, 3, 17 }, { 72, 3, 18 }, { 84, 4, 11 }, { 85, 4, 12 }, { 87, 4, 16 }, { 88, 4, 17 }, { 89, 4, 18 }, { 90, 4, 19 }, { 95, 5, 10 }, { 96, 5, 11 }, { 97, 5, 12 }, { 98, 5, 13 }, { 99, 5, 14 }, { 100, 5, 15 }, { 102, 5, 18 }, }; static const keychron_patch keychron_q5_he_iso_knob_patch = { KEYCHRON_Q5_HE_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_146_patch_entries), keychron_group_146_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 147: | | 0x0B52 Q5 HE JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_147_patch_entries[] = { { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 16, 0, 18 }, { 17, 0, 19 }, { 32, 1, 14 }, { 33, 1, 15 }, { 34, 1, 16 }, { 35, 1, 17 }, { 36, 1, 18 }, { 37, 1, 19 }, { 52, 2, 15 }, { 53, 2, 16 }, { 54, 2, 17 }, { 55, 2, 18 }, { 56, 2, 19 }, { 70, 3, 15 }, { 71, 3, 16 }, { 72, 3, 17 }, { 73, 3, 18 }, { 87, 4, 15 }, { 88, 4, 16 }, { 89, 4, 17 }, { 90, 4, 18 }, { 91, 4, 19 }, { 97, 5, 9 }, { 98, 5, 10 }, { 99, 5, 11 }, { 100, 5, 12 }, { 101, 5, 14 }, { 102, 5, 15 }, { 103, 5, 16 }, { 104, 5, 17 }, { 105, 5, 18 }, }; static const keychron_patch keychron_q5_he_jis_knob_patch = { KEYCHRON_Q5_HE_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_147_patch_entries), keychron_group_147_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 148: | | 0x0B50 Q5 HE Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_148_patch_entries[] = { { 69, 3, 14 }, { 83, 4, 11 }, { 84, 4, 12 }, { 85, 4, 13 }, { 100, 5, 15 }, }; static const keychron_patch keychron_q5_he_knob_patch = { KEYCHRON_Q5_HE_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_148_patch_entries), keychron_group_148_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 149: | | 0x0851 Q5 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_149_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 16, 0, 18 }, { 17, 0, 19 }, { 32, 1, 15 }, { 33, 1, 16 }, { 34, 1, 17 }, { 35, 1, 18 }, { 36, 1, 19 }, { 51, 2, 15 }, { 52, 2, 16 }, { 53, 2, 17 }, { 54, 2, 18 }, { 55, 2, 19 }, { 69, 3, 15 }, { 70, 3, 16 }, { 71, 3, 17 }, { 72, 3, 18 }, { 86, 4, 16 }, { 87, 4, 17 }, { 88, 4, 18 }, { 89, 4, 19 }, { 90, 4, 14 }, { 95, 5, 10 }, { 96, 5, 11 }, { 97, 5, 12 }, { 99, 5, 18 }, { 100, 5, 13 }, { 101, 5, 14 }, { 102, 5, 15 }, }; static const keychron_patch keychron_q5_max_iso_knob_patch = { KEYCHRON_Q5_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_149_patch_entries), keychron_group_149_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 150: | | 0x0852 Q5 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_150_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 7 }, { 6, 0, 8 }, { 7, 0, 9 }, { 8, 0, 10 }, { 9, 0, 11 }, { 10, 0, 12 }, { 11, 0, 13 }, { 12, 0, 14 }, { 13, 0, 15 }, { 14, 0, 16 }, { 15, 0, 17 }, { 16, 0, 18 }, { 17, 0, 19 }, { 33, 1, 15 }, { 34, 1, 16 }, { 35, 1, 17 }, { 36, 1, 18 }, { 37, 1, 19 }, { 52, 2, 15 }, { 53, 2, 16 }, { 54, 2, 17 }, { 55, 2, 18 }, { 56, 2, 19 }, { 70, 3, 15 }, { 71, 3, 16 }, { 72, 3, 17 }, { 73, 3, 18 }, { 87, 4, 16 }, { 88, 4, 17 }, { 89, 4, 18 }, { 90, 4, 19 }, { 91, 4, 15 }, { 97, 5, 9 }, { 98, 5, 10 }, { 99, 5, 11 }, { 100, 5, 12 }, { 101, 5, 17 }, { 102, 5, 18 }, { 103, 5, 14 }, { 104, 5, 15 }, { 105, 5, 16 }, }; static const keychron_patch keychron_q5_max_jis_knob_patch = { KEYCHRON_Q5_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_150_patch_entries), keychron_group_150_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 151: | | 0x0850 Q5 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_151_patch_entries[] = { { 1, 0, 2 }, { 2, 0, 3 }, { 3, 0, 4 }, { 4, 0, 5 }, { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 69, 3, 14 }, { 100, 5, 15 }, }; static const keychron_patch keychron_q5_max_knob_patch = { KEYCHRON_Q5_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_151_patch_entries), keychron_group_151_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 152: | | 0x0861 Q6 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_152_patch_entries[] = { { 20, 0, 20 }, { 41, 1, 20 }, { 62, 2, 20 }, { 91, 4, 12 }, { 96, 4, 20 }, { 108, 5, 17 }, }; static const keychron_patch keychron_q6_max_iso_knob_patch = { KEYCHRON_Q6_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_152_patch_entries), keychron_group_152_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 153: | | 0x0862 Q6 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_153_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 17, 0, 18 }, { 18, 0, 19 }, { 19, 0, 20 }, { 20, 0, 21 }, { 35, 1, 14 }, { 36, 1, 15 }, { 37, 1, 16 }, { 38, 1, 17 }, { 39, 1, 18 }, { 40, 1, 19 }, { 41, 1, 20 }, { 42, 1, 21 }, { 57, 2, 15 }, { 58, 2, 16 }, { 59, 2, 17 }, { 60, 2, 18 }, { 61, 2, 19 }, { 62, 2, 20 }, { 63, 2, 21 }, { 77, 3, 18 }, { 78, 3, 19 }, { 79, 3, 20 }, { 91, 4, 12 }, { 92, 4, 13 }, { 93, 4, 16 }, { 94, 4, 18 }, { 95, 4, 19 }, { 96, 4, 20 }, { 97, 4, 21 }, { 107, 5, 14 }, { 108, 5, 15 }, { 109, 5, 16 }, { 110, 5, 17 }, { 112, 5, 20 }, }; static const keychron_patch keychron_q6_max_jis_knob_patch = { KEYCHRON_Q6_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_153_patch_entries), keychron_group_153_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 154: | | 0x0860 Q6 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_154_patch_entries[] = { { 20, 0, 20 }, { 41, 1, 20 }, { 62, 2, 20 }, { 90, 4, 12 }, { 95, 4, 20 }, { 107, 5, 17 }, }; static const keychron_patch keychron_q6_max_knob_patch = { KEYCHRON_Q6_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_154_patch_entries), keychron_group_154_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 155: | | 0x08C0 Q60 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_155_patch_entries[] = { { 54, 3, 14 }, }; static const keychron_patch keychron_q60_max_patch = { KEYCHRON_Q60_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_155_patch_entries), keychron_group_155_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 156: | | 0x08B0 Q65 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_156_patch_entries[] = { { 46, 2, 15 }, }; static const keychron_patch keychron_q65_max_knob_patch = { KEYCHRON_Q65_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_156_patch_entries), keychron_group_156_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 157: | | 0x0880 Q8 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_157_patch_entries[] = { { 0, 0, 3 }, { 1, 0, 12 }, { 2, 0, 16 }, { 3, 0, 1 }, { 4, 0, 2 }, { 5, 0, 13 }, { 6, 0, 14 }, { 8, 1, 2 }, { 9, 1, 13 }, { 10, 1, 14 }, { 11, 1, 15 }, { 12, 1, 16 }, { 14, 2, 2 }, { 15, 2, 12 }, { 16, 2, 13 }, { 17, 2, 14 }, { 18, 2, 16 }, { 21, 3, 13 }, { 22, 3, 14 }, { 23, 3, 15 }, { 26, 4, 14 }, { 27, 4, 15 }, { 28, 4, 16 }, { 29, 0, 4 }, { 30, 0, 5 }, { 31, 0, 6 }, { 32, 0, 7 }, { 33, 1, 3 }, { 34, 1, 4 }, { 35, 1, 5 }, { 36, 1, 6 }, { 37, 2, 3 }, { 38, 2, 4 }, { 39, 2, 5 }, { 40, 2, 6 }, { 45, 4, 3 }, { 46, 4, 4 }, { 47, 4, 7 }, { 48, 0, 8 }, { 49, 0, 9 }, { 50, 0, 10 }, { 51, 0, 11 }, { 52, 1, 8 }, { 53, 1, 9 }, { 54, 1, 10 }, { 55, 1, 11 }, { 56, 1, 12 }, { 57, 2, 8 }, { 58, 2, 9 }, { 59, 2, 10 }, { 60, 2, 11 }, { 61, 3, 8 }, { 62, 3, 9 }, { 63, 3, 10 }, { 64, 3, 11 }, { 65, 3, 12 }, { 66, 4, 8 }, { 67, 4, 9 }, { 68, 4, 12 }, }; static const keychron_patch keychron_q8_max_knob_patch = { KEYCHRON_Q8_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_157_patch_entries), keychron_group_157_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 158: | | 0x0C00 V0 Ultra ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_158_patch_entries[] = { { 25, 5, 1 }, }; static const keychron_patch keychron_v0_ultra_ansi_patch = { KEYCHRON_V0_ULTRA_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_158_patch_entries), keychron_group_158_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 159: | | 0x0914 V1 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_159_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 43, 2, 13 }, }; static const keychron_patch keychron_v1_max_iso_knob_patch = { KEYCHRON_V1_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_159_patch_entries), keychron_group_159_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 160: | | 0x0915 V1 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_160_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 44, 2, 13 }, }; static const keychron_patch keychron_v1_max_jis_knob_patch = { KEYCHRON_V1_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_160_patch_entries), keychron_group_160_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 161: | | 0x0913 V1 Max Knob | | 0x0C10 V1 Ultra 8K | | 0x0C13 V1 Ultra SE Knob ANSI | | 0x0C14 V1 Ultra 8K | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_161_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 57, 3, 12 }, }; static const keychron_patch keychron_v1_max_knob_patch = { KEYCHRON_V1_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_161_patch_entries), keychron_group_161_patch_entries }; static const keychron_patch keychron_v1_ultra_8k_0c10_patch = { KEYCHRON_V1_ULTRA_8K_0C10_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_161_patch_entries), keychron_group_161_patch_entries }; static const keychron_patch keychron_v1_ultra_se_knob_ansi_patch = { KEYCHRON_V1_ULTRA_SE_KNOB_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_161_patch_entries), keychron_group_161_patch_entries }; static const keychron_patch keychron_v1_ultra_8k_0c14_patch = { KEYCHRON_V1_ULTRA_8K_0C14_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_161_patch_entries), keychron_group_161_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 163: | | 0x09A0 V10 Max US Knob | | 0x0CA0 V10 Ultra 8K Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_163_patch_entries[] = { { 63, 5, 5 }, }; static const keychron_patch keychron_v10_max_us_knob_patch = { KEYCHRON_V10_MAX_US_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_163_patch_entries), keychron_group_163_patch_entries }; static const keychron_patch keychron_v10_ultra_8k_knob_patch = { KEYCHRON_V10_ULTRA_8K_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_163_patch_entries), keychron_group_163_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 166: | | 0x0F30 V3 8K Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_166_patch_entries[] = { { 63, 3, 12 }, { 75, 4, 12 }, }; static const keychron_patch keychron_v3_8k_knob_patch = { KEYCHRON_V3_8K_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_166_patch_entries), keychron_group_166_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 168: | | 0x0935 V3 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_168_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 31, 1, 14 }, { 32, 1, 15 }, { 33, 1, 16 }, { 34, 1, 17 }, { 49, 2, 15 }, { 50, 2, 16 }, { 51, 2, 17 }, { 78, 4, 16 }, { 89, 5, 15 }, { 90, 5, 16 }, { 91, 5, 17 }, }; static const keychron_patch keychron_v3_max_jis_knob_patch = { KEYCHRON_V3_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_168_patch_entries), keychron_group_168_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 170: | | 0x0940 V4 Max | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_170_patch_entries[] = { { 40, 2, 12 }, { 52, 3, 12 }, }; static const keychron_patch keychron_v4_max_patch = { KEYCHRON_V4_MAX_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_170_patch_entries), keychron_group_170_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 171: | | 0x0941 V4 MAX ISO | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_171_patch_entries[] = { { 40, 2, 12 }, { 53, 3, 12 }, }; static const keychron_patch keychron_v4_max_iso_patch = { KEYCHRON_V4_MAX_ISO_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_171_patch_entries), keychron_group_171_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 172: | | 0x0951 V5 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_172_patch_entries[] = { { 52, 2, 18 }, }; static const keychron_patch keychron_v5_max_iso_knob_patch = { KEYCHRON_V5_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_172_patch_entries), keychron_group_172_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 173: | | 0x0952 V5 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_173_patch_entries[] = { { 53, 2, 18 }, }; static const keychron_patch keychron_v5_max_jis_knob_patch = { KEYCHRON_V5_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_173_patch_entries), keychron_group_173_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 174: | | 0x0950 V5 Max Knob | | 0x0C50 V5 Ultra ANSI | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_174_patch_entries[] = { { 52, 2, 18 }, }; static const keychron_patch keychron_v5_max_knob_patch = { KEYCHRON_V5_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_174_patch_entries), keychron_group_174_patch_entries }; static const keychron_patch keychron_v5_ultra_ansi_patch = { KEYCHRON_V5_ULTRA_ANSI_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_174_patch_entries), keychron_group_174_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 175: | | 0x0961 V6 Max ISO Knob | | 0x0F61 V6 8K ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_175_patch_entries[] = { { 62, 2, 20 }, { 96, 4, 20 }, }; static const keychron_patch keychron_v6_max_iso_knob_patch = { KEYCHRON_V6_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_175_patch_entries), keychron_group_175_patch_entries }; static const keychron_patch keychron_v6_8k_iso_knob_patch = { KEYCHRON_V6_8K_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_175_patch_entries), keychron_group_175_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 176: | 0x0962 V6 Max JIS Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_176_patch_entries[] = { { 5, 0, 6 }, { 6, 0, 7 }, { 7, 0, 8 }, { 8, 0, 9 }, { 9, 0, 10 }, { 10, 0, 11 }, { 11, 0, 12 }, { 12, 0, 13 }, { 13, 0, 14 }, { 14, 0, 15 }, { 15, 0, 16 }, { 16, 0, 17 }, { 17, 0, 18 }, { 18, 0, 19 }, { 19, 0, 20 }, { 20, 0, 21 }, { 35, 1, 14 }, { 36, 1, 15 }, { 37, 1, 16 }, { 38, 1, 17 }, { 39, 1, 18 }, { 40, 1, 19 }, { 41, 1, 20 }, { 42, 1, 21 }, { 57, 2, 15 }, { 58, 2, 16 }, { 59, 2, 17 }, { 60, 2, 18 }, { 61, 2, 19 }, { 62, 2, 20 }, { 76, 3, 18 }, { 77, 3, 19 }, { 78, 3, 20 }, { 79, 2, 21 }, { 93, 4, 16 }, { 94, 4, 18 }, { 95, 4, 19 }, { 96, 4, 20 }, { 107, 5, 15 }, { 108, 5, 16 }, { 109, 5, 17 }, { 110, 5, 18 }, { 111, 5, 20 }, { 112, 4, 21 }, }; static const keychron_patch keychron_v6_max_jis_knob_patch = { KEYCHRON_V6_MAX_JIS_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_176_patch_entries), keychron_group_176_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 177: | | 0x0960 V6 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_177_patch_entries[] = { { 62, 2, 20 }, { 95, 4, 20 }, }; static const keychron_patch keychron_v6_max_knob_patch = { KEYCHRON_V6_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_177_patch_entries), keychron_group_177_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 178: | | 0x0981 V8 Max ISO Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_178_patch_entries[] = { { 6, 0, 13 }, { 17, 2, 13 }, { 68, 4, 8 }, { 69, 4, 10 }, }; static const keychron_patch keychron_v8_max_iso_knob_patch = { KEYCHRON_V8_MAX_ISO_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_178_patch_entries), keychron_group_178_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 179: | | 0x0980 V8 Max Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_179_patch_entries[] = { { 6, 0, 13 }, { 17, 2, 13 }, { 46, 4, 4 }, }; static const keychron_patch keychron_v8_max_knob_patch = { KEYCHRON_V8_MAX_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_179_patch_entries), keychron_group_179_patch_entries }; /*---------------------------------------------------------*\ | Geometry Group 180: | | 0x0111 Q2 Knob | \*---------------------------------------------------------*/ static const keychron_patch_entry keychron_group_180_patch_entries[] = { { 60, 4, 9 }, { 61, 4, 10 }, { 62, 4, 11 }, { 63, 4, 12 }, { 54, 3, 12 }, { 55, 3, 13 }, { 64, 4, 13 }, }; static const keychron_patch keychron_q2_knob_patch = { KEYCHRON_Q2_KNOB_PID, KEYCHRON_PATCH_ENTRIES_COUNT(keychron_group_180_patch_entries), keychron_group_180_patch_entries }; /*---------------------------------------------------------*\ | List of all Keychron matrix patches | \*---------------------------------------------------------*/ const keychron_patch* const keychron_patches[] = { &keychron_c2_pro_8k_patch, &keychron_c3_pro_8k_jis_patch, &keychron_k1_max_iso_patch, &keychron_k1_max_jis_patch, &keychron_k1_max_patch, &keychron_k1_v6_jis_patch, &keychron_k10_max_iso_patch, &keychron_k10_ultra_8k_iso_16a1_patch, &keychron_k10_max_jis_patch, &keychron_k10_max_patch, &keychron_k10_ultra_8k_patch, &keychron_k10_ultra_8k_iso_16a3_patch, &keychron_k10_v2_iso_patch, &keychron_k10_v2_jis_patch, &keychron_k10x_patch, &keychron_k11_max_iso_knob_patch, &keychron_k11_max_jis_knob_patch, &keychron_k11_max_knob_patch, &keychron_k13_max_iso_patch, &keychron_k13_max_jis_patch, &keychron_k13_max_patch, &keychron_k15_max_iso_knob_patch, &keychron_k15_max_jis_knob_patch, &keychron_k15_max_knob_patch, &keychron_k17_max_iso_knob_patch, &keychron_k17_max_jis_knob_patch, &keychron_k17_max_knob_patch, &keychron_k2_he_ansi_patch, &keychron_k3_he_patch, &keychron_k2_he_iso_patch, &keychron_k3_he_iso_patch, &keychron_k2_he_jis_patch, &keychron_k2_max_iso_patch, &keychron_k2_max_jis_patch, &keychron_k2_max_patch, &keychron_k3_max_iso_patch, &keychron_k2_v3_iso_patch, &keychron_k3_v3_iso_patch, &keychron_k3_ultra_8k_iso_patch, &keychron_k3_max_jis_patch, &keychron_k3_max_patch, &keychron_k2x_patch, &keychron_k3x_patch, &keychron_k3_max_se_patch, &keychron_k3_ultra_8k_ansi_patch, &keychron_k4_he_patch, &keychron_k4_he_iso_patch, &keychron_k4_he_jis_patch, &keychron_k4_max_ansi_patch, &keychron_k4x_jis_patch, &keychron_k5_max_iso_patch, &keychron_k5_max_jis_0a52_patch, &keychron_k5_max_patch, &keychron_k5x_iso_patch, &keychron_k6_he_patch, &keychron_k7_max_iso_patch, &keychron_k7_max_jis_patch, &keychron_k7_max_jis_v2_patch, &keychron_k7_max_patch, &keychron_k8_he_patch, &keychron_k8_he_iso_patch, &keychron_k8_he_jis_rbg_patch, &keychron_k8_max_jis_patch, &keychron_k9_max_patch, &keychron_c0_he_8k_patch, &keychron_c1_pro_8k_iso_patch, &keychron_c3_pro_iso_8k_patch, &keychron_k8_max_iso_patch, &keychron_k1x_iso_patch, &keychron_k8_v2_iso_patch, &keychron_c1_pro_8k_jis_patch, &keychron_k8_v2_jis_patch, &keychron_c2_pro_iso_8k_patch, &keychron_j1_patch, &keychron_j2_patch, &keychron_j2_ansi_knob_patch, &keychron_j2_he_8k_ansi_patch, &keychron_j3_se_knob_patch, &keychron_j4_patch, &keychron_j4_ansi_patch, &keychron_c1_pro_8k_patch, &keychron_c3_pro_8k_patch, &keychron_k8_max_patch, &keychron_k1x_us_patch, &keychron_k8_v2_patch, &keychron_j5_patch, &keychron_j5_ansi_knob_patch, &keychron_k0_max_patch, &keychron_k2_ultra_8k_ansi_patch, &keychron_k2_ultra_8k_iso_patch, &keychron_k2_v3_jis_patch, &keychron_k3_v3_jis_patch, &keychron_k4_max_iso_patch, &keychron_k4_max_jis_patch, &keychron_k4_ultra_8k_patch, &keychron_k4_v3_iso_patch, &keychron_k4_v3_patch, &keychron_k5_max_jis_0a58_patch, &keychron_k5_ultra_8k_knob_ansi_patch, &keychron_k5_ultra_8k_knob_iso_patch, &keychron_k5_v2_patch, &keychron_k5_v2_jis_patch, &keychron_k6_he_iso_patch, &keychron_k8_ultra_8k_ansi_patch, &keychron_k8_ultra_8k_iso_patch, &keychron_q1_he_patch, &keychron_q1_he_ansi_v2_silent_patch, &keychron_q1_he_8k_ansi_patch, &keychron_q1_he_8k_iso_knob_patch, &keychron_q11_ultra_8k_knob_patch, &keychron_q11_ultra_8k_knob_iso_patch, &keychron_q12_he_iso_knob_patch, &keychron_q12_he_knob_patch, &keychron_q13_max_jis_knob_patch, &keychron_q13_ultra_8k_knob_patch, &keychron_q2_he_8k_patch, &keychron_q3_he_8k_patch, &keychron_q3_he_8k_ansi_patch, &keychron_q3_he_8k_jis_patch, &keychron_q3_he_jis_knob_patch, &keychron_q3_ultra_8k_knob_iso_patch, &keychron_q5_he_8k_1050_patch, &keychron_q5_he_8k_1053_patch, &keychron_q5_ultra_8k_knob_patch, &keychron_q5_ultra_8k_knob_ansi_patch, &keychron_q6_he_8k_1060_patch, &keychron_q6_he_8k_1063_patch, &keychron_q6_he_8k_iso_patch, &keychron_q6_he_8k_jis_patch, &keychron_q6_he_ansi_knob_0b60_patch, &keychron_q6_he_ansi_knob_0b63_patch, &keychron_q6_he_v2_ansi_knob_silent_patch, &keychron_q6_he_iso_knob_patch, &keychron_q6_he_version2_iso_patch, &keychron_q6_he_jis_knob_patch, &keychron_q6_ultra_8k_ansi_patch, &keychron_q6_ultra_8k_knob_iso_patch, &keychron_v1_8k_ansi_knob_patch, &keychron_v1_ultra_8k_iso_patch, &keychron_v1_ultra_8k_jis_patch, &keychron_v3_ultra_8k_knob_jis_patch, &keychron_v5_8k_ansi_knob_0f50_patch, &keychron_v5_8k_ansi_knob_0f53_patch, &keychron_v6_8k_ansi_knob_patch, &keychron_v6_ultra_ansi_patch, &keychron_q1_he_8k_jis_patch, &keychron_q1_he_iso_patch, &keychron_q1_he_jis_patch, &keychron_q1_he_knob_patch, &keychron_q1_he_dayz_patch, &keychron_q1_max_iso_knob_patch, &keychron_q1_max_jis_knob_patch, &keychron_q1_max_knob_patch, &keychron_q1_ultra_8k_ansi_patch, &keychron_q10_max_iso_knob_patch, &keychron_q10_max_jis_patch, &keychron_q10_max_knob_patch, &keychron_q12_max_iso_knob_patch, &keychron_q12_max_jis_knob_patch, &keychron_q12_max_knob_patch, &keychron_q13_max_knob_patch, &keychron_q14_max_knob_patch, &keychron_q15_max_knob_patch, &keychron_q2_knob_patch, &keychron_q2_he_knob_patch, &keychron_q2_max_iso_knob_patch, &keychron_q2_max_jis_knob_patch, &keychron_q2_max_knob_patch, &keychron_q3_he_patch, &keychron_q3_he_iso_knob_patch, &keychron_q3_max_iso_knob_patch, &keychron_q3_he_8k_iso_patch, &keychron_q3_max_jis_knob_patch, &keychron_q3_max_knob_patch, &keychron_q3_ultra_patch, &keychron_k1_ultra_8k_knob_patch, &keychron_q4_he_patch, &keychron_q5_he_iso_knob_patch, &keychron_q5_he_jis_knob_patch, &keychron_q5_he_knob_patch, &keychron_q5_max_iso_knob_patch, &keychron_q5_max_jis_knob_patch, &keychron_q5_max_knob_patch, &keychron_q6_max_iso_knob_patch, &keychron_q6_max_jis_knob_patch, &keychron_q6_max_knob_patch, &keychron_q60_max_patch, &keychron_q65_max_knob_patch, &keychron_q8_max_knob_patch, &keychron_v0_ultra_ansi_patch, &keychron_v1_max_iso_knob_patch, &keychron_v1_max_jis_knob_patch, &keychron_v1_max_knob_patch, &keychron_v1_ultra_8k_0c10_patch, &keychron_v1_ultra_se_knob_ansi_patch, &keychron_v1_ultra_8k_0c14_patch, &keychron_v10_max_us_knob_patch, &keychron_v10_ultra_8k_knob_patch, &keychron_v3_8k_knob_patch, &keychron_v3_max_jis_knob_patch, &keychron_v4_max_patch, &keychron_v4_max_iso_patch, &keychron_v5_max_iso_knob_patch, &keychron_v5_max_jis_knob_patch, &keychron_v5_max_knob_patch, &keychron_v5_ultra_ansi_patch, &keychron_v6_max_iso_knob_patch, &keychron_v6_8k_iso_knob_patch, &keychron_v6_max_jis_knob_patch, &keychron_v6_max_knob_patch, &keychron_v8_max_iso_knob_patch, &keychron_v8_max_knob_patch, }; const unsigned int KEYCHRON_PATCH_COUNT = sizeof(keychron_patches) / sizeof(keychron_patch*);