/*---------------------------------------------------------*\ | 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;