Files
OpenRGB/Controllers/QMKController/QMKKeychronController/QMKKeychronController_Devices.h
T

270 lines
15 KiB
C

/*---------------------------------------------------------*\
| QMKKechronController_Devices.h |
| |
| Keychron device IDs and matrix correction data |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
/*---------------------------------------------------------*\
| Keychron product IDs |
\*---------------------------------------------------------*/
#define KEYCHRON_C1_PRO_8K_PID 0x0521
#define KEYCHRON_C2_PRO_8K_PID 0x0522
#define KEYCHRON_C3_PRO_8K_JIS_PID 0x0532
#define KEYCHRON_K1_MAX_PID 0x0A10
#define KEYCHRON_K1_MAX_ISO_PID 0x0A11
#define KEYCHRON_K1_MAX_JIS_PID 0x0A12
#define KEYCHRON_K1_V6_JIS_PID 0x0D12
#define KEYCHRON_K10_HE_PID 0x0EA0
#define KEYCHRON_K10_HE_ISO_PID 0x0EA1
#define KEYCHRON_K10_MAX_PID 0x0AA0
#define KEYCHRON_K10_MAX_ISO_PID 0x0AA1
#define KEYCHRON_K10_MAX_JIS_PID 0x0AA2
#define KEYCHRON_K10_ULTRA_8K_ISO_16A3_PID 0x16A3
#define KEYCHRON_K10_V2_ISO_PID 0x0DA1
#define KEYCHRON_K10_V2_JIS_PID 0x0DA2
#define KEYCHRON_K10X_PID 0x0DA0
#define KEYCHRON_K11_MAX_ISO_KNOB_PID 0x0AB4
#define KEYCHRON_K11_MAX_JIS_KNOB_PID 0x0AB5
#define KEYCHRON_K11_MAX_KNOB_PID 0x0AB3
#define KEYCHRON_K13_MAX_PID 0x0AD0
#define KEYCHRON_K13_MAX_ISO_PID 0x0AD1
#define KEYCHRON_K13_MAX_JIS_PID 0x0AD2
#define KEYCHRON_K15_MAX_ISO_KNOB_PID 0x0AF1
#define KEYCHRON_K15_MAX_JIS_KNOB_PID 0x0AF2
#define KEYCHRON_K15_MAX_KNOB_PID 0x0AF0
#define KEYCHRON_K17_MAX_ISO_KNOB_PID 0x0A01
#define KEYCHRON_K17_MAX_JIS_KNOB_PID 0x0A02
#define KEYCHRON_K17_MAX_KNOB_PID 0x0A00
#define KEYCHRON_K1X_ISO_PID 0x0D11
#define KEYCHRON_K1X_US_PID 0x0D10
#define KEYCHRON_K2_HE_ANSI_PID 0x0E20
#define KEYCHRON_K2_HE_ISO_PID 0x0E21
#define KEYCHRON_K2_HE_JIS_PID 0x0E22
#define KEYCHRON_K2_MAX_PID 0x0A20
#define KEYCHRON_K2_MAX_ISO_PID 0x0A21
#define KEYCHRON_K2_MAX_JIS_PID 0x0A22
#define KEYCHRON_K2_V3_ISO_PID 0x0D21
#define KEYCHRON_K2X_PID 0x0D20
#define KEYCHRON_K3_MAX_PID 0x0A30
#define KEYCHRON_K3_MAX_ISO_PID 0x0A31
#define KEYCHRON_K3_MAX_JIS_PID 0x0A32
#define KEYCHRON_K3_V3_ISO_PID 0x0D31
#define KEYCHRON_K3_V3_JIS_PID 0x0D32
#define KEYCHRON_K3X_PID 0x0D30
#define KEYCHRON_K4_HE_PID 0x0E40
#define KEYCHRON_K4_HE_ISO_PID 0x0E41
#define KEYCHRON_K4_HE_JIS_PID 0x0E42
#define KEYCHRON_K4_MAX_ANSI_PID 0x0A40
#define KEYCHRON_K4X_JIS_PID 0x0D42
#define KEYCHRON_K5_MAX_PID 0x0A50
#define KEYCHRON_K5_MAX_ISO_PID 0x0A51
#define KEYCHRON_K5_MAX_JIS_0A52_PID 0x0A52
#define KEYCHRON_K5X_ISO_PID 0x0D51
#define KEYCHRON_K6_HE_PID 0x0E60
#define KEYCHRON_K7_MAX_PID 0x0A70
#define KEYCHRON_K7_MAX_ISO_PID 0x0A71
#define KEYCHRON_K7_MAX_JIS_PID 0x0A72
#define KEYCHRON_K7_MAX_JIS_V2_PID 0x0A76
#define KEYCHRON_K8_HE_PID 0x0E80
#define KEYCHRON_K8_HE_ISO_PID 0x0E81
#define KEYCHRON_K8_HE_JIS_RBG_PID 0x0E82
#define KEYCHRON_K8_MAX_PID 0x0A80
#define KEYCHRON_K8_MAX_ISO_PID 0x0A81
#define KEYCHRON_K8_MAX_JIS_PID 0x0A82
#define KEYCHRON_K8_V2_PID 0x0D80
#define KEYCHRON_K8_V2_JIS_PID 0x0D82
#define KEYCHRON_K9_MAX_PID 0x0A90
#define KEYCHRON_C0_HE_8K_PID 0x1500
#define KEYCHRON_C1_PRO_8K_ISO_PID 0x051D
#define KEYCHRON_C1_PRO_8K_JIS_PID 0x051E
#define KEYCHRON_C2_PRO_ISO_8K_PID 0x052D
#define KEYCHRON_C3_PRO_8K_PID 0x0530
#define KEYCHRON_C3_PRO_ISO_8K_PID 0x0531
#define KEYCHRON_J1_PID 0x0405
#define KEYCHRON_J2_PID 0x0406
#define KEYCHRON_J2_ANSI_KNOB_PID 0x0456
#define KEYCHRON_J2_HE_8K_ANSI_PID 0x0416
#define KEYCHRON_J3_SE_KNOB_PID 0x042D
#define KEYCHRON_J4_PID 0x0408
#define KEYCHRON_J4_ANSI_PID 0x0457
#define KEYCHRON_J5_PID 0x0409
#define KEYCHRON_J5_ANSI_KNOB_PID 0x0453
#define KEYCHRON_K0_MAX_PID 0x0A06
#define KEYCHRON_K1_ULTRA_8K_KNOB_PID 0x1610
#define KEYCHRON_K10_ULTRA_8K_PID 0x16A0
#define KEYCHRON_K10_ULTRA_8K_ISO_16A1_PID 0x16A1
#define KEYCHRON_K2_ULTRA_8K_ANSI_PID 0x1620
#define KEYCHRON_K2_ULTRA_8K_ISO_PID 0x1621
#define KEYCHRON_K2_V3_JIS_PID 0x0D22
#define KEYCHRON_K3_HE_PID 0x0E30
#define KEYCHRON_K3_HE_ISO_PID 0x0E31
#define KEYCHRON_K3_MAX_SE_PID 0x0D3B
#define KEYCHRON_K3_ULTRA_8K_ANSI_PID 0x1630
#define KEYCHRON_K3_ULTRA_8K_ISO_PID 0x1631
#define KEYCHRON_K4_MAX_ISO_PID 0x0A41
#define KEYCHRON_K4_MAX_JIS_PID 0x0A42
#define KEYCHRON_K4_ULTRA_8K_PID 0x1640
#define KEYCHRON_K4_V3_PID 0x0D40
#define KEYCHRON_K4_V3_ISO_PID 0x0D41
#define KEYCHRON_K5_MAX_JIS_0A58_PID 0x0A58
#define KEYCHRON_K5_ULTRA_8K_KNOB_ANSI_PID 0x1650
#define KEYCHRON_K5_ULTRA_8K_KNOB_ISO_PID 0x1651
#define KEYCHRON_K5_V2_PID 0x0D50
#define KEYCHRON_K5_V2_JIS_PID 0x0D52
#define KEYCHRON_K6_HE_ISO_PID 0x0E61
#define KEYCHRON_K8_ULTRA_8K_ANSI_PID 0x1680
#define KEYCHRON_K8_ULTRA_8K_ISO_PID 0x1681
#define KEYCHRON_K8_V2_ISO_PID 0x0D81
#define KEYCHRON_Q0_HE_V2_KNOB_PID 0x0B01
#define KEYCHRON_Q1_HE_PID 0x0B14
#define KEYCHRON_Q1_HE_8K_ANSI_PID 0x1010
#define KEYCHRON_Q1_HE_8K_ISO_KNOB_PID 0x1011
#define KEYCHRON_Q1_HE_ANSI_V2_SILENT_PID 0x0B15
#define KEYCHRON_Q1_HE_DAYZ_PID 0x0B13
#define KEYCHRON_Q1_ULTRA_8K_ANSI_PID 0x1210
#define KEYCHRON_Q11_ULTRA_8K_KNOB_PID 0x12B0
#define KEYCHRON_Q11_ULTRA_8K_KNOB_ISO_PID 0x12B2
#define KEYCHRON_Q12_HE_ISO_KNOB_PID 0x0BC1
#define KEYCHRON_Q12_HE_KNOB_PID 0x0BC0
#define KEYCHRON_Q13_MAX_JIS_KNOB_PID 0x08D2
#define KEYCHRON_Q13_ULTRA_8K_KNOB_PID 0x12D0
#define KEYCHRON_Q16_HE_8K_10F3_PID 0x10F3
#define KEYCHRON_Q16_HE_8K_10F6_PID 0x10F6
#define KEYCHRON_Q16_HE_8K_ISO_PID 0x10F4
#define KEYCHRON_Q2_KNOB_PID 0x0111
#define KEYCHRON_Q2_HE_8K_PID 0x1020
#define KEYCHRON_Q3_HE_8K_PID 0x1030
#define KEYCHRON_Q3_HE_8K_ANSI_PID 0x1033
#define KEYCHRON_Q3_HE_8K_ISO_PID 0x1031
#define KEYCHRON_Q3_HE_8K_JIS_PID 0x1032
#define KEYCHRON_Q3_HE_JIS_KNOB_PID 0x0B32
#define KEYCHRON_Q3_ULTRA_8K_KNOB_ISO_PID 0x1231
#define KEYCHRON_Q5_HE_8K_1050_PID 0x1050
#define KEYCHRON_Q5_HE_8K_1053_PID 0x1053
#define KEYCHRON_Q5_ULTRA_8K_KNOB_PID 0x1250
#define KEYCHRON_Q5_ULTRA_8K_KNOB_ANSI_PID 0x1253
#define KEYCHRON_Q6_HE_8K_1060_PID 0x1060
#define KEYCHRON_Q6_HE_8K_1063_PID 0x1063
#define KEYCHRON_Q6_HE_8K_ISO_PID 0x1061
#define KEYCHRON_Q6_HE_8K_JIS_PID 0x1062
#define KEYCHRON_Q6_HE_ANSI_KNOB_0B60_PID 0x0B60
#define KEYCHRON_Q6_HE_ANSI_KNOB_0B63_PID 0x0B63
#define KEYCHRON_Q6_HE_ISO_KNOB_PID 0x0B61
#define KEYCHRON_Q6_HE_JIS_KNOB_PID 0x0B62
#define KEYCHRON_Q6_HE_V2_ANSI_KNOB_SILENT_PID 0x0B64
#define KEYCHRON_Q6_ULTRA_8K_ANSI_PID 0x1260
#define KEYCHRON_Q6_ULTRA_8K_KNOB_ISO_PID 0x1261
#define KEYCHRON_V1_8K_ANSI_KNOB_PID 0x0F10
#define KEYCHRON_V1_ULTRA_8K_0C10_PID 0x0C10
#define KEYCHRON_V1_ULTRA_8K_0C14_PID 0x0C14
#define KEYCHRON_V1_ULTRA_8K_ISO_PID 0x0C11
#define KEYCHRON_V1_ULTRA_8K_JIS_PID 0x0C12
#define KEYCHRON_V1_ULTRA_SE_KNOB_ANSI_PID 0x0C13
#define KEYCHRON_V10_ULTRA_8K_KNOB_PID 0x0CA0
#define KEYCHRON_V2_MAX_JIS_KNOB_PID 0x0922
#define KEYCHRON_V2_ULTRA_8K_PID 0x0C20
#define KEYCHRON_V3_ULTRA_8K_PID 0x0C30
#define KEYCHRON_V3_ULTRA_8K_KNOB_ISO_PID 0x0C31
#define KEYCHRON_V3_ULTRA_8K_KNOB_JIS_PID 0x0C32
#define KEYCHRON_V5_8K_ANSI_KNOB_0F50_PID 0x0F50
#define KEYCHRON_V5_8K_ANSI_KNOB_0F53_PID 0x0F53
#define KEYCHRON_V5_ULTRA_ANSI_PID 0x0C50
#define KEYCHRON_V6_8K_ANSI_KNOB_PID 0x0F60
#define KEYCHRON_V6_8K_ISO_KNOB_PID 0x0F61
#define KEYCHRON_V6_ULTRA_ANSI_PID 0x0C60
#define KEYCHRON_Q0_HE_KNOB_PID 0x0B00
#define KEYCHRON_Q0_MAX_KNOB_PID 0x0800
#define KEYCHRON_Q1_HE_8K_JIS_PID 0x1012
#define KEYCHRON_Q1_HE_ISO_PID 0x0B11
#define KEYCHRON_Q1_HE_JIS_PID 0x0B12
#define KEYCHRON_Q1_HE_KNOB_PID 0x0B10
#define KEYCHRON_Q1_MAX_ISO_KNOB_PID 0x0811
#define KEYCHRON_Q1_MAX_JIS_KNOB_PID 0x0812
#define KEYCHRON_Q1_MAX_KNOB_PID 0x0810
#define KEYCHRON_Q10_MAX_ISO_KNOB_PID 0x08A1
#define KEYCHRON_Q10_MAX_JIS_PID 0x08A2
#define KEYCHRON_Q10_MAX_KNOB_PID 0x08A0
#define KEYCHRON_Q12_MAX_ISO_KNOB_PID 0x08C4
#define KEYCHRON_Q12_MAX_JIS_KNOB_PID 0x08C5
#define KEYCHRON_Q12_MAX_KNOB_PID 0x08C3
#define KEYCHRON_Q13_MAX_KNOB_PID 0x08D0
#define KEYCHRON_Q14_MAX_KNOB_PID 0x08E0
#define KEYCHRON_Q15_MAX_KNOB_PID 0x08F0
#define KEYCHRON_Q2_HE_KNOB_PID 0x0B20
#define KEYCHRON_Q2_MAX_ISO_KNOB_PID 0x0821
#define KEYCHRON_Q2_MAX_JIS_KNOB_PID 0x0822
#define KEYCHRON_Q2_MAX_KNOB_PID 0x0820
#define KEYCHRON_Q3_HE_PID 0x0B30
#define KEYCHRON_Q3_HE_ISO_KNOB_PID 0x0B31
#define KEYCHRON_Q3_MAX_ISO_KNOB_PID 0x0831
#define KEYCHRON_Q3_MAX_JIS_KNOB_PID 0x0832
#define KEYCHRON_Q3_MAX_KNOB_PID 0x0830
#define KEYCHRON_Q3_ULTRA_PID 0x1230
#define KEYCHRON_Q4_HE_PID 0x0B40
#define KEYCHRON_Q5_HE_ISO_KNOB_PID 0x0B51
#define KEYCHRON_Q5_HE_JIS_KNOB_PID 0x0B52
#define KEYCHRON_Q5_HE_KNOB_PID 0x0B50
#define KEYCHRON_Q5_MAX_ISO_KNOB_PID 0x0851
#define KEYCHRON_Q5_MAX_JIS_KNOB_PID 0x0852
#define KEYCHRON_Q5_MAX_KNOB_PID 0x0850
#define KEYCHRON_Q6_HE_VERSION2_ISO_PID 0x0B65
#define KEYCHRON_Q6_MAX_ISO_KNOB_PID 0x0861
#define KEYCHRON_Q6_MAX_JIS_KNOB_PID 0x0862
#define KEYCHRON_Q6_MAX_KNOB_PID 0x0860
#define KEYCHRON_Q60_MAX_PID 0x08C0
#define KEYCHRON_Q65_MAX_KNOB_PID 0x08B0
#define KEYCHRON_Q8_MAX_KNOB_PID 0x0880
#define KEYCHRON_V0_ULTRA_ANSI_PID 0x0C00
#define KEYCHRON_V1_MAX_ISO_KNOB_PID 0x0914
#define KEYCHRON_V1_MAX_JIS_KNOB_PID 0x0915
#define KEYCHRON_V1_MAX_KNOB_PID 0x0913
#define KEYCHRON_V10_MAX_ISO_KNOB_PID 0x09A1
#define KEYCHRON_V10_MAX_US_KNOB_PID 0x09A0
#define KEYCHRON_V2_MAX_ISO_KNOB_PID 0x0921
#define KEYCHRON_V2_MAX_KNOB_PID 0x0920
#define KEYCHRON_V3_8K_KNOB_PID 0x0F30
#define KEYCHRON_V3_MAX_ISO_KNOB_PID 0x0934
#define KEYCHRON_V3_MAX_JIS_KNOB_PID 0x0935
#define KEYCHRON_V3_MAX_KNOB_PID 0x0933
#define KEYCHRON_V4_MAX_PID 0x0940
#define KEYCHRON_V4_MAX_ISO_PID 0x0941
#define KEYCHRON_V5_MAX_ISO_KNOB_PID 0x0951
#define KEYCHRON_V5_MAX_JIS_KNOB_PID 0x0952
#define KEYCHRON_V5_MAX_KNOB_PID 0x0950
#define KEYCHRON_V6_MAX_ISO_KNOB_PID 0x0961
#define KEYCHRON_V6_MAX_JIS_KNOB_PID 0x0962
#define KEYCHRON_V6_MAX_KNOB_PID 0x0960
#define KEYCHRON_V8_MAX_ISO_KNOB_PID 0x0981
#define KEYCHRON_V8_MAX_KNOB_PID 0x0980
/*---------------------------------------------------------*\
| Keychron Patch Types |
| |
| LED index is assumed to match Launcher layout_index. |
| row/col are the corrected visual matrix position. |
\*---------------------------------------------------------*/
typedef struct
{
unsigned int led_idx;
unsigned int row;
unsigned int col;
} keychron_patch_entry;
typedef struct
{
unsigned short pid;
unsigned int num_entries;
const keychron_patch_entry* patch;
} keychron_patch;
/*---------------------------------------------------------*\
| List of all Keychron matrix patches |
\*---------------------------------------------------------*/
extern const keychron_patch* const keychron_patches[];
extern const unsigned int KEYCHRON_PATCH_COUNT;