diff --git a/VERSION b/VERSION index cd048df..3a268c3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -beta-v0.2.6 +beta-v0.2.6+d01 diff --git a/src/ckb-daemon/command.c b/src/ckb-daemon/command.c index 6829e28..f8fc507 100644 --- a/src/ckb-daemon/command.c +++ b/src/ckb-daemon/command.c @@ -177,7 +177,7 @@ int readcmd(usbdevice* kb, const char* line){ uint framerate; if(sscanf(word, "%u", &framerate) == 1 && framerate > 0){ // Not all devices require the same number of messages per frame; select delay appropriately - uint per_frame = IS_MOUSE_DEV(kb) ? 2 : IS_STRAFE(kb) ? 14 : 5; + uint per_frame = IS_MOUSE_DEV(kb) ? 2 : IS_FULLRANGE(kb) ? 14 : 5; uint delay = 1000 / framerate / per_frame; if(delay < 2) delay = 2; diff --git a/src/ckb-daemon/led_keyboard.c b/src/ckb-daemon/led_keyboard.c index 2cd1fe3..0bab875 100644 --- a/src/ckb-daemon/led_keyboard.c +++ b/src/ckb-daemon/led_keyboard.c @@ -85,7 +85,7 @@ int updatergb_kb(usbdevice* kb, int force){ return 0; lastlight->forceupdate = newlight->forceupdate = 0; - if(IS_STRAFE(kb)){ + if(IS_FULLRANGE(kb)){ // Update strafe sidelights if necessary if(lastlight->sidelight != newlight->sidelight) { uchar data_pkt[2][MSG_SIZE] = { diff --git a/src/ckb-daemon/usb.c b/src/ckb-daemon/usb.c index 8b68ce9..dbb1217 100644 --- a/src/ckb-daemon/usb.c +++ b/src/ckb-daemon/usb.c @@ -26,15 +26,15 @@ const char* vendor_str(short vendor){ const char* product_str(short product){ if(product == P_K95 || product == P_K95_NRGB) return "k95"; - if(product == P_K70 || product == P_K70_NRGB) + if(product == P_K70 || product == P_K70_NRGB || product == P_K70_LUX || product == P_K70_RFIRE) return "k70"; - if(product == P_K65) + if(product == P_K65 || product == P_K65_LUX || product == P_K65_RFIRE) return "k65"; if(product == P_STRAFE || product == P_STRAFE_NRGB) return "strafe"; - if(product == P_M65) + if(product == P_M65 || product == P_M65_PRO) return "m65"; - if(product == P_SABRE_O || product == P_SABRE_L) + if(product == P_SABRE_O || product == P_SABRE_L || product == P_SABRE_N) return "sabre"; if(product == P_SCIMITAR) return "scimitar"; diff --git a/src/ckb-daemon/usb.h b/src/ckb-daemon/usb.h index 6036d66..42377a4 100644 --- a/src/ckb-daemon/usb.h +++ b/src/ckb-daemon/usb.h @@ -10,13 +10,21 @@ #define P_K65 0x1b17 #define P_K65_STR "1b17" -#define IS_K65(kb) ((kb)->vendor == V_CORSAIR && (kb)->product == P_K65) +#define P_K65_LUX 0x1b37 +#define P_K65_LUX_STR "1b37" +#define P_K65_RFIRE 0x1b39 +#define P_K65_RFIRE_STR "1b39" +#define IS_K65(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_K65 || (kb)->product == P_K65_LUX || (kb)->product == P_K65_RFIRE)) #define P_K70 0x1b13 #define P_K70_STR "1b13" #define P_K70_NRGB 0x1b09 #define P_K70_NRGB_STR "1b09" -#define IS_K70(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_K70 || (kb)->product == P_K70_NRGB)) +#define P_K70_LUX 0x1b33 +#define P_K70_LUX_STR "1b33" +#define P_K70_RFIRE 0x1b38 +#define P_K70_RFIRE_STR "1b38" +#define IS_K70(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_K70 || (kb)->product == P_K70_NRGB || (kb)->product == P_K70_RFIRE || (kb)->product == P_K70_LUX)) #define P_K95 0x1b11 #define P_K95_STR "1b11" @@ -32,13 +40,17 @@ #define P_M65 0x1b12 #define P_M65_STR "1b12" -#define IS_M65(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_M65)) +#define P_M65_PRO 0x1b2e +#define P_M65_PRO_STR "1b2e" +#define IS_M65(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_M65 || (kb)->product == P_M65_PRO)) -#define P_SABRE_O 0x1b14 +#define P_SABRE_O 0x1b14 /* optical */ #define P_SABRE_O_STR "1b14" -#define P_SABRE_L 0x1b19 +#define P_SABRE_L 0x1b19 /* laser */ #define P_SABRE_L_STR "1b19" -#define IS_SABRE(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_SABRE_O || (kb)->product == P_SABRE_L)) +#define P_SABRE_N 0x1b2f /* new? */ +#define P_SABRE_N_STR "1b2f" +#define IS_SABRE(kb) ((kb)->vendor == V_CORSAIR && ((kb)->product == P_SABRE_O || (kb)->product == P_SABRE_L || (kb)->product == P_SABRE_N)) #define P_SCIMITAR 0x1b1e #define P_SCIMITAR_STR "1b1e" @@ -60,8 +72,11 @@ const char* product_str(short product); #define IS_RGB_DEV(kb) IS_RGB((kb)->vendor, (kb)->product) #define IS_MONOCHROME_DEV(kb) IS_MONOCHROME((kb)->vendor, (kb)->product) +// Full color range (16.8M) vs partial color range (512) +#define IS_FULLRANGE(kb) (IS_RGB((kb)->vendor, (kb)->product) && (kb)->product != P_K65 && (kb)->product != P_K70 && (kb)->product != P_K95) + // Mouse vs keyboard test -#define IS_MOUSE(vendor, product) ((vendor) == (V_CORSAIR) && ((product) == (P_M65) || (product) == (P_SABRE_O) || (product) == (P_SABRE_L) || (product) == (P_SCIMITAR))) +#define IS_MOUSE(vendor, product) ((vendor) == (V_CORSAIR) && ((product) == (P_M65) || (product) == (P_M65_PRO) || (product) == (P_SABRE_O) || (product) == (P_SABRE_L) || (product) == (P_SABRE_N) || (product) == (P_SCIMITAR))) #define IS_MOUSE_DEV(kb) IS_MOUSE((kb)->vendor, (kb)->product) // USB delays for when the keyboards get picky about timing diff --git a/src/ckb-daemon/usb_linux.c b/src/ckb-daemon/usb_linux.c index 92e262c..dce75e8 100644 --- a/src/ckb-daemon/usb_linux.c +++ b/src/ckb-daemon/usb_linux.c @@ -353,16 +353,22 @@ typedef struct { static _model models[] = { // Keyboards { P_K65_STR, P_K65 }, + { P_K65_LUX_STR, P_K65_LUX }, + { P_K65_RFIRE_STR, P_K65_RFIRE }, { P_K70_STR, P_K70 }, { P_K70_NRGB_STR, P_K70_NRGB }, + { P_K70_LUX_STR, P_K70_LUX }, + { P_K70_RFIRE_STR, P_K70_RFIRE }, { P_K95_STR, P_K95 }, { P_K95_NRGB_STR, P_K95_NRGB }, { P_STRAFE_STR, P_STRAFE }, { P_STRAFE_NRGB_STR, P_STRAFE_NRGB }, // Mice { P_M65_STR, P_M65 }, + { P_M65_PRO_STR, P_M65_PRO }, { P_SABRE_O_STR, P_SABRE_O }, { P_SABRE_L_STR, P_SABRE_L }, + { P_SABRE_N_STR, P_SABRE_N }, { P_SCIMITAR_STR, P_SCIMITAR } }; #define N_MODELS (sizeof(models) / sizeof(_model)) diff --git a/src/ckb-daemon/usb_mac.c b/src/ckb-daemon/usb_mac.c index 4a323ac..0fe22ab 100644 --- a/src/ckb-daemon/usb_mac.c +++ b/src/ckb-daemon/usb_mac.c @@ -770,9 +770,9 @@ int usbmain(){ int vendor = V_CORSAIR; int products[] = { // Keyboards - P_K65, P_K70, P_K70_NRGB, P_K95, P_K95_NRGB, P_STRAFE, P_STRAFE_NRGB, + P_K65, P_K65_LUX, P_K65_RFIRE, P_K70, P_K70_NRGB, P_K70_LUX, P_K70_RFIRE, P_K95, P_K95_NRGB, P_STRAFE, P_STRAFE_NRGB, // Mice - P_M65, P_SABRE_O, P_SABRE_L, P_SCIMITAR + P_M65, P_M65_PRO, P_SABRE_O, P_SABRE_L, P_SABRE_N, P_SCIMITAR }; // Setup global variables