diff options
| author | WrathofthePast <[email protected]> | 2022-02-25 15:23:05 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-02-25 20:23:05 +0000 |
| commit | 9404d4475fff9656c6a4307c642507817b8eb485 (patch) | |
| tree | ad37a62f0757d28f283e70ede36803806e39bd9d | |
| parent | 0d112063ea18a1b6fd3f858b9eaab9d090c39df2 (diff) | |
| download | librazermacos-9404d4475fff9656c6a4307c642507817b8eb485.tar.xz librazermacos-9404d4475fff9656c6a4307c642507817b8eb485.zip | |
Parity improvements with openrazer and bug fixes (#28)
* Parity improvements with openrazer
- Allows Basilisk V3 to utilize its full 26000 DPI (this was missed in the PR that added support)
- Fixes the minimum DPI
- Prepares files to be setup as dependencies of openrazer
* Update razermouse_driver.c
| -rw-r--r-- | src/include/razercommon.h | 11 | ||||
| -rw-r--r-- | src/include/razermouse_driver.h | 3 | ||||
| -rw-r--r-- | src/lib/razerchromacommon.c | 6 | ||||
| -rw-r--r-- | src/lib/razercommon.c | 3 | ||||
| -rw-r--r-- | src/lib/razermouse_driver.c | 11 |
5 files changed, 25 insertions, 9 deletions
diff --git a/src/include/razercommon.h b/src/include/razercommon.h index 56a5211..5df4f97 100644 --- a/src/include/razercommon.h +++ b/src/include/razercommon.h @@ -25,6 +25,10 @@ #define OFF 0x00 #define ON 0x01 +// LED STORAGE Options +#define NOSTORE 0x00 +#define VARSTORE 0x01 + // LED definitions #define ZERO_LED 0x00 #define SCROLL_WHEEL_LED 0x01 @@ -40,17 +44,12 @@ #define RIGHT_SIDE_LED 0x10 #define LEFT_SIDE_LED 0x11 -// LED STORAGE Options -#define NOSTORE 0x00 -#define VARSTORE 0x01 - // LED Effect definitions #define LED_STATIC 0x00 #define LED_BLINKING 0x01 #define LED_PULSATING 0x02 #define LED_SPECTRUM_CYCLING 0x04 - // Report Responses #define RAZER_CMD_BUSY 0x01 #define RAZER_CMD_SUCCESSFUL 0x02 @@ -120,4 +119,4 @@ struct razer_report get_empty_razer_report(void); unsigned char clamp_u8(unsigned char value, unsigned char min, unsigned char max); unsigned short clamp_u16(unsigned short value, unsigned short min, unsigned short max); -#endif
\ No newline at end of file +#endif diff --git a/src/include/razermouse_driver.h b/src/include/razermouse_driver.h index c5dbbe7..f80345b 100644 --- a/src/include/razermouse_driver.h +++ b/src/include/razermouse_driver.h @@ -90,6 +90,9 @@ #define RAZER_NEW_MOUSE_RECEIVER_WAIT_MIN_US 31000 #define RAZER_NEW_MOUSE_RECEIVER_WAIT_MAX_US 31100 +#define RAZER_ATHERIS_RECEIVER_WAIT_MIN_US 400000 +#define RAZER_ATHERIS_RECEIVER_WAIT_MAX_US 400100 + #define RAZER_VIPER_MOUSE_RECEIVER_WAIT_MIN_US 59900 #define RAZER_VIPER_MOUSE_RECEIVER_WAIT_MAX_US 60000 diff --git a/src/lib/razerchromacommon.c b/src/lib/razerchromacommon.c index 6f6410e..1bc6b8a 100644 --- a/src/lib/razerchromacommon.c +++ b/src/lib/razerchromacommon.c @@ -552,6 +552,8 @@ struct razer_report razer_chroma_extended_matrix_effect_wave(unsigned char varia // Others use values 0x01, 0x02 direction = clamp_u8(direction, 0x00, 0x02); + // Razer has also added a "Fast Wave" effect for at least one device + // which uses the same effect command but a speed parameter of 0x10 report.arguments[3] = direction; report.arguments[4] = speed; // Speed, lower values are faster (). The default used to be 0x28 return report; @@ -1070,8 +1072,8 @@ struct razer_report razer_chroma_misc_set_dpi_xy(unsigned char variable_storage, struct razer_report report = get_razer_report(0x04, 0x05, 0x07); // Keep the DPI within bounds - dpi_x = clamp_u16(dpi_x, 128, 20000); - dpi_y = clamp_u16(dpi_y, 128, 20000); + dpi_x = clamp_u16(dpi_x, 100, 26000); + dpi_y = clamp_u16(dpi_y, 100, 26000); report.arguments[0] = VARSTORE; diff --git a/src/lib/razercommon.c b/src/lib/razercommon.c index 4c8424a..c888445 100644 --- a/src/lib/razercommon.c +++ b/src/lib/razercommon.c @@ -121,7 +121,8 @@ struct razer_report get_empty_razer_report(void) { * The checksum is generated by XORing all the bytes in the report starting * at byte number 2 (0 based) and ending at byte 88. */ -unsigned char razer_calculate_crc(struct razer_report *report) { +unsigned char razer_calculate_crc(struct razer_report *report) +{ /*second to last byte of report is a simple checksum*/ /*just xor all bytes up with overflow and you are done*/ unsigned char crc = 0; diff --git a/src/lib/razermouse_driver.c b/src/lib/razermouse_driver.c index a10521e..336f2af 100644 --- a/src/lib/razermouse_driver.c +++ b/src/lib/razermouse_driver.c @@ -64,6 +64,10 @@ static int razer_get_report(IOUSBDeviceInterface **usb_dev, struct razer_report return razer_get_usb_response(usb_dev, 0x00, request_report, 0x00, response_report, RAZER_NEW_MOUSE_RECEIVER_WAIT_MIN_US); break; + case USB_DEVICE_ID_RAZER_ATHERIS_RECEIVER: + return razer_get_usb_response(usb_dev, 0x00, request_report, 0x00, response_report, RAZER_ATHERIS_RECEIVER_WAIT_MIN_US); + break; + case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRED: case USB_DEVICE_ID_RAZER_NAGA_TRINITY: @@ -1699,6 +1703,7 @@ ssize_t razer_attr_read_get_battery(IOUSBDeviceInterface **usb_dev, char *buf) break; case USB_DEVICE_ID_RAZER_BASILISK_ULTIMATE_RECEIVER: case USB_DEVICE_ID_RAZER_BASILISK_ULTIMATE: + case USB_DEVICE_ID_RAZER_ATHERIS_RECEIVER: case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRELESS_RECEIVER: case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRELESS_WIRED: report.transaction_id.id = 0x1f; @@ -1721,6 +1726,12 @@ ssize_t razer_attr_read_is_charging(IOUSBDeviceInterface **usb_dev, char *buf) (*usb_dev)->GetDeviceProduct(usb_dev, &product); switch(product) { + // Wireless mice that don't support is_charging + // Use AA batteries + case USB_DEVICE_ID_RAZER_ATHERIS_RECEIVER: + return sprintf(buf, "0\n"); + break; + case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRED: case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRELESS: case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_RECEIVER: |
