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

472 lines
32 KiB
C

/*---------------------------------------------------------*\
| QMKKeychronController_Devices.h |
| |
| Keychron device IDs and matrix correction data |
| |
| Generated from canonical PID/name inventory and |
| hand-corrected raw-to-display matrix layout data. |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
/*---------------------------------------------------------*\
| Keychron product IDs |
\*---------------------------------------------------------*/
#define KEYCHRON_Q1V2_ANSI_0106_PID 0x0106
#define KEYCHRON_Q1V2_ANSI_0107_PID 0x0107
#define KEYCHRON_Q1V2_ISO_0108_PID 0x0108
#define KEYCHRON_Q1V2_ISO_0109_PID 0x0109
#define KEYCHRON_Q1V2_JIS_010A_PID 0x010A
#define KEYCHRON_Q1V2_JIS_010B_PID 0x010B
#define KEYCHRON_Q2_ANSI_0110_PID 0x0110
#define KEYCHRON_Q2_ANSI_0111_PID 0x0111
#define KEYCHRON_Q2_ISO_0112_PID 0x0112
#define KEYCHRON_Q2_ISO_0113_PID 0x0113
#define KEYCHRON_Q3_ANSI_0120_PID 0x0120
#define KEYCHRON_Q3_ANSI_0121_PID 0x0121
#define KEYCHRON_Q3_ISO_0122_PID 0x0122
#define KEYCHRON_Q3_ISO_0123_PID 0x0123
#define KEYCHRON_Q0_PID 0x0130
#define KEYCHRON_Q0_PLUS_PID 0x0131
#define KEYCHRON_Q4_ANSI_PID 0x0140
#define KEYCHRON_Q4_ISO_PID 0x0142
#define KEYCHRON_Q5_ANSI_0150_PID 0x0150
#define KEYCHRON_Q5_ANSI_0151_PID 0x0151
#define KEYCHRON_Q5_ISO_0152_PID 0x0152
#define KEYCHRON_Q5_ISO_0153_PID 0x0153
#define KEYCHRON_Q6_ANSI_0160_PID 0x0160
#define KEYCHRON_Q6_ANSI_0161_PID 0x0161
#define KEYCHRON_Q6_ISO_PID 0x0162
#define KEYCHRON_Q6_ANSI_0163_PID 0x0163
#define KEYCHRON_Q7_ANSI_PID 0x0170
#define KEYCHRON_Q7_ISO_PID 0x0172
#define KEYCHRON_Q8_ANSI_0180_PID 0x0180
#define KEYCHRON_Q8_ANSI_0181_PID 0x0181
#define KEYCHRON_Q8_ISO_0182_PID 0x0182
#define KEYCHRON_Q8_ISO_0183_PID 0x0183
#define KEYCHRON_Q10_ANSI_PID 0x01A1
#define KEYCHRON_Q10_ISO_PID 0x01A3
#define KEYCHRON_Q65_ANSI_PID 0x01B1
#define KEYCHRON_Q60_ANSI_PID 0x01C0
#define KEYCHRON_Q12_ANSI_PID 0x01D1
#define KEYCHRON_Q12_ISO_PID 0x01D3
#define KEYCHRON_K1_PRO_ISO_RGB_PID 0x0211
#define KEYCHRON_K2_PRO_RGB_PID 0x0220
#define KEYCHRON_K3_PRO_0230_PID 0x0230
#define KEYCHRON_K3_PRO_0231_PID 0x0231
#define KEYCHRON_K4_PRO_ANSI_RGB_PID 0x0240
#define KEYCHRON_K5_PRO_ANSI_RGB_PID 0x0250
#define KEYCHRON_K5_PRO_ISO_RGB_PID 0x0251
#define KEYCHRON_K6_PRO_RGB_PID 0x0260
#define KEYCHRON_K6_PRO_ISO_RGB_PID 0x0261
#define KEYCHRON_K7_PRO_RGB_PID 0x0270
#define KEYCHRON_K7_PRO_ISO_RGB_PID 0x0271
#define KEYCHRON_K8_PRO_RGB_PID 0x0280
#define KEYCHRON_K8_PRO_JIS_RGB_PID 0x0282
#define KEYCHRON_K10_PRO_ANSI_RGB_PID 0x02A0
#define KEYCHRON_K10_PRO_ISO_RGB_PID 0x02A1
#define KEYCHRON_K10_PRO_JIS_RGB_PID 0x02A2
#define KEYCHRON_V1_ANSI_0310_PID 0x0310
#define KEYCHRON_V1_ANSI_0311_PID 0x0311
#define KEYCHRON_V1_ISO_0312_PID 0x0312
#define KEYCHRON_V1_ISO_0313_PID 0x0313
#define KEYCHRON_V1_BR_PID 0x0317
#define KEYCHRON_V2_ANSI_0320_PID 0x0320
#define KEYCHRON_V2_ANSI_0321_PID 0x0321
#define KEYCHRON_V2_ISO_PID 0x0323
#define KEYCHRON_V2_BR_PID 0x0327
#define KEYCHRON_V3_ANSI_0330_PID 0x0330
#define KEYCHRON_V3_ANSI_0331_PID 0x0331
#define KEYCHRON_V3_ISO_0332_PID 0x0332
#define KEYCHRON_V3_ISO_0333_PID 0x0333
#define KEYCHRON_V3_BR_PID 0x0337
#define KEYCHRON_V4_ANSI_PID 0x0340
#define KEYCHRON_V4_ISO_PID 0x0342
#define KEYCHRON_V5_ANSI_0350_PID 0x0350
#define KEYCHRON_V5_ANSI_0351_PID 0x0351
#define KEYCHRON_V5_ISO_0352_PID 0x0352
#define KEYCHRON_V5_ISO_0353_PID 0x0353
#define KEYCHRON_V6_ANSI_0360_PID 0x0360
#define KEYCHRON_V6_ANSI_0361_PID 0x0361
#define KEYCHRON_V6_ISO_0362_PID 0x0362
#define KEYCHRON_V6_ISO_0363_PID 0x0363
#define KEYCHRON_V6_BR_PID 0x0367
#define KEYCHRON_V7_ANSI_PID 0x0370
#define KEYCHRON_V7_ISO_PID 0x0372
#define KEYCHRON_V8_ANSI_PID 0x0381
#define KEYCHRON_V10_ANSI_PID 0x03A1
#define KEYCHRON_V10_ISO_PID 0x03A3
#define KEYCHRON_P1_HE_DAYZ_PID 0x0402
#define KEYCHRON_P1_HE_DAYZ_ISO_PID 0x0403
#define KEYCHRON_J1_PID 0x0405
#define KEYCHRON_J2_PID 0x0406
#define KEYCHRON_J4_PID 0x0408
#define KEYCHRON_J5_PID 0x0409
#define KEYCHRON_Z6_ULTRA_PID 0x040A
#define KEYCHRON_J3_HE_ANSI_PID 0x040C
#define KEYCHRON_P6_ULTRA_8K_PID 0x040D
#define KEYCHRON_J9_PID 0x0412
#define KEYCHRON_J9_ISO_PID 0x0413
#define KEYCHRON_J9_JIS_PID 0x0414
#define KEYCHRON_J2_HE_8K_ANSI_PID 0x0416
#define KEYCHRON_J8_HE_8K_ANSI_PID 0x0417
#define KEYCHRON_J8_HE_8K_ISO_PID 0x0418
#define KEYCHRON_J8_HE_8K_JIS_PID 0x0419
#define KEYCHRON_KEYCHERON_J7_PID 0x041A
#define KEYCHRON_J14_HE_PID 0x041B
#define KEYCHRON_J12_HE_PID 0x041C
#define KEYCHRON_Z6_75_ULTRA_8K_RGB_PID 0x041D
#define KEYCHRON_J5_HE_ANSI_PID 0x041E
#define KEYCHRON_J4_HE_ANSI_PID 0x041F
#define KEYCHRON_P6_ULTRA_8K_ISO_PID 0x0420
#define KEYCHRON_J15_HE_RGB_PID 0x0429
#define KEYCHRON_X3_ANSI_RGB_PID 0x042A
#define KEYCHRON_J9_ULTRA_8K_ANSI_PID 0x042B
#define KEYCHRON_J3_SE_PID 0x042D
#define KEYCHRON_Z5_98_ULTRA_8K_ANSI_PID 0x042E
#define KEYCHRON_V1_HE_ANSI_PID 0x042F
#define KEYCHRON_C3_PRO_8K_ANSI_0437_PID 0x0437
#define KEYCHRON_C3_MAX_ANSI_PID 0x043A
#define KEYCHRON_V6_HE_ANSI_PID 0x0441
#define KEYCHRON_Z11_ULTRA_L_PID 0x0442
#define KEYCHRON_Z11_ULTRA_R_PID 0x0443
#define KEYCHRON_J5_TMR_ANSI_0445_PID 0x0445
#define KEYCHRON_J5_HE_8K_ISO_PID 0x0446
#define KEYCHRON_J2_ULTRA_8K_ANSI_PID 0x0447
#define KEYCHRON_J5_ULTRA_8K_PID 0x0448
#define KEYCHRON_J2_TMR_PID 0x0449
#define KEYCHRON_J5_TMR_ANSI_044B_PID 0x044B
#define KEYCHRON_J11_ULTRA_8K_044C_PID 0x044C
#define KEYCHRON_Z5_75_ULTRA_8K_ANSI_PID 0x044D
#define KEYCHRON_J3_ULTRA_8K_ANSI_PID 0x044E
#define KEYCHRON_J11_ULTRA_8K_044F_PID 0x044F
#define KEYCHRON_J10_ULTRA_8K_ANSI_0451_PID 0x0451
#define KEYCHRON_J10_ULTRA_8K_ANSI_0452_PID 0x0452
#define KEYCHRON_J5_ANSI_PID 0x0453
#define KEYCHRON_J2_ANSI_PID 0x0456
#define KEYCHRON_J4_ANSI_RGB_PID 0x0457
#define KEYCHRON_J6_ANSI_PID 0x0458
#define KEYCHRON_EX75_HE_8K_ANSI_PID 0x045A
#define KEYCHRON_EX67_HE_8K_ANSI_PID 0x045B
#define KEYCHRON_EX99_HE_8K_ANSI_PID 0x045C
#define KEYCHRON_KEYCHROON_J3_TMR_045E_PID 0x045E
#define KEYCHRON_KEYCHROON_J3_TMR_045F_PID 0x045F
#define KEYCHRON_C75_TMR_8K_JIS_PID 0x0460
#define KEYCHRON_J6_ULTRA_8K_ANSI_PID 0x0461
#define KEYCHRON_Z6_87_ULTRA_8K_PID 0x0462
#define KEYCHRON_CM2_H1_ANSI_PID 0x0463
#define KEYCHRON_F4_HE_8K_PID 0x0464
#define KEYCHRON_J6_FULL_SIZE_8K_PID 0x0467
#define KEYCHRON_J2_TKL_8K_PID 0x0468
#define KEYCHRON_J5_ULTRA_8K_ISO_PID 0x0469
#define KEYCHRON_J8_PID 0x046B
#define KEYCHRON_F4_PRO_8K_PID 0x046C
#define KEYCHRON_CARBON_68_HE_8K_PID 0x0472
#define KEYCHRON_F6_HE_8K_PID 0x0476
#define KEYCHRON_J6_FULL_SIZE_8K_ISO_PID 0x0478
#define KEYCHRON_Z7_MAX_ANSI_RGB_PID 0x0479
#define KEYCHRON_C1_PRO_8K_ISO_RGB_PID 0x051D
#define KEYCHRON_C1_PRO_8K_JIS_RGB_PID 0x051E
#define KEYCHRON_C1_PRO_8K_ANSI_RGB_PID 0x0521
#define KEYCHRON_C2_PRO_8K_ANSI_RGB_PID 0x0522
#define KEYCHRON_C2_PRO_8K_ISO_RGB_PID 0x052D
#define KEYCHRON_C3_PRO_8K_ANSI_0530_PID 0x0530
#define KEYCHRON_C3_PRO_8K_ISO_RGB_PID 0x0531
#define KEYCHRON_C3_PRO_8K_JIS_PID 0x0532
#define KEYCHRON_C3_PRO_8K_ABTN2_PID 0x0536
#define KEYCHRON_C4_PRO_JIS_RGB_PID 0x0542
#define KEYCHRON_Q1_PRO_ANSI_PID 0x0610
#define KEYCHRON_Q1_PRO_ISO_PID 0x0611
#define KEYCHRON_Q2_PRO_ANSI_PID 0x0620
#define KEYCHRON_Q2_PRO_ISO_PID 0x0621
#define KEYCHRON_Q3_PRO_PID 0x0630
#define KEYCHRON_Q3_PRO_ANSI_PID 0x0633
#define KEYCHRON_Q3_PRO_ISO_PID 0x0634
#define KEYCHRON_Q4_PRO_ANSI_RGB_PID 0x0640
#define KEYCHRON_Q5_PRO_ANSI_PID 0x0650
#define KEYCHRON_Q5_PRO_ISO_PID 0x0651
#define KEYCHRON_Q6_PRO_ANSI_PID 0x0660
#define KEYCHRON_Q6_PRO_ISO_PID 0x0661
#define KEYCHRON_Q8_PRO_ANSI_PID 0x0680
#define KEYCHRON_Q10_PRO_ANSI_PID 0x06A0
#define KEYCHRON_Q0_MAX_PID 0x0800
#define KEYCHRON_Q1_MAX_ANSI_PID 0x0810
#define KEYCHRON_Q1_MAX_ISO_PID 0x0811
#define KEYCHRON_Q1_MAX_JIS_PID 0x0812
#define KEYCHRON_Q2_MAX_ANSI_PID 0x0820
#define KEYCHRON_Q2_MAX_ISO_PID 0x0821
#define KEYCHRON_Q3_MAX_ANSI_PID 0x0830
#define KEYCHRON_Q3_MAX_ISO_PID 0x0831
#define KEYCHRON_Q5_MAX_ANSI_PID 0x0850
#define KEYCHRON_Q5_MAX_ISO_PID 0x0851
#define KEYCHRON_Q5_MAX_JIS_PID 0x0852
#define KEYCHRON_Q6_MAX_ANSI_PID 0x0860
#define KEYCHRON_Q6_MAX_ISO_PID 0x0861
#define KEYCHRON_Q8_MAX_ANSI_PID 0x0880
#define KEYCHRON_Q10_MAX_ANSI_PID 0x08A0
#define KEYCHRON_Q10_MAX_ISO_PID 0x08A1
#define KEYCHRON_Q65_MAX_ANSI_PID 0x08B0
#define KEYCHRON_Q11_ULTRA_8K_R_PID 0x08BA
#define KEYCHRON_Q60_MAX_PID 0x08C0
#define KEYCHRON_Q12_MAX_ANSI_PID 0x08C3
#define KEYCHRON_Q12_MAX_ISO_PID 0x08C4
#define KEYCHRON_Q13_MAX_ANSI_PID 0x08D0
#define KEYCHRON_Q13_MAX_JIS_PID 0x08D2
#define KEYCHRON_Q14_MAX_ANSI_PID 0x08E0
#define KEYCHRON_Q15_MAX_ANSI_PID 0x08F0
#define KEYCHRON_V1_MAX_ANSI_PID 0x0913
#define KEYCHRON_V2_ULTRA_ISO_PID 0x0914
#define KEYCHRON_V1_MAX_JIS_PID 0x0915
#define KEYCHRON_V2_MAX_ANSI_PID 0x0920
#define KEYCHRON_V2_MAX_ISO_PID 0x0921
#define KEYCHRON_V2_MAX_JIS_PID 0x0922
#define KEYCHRON_V3_MAX_ANSI_PID 0x0933
#define KEYCHRON_V3_MAX_ISO_PID 0x0934
#define KEYCHRON_V3_MAX_JIS_PID 0x0935
#define KEYCHRON_V4_MAX_ANSI_PID 0x0940
#define KEYCHRON_V5_MAX_ANSI_PID 0x0950
#define KEYCHRON_V5_MAX_ISO_PID 0x0951
#define KEYCHRON_V5_MAX_JIS_PID 0x0952
#define KEYCHRON_V6_MAX_ANSI_PID 0x0960
#define KEYCHRON_V6_MAX_ISO_PID 0x0961
#define KEYCHRON_V6_MAX_JIS_PID 0x0962
#define KEYCHRON_V8_MAX_ANSI_PID 0x0980
#define KEYCHRON_V10_MAX_ANSI_PID 0x09A0
#define KEYCHRON_V10_MAX_ISO_PID 0x09A1
#define KEYCHRON_K17_MAX_ANSI_RGB_PID 0x0A00
#define KEYCHRON_K17_MAX_ISO_RGB_PID 0x0A01
#define KEYCHRON_K0_MAX_RGB_PID 0x0A06
#define KEYCHRON_K17_MAX_JIS_RGB_PID 0x0A07
#define KEYCHRON_K0_MAX_PID 0x0A09
#define KEYCHRON_K1_MAX_ANSI_RGB_PID 0x0A10
#define KEYCHRON_K1_MAX_ISO_RGB_PID 0x0A11
#define KEYCHRON_K1_MAX_JIS_RGB_0A12_PID 0x0A12
#define KEYCHRON_K1_MAX_JIS_RGB_0A16_PID 0x0A16
#define KEYCHRON_K2_MAX_ANSI_RGB_PID 0x0A20
#define KEYCHRON_K2_MAX_ISO_RGB_PID 0x0A21
#define KEYCHRON_K2_MAX_JIS_RGB_PID 0x0A22
#define KEYCHRON_K3_MAX_ANSI_RGB_0A30_PID 0x0A30
#define KEYCHRON_K3_MAX_ISO_RGB_PID 0x0A31
#define KEYCHRON_K3_MAX_JIS_RGB_0A32_PID 0x0A32
#define KEYCHRON_K3_MAX_JIS_RGB_0A39_PID 0x0A39
#define KEYCHRON_K3_MAX_JIS_RGB_0A3B_PID 0x0A3B
#define KEYCHRON_K3_MAX_ANSI_RGB_0A3F_PID 0x0A3F
#define KEYCHRON_K4_MAX_ANSI_RGB_PID 0x0A40
#define KEYCHRON_K4_MAX_ISO_RGB_PID 0x0A41
#define KEYCHRON_K4_MAX_JIS_RGB_PID 0x0A42
#define KEYCHRON_K5_MAX_ANSI_RGB_PID 0x0A50
#define KEYCHRON_K5_MAX_ISO_RGB_PID 0x0A51
#define KEYCHRON_K5_MAX_JIS_RGB_0A52_PID 0x0A52
#define KEYCHRON_K5_MAX_JIS_RGB_0A58_PID 0x0A58
#define KEYCHRON_K7_MAX_ANSI_RGB_PID 0x0A70
#define KEYCHRON_K7_MAX_ISO_RGB_PID 0x0A71
#define KEYCHRON_K7_MAX_V2_JIS_RGB_PID 0x0A76
#define KEYCHRON_K8_MAX_ANSI_RGB_PID 0x0A80
#define KEYCHRON_K8_MAX_ISO_RGB_PID 0x0A81
#define KEYCHRON_K9_MAX_ANSI_RGB_PID 0x0A90
#define KEYCHRON_K10_MAX_ANSI_RGB_PID 0x0AA0
#define KEYCHRON_K10_MAX_ISO_RGB_PID 0x0AA1
#define KEYCHRON_K10_MAX_JIS_RGB_PID 0x0AA2
#define KEYCHRON_K10_MAX_US_V2_RGB_PID 0x0AAC
#define KEYCHRON_K11_MAX_ANSI_RGB_PID 0x0AB3
#define KEYCHRON_K11_MAX_ISO_RGB_PID 0x0AB4
#define KEYCHRON_K11_MAX_JIS_RGB_PID 0x0AB5
#define KEYCHRON_K13_MAX_ANSI_RGB_PID 0x0AD0
#define KEYCHRON_K13_MAX_ISO_RGB_PID 0x0AD1
#define KEYCHRON_K13_MAX_JIS_RGB_PID 0x0AD2
#define KEYCHRON_K15_MAX_ANSI_RGB_PID 0x0AF0
#define KEYCHRON_K15_MAX_ISO_RGB_PID 0x0AF1
#define KEYCHRON_K15_MAX_JIS_RGB_PID 0x0AF2
#define KEYCHRON_Q0_HE_PID 0x0B00
#define KEYCHRON_Q1_HE_ANSI_PID 0x0B10
#define KEYCHRON_Q1_HE_ISO_PID 0x0B11
#define KEYCHRON_Q1_HE_JIS_PID 0x0B12
#define KEYCHRON_Q1_HE_PID 0x0B14
#define KEYCHRON_Q1_HE_V2_SILENT_ANSI_PID 0x0B15
#define KEYCHRON_Q2_HE_ANSI_PID 0x0B20
#define KEYCHRON_Q3_HE_ANSI_PID 0x0B30
#define KEYCHRON_Q3_HE_ISO_PID 0x0B31
#define KEYCHRON_Q3_HE_JIS_PID 0x0B32
#define KEYCHRON_Q4_HE_ANSI_PID 0x0B40
#define KEYCHRON_Q5_HE_ANSI_PID 0x0B50
#define KEYCHRON_Q5_HE_ISO_PID 0x0B51
#define KEYCHRON_Q5_HE_JIS_PID 0x0B52
#define KEYCHRON_Q6_HE_ANSI_0B60_PID 0x0B60
#define KEYCHRON_Q6_HE_ISO_PID 0x0B61
#define KEYCHRON_Q6_HE_JIS_PID 0x0B62
#define KEYCHRON_Q6_HE_ANSI_0B63_PID 0x0B63
#define KEYCHRON_Q6_HE_V2_SILENT_ANSI_PID 0x0B64
#define KEYCHRON_Q12_HE_ANSI_PID 0x0BC0
#define KEYCHRON_Q12_HE_ISO_PID 0x0BC1
#define KEYCHRON_V0_ULTRA_8K_ANSI_PID 0x0C00
#define KEYCHRON_V1_ULTRA_8K_ANSI_PID 0x0C10
#define KEYCHRON_V1_ULTRA_8K_ISO_PID 0x0C11
#define KEYCHRON_V1_ULTRA_8K_JIS_PID 0x0C12
#define KEYCHRON_V1_ULTRA_SE_ANSI_PID 0x0C13
#define KEYCHRON_V1_ULTRA_8K_PID 0x0C14
#define KEYCHRON_V2_ULTRA_8K_PID 0x0C20
#define KEYCHRON_V3_ULTRA_8K_ANSI_PID 0x0C30
#define KEYCHRON_V3_ULTRA_8K_ISO_RGB_PID 0x0C31
#define KEYCHRON_V3_ULTRA_8K_JIS_PID 0x0C32
#define KEYCHRON_V5_ULTRA_8K_ANSI_PID 0x0C50
#define KEYCHRON_V5_ULTRA_ISO_PID 0x0C51
#define KEYCHRON_V5_ULTRA_JIS_PID 0x0C52
#define KEYCHRON_V6_ULTRA_8K_ANSI_PID 0x0C60
#define KEYCHRON_V6_ULTRA_ISO_PID 0x0C61
#define KEYCHRON_V6_ULTRA_8K_JIS_PID 0x0C62
#define KEYCHRON_V6_ULTRA_SE_ANSI_PID 0x0C63
#define KEYCHRON_V10_ULTRA_8K_ANSI_PID 0x0CA0
#define KEYCHRON_K1_V6_ANSI_RGB_PID 0x0D10
#define KEYCHRON_K1_V6_ISO_RGB_PID 0x0D11
#define KEYCHRON_K1_V6_JIS_RGB_PID 0x0D12
#define KEYCHRON_K2_V3_ANSI_RGB_PID 0x0D20
#define KEYCHRON_K2_V3_ISO_RGB_PID 0x0D21
#define KEYCHRON_K2_V3_JIS_RGB_PID 0x0D22
#define KEYCHRON_K3_V3_ANSI_RGB_PID 0x0D30
#define KEYCHRON_K3_V3_ISO_RGB_PID 0x0D31
#define KEYCHRON_K3_V3_JIS_RGB_PID 0x0D32
#define KEYCHRON_K3_MAX_SE_RGB_PID 0x0D3B
#define KEYCHRON_K4_V3_ANSI_RGB_PID 0x0D40
#define KEYCHRON_K4_V3_ISO_RGB_PID 0x0D41
#define KEYCHRON_K5_V2_ANSI_RGB_PID 0x0D50
#define KEYCHRON_K5_V2_ISO_RGB_PID 0x0D51
#define KEYCHRON_K5_V2_JIS_RGB_PID 0x0D52
#define KEYCHRON_K6X_US_RGB_PID 0x0D60
#define KEYCHRON_K8_V2_ANSI_RGB_PID 0x0D80
#define KEYCHRON_K10_V2_ANSI_RGB_PID 0x0DA0
#define KEYCHRON_K2_HE_ANSI_RGB_PID 0x0E20
#define KEYCHRON_K2_HE_ISO_RGB_PID 0x0E21
#define KEYCHRON_K2_HE_JIS_RGB_PID 0x0E22
#define KEYCHRON_K2_HE_BR_RGB_PID 0x0E23
#define KEYCHRON_K2_HE_V2_SILENT_ANSI_PID 0x0E25
#define KEYCHRON_K2_HE_V2_ISO_PID 0x0E26
#define KEYCHRON_K3_HE_PID 0x0E30
#define KEYCHRON_K3_HE_ISO_PID 0x0E31
#define KEYCHRON_K3_HE_JIS_PID 0x0E32
#define KEYCHRON_K4_HE_ANSI_PID 0x0E40
#define KEYCHRON_K4_HE_ISO_PID 0x0E41
#define KEYCHRON_K4_HE_JIS_PID 0x0E42
#define KEYCHRON_K6_HE_ANSI_PID 0x0E60
#define KEYCHRON_K6_HE_ISO_RGB_PID 0x0E61
#define KEYCHRON_K8_HE_ANSI_PID 0x0E80
#define KEYCHRON_K8_HE_ISO_RGB_PID 0x0E81
#define KEYCHRON_K8_HE_JIS_PID 0x0E82
#define KEYCHRON_K10_HE_ANSI_PID 0x0EA0
#define KEYCHRON_K10_HE_ISO_0EA1_PID 0x0EA1
#define KEYCHRON_K10_HE_JIS_PID 0x0EA2
#define KEYCHRON_K10_HE_PID 0x0EA3
#define KEYCHRON_K10_HE_ISO_0EA4_PID 0x0EA4
#define KEYCHRON_K10_HE_ABNT2_PID 0x0EA5
#define KEYCHRON_K10_HE_V2_ANSI_RGB_PID 0x0EA6
#define KEYCHRON_K10_HE_V3_ANSI_RGB_PID 0x0EA7
#define KEYCHRON_V1_8K_ANSI_PID 0x0F10
#define KEYCHRON_V1_8K_ISO_PID 0x0F11
#define KEYCHRON_V3_8K_ANSI_PID 0x0F30
#define KEYCHRON_V3_8K_ISO_PID 0x0F31
#define KEYCHRON_V5_8K_ANSI_0F50_PID 0x0F50
#define KEYCHRON_V5_8K_ISO_PID 0x0F51
#define KEYCHRON_V5_8K_ANSI_0F53_PID 0x0F53
#define KEYCHRON_V6_8K_ANSI_PID 0x0F60
#define KEYCHRON_V6_8K_ISO_PID 0x0F61
#define KEYCHRON_Q19_HE_8K_PID 0x1005
#define KEYCHRON_Q1_HE_8K_ANSI_1010_PID 0x1010
#define KEYCHRON_Q1_HE_8K_ISO_RGB_PID 0x1011
#define KEYCHRON_Q1_HE_8K_JIS_PID 0x1012
#define KEYCHRON_Q1_HE_8K_ABNT2_PID 0x1013
#define KEYCHRON_Q1_HE_MARBLE_8K_ANSI_PID 0x1014
#define KEYCHRON_Q1_SE_8K_ANSI_PID 0x1015
#define KEYCHRON_Q1_HE_8K_ANSI_1016_PID 0x1016
#define KEYCHRON_Q2_HE_8K_PID 0x1020
#define KEYCHRON_Q3_HE_8K_PID 0x1030
#define KEYCHRON_Q3_HE_8K_ISO_PID 0x1031
#define KEYCHRON_Q3_HE_8K_JIS_PID 0x1032
#define KEYCHRON_Q5_HE_8K_PID 0x1050
#define KEYCHRON_Q6_HE_8K_PID 0x1060
#define KEYCHRON_Q6_HE_8K_ISO_PID 0x1061
#define KEYCHRON_Q6_HE_8K_JIS_PID 0x1062
#define KEYCHRON_Q16_HE_8K_PID 0x10F3
#define KEYCHRON_Q16_HE_8K_ISO_PID 0x10F4
#define KEYCHRON_Q1_ULTRA_8K_ANSI_1210_PID 0x1210
#define KEYCHRON_Q1_ULTRA_8K_ISO_PID 0x1211
#define KEYCHRON_Q1_ULTRA_8K_JIS_PID 0x1212
#define KEYCHRON_Q1_ULTRA_8K_ANSI_1213_PID 0x1213
#define KEYCHRON_Q3_ULTRA_8K_ANSI_PID 0x1230
#define KEYCHRON_Q3_ULTRA_8K_ISO_RGB_PID 0x1231
#define KEYCHRON_Q3_ULTRA_8K_JIS_RGB_PID 0x1232
#define KEYCHRON_Q5_ULTRA_8K_PID 0x1250
#define KEYCHRON_Q5_ULTRA_8K_ISO_PID 0x1251
#define KEYCHRON_Q5_ULTRA_8K_JIS_PID 0x1252
#define KEYCHRON_Q5_ULTRA_8K_ANSI_PID 0x1253
#define KEYCHRON_Q6_ULTRA_8K_ANSI_PID 0x1260
#define KEYCHRON_Q6_ULTRA_8K_ISO_RGB_PID 0x1261
#define KEYCHRON_Q6_ULTRA_8K_JIS_RGB_PID 0x1262
#define KEYCHRON_Q13_ULTRA_8K_RGB_PID 0x12D0
#define KEYCHRON_K6_ULTRA_ZMK_ANSI_PID 0x1360
#define KEYCHRON_K6_ULTRA_ZMK_JIS_PID 0x1362
#define KEYCHRON_K10_PRO_SS_ZMK_RGB_PID 0x13A9
#define KEYCHRON_K10_ULTRA_SE_ANSI_PID 0x13AA
#define KEYCHRON_R3_ANSI_RGB_1430_PID 0x1430
#define KEYCHRON_R3_JIS_RGB_PID 0x1432
#define KEYCHRON_R3_ANSI_RGB_1433_PID 0x1433
#define KEYCHRON_R5_ANSI_RGB_PID 0x1450
#define KEYCHRON_R6_ANSI_RGB_1460_PID 0x1460
#define KEYCHRON_R6_ANSI_RGB_1463_PID 0x1463
#define KEYCHRON_C3_HE_8K_JIS_PID 0x1532
#define KEYCHRON_C4_HE_8K_ANSI_1540_PID 0x1540
#define KEYCHRON_C4_HE_8K_ANSI_1541_PID 0x1541
#define KEYCHRON_K1_ULTRA_8K_PID 0x1610
#define KEYCHRON_K1_ULTRA_8K_ISO_RGB_PID 0x1611
#define KEYCHRON_K2_ULTRA_8K_ANSI_PID 0x1620
#define KEYCHRON_K2_ULTRA_8K_ISO_PID 0x1621
#define KEYCHRON_K2_ULTRA_8K_JIS_PID 0x1622
#define KEYCHRON_K3_ULTRA_8K_ANSI_PID 0x1630
#define KEYCHRON_K3_ULTRA_8K_ISO_PID 0x1631
#define KEYCHRON_K3_ULTRA_8K_JIS_1632_PID 0x1632
#define KEYCHRON_K3_ULTRA_8K_JIS_1634_PID 0x1634
#define KEYCHRON_K4_ULTRA_8K_RGB_PID 0x1640
#define KEYCHRON_K4_ULTRA_8K_ISO_1641_PID 0x1641
#define KEYCHRON_K4_ULTRA_8K_JIS_PID 0x1642
#define KEYCHRON_K4_ULTRA_8K_ISO_1643_PID 0x1643
#define KEYCHRON_K5_ULTRA_8K_ANSI_PID 0x1650
#define KEYCHRON_K5_ULTRA_8K_ISO_PID 0x1651
#define KEYCHRON_K5_ULTRA_8K_ABNT2_PID 0x1653
#define KEYCHRON_K8_ULTRA_8K_ANSI_PID 0x1680
#define KEYCHRON_K8_ULTRA_8K_ISO_PID 0x1681
#define KEYCHRON_K8_ULTRA_8K_JIS_PID 0x1682
#define KEYCHRON_K10_ULTRA_8K_RGB_PID 0x16A0
#define KEYCHRON_K10_ULTRA_8K_ISO_PID 0x16A1
#define KEYCHRON_K10_ULTRA_8K_JIS_PID 0x16A2
#define KEYCHRON_K10_ULTRA_8K_ISO_RGB_PID 0x16A3
#define KEYCHRON_Q12_HE_PID 0xD014
/*---------------------------------------------------------*\
| Keychron Patch Types |
| |
| source_row/source_col identify a key by the raw matrix |
| position reported by the firmware. row/col specify the |
| corrected visual matrix position used by OpenRGB. |
\*---------------------------------------------------------*/
typedef struct
{
unsigned int source_row;
unsigned int source_col;
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 Keychron matrix patches requiring correction |
\*---------------------------------------------------------*/
extern const keychron_patch* const keychron_patches[];
extern const unsigned int KEYCHRON_PATCH_COUNT;