mirror of
https://github.com/ckb-next/ckb-next.git
synced 2026-10-10 12:27:21 -04:00
Merge remote-tracking branch 'c4181/k70-pro'
This commit is contained in:
@@ -90,6 +90,11 @@ keypatch k70tklpatch[] = {
|
||||
{ 1, "logo", 1, KEY_NONE },
|
||||
};
|
||||
|
||||
keypatch k70propatch[] = {
|
||||
{ 114, "lock", 114, KEY_CORSAIR },
|
||||
{ 138, "logo", 138, KEY_NONE },
|
||||
};
|
||||
|
||||
|
||||
#define ADD_PATCH(vendor, product, patch) \
|
||||
{ (vendor), (product), (patch), sizeof(patch)/sizeof(*patch) }
|
||||
@@ -113,6 +118,7 @@ static const keypatches mappatches[] = {
|
||||
ADD_PATCH(V_CORSAIR, P_K100_MECHANICAL, k100patch),
|
||||
ADD_PATCH(V_CORSAIR, P_K100_OPTICAL_VARIANT, k100patch),
|
||||
ADD_PATCH(V_CORSAIR, P_K70_TKL, k70tklpatch),
|
||||
ADD_PATCH(V_CORSAIR, P_K70_PRO, k70propatch)
|
||||
};
|
||||
|
||||
#define KEYPATCHES_LEN sizeof(mappatches)/sizeof(*mappatches)
|
||||
|
||||
@@ -47,6 +47,7 @@ static inline size_t bragi_led_count(usbdevice* kb){
|
||||
LED_CASE_K(P_K65_MINI, 123);
|
||||
LED_CASE_K(P_K70_TKL, 193);
|
||||
LED_CASE_K(P_MM700, 3);
|
||||
LED_CASE_K(P_K70_PRO, 193);
|
||||
default:
|
||||
ckb_err("Unknown product 0x%hx", kb->product);
|
||||
return 0;
|
||||
|
||||
@@ -75,6 +75,7 @@ const device_desc models[] = {
|
||||
{ V_CORSAIR, P_K70_MK2SE, },
|
||||
{ V_CORSAIR, P_K70_MK2LP, },
|
||||
{ V_CORSAIR, P_K70_TKL, },
|
||||
{ V_CORSAIR, P_K70_PRO, },
|
||||
{ V_CORSAIR, P_K90_LEGACY, },
|
||||
{ V_CORSAIR, P_K95, },
|
||||
{ V_CORSAIR, P_K95_LEGACY, },
|
||||
@@ -206,6 +207,8 @@ const char* product_str(ushort product){
|
||||
return "k70mk2";
|
||||
if(product == P_K70_TKL)
|
||||
return "k70tkl";
|
||||
if(product == P_K70_PRO)
|
||||
return "k70pro";
|
||||
if(product == P_K68 || product == P_K68_NRGB)
|
||||
return "k68";
|
||||
if(product == P_K65 || product == P_K65_LEGACY || product == P_K65_LUX || product == P_K65_RFIRE)
|
||||
|
||||
+4
-3
@@ -90,7 +90,8 @@
|
||||
#define P_K70_MK2SE 0x1b6b
|
||||
#define P_K70_MK2LP 0x1b55
|
||||
#define P_K70_TKL 0x1b73
|
||||
#define IS_K70(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_K70 || (kb)->product == P_K70_LEGACY || (kb)->product == P_K70_RFIRE || (kb)->product == P_K70_RFIRE_NRGB || (kb)->product == P_K70_LUX || (kb)->product == P_K70_LUX_NRGB || (kb)->product == P_K70_MK2 || (kb)->product == P_K70_MK2SE || (kb)->product == P_K70_MK2LP || (kb)->product == P_K70_TKL))
|
||||
#define P_K70_PRO 0x1bb3
|
||||
#define IS_K70(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_K70 || (kb)->product == P_K70_LEGACY || (kb)->product == P_K70_RFIRE || (kb)->product == P_K70_RFIRE_NRGB || (kb)->product == P_K70_LUX || (kb)->product == P_K70_LUX_NRGB || (kb)->product == P_K70_MK2 || (kb)->product == P_K70_MK2SE || (kb)->product == P_K70_MK2LP || (kb)->product == P_K70_TKL || (kb)->product == P_K70_PRO))
|
||||
|
||||
// The Legacy K90 behaves like a Legacy K95.
|
||||
#define P_K90_LEGACY 0x1b02
|
||||
@@ -298,10 +299,10 @@ const char* product_str(ushort product);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &(struct timespec) {.tv_nsec = 30000000}, NULL)
|
||||
|
||||
// This should be removed in the future when we implement autodetection
|
||||
#define USES_BRAGI(vendor, product) ((vendor) == (V_CORSAIR) && ((product) == (P_M55_RGB_PRO) || (product) == (P_IRONCLAW_W_U) || (product) == (P_IRONCLAW_W_D) || (product) == (P_K95_PLATINUM_XT) || (product) == (P_DARK_CORE_RGB_PRO_SE) || (product) == (P_DARK_CORE_RGB_PRO_SE_WL) || (product) == P_HARPOON_WL_U || (product) == P_HARPOON_WL_D || (product) == P_K57_U || (product) == P_K57_D || (product) == P_KATAR_PRO_XT || (product) == P_KATAR_PRO || (product) == P_K60_PRO_RGB || (product) == P_K60_PRO_RGB_LP || (product) == P_K60_PRO_RGB_SE || (product) == P_K60_PRO_MONO || (product) == P_K60_PRO_TKL || (product) == P_K55_PRO || (product) == P_K55_PRO_XT || (product) == (P_DARK_CORE_RGB_PRO) || (product) == (P_DARK_CORE_RGB_PRO_WL) || (product) == P_GENERIC_BRAGI_DONGLE || (product) == P_K100_OPTICAL || (product) == P_K100_MECHANICAL || (product) == P_K100_OPTICAL_VARIANT || (product) == P_K65_MINI || (product) == P_K70_TKL || (product) == P_MM700))
|
||||
#define USES_BRAGI(vendor, product) ((vendor) == (V_CORSAIR) && ((product) == (P_M55_RGB_PRO) || (product) == (P_IRONCLAW_W_U) || (product) == (P_IRONCLAW_W_D) || (product) == (P_K95_PLATINUM_XT) || (product) == (P_DARK_CORE_RGB_PRO_SE) || (product) == (P_DARK_CORE_RGB_PRO_SE_WL) || (product) == P_HARPOON_WL_U || (product) == P_HARPOON_WL_D || (product) == P_K57_U || (product) == P_K57_D || (product) == P_KATAR_PRO_XT || (product) == P_KATAR_PRO || (product) == P_K60_PRO_RGB || (product) == P_K60_PRO_RGB_LP || (product) == P_K60_PRO_RGB_SE || (product) == P_K60_PRO_MONO || (product) == P_K60_PRO_TKL || (product) == P_K55_PRO || (product) == P_K55_PRO_XT || (product) == (P_DARK_CORE_RGB_PRO) || (product) == (P_DARK_CORE_RGB_PRO_WL) || (product) == P_GENERIC_BRAGI_DONGLE || (product) == P_K100_OPTICAL || (product) == P_K100_MECHANICAL || (product) == P_K100_OPTICAL_VARIANT || (product) == P_K65_MINI || (product) == P_K70_TKL || (product) == P_MM700 || (product) == P_K70_PRO))
|
||||
|
||||
// Devices that use bragi jumbo packets (1024 bytes)
|
||||
#define USES_BRAGI_JUMBO(vendor, product) ((vendor) == (V_CORSAIR) && ((product) == P_K100_OPTICAL || (product) == P_K100_MECHANICAL || (product) == P_K100_OPTICAL_VARIANT || (product) == P_K65_MINI || (product) == P_K70_TKL))
|
||||
#define USES_BRAGI_JUMBO(vendor, product) ((vendor) == (V_CORSAIR) && ((product) == P_K100_OPTICAL || (product) == P_K100_MECHANICAL || (product) == P_K100_OPTICAL_VARIANT || (product) == P_K65_MINI || (product) == P_K70_TKL || (product) == P_K70_PRO))
|
||||
|
||||
// Used for devices that have the scroll wheel packet in the hardware hid packet only
|
||||
#define SW_PKT_HAS_NO_WHEEL(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_M55_RGB_PRO || (kb)->product == P_KATAR_PRO_XT || (kb)->product == P_KATAR_PRO))
|
||||
|
||||
@@ -36,6 +36,7 @@ void bragi_fill_input_eps(usbdevice* kb)
|
||||
case P_K100_MECHANICAL:
|
||||
case P_K65_MINI:
|
||||
case P_K70_TKL:
|
||||
case P_K70_PRO:
|
||||
kb->bragi_out_ep = 0x1;
|
||||
kb->bragi_in_ep = 0x82;
|
||||
break;
|
||||
|
||||
@@ -882,6 +882,30 @@ static QHash<QString, Key> getMap(KeyMap::Model model, KeyMap::Layout layout){
|
||||
map["voldn"].x -= 10;
|
||||
break;
|
||||
}
|
||||
case KeyMap::K70_PRO:{
|
||||
// Same as K70 MK2 but right Windows key is a function key
|
||||
map = getMap(KeyMap::K70MK2, layout);
|
||||
|
||||
map["fn"] = KStrafeKeys[3];
|
||||
map["fn"].x = map["rwin"].x;
|
||||
map.remove("rwin");
|
||||
|
||||
// these keys are all the way to left
|
||||
map["profswitch"].x = 0;
|
||||
map["light"].x = 9;
|
||||
map["lock"].x = 18;
|
||||
|
||||
// these keys are all the way to the right
|
||||
map["mute"].x += 10;
|
||||
map["volup"].x += 10;
|
||||
map["voldn"].x += 10;
|
||||
|
||||
map["logo"] = {nullptr, "Logo", "logo", 128, 0, NS, true, false};
|
||||
map.remove("m3");
|
||||
map.remove("g11");
|
||||
|
||||
break;
|
||||
}
|
||||
case KeyMap::K70_TKL:{
|
||||
// Same width as the K63 but with a top row more like the K70
|
||||
map = getMap(KeyMap::K63, layout);
|
||||
@@ -1669,6 +1693,8 @@ KeyMap::Model KeyMap::getModel(const QString& name){
|
||||
return K100;
|
||||
if(lower == "k65_mini")
|
||||
return K65_MINI;
|
||||
if(lower == "k70pro")
|
||||
return K70_PRO;
|
||||
return NO_MODEL;
|
||||
}
|
||||
|
||||
@@ -1754,6 +1780,8 @@ QString KeyMap::getModel(KeyMap::Model model){
|
||||
return "k100";
|
||||
case K65_MINI:
|
||||
return "k65_mini";
|
||||
case K70_PRO:
|
||||
return "k70pro";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
@@ -1785,6 +1813,7 @@ int KeyMap::modelWidth(Model model){
|
||||
return K68_WIDTH;
|
||||
case K70:
|
||||
case K70MK2:
|
||||
case K70_PRO:
|
||||
return K70_WIDTH;
|
||||
case K95:
|
||||
case K95L:
|
||||
@@ -1840,6 +1869,7 @@ int KeyMap::modelHeight(Model model){
|
||||
case K68:
|
||||
case K70:
|
||||
case K70MK2:
|
||||
case K70_PRO:
|
||||
case K70_TKL:
|
||||
case K95:
|
||||
case K95L:
|
||||
|
||||
@@ -92,6 +92,7 @@ public:
|
||||
K65_MINI,
|
||||
K70_TKL,
|
||||
MM700,
|
||||
K70_PRO,
|
||||
_MODEL_MAX
|
||||
};
|
||||
// Key layouts (ordered alphabetically by name)
|
||||
|
||||
@@ -384,7 +384,7 @@ void KeyWidget::paintGL(){
|
||||
painter.setOpacity(0.7);
|
||||
}
|
||||
}
|
||||
if(((model != KeyMap::STRAFE && model != KeyMap::K95P && model != KeyMap::K100 && model != KeyMap::K70MK2 && model != KeyMap::STRAFE_MK2 && model != KeyMap::K70_TKL) && (!strcmp(key.name, "mr") || !strcmp(key.name, "m1") || !strcmp(key.name, "m2") || !strcmp(key.name, "m3")
|
||||
if(((model != KeyMap::STRAFE && model != KeyMap::K95P && model != KeyMap::K100 && model != KeyMap::K70MK2 && model != KeyMap::STRAFE_MK2 && model != KeyMap::K70_TKL && model != KeyMap::K70_PRO) && (!strcmp(key.name, "mr") || !strcmp(key.name, "m1") || !strcmp(key.name, "m2") || !strcmp(key.name, "m3")
|
||||
|| !strcmp(key.name, "light") || !strcmp(key.name, "lock") || !strcmp(key.name, "lghtpgm") || (model == KeyMap::K65 && !strcmp(key.name, "mute")))) ||
|
||||
!strcmp(key.name, "ctrlwheelb")){
|
||||
// Not all devices have circular buttons
|
||||
@@ -439,7 +439,7 @@ void KeyWidget::paintGL(){
|
||||
drawTopLeftCorner(&painter, x, y, w, h, drawInfoScale);
|
||||
} else
|
||||
painter.drawRect(QRectF(x * drawInfoScale, y * drawInfoScale, w * drawInfoScale, h * drawInfoScale));
|
||||
} else if ((model == KeyMap::K70MK2 || model == KeyMap::STRAFE_MK2 || model == KeyMap::K70_TKL) && key.friendlyName().startsWith("Logo")) {
|
||||
} else if ((model == KeyMap::K70MK2 || model == KeyMap::STRAFE_MK2 || model == KeyMap::K70_TKL || model == KeyMap::K70_PRO) && key.friendlyName().startsWith("Logo")) {
|
||||
w += 10.f;
|
||||
x -= 5.f;
|
||||
painter.drawRect(QRectF(x * drawInfoScale, y * drawInfoScale, w * drawInfoScale, h * drawInfoScale));
|
||||
|
||||
Reference in New Issue
Block a user