Compare commits

...
733 Commits
Author SHA1 Message Date
Adam Honse af2355f4c9 Add XPG Spectrix S20G to detectors for S40G 2024-05-11 17:53:27 -05:00
Adam Honse c60539cb62 Update header comments for some ASUS controllers 2024-05-09 11:56:22 -05:00
Adam Honse 6aa6e5a972 Update file header comments to new standardized format for ASRock SMBus controller files 2024-05-09 06:48:05 -05:00
Adam Honse 30acbb10f7 Update more controller files' header comments to new standardized format 2024-05-08 20:51:16 -05:00
Chris M b87bf14fd5 Added Asus ROG Strix RTX4070Ti Super 16GB Gaming OC GPU
* Added `0x896B` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4070tis-o16g-gaming/)
* Resolves #4119
2024-05-09 00:54:49 +00:00
Adam Honse 1bbfded78a Update more file header comments to standardized new format, move some locally owned files out of the dependencies folder 2024-05-08 11:53:07 -05:00
Adam Honse ff2957ec80 Update the rest of the user interface file header comments to the standardized new format 2024-05-08 00:40:41 -05:00
SDD701 e11046d076 added Redragon M801 Sniper support 2024-05-07 14:55:28 +07:00
Adam Honse da80b12fda Update some user interface file header comments to standardized new format 2024-05-06 16:35:13 -05:00
Chris M 2b23841ec2 Added MSI RTX4080 16G Gaming X Slim White GPU
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4080-16GB-GAMING-X-SLIM-WHITE)
* Resolves #4110
2024-05-05 01:47:41 +00:00
Adam Honse 4f951c13c6 Even more file header comment updates to standardized new format 2024-05-04 01:27:12 -05:00
Adam Honse a7c400bc65 Update yet more file header comments to standardized new format 2024-05-03 21:56:32 -05:00
Adam Honse a3066db16c Update even more file header comments to standardized new format 2024-05-03 11:52:02 -05:00
Alex Ritter 200b8e3a24 Fix mac info 2024-05-03 15:00:50 +02:00
Adam Honse b12cd438cd Update more file header comments to standardized new format 2024-05-03 00:39:21 -05:00
Adam Honse f38b7485f7 Start updating file header comments to standardized new format 2024-05-03 00:05:12 -05:00
Cooper Hall 1ca946f3eb improved I2C/SMBus warning message 2024-05-03 04:08:11 +00:00
Chris M 6c4d901cb9 Added Asus Strix LC RTX4090 24GB Gaming GPU
* Added `0x88E8` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-lc-rtx4090-o24g-gaming/)
2024-05-03 07:17:55 +10:00
Adam Honse 30ab1bfadd Add some comments to device page code 2024-05-02 11:11:02 -05:00
Qwex ad6e83885e Fix mac os crash on rescan 2024-05-02 12:57:13 +00:00
Chris M 7ae3ee5e72 Swap Razer Naga Chroma Logo & Scroll Wheel zones
* Resolves #4098
2024-05-02 05:26:17 +00:00
Adam Honse 95d9998398 Add Hex color value box 2024-05-02 00:20:30 -05:00
Adam Honse 9c2d30bbbd Formatting and organizational cleanup for controllers through CoolerMasterController 2024-05-01 00:13:41 -05:00
Adam Honse b6d5c64c5b Formatting and organizational cleanup for controllers beginning with A 2024-04-30 23:45:41 -05:00
Adam Honse 89645dff38 Remove LenovoGen7USBController, as it has been superseded by LenovoUSBController_Gen7_8 and is dead code 2024-04-30 18:53:50 -05:00
Adam Honse d52ad02c5c Organize most controller files into subfolders 2024-04-30 17:18:39 -05:00
Adam Honse ba57bad361 Even more warning fixes 2024-04-29 19:57:57 -05:00
Adam Honse d3c81d3306 More warning fixes 2024-04-29 18:08:33 -05:00
rc_05 f39409b7aa Added support for HyperX Pulsefire Core (HP Inc. version) 2024-04-29 21:37:14 +00:00
Codename-Antares f229c93fd4 Add Support for Red Square Keyrox TKL V2 2024-04-29 18:07:18 +00:00
Adam Honse fb963f4ab2 Fix even more warnings 2024-04-28 18:12:17 -05:00
Adam Honse 06ca1448d1 Fix more warnings 2024-04-28 16:15:09 -05:00
Adam Honse aa2c557045 Fix some warnings 2024-04-28 14:33:09 -05:00
Barry H 42542b6b67 Add Corsair M65 RGB Ultra Wired 2024-04-22 03:40:36 +00:00
calamar 31e72737c5 Add support for PNY RT 4070 Ti Super XLR8 Verto 2024-04-17 14:49:50 +00:00
Chris M 2c9e96c854 Added Asus Strix RTX4080 Super O16GB Gaming White GPU
* Added `0x8968` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4080s-o16g-white/)
* Resolves #4081
2024-04-17 13:12:57 +00:00
Adam Honse 2f80548303 Initial commit for NZXT Mouse Controller (NZXT Lift), implements only Direct mode 2024-04-16 18:09:50 -05:00
Oleh Selin fe87c25c16 Fix zone number for Razer Ornata V3 TKL 2024-04-14 19:18:24 +03:00
Chris M bdf6b763ba Added MSI RTX4080 Super 16G Gaming X Slim White GPU
* Added `0x511A` to pci_ids.h
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4080-SUPER-16G-GAMING-X-SLIM-WHITE)
* Resolves #4068
2024-04-13 10:06:16 +10:00
Andrew Babbitt cafca16c81 Support for Corsair Dominator Titanium 2024-04-11 16:29:53 +00:00
Chris M 90a828e7a9 Added Asus Strix RTX4080 Super 16GB Gaming White GPU
* Added `0x8969` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4080s-16g-white/)
* Resolves #4066
2024-04-11 14:56:29 +10:00
Chris M 23d9a26ced Added Asus TUF RTX4070Ti Super 16GB Gaming OC White GPU
* Added `0x895B` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/us/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx4070tis-o16g-white-gaming/)
* Resolves #4061
2024-04-09 22:04:21 +10:00
WhoAmI 116cbb1707 Added Gainward GeForce RTX 3050 Ghost support 2024-04-07 03:16:25 +00:00
Jonathan Guzman 7b2534a3a5 Add Logitech G733 2nd variant 2024-04-07 02:14:51 +00:00
Adam Honse 1087ef12eb Fix configuration for MSI PRO B650-P WIFI (7D78) 2024-04-06 15:25:36 -05:00
Wayne Riordan 568da43bb6 Initial commit to add Lenovo Legion M300 RGB Mouse
Added support for Lenovo Legion M300 RGB Mouse.
Added all supported modes Static, Rainbow, Breathing and Off
Also Tested all modes to verify its working
2024-04-06 14:36:09 -05:00
BlackHoleFox 6243a66b0b Added ASUS STRIX RTX4080 SUPER Gaming OC 16GB GPU 2024-04-06 19:20:52 +00:00
Mohammed Julfikar Ali Mahbub 7d3c02c0c5 Added support for A4Tech B820R Keyboard 2024-04-06 19:19:47 +00:00
Danlei Zhou f54d118399 Detect another NZXT RGB & Fan Controller 2024-04-04 18:49:11 +00:00
Chris M 4c33eb057f Added Gigabyte RTX 4060Ti Gaming OC 16GB GPU
* Added `0x4112` to pci_ids.h
* Registered detector in GigabyteRGBFusionGPUControllerDetect.cpp
* Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N406TGAMING-OC-16GD#kf)
* Resolves #4047
2024-04-03 17:59:00 +11:00
Chris M 42627120e3 Added MSI RTX4080 16G Gaming X Trio White GPU
* Added `0x5115` to pci_ids.h
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4080-16GB-GAMING-X-TRIO-WHITE)
* Resolves #4042
2024-04-02 08:08:43 +11:00
Karachalios Stagkas Athanasios Nektarios 53f589fa37 Added Greek Translation 2024-04-01 07:21:31 +03:00
Barry H ddcc4a8119 added Asus KO 3060Ti (another variant) & Asus KO 3070 V1 2024-03-31 06:01:01 +00:00
Adam Honse 89983dcdd1 Process received magic using a loop in client and server 2024-03-25 19:56:33 -05:00
Adam Honse cf4fd16b09 Define SDK magic string value as a shared constant in NetworkProtocol.cpp, use InitNetPacketHeader function to set up packets 2024-03-25 19:45:06 -05:00
Adam Honse 9215ae0514 Clean up comment formatting in NetworkServer.cpp 2024-03-25 17:50:37 -05:00
Chris M 94684a0a78 Added Asus ROG Strix RTX4070Ti Super 16GB Gaming OC GPU
* Added `0x8957` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/us/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx4070tis-o16g-gaming/)
* Resolves #4030
2024-03-25 04:43:31 +00:00
Adam Honse 1c62c26cac Clean up comment formatting in NetworkClient.cpp 2024-03-24 19:35:59 -05:00
Adam Honse 2316ec4add Add notes discouraging merge requests with protected master branch as the source 2024-03-24 18:59:10 -05:00
Chris M 824231f6f3 Added MSI RTX4070 12G Gaming X Slim GPU
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-GAMING-X-SLIM-12G)
* Resolves #4028
2024-03-24 17:50:35 +00:00
Chris M a1e1dffe81 Initial commit for Razer Huntsman Mini Analog
+ Adding PID `0x0282` for the Huntsman Mini Analog
+ Added metadata to RazerDevices.cpp
+ Registered detectors
+ Added capabilities to RazerController.cpp
+ Resolves #3387
2024-03-23 10:15:13 +11:00
Adam Honse d89eb06cb1 Increase JGINYUE delay to prevent flickering at higher frame rate effects when zones have all 100 LEDs enabled 2024-03-21 00:40:50 -05:00
Adam Honse 6378f65ed1 Fix crash related to JGINYUE controller and clean up zone initializations 2024-03-21 00:26:42 -05:00
Chris M 525fff5d0f Added Asus ROG Strix RTX4070 12GB Gaming OC GPU
* Added `0x88F3` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/us/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4070-o12g-gaming/)
* Resolves #4015
2024-03-21 12:41:45 +11:00
RedBlackAka b68692baa2 Make GPU naming much more consistent 2024-03-20 22:52:39 +00:00
Adam Honse 5532e2e290 Remove duplicate 2024-03-17 17:19:48 -05:00
Adam Słaboń 5586206f46 Add support for Evision V2 based Endorfy Omnis 2024-03-17 22:07:21 +00:00
Adam Słaboń 6e93a25930 Fix "Starlight slow" effect referencing wrong value on Evision V2 keyboards 2024-03-17 22:07:21 +00:00
ArthurGamerHD 1150e04983 Initial commit for HP's HyperX Pulsefire Surge 2024-03-17 22:06:29 +00:00
Adam Honse 04846c8ba1 Fix build 2024-03-15 20:52:35 -05:00
Chris M 3c35965ca9 Added Gigabyte RTX 4070S Aero OC 12GB GPU
* Added `0x4139` to pci_ids.h
* Registered detector in GigabyteRGBFusion2GPUControllerDetect.cpp
* Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N407SAERO-OC-12GD#kf)
* Resolves #4010
2024-03-16 01:40:01 +00:00
ronny332 1405ecfd53 Additional support for ROG-STRIX-RTX-4090-O24G-WHITE (90YV0ID2-M0NA00) with different ID. 2024-03-15 23:50:05 +00:00
Adam Honse 87c3de9316 Fix build 2024-03-15 18:15:05 -05:00
Dominik B efdf3d42be Added ElgatoLightStrip Support 2024-03-15 22:58:17 +00:00
Mola19 3bc169e4f6 add support for Asus ROG Strix Scope II to resolve #3971, #3976 2024-03-14 18:18:17 +00:00
Chris dfde4880c9 Initial commit for Razer Blackwidow V4
+ Adding PID `0x0287` for the Blackwidow V4
+ Added metadata to RazerDevices.cpp
+ Registered detectors
+ Added capabilities to RazerController.cpp
+ Resolves #4008
2024-03-14 18:05:06 +00:00
Mola19 80f033d76e add support for ASUS ROG Strix XG32VC to resolve #3859 2024-03-14 18:02:24 +00:00
Chris M 82fae96dcf Added MSI RTX4070 Super 12G Gaming X Slim White GPU
* Added `0xE131` to pci_ids.h
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-GAMING-X-SLIM-WHITE-12G)
* Resolves #4014
2024-03-13 08:07:46 +11:00
Chris e52adedf2d Initial commit for Razer Cobra
+ Adding PID `0x00A3` for the Cobra
+ Added metadata to RazerDevices.cpp
+ Registered detectors
+ Added capabilities to RazerController.cpp
+ Resolves #3697
2024-03-11 08:18:03 +11:00
Milan Cermak 98248e87d2 [New Device] MSI MEG Z590 ACE Gold Edition (MS-7D04) 2024-03-10 19:06:50 +00:00
Chris M fb7193a31f Initial commit for Razer Leviathan V2
+ Adding PID for the Leviathan V2
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #4002
2024-03-10 19:05:50 +00:00
Chris 6dadd3cef6 Fixed config table for Asus ROG Strix 4070 Super
* Corrected name label in detector
* Added config table entry for new found version
* Resolves #4005
2024-03-10 13:05:16 +11:00
Simon Grund 025ecf98b5 Added Palit RTX 4070 SUPER Dual support 2024-03-08 23:17:59 +00:00
Barry H a1d17a1d49 Add support for ROG Strix RTX 4090 24G Gaming & EVA-02 Edition 2024-03-08 02:34:53 +00:00
Chris M 49afa5620f Added Gigabyte RTX 4070Ti Gaming OC 12GB GPU
* Added `0x4100` to pci_ids.h
* Registered detector in GigabyteRGBFusion2GPUControllerDetect.cpp
* Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N407TGAMING-OCV2-12GD#kf)
* Resolves #3890
2024-03-08 02:32:03 +00:00
Chris a89bdba58f Added Gigabyte 4060Ti Gaming OC 8GB GPU
* Added `0x40F8` to pci_ids.h
* Registered detector in GigabyteRGBFusionGPUControllerDetect.cpp
* Link to [webpage]( https://www.gigabyte.com/Graphics-Card/GV-N406TGAMING-OC-8GD#kf)
* Resolves #3944
2024-03-08 02:28:48 +00:00
Chris M 5c41810a4a Added Gigabyte Aorus 3080Ti XTreme WF 12GB GPU
* Added `0x4082` to pci_ids.h
* Registered detector in GigabyteRGBFusion2GPUControllerDetect.cpp
* Link to [webpage](https://www.gigabyte.com/Graphics-Card/GV-N308TAORUSX-WB-12GD)
* Resolves #2041
2024-03-06 09:18:35 +11:00
Alex Koskovich 04410b6611 Fixes for desktop-entry-spec & appstream 2024-03-04 15:13:49 +00:00
诺诺 beec2c76c9 Add new Controller Nollie1 2024-03-04 15:10:54 +00:00
thombo e508f3f4fa Support for MSI boards 7D74, 7D90, 7D99, 7E03 and 7E27 added 2024-03-04 05:34:09 +00:00
TheRogueZeta ac0f6f1043 Initial commit for ASUS ROG-STRIX-RTX4090-O24G-WHITE PN 90YV0ID2-M0NA00 2024-03-04 05:33:44 +00:00
Alex Koskovich 61e7664657 Fix building with GCC 14 2024-03-04 05:33:26 +00:00
Codename-Antares 2dd17eba30 HyperX Quadcast S HP version 6 add PID 2024-03-04 05:31:55 +00:00
Chris 2fe78ddd98 Added MSI RTX4080 Super 16G Suprim X GPU
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4080-SUPER-16G-SUPRIM-X/Specification)
* Resolves #3986
2024-03-04 05:31:15 +00:00
Chris 7d63846c49 Fixed Location for QMK keyboards
* Prevented profiles being (re)applied to QMK keyboards consistently
2024-03-04 05:30:45 +00:00
Sebastian Kuźlak 7300f4facd Add Sapphire Radeon RX 6650 XT Nitro+ support. Ref #3982 2024-03-04 05:30:20 +00:00
Mola19 dba3e4d42c Add support for Asus ROG Azoth to resolve #3304 2024-03-03 02:38:37 +00:00
Mola19 c1680e9936 Add support for Asus ROG Keris Wireless AimPoint to resolve #3223 2024-03-02 20:17:38 +00:00
Chris ac73ccb45a Added PNY RTX 3070Ti Gaming Uprising EPIC-X GPU
* Added `0x138D` to pci_ids.h
* Registered detector in NVIDIAIlluminationControllerDetect_Windows.cpp
* Link to [webpage](https://www.pny.com/geforce-rtx-3070-ti-uprising)
* Resolves #3173
2024-02-29 19:10:12 +00:00
Chris 2ad7e505fc Added MSI RTX4070 Super 12G Gaming X Slim GPU
* Added `0x513F` to pci_ids.h
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Removed missing modes Rhythm & Stack
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-SUPER-12G-GAMING-X-SLIM/Specification)
* Resolves #3987
2024-02-29 09:21:42 +11:00
Jack 300dcd14bf Fix invalid color mode 2024-02-28 19:07:20 +00:00
Chris ca13118b25 Added Asus TUF RTX4070 Super 12GB Gaming OC GPU
* Added `0x8972` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4070s-o12g-gaming/spec/)
* Resolves #3975
2024-02-28 20:41:51 +11:00
TheRogueZeta 8b90c249fb Add additional ID for ROG-STRIX-RTD4090-O24G-Gaming PN 90YV0ID0-M0NA00 2024-02-27 04:45:19 +00:00
TheRogueZeta 2319f0c4c2 Initial commit for 4080 Super Founders device ID 2024-02-27 04:44:44 +00:00
Kosma Moczek 09c413f7c8 Added ZOTAC GAMING GeForce RTX 2080 SUPER Twin Fan 2024-02-27 04:43:15 +00:00
Valerio Ciuffreda d4cb016541 Italian translation 2024-02-22 22:56:08 +00:00
Adam Honse f60e2ca75f Fix Mac Build 2024-02-22 18:04:12 +00:00
Chris c6aee96049 Fixed small logic bug from b05f954d in QMKOpenRGBRevBController 2024-02-21 15:51:44 +00:00
Chris b95789a5b5 Added Aerox3 and Aerox9 detectors to Rival3 metadata
* Fixes UDEV rules and Supported Devices
2024-02-21 15:40:24 +00:00
Chris a8e8dd77e3 Fixed Korean label enabling switching in settings 2024-02-21 15:39:32 +00:00
Chris 5c318e5bb7 Added Asus TUF RTX3080 12GB Gaming GPU
* Added `0x886F` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx3080-12g-gaming/)
* Resolves #3968
2024-02-21 15:38:37 +00:00
Chris M d2b4ff1c56 Updated OpenRGB.pro to dynamically resolve source files
* Created FORMS macro list dynamically
* Added GUI_H and CONTROLLERS_H list to HEADERS
* Added GUI_CPP and CONTROLLERS_CPP list to SOURCES
* Added unique list of GUI_INCLUDES and CONTROLLER_INCLUDES to INCLUDES
* Adjusted platform specific builds to align build targets
2024-02-21 22:00:02 +11:00
Luke f4220dffb7 Support NZXT RGB Controller with PID 0x2021. 2024-02-19 17:31:36 +00:00
Chris 548988cbef Added MSI RTX3070 Suprim 8GB LHR GPU
* Registered detector in MSIGPUControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-3070-SUPRIM-8G-LHR/Specification)
2024-02-18 22:55:17 +00:00
Chris M cfd35e797c Added Asus TUF RTX4080 Super O16GB OC Gaming GPU
* Added `0x8962` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/us/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx4080s-o16g-gaming/)
* Resolves #3952
2024-02-18 22:54:22 +00:00
Chris M 85da26f809 Added MSI RTX4080 Super 16GB Gaming X Slim GPU
* Added `0x5117` to pci_ids.h
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4080-SUPER-16G-GAMING-X-SLIM/)
* Resolves #3954
2024-02-18 22:52:26 +00:00
Chris M 9304b94865 Added MSI RTX4070Ti 12GB Gaming X Slim White GPU
* Added `0xE132` to pci_ids.h
* Registered detector in MSIGPUv2ControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-Ti-GAMING-X-SLIM-WHITE-12G/Specification)
* Resolves #3953
2024-02-18 22:50:39 +00:00
Chris e472bd0620 Adding PNY RTX4080 16GB Verto Epic-X GPU
* Added 0x13BC to pci_ids.h
* Registered detector in PNYLovelaceGPUControllerDetect.cpp
* Link to [webpage](https://www.pny.com/en-eu/pny-geforce-rtx-4080-16gb-epic-x-argb-triple-fan-oc)
* Resolves #3905
2024-02-18 22:48:35 +00:00
twiz 80ed45b161 EVGA GTX 1080 FTW2 DT 2024-02-18 22:47:27 +00:00
Chris M 4134de5daf Added Asus TUF RTX4080 Super 16GB Gaming GPU
* Added `0x8963` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/uk/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx4080s-16g-gaming/)
* Resolves #3945
2024-02-16 16:01:03 +00:00
Chris M f5baa2e13b Added PNY RTX4080 Super 16GB Verto GPU
* Added `0x1418` to pci_ids.h
* Registered detector in PNYLovelaceGPUControllerDetect.cpp
* Link to [webpage](https://www.pny.com/pny-geforce-rtx-4080-super-16-gb-xlr8-gaming-verto-epic-x-rgb-triple-fan-oc)
* Resolves #3941
2024-02-16 18:06:28 +11:00
Chris M 1385a39379 Added ASUS TUF RTX 4070 Super 12G Gaming GPU
* Added `0x8952` to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx4070s-12g-gaming/)
* Resolves #3950
2024-02-16 03:31:44 +00:00
Chris M f29c6a66d9 Added MSI 4070 Ti Super 16G Gaming Slim GPU
* Added SubID `0xE130` to pci_ids.h
* Registered detector in MSIGPUControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-
Ti-SUPER-16G-GAMING-SLIM)
* Resolves #3946
2024-02-16 07:20:43 +11:00
Boo Ray 785a19de53 Added support for AOC GK500 Italian Keyboard Layout 2024-02-15 15:48:48 +00:00
Moon Sungjoon 0024062e9a Add Korean language support 2024-02-15 17:41:37 +09:00
Chris e18b3c6b30 Added MSI 4070 Ti Super 16G Gaming X Trio White GPU
* Registered detector in MSIGPUControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-Ti-SUPER-16G-GAMING-X-TRIO-WHITE)
* Resolves #3925
2024-02-14 15:10:38 +00:00
SubjectName ff40af1e0d Add support for Zotac RTX 4080 AMP with alternate Sub-Device ID 2024-02-14 15:04:31 +00:00
Barry H c67920353e Add support for ZOTAC RTX 3070 AMP Holo LHR 2024-02-13 22:28:27 +00:00
Barry H 00e9fcc535 Fix for Supported Device page showing label instead of PID 2024-02-13 15:25:00 +00:00
Barry H e47a4ec98e Add support for Zotac RTX 3080 Trinity OC Non LHR 2024-02-12 14:27:42 +00:00
IPCristian 740fdd7aa0 Added support for the Gigabyte 4080 Super Gaming OC 2024-02-12 13:58:26 +00:00
Barry H 7c0364ffa3 add support for Corsair K68 RED 2024-02-12 07:39:34 +00:00
Денис Назаров f856480077 Add support for Gigabyte AORUS C300 Glass PC Case 2024-02-12 07:36:30 +00:00
Nenderus 6a944b311a Add support for Gigabyte X570 AORUS Pro 2024-02-11 16:32:03 +03:00
Barry H ced8924ab0 Add support for EVGA GeForce RTX 3070 XC3 ULTRA GAMING 2024-02-10 07:53:53 +00:00
Chris M d2706e5f90 Added EVGA RTX2080 XC Hybrid Gaming O8G GPU
* Added 0x2184 to pci_ids.h
* Registered detector in EVGATuringGPUControllerDetect.cpp
* Link to [webpage](https://www.evga.com/products/Specs/GPU.aspx?
pn=b4205add-a8bd-4a05-a685-3502c19cb8e9)
* Resolves #3938
2024-02-09 07:39:09 +11:00
Cyril Bosselut 9506bcb2bb Nanoleaf device configuration 2024-02-08 14:03:20 +00:00
Денис Назаров cc376b71c8 Extended support Gigabyte AORUS ATC800 2024-02-07 14:29:07 +00:00
Денис Назаров 350863e3b8 Add more effects for Gigabyte Aorus ATC800 2024-02-04 21:32:55 +00:00
mirh 78a47be4ae Fix ITE8688 typo 2024-02-03 21:51:02 +01:00
Chris bfb3052255 Remove redundant K100 controller
* Moved Existing K100 optical and K100 MX Red detectors to new V2 controller.
2024-02-03 06:24:59 +00:00
Mola19 2dfde7e8cd add support for Roccat Vulcan Pro to resolve #3856 2024-02-03 03:28:26 +01:00
djdox23 a13a528117 edit pci-id for4070S - support for 4070s gaming oc gigabyte 2024-02-02 21:30:29 +00:00
zopieux 0eda5279b2 Fix Razer Huntsman v2 extra key layout 2024-02-02 03:33:42 +00:00
Chris M e4fa1013f5 Removed duplicate GetKeyboardMappingLayoutType(int) declaration
* Refactored ValkyrieKeyboardController to fix pipeline
2024-02-02 07:54:59 +11:00
Barry H 249aa81423 Add Valkyrie VK99 Normal 2024-02-01 17:38:55 +00:00
Cyril Bosselut c623e0416e Initial commit for Razer Kraken Kitty V2 Black Edition 2024-02-01 17:35:54 +00:00
Cyril Bosselut 5f538260a2 Add speed option to CLI 2024-01-31 17:06:29 +00:00
Mola19 479dbe979d add support for Roccat Pyro to resolve #1813 2024-01-31 05:07:58 +00:00
Chris 3636f1e40b Adding PNY RTX4070Ti 12GB Verto Epic-X GPU
* Added 0x13D4 to pci_ids.h
* Registered detector in PNYLovelaceGPUControllerDetect.cpp
* Link to [webpage](https://www.pny.com/pny-geforce-rtx-4070-ti-12gb-verto-epic-x-oc-triple-fan)
* Resolves #3852
2024-01-30 12:37:14 +11:00
Chris af049e234f Initial commit for Razer Goliathus Chroma 3XL
+ Adding PID `0x0C06` for the Goliathus Chroma 3XL
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #3908
2024-01-29 01:51:45 +00:00
Cyril Bosselut 9d3c96a43c Fix Mac OS Build 2024-01-29 00:50:30 +00:00
Cyril Bosselut c1d3e91c32 Fix Tricolor mode 2024-01-28 02:52:13 +00:00
Chris ce3c30f443 Added Asus RTX4070 Ti Super 16G Gaming GPU
* Added 4070Ti Super model ID 0x2705 and Sub ID 0x8958 to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx4070tis-16g-gaming/)
2024-01-28 02:38:25 +11:00
Lukas 567a91323a Add Corsair K100 variant Controller V2 2024-01-26 21:56:14 +00:00
Chris ba9d89ff87 Adding ASUS ROG Strix RTX3050 8G Gaming GPU
* Added 0x8872 to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx3050-8g-gaming-model/)
* Resolves #3904
2024-01-26 11:31:58 +11:00
morg bbb0410ad6 Add support for ASUS TUF RTX 4070 Ti 12G Gaming variant 2024-01-24 16:15:32 +01:00
Garrett Denham 83e304b80e Initial commit for ROCCAT Kone Pro mouse 2024-01-24 00:23:32 +00:00
Qwex 2ec52b68ba Clean up usb Asus motherboard (Aura) controller 2024-01-23 13:57:28 +00:00
OctopusET 9436b55556 Fix language code in qt/i18n 2024-01-22 17:49:55 +00:00
Jon Dunlap adc62c3da8 Add support for ASUS ROG Strix Flare II 2024-01-22 11:19:16 -05:00
morg cee841f3ba Add Anko KM43277483 USB Gaming Mouse support 2024-01-22 14:41:58 +00:00
Chris e1ce61778c Adding ASUS TUF 3070Ti O8G V2 Gaming GPU
* Added 0x88BC to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx3070ti-o8g-v2-gaming/)
* Resolves #3883
2024-01-22 14:28:42 +00:00
Mola19 3839a4857d fix version for Asus Keris Wireless in USB mode 2024-01-22 01:55:17 +01:00
morg a0c529ed59 Add support for instant microelectronics mice. Close #2496 2024-01-21 23:33:20 +00:00
Adam Honse e5c76f1a3a Add Lian Li ALV2 controller to detector, uses same controller as SLV2 2024-01-21 16:22:32 -06:00
Chris bc66bfb442 Adding ASUS TUF 4070Ti O12G White Gaming GPU
* Added 0x8935 to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://www.asus.com/motherboards-components/graphics-cards/tuf-gaming/tuf-rtx4070ti-o12g-white-gaming/)
2024-01-20 18:43:04 +00:00
as3210 ca054abbcf Improve cherry code, e.g. for full size 10.0N RGB 2024-01-20 08:24:57 +00:00
Chris 4b6f62ade8 Corrected Asus Aura Ryuo Metadata
* Changed Metadata detector string for UDEV rules
* Resolves #3885
2024-01-20 11:13:24 +11:00
Barry H 0178b77ce1 Add support for ZOTAC RTX 3080 Trinity LHR ZT-A30800D-10PLHR 2024-01-19 18:21:29 +00:00
Barry H c3ddc32cef Add support for Palit RTX4080 GamingPro 2024-01-19 18:20:57 +00:00
Lucas Mindêllo de Andrade 6c279ea830 Adds iGame GeForce RTX 3080 Ultra W OC 10G LHR-V 2024-01-18 20:26:49 +00:00
Mola19 994016738e add support for Asus Rog Strix Scope II RX to resolve #3838 2024-01-18 15:55:49 +00:00
Mola19 b79cf82d96 add support for Roccat Vulcan 100 AIMO to resolve #2489 2024-01-14 17:58:09 +01:00
诺诺 ccec0828f9 Nollie32 bug fixes, and new controllers 2024-01-13 19:32:32 +00:00
Quang-Duy Tran 16938483a1 Add support for MSI GeForce RTX 4060Ti 16GB Gaming X 2024-01-13 01:24:01 +00:00
Mola19 de2b60b0bd add support for Asus ROG Strix Scope NX Wireless Deluxe to resolve #3777 2024-01-12 01:42:47 +00:00
Zach Deibert a489cd5458 Add support for Gigabyte RTX4060 Gaming OC 8G 2024-01-11 19:42:24 +00:00
Chris 5d101b8207 Added config options to Corsair Dominator Platinum metadata 2024-01-11 17:31:20 +00:00
Chris M 33e9d8e0e1 Initial commit for the Corsair Harpoon Wireless Mouse
+ Adding Harpoon Wired and Slipstream PID to
CorsairPeripheralV2Devices.h
+ Adding device layout
+ Registering detectors
+ Resolves #3834
2024-01-08 22:00:07 +11:00
Tam D f5bbd49e78 Fix coolermaster rescan crash 2024-01-07 21:45:18 +00:00
Lucas Mindêllo de Andrade 477fabd381 Adds new bios for igame rtx4080 ultraw 2024-01-07 02:22:28 +00:00
Grzegorz Sobański aa665a67bc Adding ASUS ROG STRIX 4080 16G White OC GPU 2024-01-05 05:26:44 +00:00
Cooper Hall 5b1fa93460 fixed errors of ValkyrieKeyboard code 2024-01-04 12:45:56 -07:00
诺诺 f6fd4e9d6c Add Valkyrie Keyboard valkyrie-99pro 2024-01-04 17:28:57 +00:00
morg c54a268e19 Fix name and version parsing for SteelSeries Aerox devices 2024-01-03 15:19:02 +00:00
Chris M 46095ce609 Added GA106 variant of iGame RTX 3060 Ultra W OC 12G 2024-01-03 14:00:21 +00:00
Luca bdfcef8dc1 Support for Razer ornata v3 tenkeyless 02A3 2024-01-03 13:59:43 +00:00
Adam Honse 28947ac0dd Revert "Enable removing the plugin dll from the menu" 2024-01-02 19:45:18 +00:00
Chris M c28c15a7fb Initial commit for Razer Naga Pro V2
+ Adding PID for the Naga Pro V2
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #3805
2024-01-02 16:30:40 +00:00
Chris 3ab12a45b8 Adding PNY RTX 4090 XLR8 Verto Epic-X OC
* Added `0x13D9` to pci_ids.h
* Registered detector in PNYLovelaceGPUControllerDetect.cpp
* Link to [webpage](https://www.pny.com/en-eu/pny-geforce-rtx-4090-24gb-xlr8-rgb-triple-fan-oc)
2024-01-02 14:20:46 +11:00
Chris dbbb7126ad Adding ASUS ROG STRIX 4080 16G White GPU
* Added 0x88C9 to pci_ids.h
* Registered detector in ENESMBusControllerDetect.cpp
* Link to [webpage](https://rog.asus.com/graphics-cards/graphics-cards/rog-strix/rog-strix-rtx4080-16g-white-model)
2024-01-02 11:05:04 +11:00
Chris M 93fc20de36 Formatting changes to the Roccat Controller Detector
* Adjusted list orders by alphabetising
* Aligned horizontal spacing
2023-12-30 17:57:42 +00:00
Dmitry K 869e9cb0fc Added mutex to prevent config corruption #3817 2023-12-30 17:57:01 +00:00
morg 252e067271 Add support for Roccat Burst Air Pro mouse. Closes #2527 2023-12-30 06:46:10 +00:00
Adam Honse 730f83a97f Fix JGINYUE internal USB controller detection on Windows 2023-12-29 18:06:16 -06:00
Ligolas Neo Malicdem 965048ad9c added support for 1060, 1070, 1070Ti (Palit Jetstream GTX) 2023-12-29 09:26:56 +00:00
morg 1a68abc8a0 Add support for PNY NVIDIA GeForce RTX 4090 Verto Epic-X RGB 2023-12-27 21:30:18 +01:00
Boom-Hacker acf12dfd5e Added Sapphire Nitro+ RX 7900 GRE support 2023-12-26 17:17:15 -06:00
Mr Hedan c9db576d32 DIRECT_MODE_PER_LED support MAG B365M MORTAR 2023-12-26 17:16:13 -06:00
Adam Honse 67fbdceb92 Enable removing the plugin dll from the menu
Implements change from MR !2148 without refactoring
2023-12-26 16:46:45 -06:00
Adam Honse db50b1f568 Add delay in between packets to stop flickering 2023-12-26 15:52:14 -06:00
Adam Honse 2d990ca037 JGINYUE USB controller cleanup, fix multiple detection 2023-12-26 15:52:08 -06:00
MOON-DREAM-STARS 82203b23d9 Code cleanup
Commits squashed by Adam Honse <[email protected]>
2023-12-26 15:51:47 -06:00
tcr020 9166ceb9b6 Initial JGINYUE USB ARGB controller implementation
Commits squashed by Adam Honse <[email protected]>
2023-12-26 15:50:02 -06:00
ITKinq 2325833c01 Add support for ASUS ROG Strix RTX 3090 Gundam Edition 2023-12-25 19:52:13 +00:00
karliss1 f8a837f106 Do not automatically save after each change on Asus Aura GPUs. 2023-12-25 18:50:50 +00:00
Chris M b05f954d35 Updates for QMK key code mapping
* Added QMKOpenRGBBaseController
* Refactored Rev9, RevB and RevD controllers to remove redundant code
* Updated "qmk_keycode_keyname_map" to add missing keycodes
* Resolves #3781
2023-12-25 07:47:15 +00:00
Mola19 6b4442ce39 add support for Roccat Magma Mini 2023-12-25 05:38:38 +00:00
Chris 9ff2b1f379 Adding MSI 4070 Ti Gaming X Trio White 12G GPU
* Added 0x5139 to pci_ids.h
* Registered detector in MSIGPUControllerDetect.cpp
* Link to [webpage](https://www.msi.com/Graphics-Card/GeForce-RTX-4070-Ti-GAMING-X-TRIO-WHITE-12G)
* Resolves #3802
2023-12-25 09:48:08 +11:00
Mola19 ff95fcfa88 add support for Asus ROG Strix Impact III 2023-12-24 22:25:56 +00:00
Iwan fcccb11990 add support for ASUS TUF RX 7900XT OC 2023-12-24 22:25:03 +00:00
Chris 1deae16211 Adding Logitech G635 to the Logitech common controller
+ Adding LOGITECH_G635_PID
+ Registering detector
* Small adjustment to PID ordering for readability
2023-12-21 10:09:38 +11:00
キー太郎 e59f2841a8 add another variant of the msi rtx3070 - Resolves #3787 2023-12-20 15:05:14 +00:00
Randy Palamar 04f7fd7a7e add missing sstream include for AutoStart-Linux 2023-12-15 16:23:43 +00:00
Daniel Gibson 7650ec67ba Support "Winbond Gaming Keyboard", like Pulsar PCMK or WIANXP/Nautilus/Capturer KT108 2023-12-14 17:30:21 +00:00
ParkerMc 6efc7ff294 Commander Core: Add led count detection 2023-12-14 17:25:59 +00:00
Abdo Osman 1f4e214e5a Add MSI MPG B650 Edge (MS_7E10) Support 2023-12-13 16:49:57 +00:00
Tam D a35616326c Cooler Master Keyboard Controller v2 2023-12-13 02:41:35 +00:00
James Wigley 28bf11d119 Add support for MSI RTX 4090 Gaming X Slim - Resolves #3699 2023-12-12 17:36:40 +00:00
Alexander Savchenko 88b4810c3f Initial commit for Palit 1080 Ti 2023-12-09 19:15:15 +01:00
Leon c6a454ffc6 Initial commit to support Gigabyte aero oc 4090 24gb 2023-12-09 04:24:51 +00:00
morg 2eb43fa445 Remove null terminating chars from profile names before using them in ProfileManager 2023-12-06 10:33:57 +01:00
1337Misom 6d562d8d37 MSI B650 GAMING PLUS WiFi support 2023-12-04 16:15:12 +00:00
Phoenix 9daac7c0df Add support for MSI B660M MORTAR MAX WIFI DDR4 2023-12-04 11:57:54 +11:00
Sniko Loft 9300cd3c25 Update NVIDIAIlluminationControllerDetect.cpp 2023-12-04 00:20:28 +00:00
hua0512 978b6f8d1c Add another variant of the ASUS ROG STRIX RTX 4070 Ti O12GB 2023-12-01 14:51:47 +01:00
Brad S. d178612f27 Added Support for Razer Blade 14 (2023) 2023-11-30 20:53:03 +00:00
Lucas Mindêllo de Andrade 85bfe32c0d [New Device] iGame GeForce RTX 4070 Vulcan OC-V 2023-11-30 20:31:32 +00:00
Florin9doi 413cd55d8d Add SKL-X SMBus DID 2023-11-29 22:25:04 +02:00
Rudolf Tym Souček d214ccba67 Add support for ASUS ROG-STRIX-GTX1660S-6G-GAMING 2023-11-29 17:23:43 +00:00
Adam Honse acaf1c2fed Remove dummy Direct mode handling from MSI Mystic Light 162 controller 2023-11-29 15:01:26 +00:00
Adam Honse 0a2d86b561 Remove custom handling of Direct mode for MSI 162-byte controller 2023-11-29 15:01:26 +00:00
Chris M b9f8243904 Fixed initial brightness for the CLI and fix initial brightness for Lian Li Hub SL V2 controller. 2023-11-29 14:17:16 +00:00
Me1k0r 672150aea2 added support for Lian Li Galahad II Trinity "Performance" variation 2023-11-28 16:51:45 +00:00
Mola19 d1a4ead83e fix error in Roccat Vulcan Keyboard Controller 2023-11-25 04:48:00 +01:00
Mola19 53ed66c8b8 add support for Roccat Magma to resolve #3205 2023-11-25 02:31:14 +01:00
Barry H 53ccbd6211 add nollie28 #3735 2023-11-23 02:31:16 +00:00
Mola19 9ffd853ae4 add direct mode to newer Asus mice 2023-11-23 00:32:13 +01:00
bradly0cjw 4d992b2226 add Zotac 3070 ti (ga102) 2023-11-22 21:22:55 +00:00
Mola19 a5b4938bbb add brightness to direct for Roccat Vulcan TKL 2023-11-22 03:45:29 +01:00
Mola19 94d9204177 Add support for Asus ROG Gladius III Wireless Aimpoint to resolve #3650 2023-11-21 03:51:57 +00:00
Dominik Mikołajczyk 8bf0ab45a1 Alienware AW410K support 2023-11-20 03:30:51 +00:00
Mola19 5cb0e54443 add support for Roccat Vulcan TKL to resolve #1616 + improvements to Roccat Vulcan protocol 2023-11-20 02:53:08 +00:00
Chris M 8716760e7e Added brightness to CreativeSoundBlasterXG6Controller 2023-11-18 21:03:16 +11:00
morg d886f61de9 Fix typo in hardware IDs dialog 2023-11-17 21:12:48 +01:00
Cooper Hall 3c89fa8859 minor refactor for RGBControler_Nollie 2023-11-17 14:47:57 +00:00
morg 38b787dbc1 RazerController: fix an unexpected end of string when layout is 0 2023-11-16 21:20:20 +01:00
诺诺 68a3cc43d9 Add new Controller Nollie16 2023-11-16 17:25:41 +00:00
morg 999bb03a45 Piix4 SMBus: set HANDLE initial value to prevent a crash on rescan 2023-11-14 08:43:06 +01:00
Dane Petersen 65a3fb9589 Add support for MSI GeForce RTX 4060 GAMING X 8G (closes #3526) 2023-11-13 20:50:13 +00:00
Norde 39673d419a PNY RTX 40xx series naming scheme update + support of PNY 4080 models. 2023-11-13 14:02:33 +00:00
Mola19 977f68c65c fix layout detection for Roccat Vulcan keyboards 2023-11-13 00:36:02 +00:00
Chris M a989166cdc Fixed regression bug from fd3434b8
* Renamed LenovoRGBController_Gen7_8 to RGBController_Lenovo_Gen7_8 to
align with naming convention
* Fixed #include statements pointing to wrong header(s)
* Corrected variable names in RGBController_Lenovo_Gen7USB.cpp
* Other style and formatting changes
2023-11-11 21:42:17 +11:00
vassilios fd3434b833 Changing current files to accomodate latest legion generation. 2023-11-10 18:11:16 +00:00
Norde 5e3dc69b26 Initial commit for PNY_RTX_4070TI_XLR8_SUB_DEV and PNY_RTX_4070TI_XLR8_OC_SUB_DEV 2023-11-10 15:14:18 +00:00
Qwex f06e1bbe1a Fix date on mac 2023-11-10 15:13:36 +00:00
Evan Mulawski f672397563 Generic device guard; use Corsair implementation for all Corsair HID cooling-capable controllers 2023-11-10 15:12:26 +00:00
Lucas Mindêllo de Andrade c5c5bf519b feat(igame): add rtx 3080 oc 10g 2023-11-09 17:28:59 +00:00
Chris M a689db4d3d Removed hid_get_device_info() function to correct CI/CD pipelines
* Regression introduced in dbeabe61
* Removed unrequired includes
* Aligned other variables and structures to ensure feature parity
2023-11-09 19:47:25 +11:00
Mola19 44610cf326 fix for saving on Asus ROG Spatha and Asus ROG Strix Evolve 2023-11-09 02:41:06 +01:00
Mola19 65e7edc452 add support for Asus ROG Spatha and restructure Asus Strix Evolve 2023-11-08 23:22:12 +00:00
Michael Losert dbeabe613d Add support for Lian Li GAII Trinity AIO 2023-11-08 17:54:20 +00:00
Chris M 12e7127422 Removed redundant copies of OpenRGBConsolePage.* 2023-11-08 23:35:12 +11:00
Jiewei Qian ba9ff4fcd6 Add pcie_id for Asus Strix 4090 White Edition 2023-11-04 08:09:59 +00:00
Chris M 9c601bde44 Initial commit for the Corsair K70 Pro keyboard
* Adding key layout and metadata to CorsairPeripheralV2Devices.cpp
* Adding new detector
* Resolves #2891
2023-11-02 13:42:59 +00:00
Chris M fda419faca Initial commit for Razer Basilisk V3 X HyperSpeed
+ Adding PID for the Basilisk V3 X HyperSpeed
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Small adjustments to packet timing to ensure serial / firmware is
readable
+ Resolves #3687
2023-11-02 21:55:04 +11:00
morg 7067bb774f Apex3TKL: do not send brightness if current brightness already set 2023-10-31 21:58:44 +00:00
Simon McKenna 26e584860e Add support for Lian Li SL Infinity controller 2023-10-31 01:48:43 +00:00
Florin9doi b1957d6c1d Fix Lenovo4Zone blue color 2023-10-30 14:21:28 +00:00
morg 64c7d858bf Ignore server-host pre-detection argument 2023-10-30 08:08:00 +01:00
Adam Honse d47be6b3b4 Initialize ROG Ally so that it works regardless of whether the hid-asus driver... 2023-10-30 01:46:00 +00:00
Chris M 558cce3002 Initial commit for Razer Ornata V3X Rev2
+ Adding PID for the Ornata V3X Rev2
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #3673
2023-10-29 14:23:39 +11:00
morg 7d637a502d Add help entry for --server-port option missing 2023-10-27 17:59:41 +02:00
Chris M 95c3212a83 Initial commit for the Corsair Katar Pro V2
* Adding LED layout and metadata to CorsairPeripheralV2Devices
* Adding new detector
2023-10-27 17:54:33 +11:00
Chris M f5feb6a31d Initial commit for the Corsair Katar Pro and Pro XT
* Adding LED layout and metadata to CorsairPeripheralV2Devices
* Adding new detector
* Resolves #3018
2023-10-27 06:57:11 +11:00
Chris M 759be39fc7 Initial commit for the Corsair K60 Pro TKL keyboard
* Adding key layout and metadata to CorsairPeripheralV2Devices.cpp
* Adding new detector
* Resolves #3689
2023-10-26 20:53:54 +11:00
djdox23 ce4dd7ff87 Update for gigabyte-4070-ti-gaming inside pci_ids.h and controller. 2023-10-25 22:25:33 +00:00
Martin Nygaard Jensen e8324892df Update AnnePro2ControllerDetect.cpp to contain new VID 0x3311 2023-10-21 13:52:48 +00:00
Adam Honse ad9e50c9d3 Fix metainfo links 2023-10-20 21:41:37 +00:00
morg 42731a992e HyperXMicrophoneController: avoid race condition, fixes a crash on rescan. 2023-10-20 18:14:12 +02:00
Chris M d4b2d3c381 Initial commit for the Corsair K70 Pro TKL keyboard
* Adding key layout and metadata to CorsairPeripheralV2Devices.cpp
* Adding lighting control endpoint check
* Adding new detector
* Small style fixes
* Resolves #3260
2023-10-20 07:16:01 +11:00
Bernhard M. Wiedemann dfff062bc6 Avoid corruption in 60-openrgb.rules
Due to the missing line-break before DUMMY_LIST
it would replace whatever was the first entry in there.

* Resolves #3675

This patch was done while working on reproducible builds for openSUSE.
2023-10-19 16:40:31 +00:00
Bernhard M. Wiedemann cd4004dce2 Reduce use of grep
because find can return us the same 240 wanted files.
2023-10-19 16:36:43 +00:00
Bernhard M. Wiedemann 9ac44192bc Skip empty detectors
Without this patch, output had ugly messages

    Usage: grep [OPTION]... PATTERNS [FILE]...
    Try 'grep --help' for more information.

and with the patch, the rule file is more readable
because it omits

-# Logitech Powerplay Mat -
-#---------------------------------------------------------------#
-#---------------------------------------------------------------#

-# Quantum Mechanical Keyboard (QMK) -
-#---------------------------------------------------------------#
-#---------------------------------------------------------------#
2023-10-19 16:36:43 +00:00
Bernhard M. Wiedemann a7920c01d7 Avoid grep warning
without this patch, output contained

    grep: warning: stray \ before white space
2023-10-19 16:36:43 +00:00
morg 56da121746 GigabyteRGBFusion2GPUController: fix a snprintf call 2023-10-19 16:30:17 +00:00
Bernhard M. Wiedemann 679e69be89 Ensure functions return a value
otherwise, gcc errored out
because non-void functions are supposed to return a value.

Alternatively, we could change the declaration to `void`.
2023-10-19 06:03:05 +02:00
morg c8c5f77595 Add support for Bloody W90 MAX. Closes #3500 2023-10-18 22:43:17 +00:00
Adam Honse 5ce430c062 Fix image links in README to point to the standalone wiki repo 2023-10-18 11:37:59 -05:00
Adolfo R. Brandes a1ee0d39b8 Add another variant of the Asus TUF Gaming RTX 4090 O24G 2023-10-18 06:56:43 -03:00
Bryan Perry 48f78f18d4 Support MSI RTX 4060Ti 8GB Gaming X - Closes #3677 2023-10-17 19:12:57 -05:00
Marek Sapota b91fb9c322 Fix TP-Link Kasa Smart Bulbs on some 64bit systems 2023-10-17 23:53:16 +00:00
Adolfo R. Brandes de08b82ebe debian: update packaging instructions 2023-10-17 22:28:33 +00:00
Adolfo R. Brandes 6308e06586 debian: Don't fail udevadm trigger 2023-10-17 22:27:59 +00:00
morg f34f8e1bb6 RGBFusion2GPUController: eliminate dead code + code guidelines 2023-10-15 17:56:08 +02:00
thombo 00c92d74a7 Support for MSI board 7E12 added 2023-10-15 09:13:43 +00:00
Nathaniel Fung 306b1ddcb3 Add Sapphire NITRO+ AMD Radeon RX 7800 XT 2023-10-15 06:06:54 +00:00
Chris M 33db866d04 Initial commit for Razer Razer Blackwidow V4 Pro
+ Adding PID for the Razer Blackwidow V4 Pro
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #3636
2023-10-15 10:33:48 +11:00
morg 7827a184f7 AlienWare controller: add alternate platform id for G15 5511. #437 2023-10-14 20:14:37 +00:00
morg af73e63d7a Add support for LG 27GN950-B monitor. Closes #1008 2023-10-13 08:43:51 +02:00
Adam Honse d0b76760f4 Remove unnecessary SettingsManager.h includes 2023-10-12 23:37:48 -05:00
Chris M d7c8ac2f8d Initial commit for Razer Deathstalker V2 Pro TKL
+ Adding PID for the Deathstalker V2 Pro TKL
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #3327
2023-10-13 06:49:56 +11:00
Mark Hermeling f3d9877598 Copy paste fixes 2023-10-12 13:31:36 +00:00
Adam Honse 8d19ceff95 Remove OpenRazer/OpenRazer-Win32 support as it is unmaintained and replaced by RazerController 2023-10-11 22:22:48 -05:00
Adam Honse f76e8f65a5 Add Razer Mamba Hyperflux (Wired) 2023-10-11 12:37:16 -05:00
Adam Honse 447ed4cef7 Fix various issues with Razer Firefly Hyperflux 2023-10-11 01:21:28 +00:00
misaka10032w 8955d69a11 Add colorful igame 4090adoc OC mode bios config 2023-10-10 16:38:33 +08:00
Lucas Mindêllo de Andrade f7eb61614e iGame Turing GPU with Direct mode without persistence 2023-10-07 02:24:13 +00:00
Chris M 9e75a68008 Fixed mode declaration in RGBController_MSIVigorGK30.cpp
* Resolves #3651
2023-10-06 19:13:35 +11:00
Adam Honse 0b787ebb3c Add serial implementation of HYTE CNVS mousemat controller for Windows and leave libusb implementation for Linux 2023-10-06 00:36:30 -05:00
Adam Honse 1b7cff78eb Limit HYTE CNVS brightness to 72% of maximum brightness according to V1.1 of protocol documentation. It could be reworked in the future to only limit brightness when the sum exceeds the value, but that would require significantly more math during update 2023-10-05 19:24:40 -05:00
Jonathan Guzmán 6e0358d6ea Add Lenovo legion 5 udev rules detection 2023-10-03 13:09:57 +00:00
Fan Yu 9f653577cd Initial commit for PNY_RTX_4090_XLR8_SUB_DEV 2023-10-03 04:11:01 +00:00
Adam Honse 362a31abbd Update wiki links in the README 2023-10-01 23:55:03 -05:00
Adam Honse d7ed55b264 Use size when parsing received buffers into strings in NetworkServer 2023-10-01 22:43:32 -05:00
Mola19 af53230244 Disable "Apply All Devices" button, if mode is not a custom mode 2023-10-02 02:41:22 +00:00
Jonathan Guzmán 16b5768736 fix "LENOVO_USEAGE" typo 2023-09-30 05:05:26 +00:00
Jonathan Guzmán caf26cc315 add new legion 5 devices 2023-09-29 05:57:45 +00:00
Chris M 2f0d722b83 Adjusting the Keyrox TKL layout
* Accounting for the KLM change in commit f6940640
2023-09-28 21:14:00 +10:00
morg fc14cf102f Add support for MSI GeForce RTX 3060 Ti 8GB Gaming X Trio 2023-09-27 19:44:26 +00:00
Ilkka Jylhä 4c7f92b491 Initial commit for Asus ROG Strix LC RTX 3090Ti OC 2023-09-27 17:55:30 +00:00
morg f8c20128ef Plugin manager: simplifies code, fixes a crash on exit 2023-09-27 15:31:54 +02:00
Adam Honse 41b7dc3102 Show incompatible plugins in the Plugins settings page with a note that it is incompatible, allow it to be removed 2023-09-26 23:41:33 -05:00
Adam Honse c6408eb752 Add SDK Version and Plugin API Version to Information Settings tab 2023-09-26 21:14:27 -05:00
Ilkka Jylhä 12166cbe93 Initial commit for Asus RX 7800 XT White OC 2023-09-26 19:48:34 +00:00
morg 0c6944bb8d CoolerMaster ARGB controller: fix crash on rescan 2023-09-26 15:45:29 +00:00
morg 22b8cdbe01 GigabyteAorusLaptopController: Add brightness support for custom mode 2023-09-26 15:38:26 +02:00
SHISEN 0f41d7443a Initial commit for MSI GeForce RTX 3060 Ti 8GB SUPER 3X OC 2023-09-25 14:37:11 +00:00
morg 46a8c06bfe CMMonitor driver udpates 2023-09-24 22:09:11 +00:00
Martin Nygaard Jensen e83ca276c0 Update AnnePro2ControllerDetect.cpp missing PID 0xA297 2023-09-22 20:37:26 +00:00
morg e2874a64a1 Add support for TUF RTX 4070 O12G GAMING variant 2023-09-22 17:40:58 +02:00
Jefemy 39d4afac20 Add support for alternative ASUS TUF 4070ti OC + non OC device ids 2023-09-22 13:10:28 +00:00
morg 86ba18595f Add support for CoolerMaster GM27. Closes #3627 2023-09-21 16:23:45 +00:00
morg 3c7a24c4c1 Add support for Gainward GeForce RTX3070 Phantom 2023-09-21 17:11:08 +02:00
Mola19 ddc2b7f5e8 Fix duplicate destructor in AsusAuraMainboard 2023-09-21 03:00:27 +02:00
morg 8addcde754 Add support for Gigabyte AORUS laptops. #3403 2023-09-20 01:23:13 +00:00
Adam Honse 85d6225a7c Add NZXT F140 RGB fan (140mm) device with ID 0x18 2023-09-19 22:30:22 +00:00
Codename-Antares 0cebf42857 Initial Commit for MSI RTX 3060 Ti Gaming X 2023-09-19 18:27:47 +00:00
Adam Honse 340083bc33 Initial commit for ASUS ROG Arion external NVMe SSD enclosure 2023-09-19 04:37:51 +00:00
Ilkka Jylhä 30b12c67b2 Initial commit for ASUS ROG Strix NVIDIA GeForce RTX 3090 OC EVA EDITION 2023-09-18 14:39:50 -05:00
Ilkka Jylhä 3199f33efb Initial commit for Asus TUF RTX 3080 V2 10GB 2023-09-18 18:42:03 +00:00
Chris M af673e7ec0 Fix missing include in Arctic controller from 4e14f035
* Missing standard library `algorithm` preventing Windows CI/CD builds
from completing.
2023-09-18 23:14:21 +10:00
Ilkka Jylhä d16ec6f0b1 Initial commit for Asus TUF Gaming Geforce RTX 4060 Ti OC 2023-09-17 19:32:40 +00:00
Ilkka Jylhä 2799e9435d Initial commit for ASUS TUF Gaming Radeon RX 7800 XT 2023-09-17 19:10:59 +00:00
Adam Honse 53d2321698 Fix issue in ArcticController where it was trying to create a variable-length buffer and breaking Windows build 2023-09-16 23:37:54 -05:00
Armin Wolf 4e14f0359d Add support for Arctic RGB Controller
The Arctic RGB controller support 4 RGB channel and can be controlled
over a CH341 USB-to-serial chip. The controller support two commands,
one for identifying the controller on a serial port and one for setting
the RGB values for each RGB channel. Since the controllers disables the
RGB channels after ~1s, a keepalive thread is used.
2023-09-16 23:21:21 -05:00
Armin Wolf fa52f4d7e0 Disable input and output processing on Unix serial ports
Disabling output processing is necessary since otherwise
sending a LF character (ASCII 0x0A) will automatically insert
a CR character (ASCII 0x0D).
Disabling input processing should prevent this when
receiving data.
2023-09-16 23:14:49 -05:00
Armin Wolf 0279aafb97 Allow for setting DTR on a serial port 2023-09-16 23:14:49 -05:00
Chris M 1996d34650 Updated Debug Keyboard to process KLM Opcodes
* Added InsertRow, RemoveRow and RemoveKey opcodes.
* Adjusted iterator for style and formatting.
2023-09-17 10:36:29 +10:00
Le Philousophe ccb20f3930 Add Champion's Bane and Ironclad suport 2023-09-16 16:29:46 +00:00
Chris M 3d8c11ea88 Initial commit for Razer Razer Blackwidow V4 X
+ Adding PID for the Razer Blackwidow V4 X
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #3602
2023-09-16 16:13:16 +00:00
Chris M 197d19a070 Corrected KLM log messages
* Moved SwapOnly opcode message to cover "unused" case
* Adjusted Size switch statement to account for non standard sizes
* Fixed InsertRow opcode insertion index
* Corrected RemoveRow opcode to ensure removal didn't skip keys
* Small formatting and style fixes
2023-09-16 23:45:18 +10:00
Beebles 4d73e0264a Add Support for SteelSeries QCK Prism XL Neo Noir Ed 2023-09-15 23:14:21 -05:00
Michal Stawinski a30323f22f Fix "--client" option not working
This fixes "Error: Invalid option: 172.17.0.1" error
that made it impossible to use openrgb with remote
servers.
2023-09-15 21:49:20 -05:00
rytypete e55da57f46 Add Asus USB Motherboard save and shutdown effect support 2023-09-14 22:01:52 +00:00
rytypete 479b8e8ea4 Treat Gainward GeForce RTX 3060 Ti Ghost as RGB 2023-09-13 14:04:18 +02:00
Martin 1fbbbb00ba Add support for the ASUS TUF RTX 4090 O24G OG OC
Added support for the ASUS TUF RTX 4090 O24G OG OC and tested it with my own card.
2023-09-12 18:39:53 -05:00
Sandipan Das a934c4c034 i2c-smbus: linux: Remove stray whitespaces
Remove stray whitespaces in newlines.

Signed-off-by: Sandipan Das <[email protected]>
2023-09-12 08:43:28 -05:00
Sandipan Das 49a6905ab5 i2c-smbus: linux: Fix interface detection
There are cases where detection of an interface fails due to lack of
permissions when accessing /dev/i2c-*. In some instances, the current
code will perform a double readdir() and skip what should have been
the next interface to be enumerated.

E.g. consider a system with the following configuration

  $ ls -l /sys/bus/i2c/devices

  total 0
  lrwxrwxrwx. 1 root 0 Sep  4 07:19 i2c-0 -> ../../../devices/platform/AMDI0010:03/i2c-0/
  lrwxrwxrwx. 1 root 0 Sep  4 01:49 i2c-1 -> ../../../devices/pci0000:00/0000:00:08.1/0000:03:00.0/i2c-1/
  lrwxrwxrwx. 1 root 0 Sep  4 01:50 i2c-10 -> ../../../devices/pci0000:00/0000:00:14.0/i2c-10/
  lrwxrwxrwx. 1 root 0 Sep  4 01:49 i2c-2 -> ../../../devices/pci0000:00/0000:00:08.1/0000:03:00.0/i2c-2/
  lrwxrwxrwx. 1 root 0 Sep  4 01:49 i2c-3 -> ../../../devices/pci0000:00/0000:00:08.1/0000:03:00.0/i2c-3/
  lrwxrwxrwx. 1 root 0 Sep  4 01:49 i2c-4 -> ../../../devices/pci0000:00/0000:00:08.1/0000:03:00.0/i2c-4/
  lrwxrwxrwx. 1 root 0 Sep  4 01:49 i2c-5 -> ../../../devices/pci0000:00/0000:00:08.1/0000:03:00.0/drm/card1/card1-eDP-1/i2c-5/
  lrwxrwxrwx. 1 root 0 Sep  4 01:49 i2c-6 -> ../../../devices/pci0000:00/0000:00:08.1/0000:03:00.0/drm/card1/card1-DP-1/i2c-6/
  lrwxrwxrwx. 1 root 0 Sep  4 01:49 i2c-7 -> ../../../devices/pci0000:00/0000:00:08.1/0000:03:00.0/drm/card1/card1-DP-2/i2c-7/
  lrwxrwxrwx. 1 root 0 Sep  4 01:50 i2c-8 -> ../../../devices/pci0000:00/0000:00:14.0/i2c-8/
  lrwxrwxrwx. 1 root 0 Sep  4 01:50 i2c-9 -> ../../../devices/pci0000:00/0000:00:14.0/i2c-9/
  lrwxrwxrwx. 1 root 0 Sep  4 07:19 i2c-PNP0C50:0e -> ../../../devices/platform/AMDI0010:03/i2c-0/i2c-PNP0C50:0e/

  $ openrgb --verbose --list-devices

Before:

  ...
  Registering I2C interface: /dev/i2c-3 Device 1002:164C Subsystem: 1462:130C
  Registering I2C interface: /dev/i2c-10 Device 1022:790B Subsystem: 1462:130C
  Registering I2C interface: /dev/i2c-1 Device 1002:164C Subsystem: 1462:130C
  Registering I2C interface: /dev/i2c-8 Device 1022:790B Subsystem: 1462:130C
  [i2c_smbus_linux] Failed to read i2c device PCI device ID
  Registering I2C interface: /dev/i2c-6 Device 0000:0000 Subsystem: 0000:0000
  Registering I2C interface: /dev/i2c-4 Device 1002:164C Subsystem: 1462:130C
  [i2c_smbus_linux] Failed to read i2c device PCI device ID
  Registering I2C interface: /dev/i2c-PNP0C50:0e Device 0000:0000 Subsystem: 0000:0000
  Registering I2C interface: /dev/i2c-0 Device 0000:0000 Subsystem: 0000:0000
  Registering I2C interface: /dev/i2c-9 Device 1022:790B Subsystem: 1462:130C
  [i2c_smbus_linux] Failed to read i2c device PCI device ID
  Registering I2C interface: /dev/i2c-7 Device 0000:0000 Subsystem: 0000:0000
  [i2c_smbus_linux] Failed to read i2c device PCI device ID
  Registering I2C interface: /dev/i2c-5 Device 0000:0000 Subsystem: 0000:0000
  ...

After:

  ...
  Registering I2C interface: /dev/i2c-3 Device 1002:164C Subsystem: 1462:130C
  Registering I2C interface: /dev/i2c-10 Device 1022:790B Subsystem: 1462:130C
  Registering I2C interface: /dev/i2c-1 Device 1002:164C Subsystem: 1462:130C
  Registering I2C interface: /dev/i2c-8 Device 1022:790B Subsystem: 1462:130C
  [i2c_smbus_linux] Failed to read i2c device PCI device ID
  Registering I2C interface: /dev/i2c-6 Device 0000:0000 Subsystem: 0000:0000
  Registering I2C interface: /dev/i2c-4 Device 1002:164C Subsystem: 1462:130C
  [i2c_smbus_linux] Failed to read i2c device PCI device ID
  Registering I2C interface: /dev/i2c-PNP0C50:0e Device 0000:0000 Subsystem: 0000:0000
  Registering I2C interface: /dev/i2c-2 Device 1002:164C Subsystem: 1462:130C
  Registering I2C interface: /dev/i2c-0 Device 0000:0000 Subsystem: 0000:0000
  Registering I2C interface: /dev/i2c-9 Device 1022:790B Subsystem: 1462:130C
  [i2c_smbus_linux] Failed to read i2c device PCI device ID
  Registering I2C interface: /dev/i2c-7 Device 0000:0000 Subsystem: 0000:0000
  [i2c_smbus_linux] Failed to read i2c device PCI device ID
  Registering I2C interface: /dev/i2c-5 Device 0000:0000 Subsystem: 0000:0000
  ...

Signed-off-by: Sandipan Das <[email protected]>
2023-09-12 08:43:28 -05:00
foul11 f5dc4a62c4 allow editing individual keys for ASUS ROG Strix SCAR 17 2023-09-11 21:00:42 +00:00
Pedro Martello 10e53074b2 Support for ASUS TUF RTX 4070 12G Gaming graphics card 2023-09-08 23:03:25 +00:00
Peter Repukat 96dd52a5e9 Fix k95_plat iso key mapping 2023-09-07 02:52:44 +02:00
thombo a42b55f391 Support for MSI board 7D40 added 2023-09-05 21:10:28 +02:00
c10l 7471dad28f Add missing build dependency to README 2023-09-05 01:08:46 +00:00
MmAaXx500 824cd7e3fa Fix Corsair Hydro udev rules 2023-09-04 17:05:07 +00:00
Arcitec b452110b43 Fix serial numbers from buggy ASUS keyboard firmwares
* ASUS firmware bugs sometimes return trailing garbage after the serial number. This new algorithm cleans up the garbage by only allowing legal, lower-ASCII characters, so that OpenRGB can accurately identify keyboards that have buggy firmwares.
2023-09-03 17:15:12 +02:00
Arcitec 21092ef7e0 Rename ASUS keyboard matrix layouts to language-independent identifiers
* Makes it clearer which layouts people should be using when contributing new languages or new ASUS hardware.
2023-09-03 17:15:12 +02:00
Arcitec d6bccc42e4 Add support for ASUS ROG Strix Scope II 96 Wireless
* USB Mode: Keyboard is fully mapped out and accurately represented in the LED matrix. Supports US, UK and Nordic layouts.

* Bluetooth Mode: Hardware does not support RGB control via Bluetooth, nothing can be done about that.

* 2.4GHz Mode: This keyboard uses the new "ASUS Omni Receiver" hardware, which is a new multi-device dongle which can pair with multiple keyboards and mice. Requires separate reverse engineering in the future. Not supported at the moment.
2023-09-03 17:15:12 +02:00
Arcitec a909818406 Accurate character labels in Nordic KBD layout
* The previous layout was not the real Nordic layout. Every character has now been fixed to use the correct, technical terms and accurate key legends. It now correctly represents the Nordic ISO layout standard.
2023-09-03 17:15:12 +02:00
chrabonschcz 1d30f2674a Fixed OpenRGB not building for Debian Buster 2023-09-02 18:00:56 +00:00
rytypete 74e1df4cd1 Indicate effects and save support for Asus ROG Ally 2023-09-02 13:09:14 +02:00
misaka10032w f3e5757295 Add support for Colorful iGame GeForce RTX 4090 Advanced OC 2023-09-02 00:24:14 +00:00
Cooper Hall 4c5f5c408f fixed a compiler error on some compiler instances related to KeyboardLayoutManager 2023-09-02 00:21:35 +00:00
Chris 348d2d8241 Fixed typo regression introduced in 479c2b2d
* Combined definition of ZET_FURY_PRO_PID & GENESIS_XENON_200_PID
* Adjusted formatting and style of detectors
2023-08-31 02:19:08 +00:00
TheRogueZeta 16f471db69 Add alternate ID for ROG-STRIX-RTX4090-O24G 2023-08-30 04:48:43 +00:00
Tam D 879153d478 Coolermaster keyboard device view 2023-08-30 03:57:45 +00:00
YaketyYakumo 962d2e8449 Fixed 1080Ti FTW3 backplate 2023-08-30 01:18:33 +00:00
Chris M de0437e164 Initial commit for the Corsair Dark Core SE mouse
* Adding LED layout and metadata to CorsairPeripheralV2Devices
* Adding new detector
* Resolves #1009
2023-08-29 12:21:04 +10:00
chrabonschcz 479c2b2dae Added Controller for Genesis Xenon 200 Mouse 2023-08-29 00:54:56 +00:00
Ben Miller 6c8da3a04f Implement Global Corsair Mutex 2023-08-28 13:48:17 +00:00
Perroboc 6b9aef10a9 Fix: [Epomaker TH80 Pro] Windows compat fix 2023-08-28 13:20:03 +00:00
Mola19 0969b5d24e support for Roccat Sense Aimo Mousepad (Mid and XXL) to resolve #2770 2023-08-24 18:47:12 +02:00
Chris M 9df7023b73 Adjusted Razer Basilisk V3 Pro metadata to light all LEDs
* Resolves #3537
2023-08-22 13:47:53 +10:00
Dmitry K c98464d9df Sinowealth detector cleaned and broken down to atomic units 2023-08-21 05:16:23 +00:00
Mola19 f3763a1b5c fix crash on rescan with Asus ROG Spatha X 2023-08-20 20:32:07 +00:00
Fn Eh eaff85af92 More ZOTAC stuff. Crash fix, and add a new card. 2023-08-20 20:22:51 +00:00
Mola19 756ceb2471 Add support for Asus ROG Sagaris GK1100 (only for non-modifier keys) 2023-08-20 22:14:25 +02:00
Pornvibool Tippayawat 100e954cef Add Support for ASUS TUF RX 7900XTX O24G GAMING 2023-08-18 10:55:27 +00:00
Peter Vazny 839701fcf8 Adds support for ANSI Lenovo Legion 7 Gen 7 2023-08-16 15:35:58 +00:00
Fn Eh e4c0979951 Zotac Metadata 2023-08-16 04:02:41 +00:00
Mola19 16b4235758 fix brightness of some Asus Aura Mice 2023-08-15 23:56:40 +00:00
morg e6b16ff7c4 Add support for Logitech G203 mouse variant 2023-08-14 15:03:56 +00:00
morg de21aca3ef LegoDimensionsToypad: fix crash when changing hw mode to direct 2023-08-14 08:08:20 +02:00
Chris M 2777c05907 Adding OPCODE "Insert Row" to KLM
* Insert Row OPCODE requires a row taken from the provided key
* Insert Row will insert provided key if the row insert was successful.
* Provide "UNUSED" key for an empty row insert.
2023-08-13 09:42:53 +10:00
TheRogueZeta a276ceedb3 Add additional ASUS TUF 4090 O24G Gaming device ID for PN: 90YV0IE-MVAA00 2023-08-11 05:25:22 +00:00
Fn Eh 2082283646 Adds support for three additional Zotac card... 2023-08-10 16:59:40 +00:00
Chris 593506219c Initial commit for the Corsair M65 Ultra RGB mouse
* Adding key layout and metadata to CorsairPeripheralV2Devices.cpp
* Adding new detector
* Resolves #3261
2023-08-09 17:57:06 +10:00
Chris 4fbcf883fe Initial commit for the Corsair Dark Core Pro SE mouse
* Reworked wireless Corsair Slipstream detection to be generic for all devices
* Adding key layout and metadata to CorsairPeripheralV2Devices.cpp
* Adding new detector
2023-08-09 04:15:09 +00:00
Mola19 64c2cc579f fix Asus ROG Spatha X Dock 2023-08-09 03:43:03 +00:00
morg c3b7d4ac1d Add support for ASUS ROG STRIX RTX 4080 O16G GAMING variant 2023-08-08 17:10:42 +00:00
Adam Honse 7fc3e297f1 Add NZXT F120 fan (0x13) 2023-08-08 11:39:41 -05:00
Quentin Ormancey 72ebc26baa Initial commit for ROG Strix GeForce RTX 4070 Ti 12GB GDDR6X OC Edition 2023-08-03 04:09:46 +00:00
Mola19 cd000218b1 move Asus ROG Strix Scope and Scope RX to AsusAuraTUFKeyboardController to add missing features 2023-08-02 02:27:55 +02:00
morg 4835739198 Make sure Colorful GPUs are detected on both Windows and Linux 2023-08-01 16:26:22 +00:00
Mola19 0057df0efb move Asus ROG Strix Flare to AsusAuraTUFKeyboardController to add missing features (resolves #3415) 2023-08-01 03:40:16 +00:00
morg b7747a37d1 Add support for iGame GeForce RTX 3070 Ultra W OC-V 2023-07-31 04:50:07 +00:00
Adam Honse 888b292d73 Fix Razer matrix map initialization for non-keyboard zones 2023-07-30 13:26:34 -05:00
Peter Vazny 9c01593ba8 Fixes some Y740 15" keys 2023-07-30 07:45:03 +00:00
Adam Honse 9cf453008d Initial commit for scsiapi and Seagate FireCuda Gaming External HDD controller 2023-07-30 06:12:21 +00:00
morg f6e0996250 Fix crash on save for AsusAuraCoreLaptop. Closes #3174 2023-07-25 13:21:50 +02:00
Adam Honse deeb8a84b7 Initial HYTE CNVS controller implementation 2023-07-22 20:10:14 +00:00
TheRogueZeta 92992c0a9b Add additional device ID for Asus TUF RTX4080-16G-GAMING 2023-07-21 15:15:33 -07:00
Sergey004 652d1f606e Add PALIT RTX 3060 LHR (GA104) to detection 2023-07-21 17:26:42 +04:00
Mola19 35c5d99a80 add support for Asus ROG Strix Flare II Animate 2023-07-20 02:26:19 +00:00
morg 653f025635 Add support for iGame GeForce RTX 3060 Ti Advanced OC-V variant 2023-07-18 13:02:49 +00:00
Adam Honse 606355955d Fill in missing modes for Razer Mamba 2012 2023-07-17 17:05:40 -05:00
Martin Hartl a98b0c1b62 Asus mainboard: Fix addressable only mainboard 2023-07-17 19:57:06 +00:00
Adam Honse 5dd9459561 Fix non-NULL matrix map pointer in Intel Arc A770 LE controller 2023-07-16 19:49:39 -05:00
Chris M 4dae7b6b85 Updated includes to fully cover dependencies 2023-07-16 22:56:38 +00:00
Mike Wang 5caf1e1b85 Fix RGB Fusion 2 pulse mode not working #3489 2023-07-16 22:55:32 +00:00
Alexey Sokolov 125b1ab134 Warn if dlopen() failed 2023-07-16 15:44:36 +01:00
Milan Cermak 9d962ded6a ViewSonic Elite XG270QG detected twice #3486 2023-07-15 14:59:53 +02:00
Mike Wang f414029910 Add Gigabyte GeForce RTX­4070 GAMING OC 12G #3477 2023-07-14 13:36:47 +00:00
Adam Honse 3629ba1f09 Remove old keymap entries from RazerDevices structures as they've all been converted to KLM layouts 2023-07-13 22:22:30 -05:00
Mike Wang 3678262404 Fix compilation failure caused by some non-ascii characters #3481 2023-07-13 13:29:52 +00:00
Mola19 16d8c8e962 fix AsusAuraTUFKeyboard quicksand mode direction 2023-07-13 05:39:32 +00:00
Dmitry K 51712f08b5 Removed include directives from ResourceManager.h to speed up build process 2023-07-12 14:51:47 +00:00
Dmitry K 0714920a9a Simplified detector blocks for HID 2023-07-12 14:49:27 +00:00
Anders Nikolai Fuglseth edea9f6bec Add ASUS TUF RTX 4070 O12G Gaming 2023-07-12 00:05:45 +00:00
morg 65fc57cb69 Add support for ASUS TUF RTX4080 16G GAMING GPU 2023-07-11 16:36:06 +00:00
Rollbacke 1480b23838 Added another NZXT Fan & Controller 6 channels 2023-07-11 16:34:01 +00:00
morg 7b38a6a8d6 Add support for ASUS TUF RTX 3090Ti 24G GAMING GPU 2023-07-11 14:41:02 +02:00
Göktuğ Korkmaz 0b776269ea Added another PID for HyperX QuadCast S microphone 2023-07-11 06:27:25 +03:00
Cooper Hall 14c74248dd fixed OpenRazer compiling error on windows 2023-07-10 19:51:27 +00:00
KerJoe 3ee6af0dfd Added "MSI PRO B550M-P GEN3" motherboard ID. 2023-07-10 18:46:38 +00:00
Cooper Hall 9fab4110d7 fixed one definition rule warnings 2023-07-10 18:13:47 +00:00
TheRogueZeta 9c2a648d09 Set custom width for HardwareID colums and auto expand list 2023-07-10 16:23:09 +00:00
Adam Honse c44d87e24d Increment version number post-release 2023-07-10 11:19:52 -05:00
Adam Honse b5f46e3f1d OpenRGB version 0.9 2023-07-09 22:51:47 -05:00
Adam Honse 16efabcce6 Disable non-English/non-QWERTY layouts 2023-07-10 01:01:16 +00:00
Adam Honse fbeb2c1c45 Use LED ID and version string to determine if mode 14 is supported 2023-07-10 01:00:02 +00:00
Chris M 0295b9041f Updated GaiZongGai keyboard metadata
* Includes changes from `https://gitlab.com/OpenRGBDevelopers/OpenRGB-
Wiki/-/merge_requests/11/diffs`
2023-07-10 08:23:05 +10:00
Cooper Hall 9a04b66bec fixed warning in RGBController_ZotacV2GPU.cpp 2023-07-09 21:38:39 +00:00
Chris M 37295adf6e Updated Gigabyte SuperIO metadata
* Includes changes from https://gitlab.com/OpenRGBDevelopers/OpenRGB-
Wiki/-/merge_requests/14/diffs
2023-07-09 21:30:42 +00:00
Dmitry K 0c16108c89 Fixed a typo in translation (HUE Bridge) 2023-07-09 20:57:58 +00:00
Adam Honse 29b0816c9c Disable libusb wrapped HID devices on non-glibc Linux as it segfaults on musl at the moment (tested on postmarketOS) 2023-07-09 13:06:39 -05:00
TheRogueZeta f679081a2c Enable all modes for Polychrome v1 2023-07-09 17:25:02 +00:00
TheRogueZeta ad2dcdb585 Commit to enable mode 14 on some ENE DRAM firmware 2023-07-09 01:36:50 -07:00
Adam Honse 35aa66455c Only show one warning at a time on powerup 2023-07-09 00:58:05 -05:00
Adam Honse ff3dbdac4c Put ENE save to device behind a setting 2023-07-09 04:20:07 +00:00
Chris 0497941209 Adjusted code to remove warnings in libcmmk 2023-07-08 21:07:02 -05:00
Adam Honse cacfffd101 Fix metadata for Cryorig and NZXT Hue 1 controllers 2023-07-08 18:01:43 -05:00
Chris bc91bd2838 Corrected language label in Croatian translation 2023-07-08 17:47:53 +10:00
Adam Honse d6e5645bb9 Cleanup qt folder 2023-07-07 02:03:33 -05:00
Cooper Hall 1cfd60261e Fixed all the warnings I could 2023-07-06 23:39:19 +00:00
gogogogi 75fd43c131 Add Croatian translation 2023-07-06 21:28:41 +00:00
morg 3256bc3296 Replace all png icons with a custom font 2023-07-06 17:05:38 +00:00
Adam Honse b8f4b081a4 Fix more warnings 2023-07-05 23:27:32 -05:00
Adam Honse 25d7ea3e6a Fix warnings in OpenRGBHardwareIDsDialog.cpp 2023-07-05 23:08:58 -05:00
Dmitry K 817327586d Removed acpiwmi, updated TUF controller to be self-contained 2023-07-05 23:34:25 +00:00
k1-801 a7885bac57 Moved Asus TUF Linux controller to it's Windows counterpart 2023-07-05 21:21:13 +04:00
k1-801 2ffef5facf Updated the Device IDs dialog to use a tree 2023-07-04 22:37:20 +04:00
k1-801 50629dc4f9 Russian translation updated 2023-07-04 17:26:04 +00:00
Luiz Carlos 9c52bf84e7 Add support to Gainward RTX 3080 Phoenix 2023-07-03 19:09:17 +00:00
Adam Honse d5b31ff681 Cleanup RazerController transaction ID by adding transaction ID to device table rather than using a switch statement 2023-07-03 02:09:34 -05:00
Adam Honse 6c7f0dfdb8 Cleanup RazerController matrix type by adding matrix type to device table... 2023-07-03 01:23:11 +00:00
Adam Honse 8578f4b72f Fix color zones in JSAUX dock direct mode 2023-07-01 23:33:21 -05:00
thombo 1127b0a844 Support for MSI boards 7C82 and 7E01 added, per-LED mode for 7C92 enabled 2023-07-02 02:07:31 +00:00
Adam Honse c8a31fc587 Add Blackwidow Chroma and Blackwidow Chroma TE to matrix type switch/case 2023-07-01 21:02:44 -05:00
flora a4eff9ad70 Fixed persistant blue color for crucial ram 2023-07-01 05:17:00 +00:00
Cooper Hall a60a273893 Add Zotac 30 40 series gpus 2023-07-01 05:09:02 +00:00
Adam Honse ddef980db4 Initial commit for SRGBmods LED Controller V1 2023-06-30 22:04:43 -05:00
Chris M 36e8ab4c05 Initial commit for Razer Leviathan V2 X
+ Adding PID for the Leviathan V2 X
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #3450
2023-07-01 09:52:49 +10:00
Adam Honse 24ca6d25d5 Add default to KLM layout enum and reorder switch statement 2023-06-30 18:12:06 -05:00
Adam Honse f6940640c6 Add default KLM layout (ANSI+ISO QWERTY) 2023-06-30 12:01:30 -05:00
slichtzzz 1d45ca42ce Update Russian translation 2023-06-30 13:38:20 +00:00
merafour merafour df7b15a0e6 Adding OKS KeyBoard support 2023-06-30 13:23:40 +00:00
Adam Honse dbcb7a8dab Looks like JSAUX controller needs extra report ID only on Windows, breaks on Linux, so add conditional compilation hack 2023-06-29 23:40:36 -05:00
Adam Honse b8ad896ca8 Fix JSAUX dock packet on Windows 2023-06-28 23:05:31 -05:00
Gizeta 6b9446c323 Add support for iGame GeForce RTX 4070 Ti Advanced OC-V 2023-06-28 16:32:59 +00:00
Cooper Hall cd27f1cf4a fixed RBGController_GaiZhongGai.cpp 2023-06-28 16:32:05 +00:00
Adam Honse f302a19969 Add support for NZXT F120 RGB Duo fan (120mm) in Hue 2 controller 2023-06-28 13:19:09 +00:00
Yanzgz d8b2e884b8 Add new device by GaiZhongGai 2023-06-28 02:50:24 +00:00
Chris M ab394190c8 Initial commit for Razer Ornata V3 Rev2
+ Adding PID for the Ornata V3 Rev2
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #3427
2023-06-28 07:05:16 +10:00
诺诺 e55b9a1897 Add Nollie32 Lamp strip controller 2023-06-27 16:19:42 +00:00
Jack Greiner 571aa6c7ce Fix missing REGISTER_HID_DETECTOR_PU entries for Wooting Two ARM boards 2023-06-27 00:34:57 +00:00
Jack Greiner 7ef9051093 Fix naming scheme of Wooting Two 60HE (ARM) and Wooting Two HE (ARM) 2023-06-26 19:59:29 +00:00
Jack Greiner 20351158f3 Add support for Wooting Two HE (ARM) 2023-06-26 13:55:23 +00:00
Adam Honse 67dedaa2be Implement effect modes and clean up code 2023-06-26 04:16:29 +00:00
Adam Honse cc407379fc Initial support for ASUS ROG Ally 2023-06-26 04:16:29 +00:00
Shane Fagan 4f30868a3b Fixes Pulsefire Haste not being detected on Linux 2023-06-22 00:20:11 +00:00
TheRogueZeta 255d64d3d1 Initial commit for ASUS ROG STRIX RTX 3080 O12G EVA EDITION device ID 2023-06-21 17:14:43 +00:00
otoyori 4dcf2fe09f Update file HyperXMicrophoneControllerDetect.cpp 2023-06-21 13:07:30 +00:00
Chris M afb5885fd9 Corrected label for Asus Tuf 3060Ti 2023-06-21 00:34:43 +00:00
Chris M ca46e3a22f Fixed broken link to Resize.html help on website 2023-06-21 07:32:32 +10:00
Mola19 843f167b5f support for Asus TUF Gaming K5 2023-06-20 01:40:50 +02:00
Göktuğ Korkmaz 4cfa43d919 Initial commit for LianLi-UNI FAN-SL V2-v0.5 2023-06-19 16:40:17 +00:00
Ben Miller 1e47a1e51a Add support for ASUS TUF 4070 TI OC by adding AUMA0-E6K5-1107 ENE Version and fixes #3161 2023-06-18 05:27:55 +00:00
Adam Honse 4c805e719d Replace Reddit link with Lemmy link 2023-06-16 11:35:50 -05:00
TheRogueZeta ab8021d8f3 Initial commit for MSI RX6800 Gaming Z Trio v1 Device ID 2023-06-15 01:54:46 +00:00
TheRogueZeta dbda02f497 Initial commit for Gigabyte RTX 4080 16GB AERO OC Device ID 2023-06-14 13:57:00 -07:00
TheRogueZeta bd1bf0e3a9 Initial commit for NVIDIA RTX 2080 Super FE device ID 2023-06-13 15:29:11 -07:00
Adam Honse 0bf87bea38 Clean up RGBController mode handling 2023-06-11 00:35:06 -05:00
Perroboc d431f884c4 Added Controller for Epomaker TH80 Pro keyboard 2023-06-11 00:38:33 +00:00
Adam Honse c6a527b505 Rework packet sending to get it working in Linux 2023-06-10 23:43:55 +00:00
Adam Honse 67bc2053d0 Cleanup 2023-06-10 23:43:55 +00:00
Adam Honse f730f7eaae Attempt using HID detector without usage/usage page 2023-06-10 23:43:55 +00:00
Adam Honse 64c2243391 Use wrapped HID detector for Wushi (JSAUX) controller 2023-06-10 23:43:55 +00:00
Adam Honse 0cef992ae6 Code cleanup and add files to OpenRGB.pro 2023-06-10 23:43:55 +00:00
Adam Honse ccb85b981d Initial commit from JSAUX GitHub PR 2023-06-10 23:43:55 +00:00
Chris M 0c502332cb Added Metadata to Cherry Keyboard controller
* Fixes missing UDEV rules
* Removed redundant dummy UDEV declarations
2023-06-09 18:01:57 +10:00
Tm T 780b0365fb Add ROG STRIX RX570 8G 2023-06-09 04:05:02 +00:00
Flora Aubry 1c4c4bd010 Added more informations about i2c 2023-06-08 23:02:45 +00:00
Chris M 3d0582d7be Added Remove Row Opcode to the KLM
* Removed blank row from Sixty percent (Mini) keyboards
* Resolves #3404
2023-06-09 05:37:20 +10:00
morg 70ba6a2133 Add support for Wooting Two 60HE (ARM) 2023-06-05 18:19:05 +00:00
Geoffrey Mon 8d5d109eb8 LED view selection should have no effect if not in per-LED mode 2023-06-04 21:14:07 +00:00
Dan 4b7422e85c Fix newer PID of NZXT RGB & Fan Controller (200E) not being detected 2023-06-04 21:11:08 +00:00
Adam Honse 50f7fe4ca5 Detect if udev rules file is not present and present a warning dialog 2023-06-04 18:29:49 +00:00
rando onyx ccb8997764 Japanese lang file add 2023-06-04 16:50:40 +00:00
Adam Honse 5718de27c5 Add NZXT F140 Core RGB fan device type to Hue 2 controller 2023-06-03 21:48:52 -05:00
morg a7f3d536ab Add support for Lego Dimensions Toypad Base. Closes #3399 2023-06-03 19:08:18 +00:00
Lucas Mindêllo de Andrade ae11bb6a16 Support iGame GeForce RTX 3060 Advanced OC 12G L-V 2023-06-03 19:04:47 +00:00
Mola19 052c11e964 fix for Asus ROG Balteus mode saving 2023-06-03 04:10:33 +02:00
TheRogueZeta 57d50fcfae Initial commit for EVGA RTX 2070S XC Gaming device ID 2023-06-02 10:41:36 -07:00
Mola19 69db40e334 fix for Asus ROG Balteus version fetching 2023-06-02 17:55:02 +02:00
Lucas Mindêllo de Andrade 27eebd2829 Add support for iGame GeForce RTX 3080 Ti Advanced OC-V 2023-06-02 14:21:32 +00:00
Geoffrey Mon 7b286352da Read I2C bus location more reliably 2023-05-30 22:08:44 -05:00
vlack cf46be2b1e Add Palit 4070Ti GameRock 2023-05-29 23:45:00 +00:00
Chris M c40dff9ced Added missing layout to Razer Ornata V2
* Added KLM layout based on razer_huntsman_common_layout
* Added metadata for Ornata Chroma V2
2023-05-30 08:04:04 +10:00
thombo cd3385b9c6 MSI board 7D03 added, configuration of 7C37 adjusted 2023-05-29 19:45:55 +00:00
Lucas Mindêllo de Andrade 8202ef19e6 Colorful turing color modes support 2023-05-29 19:44:50 +00:00
umbreon222 90db870161 Fix IP overwritten with name for lifx & kasa settings pages 2023-05-29 11:28:17 -05:00
Andrey 8c6cba5117 AMD ADL Multiple bus support 2023-05-28 23:23:55 +00:00
Lucas Mindêllo de Andrade 10047188ad Add support for Colorful Turing RTX 2070 2023-05-28 22:26:50 +00:00
Chris M a67cf011d5 Added Dummy devices for Logitech receivers for UDEV script
* Added Dummy detector for Logitech Lightspeed receiver
* Added Dummy detector for Logitech Powerplay receiver
* Resolves #3375
2023-05-28 10:47:32 +10:00
TheRogueZeta 894b533cb7 Initial commit for NVIDIA RTX 2080 Founders GPU 2023-05-27 23:46:44 +00:00
TheRogueZeta cf415a1d17 Initial commit for EVGA RTX 3090 Ti FTW3 Black Gaming device ID 2023-05-27 22:27:14 +00:00
Jason Russo 7d37f58407 Add support for Capellix Elite Pump lighting control 2023-05-27 22:25:12 +00:00
Adam Honse eb08ceb1e7 Remove mbedtls/certs.h from EntertainmentMode.cpp to work around mbedtls removing that file in newer releases, which have made their way to Arch Linux.
* It looks like upstream has made this change, but it has not made it into a release, so just doing this single patch for now
2023-05-25 22:02:36 -05:00
Justinas Stankevičius 4f945075e9 Add Palit RTX 4070 2023-05-25 19:25:17 +00:00
Andrey 70bd52bade Add support for ASUS ROG 6900xt LC TOP version 2023-05-25 13:55:18 +00:00
Andrey 009cd53038 Fix crash due to double ROGStrixLC closing 2023-05-25 12:54:51 +00:00
Adam Honse d0ccd9f746 Re-enable resizing of mode-specific colors 2023-05-24 22:41:20 -05:00
J Sek e2dbe292a1 Add support for ROG Strix Scope RX TKL Wireless Deluxe 2023-05-24 21:51:03 +00:00
k1-801 a94468971f Added PCI ID for Gigabyte RTX3060 TI OC 8GB 2023-05-24 21:48:31 +04:00
Adam Honse 4ec0795a50 Fix warnings in KeyboardLayoutManager.cpp 2023-05-24 11:40:37 -05:00
Adam Honse 577747e9fd Fix warnings in RGBController_PalitGPU.cpp 2023-05-24 11:34:39 -05:00
Adam Honse 77eb0fc005 Fix warnings in RGBContoller_NZXTHue1.cpp 2023-05-24 11:32:55 -05:00
Adam Honse 4cf28306e5 Fix warning in RGBController_DMX.cpp 2023-05-24 11:30:31 -05:00
Adam Honse 9d988444b1 Fix warning in OpenRGBDMXSettingsEntry.cpp 2023-05-24 11:28:35 -05:00
Adam Honse e2cbac0e83 Fix warnings in OpenRGBZoneResizeDialog.cpp 2023-05-24 11:26:41 -05:00
Takeshi Sone 41aa29ca01 Add ID of Palit 4090 GameRock 2023-05-23 12:51:27 +09:00
Adam Honse 4bc8b7139c Fix warning in OpenRGBHardwareIDsDialog.cpp 2023-05-19 00:51:30 -05:00
Kabir Kwatra 4da24e6209 Add PNY XLR8 3070 LHR 2023-05-17 22:46:16 +00:00
Chris M 1f00cae5a1 Moved Razer Tartarus V2 to KLM layout 2023-05-17 06:57:24 +10:00
Adam Honse c05114d031 Update wiki links in README to point to standalone wiki repo 2023-05-15 11:26:29 -05:00
Adam Honse 35aad36e1b Add Direct mode support for AOC GK500 keyboard 2023-05-14 14:33:33 -05:00
Chris M c23b98db8a Moved Razer Blackwidow V3 Pro to KLM layout 2023-05-14 07:29:15 +10:00
Adam Honse d1b4a97cb1 Initial commit for AOC GK500 keyboard 2023-05-13 18:45:07 +00:00
Frédéric Mercille 164f53dc91 Fix for Issue 3359 - Log which devices fail to load properly, but still update... 2023-05-13 16:09:39 +00:00
Chris M 4b8cf36494 Moved Razer Ornata Chroma to KLM layout 2023-05-14 01:22:39 +10:00
Chris M 5dbb5775a3 Moved Razer Blackwidow 2019 to KLM layout 2023-05-13 14:28:34 +10:00
Chris M c220dd04b9 Moved Razer Huntsman V2 TKL to KLM layout 2023-05-13 09:38:24 +10:00
Chris M 193bd90523 Moved Razer Huntsman V2 to KLM layout 2023-05-12 18:11:54 +10:00
Adam Honse 5ad75b5d95 Add effect modes to AOC Mouse controller 2023-05-11 23:31:26 -05:00
Adam Honse 2680a24bbd Implement AOC Mousemat effect modes 2023-05-11 20:35:31 -05:00
Chris M 5366238496 Moved Razer Huntsman Tournament Edition to KLM layout 2023-05-11 22:30:35 +00:00
Chris M d3b3663ef5 Fix type issue in Resize Dialog
* Converted Int to String when appending to name
2023-05-12 07:57:26 +10:00
Adam Honse 6c91ce6a1b Automatically name new segment and disallow empty name 2023-05-11 11:44:57 -05:00
morg 918e7ebfcb Add support for iGame GeForce RTX 3060 Ti Advanced OC-V 2023-05-11 10:09:24 +02:00
Adam Honse ce8c4c9b81 Add SendPacket function and mode enums to AOC Mousemat controller 2023-05-10 23:33:06 -05:00
Chris M b7575bfe0b Moved Razer Huntsman Mini to KLM layout 2023-05-11 12:50:25 +10:00
Chris M ec668c4af1 Moved Razer Huntsman to KLM layout 2023-05-11 11:26:16 +10:00
Chris M 6d2cea5bbb Moved Razer Huntsman V2 Analog to KLM layout 2023-05-11 08:38:48 +10:00
Chris M 9130849a9f Moved Razer Cynosa Chroma V2 to KLM layout 2023-05-10 18:36:08 +10:00
Adam Honse ced97855ca Initial commit for NZXT H5 Elite RGB Controller (3 RGB, 0 Fan) 2023-05-09 19:21:01 -05:00
Adam Honse 9866f61032 Segment size verification in Edit dialog
* Remove Start field and calculate it from previous segment sizes
  * Add segment size slider
  * Gray out OK when segment configuration is invalid
2023-05-09 23:58:55 +00:00
Chris M e07b044e40 Moved Razer Cynosa Chroma to KLM layout 2023-05-10 07:20:37 +10:00
Chris M e29e9d52dd Moved Razer Blackwidow Elite to KLM layout
* Resolves #3347
2023-05-09 15:35:27 +10:00
splintergu f0363cb817 Add MSI PRO H610M-G DDR4 (Mystic Light) 2023-05-08 13:23:19 -03:00
Adam Honse 87aadafa4d Add timeout to Philips Wiz packet receive so that it doesn't hang on rescan 2023-05-08 00:03:07 -05:00
Adam Honse 5a0d0d65aa Add use cool and warm white check boxes to Philips Wiz settings 2023-05-07 21:46:15 -05:00
Adam Honse 89f13d9ec9 Add options to use warm and cool white channels on Philips Wiz 2023-05-07 20:37:25 -05:00
MisterPDJ 2c7baaa1ef Add Scene modes to Phillips Wiz
Commit amended by Adam Honse <[email protected]> to merge with direct mode brightness control functionality.
2023-05-07 20:18:45 -05:00
Kevin Kuriakose 02b962b2b5 Add brightness control for Philips Wiz Lights 2023-05-07 23:23:56 +00:00
Codename-Antares 85f5cf7140 Fix Names
Renamed as PID were seen in the X63 RGB aswell and guess for the X73 RGB is the same too
2023-05-07 17:25:46 -05:00
Adam Honse 94ca670cbe Add a UI option to disable expanding keys in the device view 2023-05-06 22:51:47 -05:00
morg a9fca21544 Add settings to corsair dominator detection to control the RAM model 2023-05-07 00:22:06 +00:00
flora d286edc596 Support for TUF RTX 4080 2023-05-06 14:07:53 -05:00
Chris M f5241385e2 Correcting the Matrix Type for Razer Cynosa Lite
* Fixes #2196
2023-05-06 22:00:47 +10:00
Adam Honse 81aaf67ff0 Initial DMX (Enttec OpenDMX USB) support and serial_port improvements
* Support DMX RGB lights (PAR lights, spotlights, wash lights, etc)
  * Configurable R/G/B channel and Brightness/Master channel
  * Add configurable parameters to serial_port needed to configure a port for DMX
  * Add DMX tab to settings
2023-05-06 08:06:19 +00:00
vlack 8b4b2bacbc Initial support for RedSquare Keyrox TKL Classic keyboard 2023-05-06 07:55:25 +00:00
Adam Honse 01d5430781 Fix Razer Blade Stealth 2016 KLM layout 2023-05-05 23:49:46 -05:00
Chris M f1c5600a95 Moved Razer Blade Stealth 2016 to KLM layout 2023-05-06 10:56:14 +10:00
Chris M 0b16d28979 Moved Razer Blade 17 Pro 2021 to KLM layout 2023-05-06 10:20:48 +10:00
morg ceb48e783e Adding EVGA Z20, uk layout 2023-05-05 23:40:32 +02:00
morg c0b069f330 Add support for ASUS TUF RTX 3070Ti O8G V2 GAMING alternate version 2023-05-05 07:04:31 +00:00
Adam Honse b136060587 Initial support for NZXT RGB & Fan Controller PID 0x2011 2023-05-03 22:51:26 +00:00
Cooper Hall 246aa6d1a5 added multiple legion 5 and legion 5 pro models 2023-05-03 13:17:00 +00:00
Chris M 62651d20a4 Removed deprecated Huntsman Elite Keymap 2023-05-03 07:02:28 +10:00
Adam Honse 0ce0dd91ec Clean up unused channel field in NZXTHue1Controller, as it only supports one channel 2023-05-01 20:22:19 -05:00
Adam Honse 9d97c8ca74 Fix signedness warning in KasaSmartController 2023-05-01 20:14:36 -05:00
Adam Honse 0fae77b898 Fix potentially used uninitialized warning in RGBController_HyperXAlloyOrigins60and65 2023-05-01 20:12:15 -05:00
Adam Honse 20f317e95d Fix unused variable warning in RGBController_HyperXAlloyOrigins60and65 2023-05-01 20:11:00 -05:00
Adam Honse 8308c21bef Fix snprintf size check warning in AsusCerberusKeyboardController 2023-05-01 20:09:13 -05:00
Adam Honse 834b0cc9c9 Clean up test code in AOCMouseController and fix unused variable warning 2023-05-01 20:06:35 -05:00
Adam Honse 1190c2875d Use snprintf instead of sprintf in OpenRGBHardwareIDsDialog, update buffer size to account for sprintf check warning 2023-05-01 20:05:20 -05:00
Adam Honse 0033845eae Fix warnings in OpenRGBDevicePage.cpp 2023-05-01 20:01:48 -05:00
Adam Honse 79e80021b1 Remove convertQPath functions as it's only used once, fixes a warning for the unused version 2023-05-01 19:59:12 -05:00
morg 86f048fc72 Add support for Gainward GeForce RTX3070 Ti Phoenix 2023-05-01 13:22:56 +02:00
Amit Blonder eafb70c880 Added support for MSI 4070 Gaming X - for #3315 2023-05-01 05:45:46 +00:00
Adam Honse 538acf1c26 Add trackpad LEDs to Razer Blade Pro 2017 KLM layout 2023-04-30 16:48:07 -05:00
morg 89ef2b1a8b Add HyperX Pulsfire Haste new variant 2023-04-30 18:20:24 +00:00
Chris 5abc13e7df Amending CLI code for "All Devices" to resolve #2918
* Adding `current_devices->size() == 0` check to Mode / Color / Brightness argument parsers to catch "All Devices" case from CLI
2023-04-30 18:15:37 +00:00
morg a0024b8f04 Make sure to correctly set random_colors (uninitialized bool) 2023-04-30 16:14:43 +00:00
skraus-dev 99a18d6e6f CherryKeyboardController: Add rest of known devices supported in Cherry Utility 2023-04-28 09:32:33 +02:00
Adam Honse 8d19e44d96 All Blade Pro 2017 keys working in KLM layout (no touchpad lights yet) 2023-04-27 23:57:59 -05:00
Chris M e22a870107 Moved Razer Blade Pro 2017 to KLM layout 2023-04-28 04:06:21 +00:00
Adam Honse 02d5c1c1fd Fix Razer Blade 14 2021 KLM layout 2023-04-27 19:12:29 -05:00
Chris M 83147ab9cc Adding Layout detection to CorsairPeripheralV2Controller
* Adding GetKeyboardLayout() to CorsairPeripheralV2Controller
* Adjusting GetAddress() to return unsigned integers
* Swapping CorsairPeripheralV2Devices to generate dynamic keyboard
layouts
* Resolves #3151
2023-04-25 09:49:50 +10:00
morg 167acdf769 Add HyperX Pulsefire Mat RGB Mouse Pad XL support 2023-04-24 08:56:06 +02:00
Chris M 9672cc88e4 Added Razer Blackwidow V3 KLM layout 2023-04-24 12:43:42 +10:00
Adam Honse 9abf121514 Initial commit for AOC Mouse 2023-04-22 20:14:12 +00:00
skraus-dev d8cfd9b0ef CherryKeyboardController: Add devices (MX BOARD 3.0S FL RGB, G80-3000 TKL RGB, MX BOARD 10.0N FL RGB) 2023-04-22 20:04:40 +00:00
Brandon Waldman 7ef62e519c Add Support for Nvidia RTX4080 Founders Edition Sub-Device 1794 2023-04-22 16:45:33 +00:00
skraus-dev 36736aeda0 Support for Cherry Keyboard (G80-3000N RGB TKL) 2023-04-22 16:45:13 +00:00
Mola19 a050d8e311 support for Asus TUF Gaming K1 to resolve #2242 2023-04-21 23:31:40 +00:00
Adam Honse d4c158cc9c Enable effects modes for Cryorig H7 Quad Lumi 2023-04-19 20:24:51 -07:00
Adam Honse d4ce474016 Initial implementation of NZXT Hue 1 (Smart Device V1) 2023-04-20 01:27:31 +00:00
Copysiper d2b8ff79a4 Initial commit for iGame GeForce RTX 3070 Ti Ultra W OC LHR closes #3313 2023-04-19 15:00:47 +00:00
Adam Honse e8163043c5 Initial commit for AOC AGON AMM700 mousemat 2023-04-18 04:40:50 +00:00
morg 490e4df1fc Add support for Gigabyte RTX4070Ti Gaming OC 12G 2023-04-17 21:56:38 +00:00
Christopher Wróbel b0dfa868ec Add Gainward RTX 3090 Pheonix 2023-04-17 22:25:22 +02:00
Michael Kersey b84a93d17c Add support for MSI 0x7D75 (B650 Tomahawk Wi-Fi) 2023-04-17 04:57:06 +00:00
Sherif Madkor ae56af9130 [New Device] Redragon K552-2 new revision (VS11K28A, VID_320F&PID_5000). 2023-04-17 01:26:49 +00:00
Adam Honse f907b2f5c5 Initial Cryorig H7 Quad Lumi control 2023-04-16 20:19:52 +00:00
Chris M 2e764ccfb0 Moved Razer Blade 14 2022 to KLM layout 2023-04-15 13:29:07 +10:00
Chris M 6aaba9fd2d Moved Razer Blade 14 2021 to KLM layout
* Changed name of the razer_book_2020_layout as the mapping appears to
be common.
2023-04-15 10:18:23 +10:00
Chris M 87971cce6f Moved Razer Book 13 2020 to KLM layout 2023-04-14 17:12:52 +10:00
Chris M 5f43ec303a Moved Blackwidow V3 Mini to KLM layout 2023-04-13 20:45:42 +10:00
Chris M db5d9b4e4d Moved Blackwidow V3 TKL to KLM layout 2023-04-13 10:05:48 +10:00
Manatsawin Hanmongkolchai f2132d79c5 Add Palit 1080 controller 2023-04-12 17:50:15 +00:00
Chris M d012173ebe Moved Blackwidow Chroma TE to KLM layout 2023-04-12 07:32:52 +10:00
Chris M e4b9b8fce4 Moved Blackwidow Chroma to KLM layout 2023-04-12 07:06:46 +10:00
Chris M c7b417ed8a Moved Blackwidow Chroma V2 to KLM layout 2023-04-10 13:53:09 +10:00
Chris 2cc0c7aad8 Added more detail to Windows compiling instructions
* Detailed the QT version to avoid confusion when building prior to a shift to QT6
* Added links to download MSVC, QT and Git
* Added a link to wiki article to provide more detailed instructions
2023-04-07 21:42:15 +10:00
killerart 6f7c981d60 added MSI Pro B650-P WiFi 7D78 support 2023-04-06 19:20:38 +03:00
Chris M 2cfa73518b Fixed vector index crash in KeyboardLayoutManager
* Fixed crash when swapping key into the beginning of keymap vector
2023-04-05 23:17:19 +10:00
Chris M 1981e70830 Standardise KeyboardLayoutManager interface with Opcodes
* Added new KEYBOARD_OPCODE enum
* Updated `keyboard_leds` to include new opcode
* Reorganised InsertKeys and SwapKeys to work with struct change
* Changed public interfaces to only accept opcode changes
* Updated static keyboard declarations to align with new structures
2023-04-04 09:21:32 +10:00
Chris cb447e3391 Correcting Razer Blackwidow X TE layout
* As per the changes in 2bfa6e87 to the KLM changes made in 9cd278c3 need to be reverted to correct the layout.
2023-04-03 12:55:52 +10:00
Adam Honse 0572238e95 Remove empty_basemap as vector already starts empty 2023-04-02 20:07:16 -05:00
Adam Honse 28333888fd Move KeyboardLayoutManager to a new folder 2023-04-02 19:48:26 -05:00
Adam Honse 52e95355e2 Clean up RemoveKeys and add a remove list to the key overlay 2023-04-02 18:57:08 -05:00
Adam Honse 2bfa6e8797 Change Keyboard Layout Manager to build base map from zones, use a bitmask to define sizes as combinations of zones
* Rework Insert and Swap functions to use index-based loops
 * Insert shifts all keys after the inserted key in the same row to the right
 * Swap inserts without shifting when swapping a key into an unused space
2023-04-02 19:07:59 +00:00
Adam Honse 5f8ff8a659 Replace razer_empty_layout with NULL pointer for unimplemented KLM layouts 2023-04-02 14:05:06 -05:00
Adam Honse 16e76e8170 Fix crashing in RazerController when a keyboard has more than one matrix zone 2023-04-02 03:42:46 -05:00
flora 240414e12b More logic on RGB HSV tab order 2023-04-01 19:51:58 +02:00
Chris 3445991be6 Following on from commit 2e02f1d7 to remove redundant QM files
* Excluding .qm files from Windows build as they are inbuilt as of a7adfe251
2023-04-01 22:13:13 +11:00
Mola19 034a991076 fix detection and modes for Asus ROG Strix Impact 2023-03-31 03:12:05 +00:00
Adam Honse 0adfa7ea87 Restrict segment editing to all linear zones only if device is an LED Strip type 2023-03-29 21:43:37 -05:00
Manuel Dewald c3c7c1fcbf Add detection for AORUS Waterforce 2080 super 2023-03-30 02:38:01 +00:00
flora 8ea1b815e5 Support for MSI GeForce RTX 3050 Gaming X 8G 2023-03-30 02:35:40 +00:00
flora 5f87458405 Support for ASUS ROG STRIX RTX 4090 24G GAMING 2023-03-29 15:54:41 +02:00
Mola19 83a53482a5 optimize Asus ROG Claymore version fetching (resolves #3258) 2023-03-28 13:00:35 +00:00
Igor.Lovchikov 830bf69c7f added PALIT_RTX3090_GAMEROCK_SUB_DEV 2023-03-26 09:37:27 +03:00
Adam Honse cf46a8e724 Update Patriot Viper Steel detection and clean up Patriot Viper detection 2023-03-25 15:28:29 -05:00
Chris 71a3d5355b Minor changes to the KeyboardLayoutManager to cleanse log messaging
* Added KLM_CLASS_NAME for log entry consistency
* Small edits to messaging for clarity & replayability
* Minor style corrections
2023-03-25 08:04:30 +11:00
Chris 56bad3f2b4 Moved Razer Blade 15 2022 to KLM layout
* Removed `blade_15_2022_keymap`
* Added `razer_blade_15_2022_layout`
* Adjusted metadata to reflect change.
2023-03-25 00:04:47 +11:00
Sentox6 40fa598b2e Add basic support for Gigabyte RTX 4080 Eagle OC 2023-03-24 02:09:16 +00:00
Chris M 6091dc799c Initial commit for Razer Deathstalker V2 Pro to resolve #3106
+ Added PID entry for the Deathstalker V2 Pro
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
2023-03-23 12:00:10 +11:00
Mola19 76e7bd4d1f support for Mouse Dock of the Asus ROG Spatha X 2023-03-23 00:02:27 +01:00
morg 9f8e33b1e8 Adds segments support for all LINEAR zones 2023-03-22 14:39:27 +01:00
Derek Huber 2ab7013faa HyperX Alloy Origins 65 Initial Commit 2023-03-20 13:37:27 +00:00
Flora Aubry 73bba038c5 Added table of content to the readme 2023-03-20 09:08:55 +00:00
Алексей Куликов 6d9e4a86a2 Add support RGB keyboard for Lenovo IdeaPad3 2023-03-19 20:44:36 +00:00
Kamil c0102422e1 Add link to OpenRGB Ambient Pluigin 2023-03-19 18:05:46 +00:00
Chris 406c83b300 Initial commit for Razer Deathstalker V2
+ Added PID for the Deathstalker V2
+ Registered detectors
+ Added layout and metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
+ Resolves #2904
2023-03-19 18:04:43 +00:00
Chris 9cd278c3e3 Correcting new Razer keyboard layouts
* Fixed Blackwidow X Chroma TE layout
* Fixed Blackwidow layout
2023-03-19 20:08:20 +11:00
サイバーキラー 1f9948b4c2 added detection for signal aboutToQuit when system shutdown 2023-03-18 22:44:13 +00:00
morg a4130ba373 UI: add a dialog that shows local hardware IDs 2023-03-17 15:59:52 +00:00
Chris 482e8bf3e2 Small fix to correct the PU values for Glorious Model O Wireless
* Correcting both the HID_USAGE and non HID_USAGE values per @Kasper24's log
* Adding small fix for potential memeory leak
2023-03-18 00:11:02 +11:00
Bit Whisperer 6b6f75612f Add Support for Razer Blade 15" 2022 (Part 2) 2023-03-17 13:08:52 +00:00
Bit Whisperer 2925af9f31 Add Support for Razer Blade 15" 2022 2023-03-17 00:10:47 +00:00
Mola19 7ca21eafff support for Asus ROG Spatha X and fixes for Asus Chakram X 2023-03-16 00:05:54 +01:00
Chris M 27442475b1 Initial commit for Razer Blade Late 2021 Advanced to resolve #2520
+ Adding PID for the Blade 15 Late 2021 Advanced
+ Registered detectors
+ Added metadata to RazerDevices.cpp
+ Added capabilities to RazerController.cpp
2023-03-16 08:44:13 +11:00
Chris M 35453db3e0 Initial commit for the Keyboard Layout Manager
* Implements physical size:
    Full Size
    TKL
    60%
* Implements regional layouts
    ANSI QWERTY
    ISO QWERTY
    QWERTZ
    AZERTY
    JIS
* Customisible layouts produced by adding and swapping custom keys
allowing for keyboard SKU variants
* Exportable matrix maps filled by map count, matrix index or filled by an
array of values.
* Matrix map size adjustable to fixed width and height to support size
specific protocols. e.g. Razer
* Debug keyboards are customisable by adding the following values into
the JSON list.
    "Layout" (int),
    "Size" (int),
    "Linear" (bool),
    "Underglow" (bool),
    "Insert" array[ { "Zone" (int), "Row" (int), "Col" (int), "Val"
(int), "Name": (string) } ],
    "Swap" array[ { "Zone" (int), "Row" (int), "Col" (int), "Val" (int),
"Name": (string) } ]
2023-03-15 21:34:08 +00:00
Artem 269ebeddb4 Fix building with GCC 13 2023-03-15 20:34:35 +00:00
morg f579b1cd15 Add support for Hyperx duocast 2023-03-15 17:37:55 +00:00
flora bf51d4d82b Support for Rog Strix 6900XT LC 2023-03-15 08:02:59 +01:00
Chris baf5d30b27 Initial commit for the Corsair M55 mouse
* Added config to CorsairPeripheralV2Devices
* Adding device config to CorsairPeripheralV2Devices.cpp
* Extending the base CorsairPeripheralV2Controller to CorsairPeripheralV2HWController to account for HW modes
* Minor adjustments to the CorsairPeripheralV2SWController to accommodate
* Resolves #1951
2023-03-15 06:19:38 +11:00
thombo 549a631541 Support for MSI board 7D89 added 2023-03-14 17:36:33 +00:00
Chris 8f54583711 Initial commit for the Corsair Ironclaw Wireless Mouse to resolve #1421
+ Adding Ironclaw Wireless and Wired PIDs to CorsairPeripheralV2Devices.h
+ Adding device layout
+ Registering detector
2023-03-13 12:07:49 +11:00
Alexander Babayants 7fdabcad92 Add Palit RTX 3080 GamingPro 12G GPU 2023-03-12 12:59:03 +00:00
Morgan Guimard daaee0f921 Add support for Asus TUF RTX4080 O16G GAMING 2023-03-12 01:25:56 +00:00
Cooper Hall 45be4329c5 Fixed some warnings 2023-03-11 23:25:26 +00:00
flora b0b20b9f06 Support for tuf 3060ti gddr6 2023-03-09 11:08:09 +01:00
Mola19 6360457211 support for Asus ROG Strix XG279Q to resolve #3137 2023-03-08 22:29:22 +01:00
flora 17d6a65429 Added support for 4090 FE variant 2023-03-07 19:24:51 +00:00
Nexrem 2575c6adf4 Rework TUF WMI Laptop, implementing additional brightness and persistent saving 2023-03-06 22:39:48 +00:00
Flora Aubry 36ebdbec2c Added missing mode_flags to EVision controller, added GMMK TKL detection 2023-03-06 16:25:53 +00:00
DarioB92 3136b7c12c Added Sapphire Nitro+ RX 6750 XT support 2023-03-06 15:17:53 +00:00
flora 4aa4bd3a42 Added led amount condition for toggleledview 2023-03-06 14:56:47 +01:00
flora a084fad82d Added Rog Strix 4080 non oc 2023-03-05 22:28:46 +00:00
flora 35f8291c3d Support for GB 3080 eagle oc 2023-03-05 15:46:20 +01:00
flora dbe9553df8 Support for 3060 gaming Z 2023-03-04 07:28:44 +01:00
Adam Honse ff8ac680ad Replace most instances of sprintf() with snprintf() 2023-03-02 00:15:03 -06:00
Flora Aubry c02d401b1d Fixed detection for Dualsense 2023-03-01 18:06:00 +00:00
Riley Nielsen a4f86032a5 Add support for Gigabyte X470 AORUS GAMING 5 WIFI 2023-03-01 02:19:50 +00:00
Chris 4b29b56029 Fixes passing 0 to --brightness CLI parameter 2023-02-28 21:53:30 +11:00
thombo c1e745fa4d Support for MSI board 7D70 added, config of 7D86 corrected 2023-02-27 21:07:55 +01:00
Devin Wendt de43a02a1b Add support for TP-Link's Kasa Smart light bulbs 2023-02-26 04:59:04 +00:00
Nexrem b1f2231bc7 Implement full protocol support for SapphireNitroGlowV1 2023-02-24 01:35:30 +00:00
Adam Honse ddb7b141a3 Improve ENE config table decoding 2023-02-20 00:21:42 +00:00
thombo 907c64017b Support for MSI boards 7D73, 7D86 and B926 added 2023-02-19 23:56:28 +00:00
Chris 2ab731598e Adding Palit RTX 3080 Gamerock OC 10G GPU
* Added SubDev ID to pci_ids.h
* Registered detectors for both LHR and non LHR versions in `PNYGPUControllerDetect.cpp`
* Link to [webpage](https://www.palit.com/palit/vgapro.php?id=3779)
* Resolves #2948
2023-02-20 10:16:17 +11:00
Morgan Guimard a0422d7ea5 add support for Asus ROG STRIX RTX3080 GUNDAM EDITION 2023-02-15 22:29:17 +00:00
Chris f8fe2ff7f8 Updating Debian version to conform with expected numbering for upgrades
* Moving Debian changelog and Fedora specfile to input files and dynmaically updating versioning from OpenRGB.pro
* Resolves #2919
* Related #2666
2023-02-15 02:58:33 +00:00
Wojciech Łazarski 643e51e71b Fix SetupZones where on devices with more than one zone in ENESMBus 2023-02-14 01:23:55 +00:00
FlaminRage 04ebe3e702 Adds basic support for Gigabyte GeForce RTX 4090 GAMING OC 24G - resolves #2813 2023-02-11 21:25:54 +00:00
Chris f782c92faf Adding missing matrix type for Razer BlackWidow X Chroma TE
* Keyboard resposiveness was relying on memalloc initialising `matrix_type` with known value.
* Also adding log warning to default case for troubleshooting purposes.
2023-02-08 22:30:28 +11:00
ronny332 1e89f652cc ENE SMBus Controller AUMA0-E6K5-1110 detection. 2023-02-07 17:33:48 +00:00
Morgan Guimard 4879ae9bbe Add support for iGame GeForce RTX 3060 Ti Ultra W OC LHR-V 2023-02-05 22:28:45 +00:00
ronny332 cbf5fe90f6 Detection: ASUS ROG Strix 4080 OC. 2023-02-05 22:25:31 +00:00
ronny332 5ae3997e73 Fix: ViewSonic XG270QG profile save crash. 2023-02-05 21:26:28 +01:00
Wojciech Łazarski 8687bc23b3 Refactor of Everest keyboard 2023-02-04 13:21:58 -06:00
LucasStf 961aad8650 Added the RTX 3060 Aorus Elite 12Go Rev a1 2023-02-04 13:21:52 -06:00
Chris fed086e0c2 Adding Metadata to Viewsonic controller
+ Includes code cleanup
+ Removed redundant function
2023-02-04 10:14:25 +11:00
Wojciech Łazarski 0b78d81c4e Add MSI RTX4070Ti Suprim X support - resolves #3118 2023-02-02 17:59:47 +00:00
Vid Čufar bbbf93beae Add support for Manli GeForce RTX 3080 Ti Gallardo 2023-02-01 17:09:32 +00:00
Codename-Antares 99f7645d9a initial Support for the Gigabyte 3060Ti Gaming OC V1.0 2023-02-01 14:57:40 +00:00
Chris 847b10bda9 Initial commit for Razer Blade 14 2022 to resolve #3067
+ Adding entry for the Blade 14 2022 PID
+ Registered detectors
+ Added metadata to RazerDevices.h
+ Added capabilities to RazerController.cpp
+ Adding QWERTZ layout to Blade 12 2022 mapping
+ Adding missing DE key names to RGBControllerKeyNames and
DeviceView.cpp
2023-02-01 22:51:09 +11:00
TheRogueZeta 7825734f07 Initial commit for ASUS TUF RTX 4070Ti O12G device ID 2023-02-01 07:09:50 +00:00
1202 changed files with 77010 additions and 34640 deletions
+2 -1
View File
@@ -6,6 +6,8 @@ OpenRGB
openrgb
OpenRGB-x86_64.AppImage
60-openrgb.rules
debian/changelog
fedora/OpenRGB.spec
# Directories
.build/
@@ -116,4 +118,3 @@ compile_commands.json
# Generated i18n files
*.qm
+15 -3
View File
@@ -61,7 +61,7 @@ before_script:
#-----------------------------------------------------------------------#
"Linux 32 AppImage":
<<: *ccache_init
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-32
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-32
stage: build
script:
- export $(dpkg-architecture)
@@ -87,7 +87,7 @@ before_script:
#-----------------------------------------------------------------------#
"Linux 64 AppImage":
<<: *ccache_init
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-64
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-64
stage: build
script:
- export $(dpkg-architecture)
@@ -109,6 +109,7 @@ before_script:
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:buster-32
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage --target-arch i386 -us -B
- rm -v ../openrgb-dbgsym*.*deb
@@ -137,6 +138,7 @@ before_script:
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:buster-64
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.*deb
@@ -165,6 +167,7 @@ before_script:
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-32
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage --target-arch i386 -us -B
- rm -v ../openrgb-dbgsym*.*deb
@@ -193,6 +196,7 @@ before_script:
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-64
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.*deb
@@ -221,6 +225,7 @@ before_script:
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-32
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage --target-arch i386 -us -B
- rm -v ../openrgb-dbgsym*.deb
@@ -249,6 +254,7 @@ before_script:
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-64
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.deb
@@ -278,6 +284,7 @@ before_script:
script:
- dnf install rpmdevtools dnf-plugins-core -y
- rpmdev-setuptree
- ./scripts/build-package-files.sh fedora/OpenRGB.spec
- ls /root/
- cp fedora/OpenRGB.spec /root/rpmbuild/SPECS
- cp ../OpenRGB /root/rpmbuild/SOURCES/ -r
@@ -310,8 +317,9 @@ before_script:
image: fedora:36
stage: build
script:
- dnf install rpmdevtools dnf-plugins-core libcurl-devel -y
- dnf install rpmdevtools dnf-plugins-core libcurl-devel qt5-qtbase-devel -y
- rpmdev-setuptree
- ./scripts/build-package-files.sh fedora/OpenRGB.spec
- ls /root/
- cp fedora/OpenRGB.spec /root/rpmbuild/SPECS
- cp ../OpenRGB /root/rpmbuild/SOURCES/ -r
@@ -562,6 +570,8 @@ before_script:
name: "${CI_PROJECT_NAME}_Windows_32_${CI_COMMIT_SHORT_SHA}"
paths:
- 'OpenRGB Windows 32-bit'
exclude:
- 'OpenRGB Windows 32-bit\*.qm'
expire_in: 30 days
rules:
@@ -638,6 +648,8 @@ before_script:
name: "${CI_PROJECT_NAME}_Windows_64_${CI_COMMIT_SHORT_SHA}"
paths:
- 'OpenRGB Windows 64-bit'
exclude:
- 'OpenRGB Windows 64-bit\*.qm'
expire_in: 30 days
#-----------------------------------------------------------------------#
-1
View File
@@ -74,7 +74,6 @@ CODEOWNERS @Calcprogrammer1
/Controllers/NZXTHue2Controller/
/Controllers/NZXTHuePlusController/
/Controllers/NZXTKrakenController/
/Controllers/OpenRazerController/
/Controllers/PNYGPUController/
/Controllers/PatriotViperController/
/Controllers/PhilipsHueController/
@@ -10,6 +10,7 @@ Please put "Initial commit for" name of the product, including manufacturer abov
<!-- For admin purposes: Please leave this section as is -->
# Checklist for Accepting a Merge Request for a New Device
- [ ] The source branch of the merge request is not protected (`master` is protected by default when creating a fork, so it is recommended to not use it as your source).
- [ ] The `New Device` issue raised for this device is linked to this MR with a keyword `Closes / Resolves / Implements`
- [ ] There is a device protocol page in the [Developer Wiki](https://gitlab.com/OpenRGBDevelopers/OpenRGB-Wiki) or there is enough information / captures in the `New Device` issue to provide ongoing support.
- [ ] The code to be merged follows the style guide and change requirements as [documented in the contributing guide](https://gitlab.com/CalcProgrammer1/OpenRGB/-/blob/master/CONTRIBUTING.md).
+11 -8
View File
@@ -1,17 +1,20 @@
#include "AutoStart-FreeBSD.h"
#include "LogManager.h"
#include "filesystem.h"
/*---------------------------------------------------------*\
| AutoStart-FreeBSD.cpp |
| |
| Autostart implementation for FreeBSD |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <fstream>
#include <iostream>
#include <limits.h>
#include <unistd.h>
#include <sstream>
/*-----------------------------------------------------*\
| FreeBSD AutoStart Implementation |
| Public Methods |
\*-----------------------------------------------------*/
#include "AutoStart-FreeBSD.h"
#include "LogManager.h"
#include "filesystem.h"
AutoStart::AutoStart(std::string name)
{
+9
View File
@@ -1,3 +1,12 @@
/*---------------------------------------------------------*\
| AutoStart-FreeBSD.h |
| |
| Autostart implementation for FreeBSD |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
+15 -11
View File
@@ -1,16 +1,20 @@
#include "AutoStart-Linux.h"
#include "LogManager.h"
#include "filesystem.h"
/*---------------------------------------------------------*\
| AutoStart-Linux.cpp |
| |
| Autostart implementation for Linux |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <fstream>
#include <iostream>
#include <sstream>
#include <unistd.h>
#include <linux/limits.h>
/*-----------------------------------------------------*\
| Linux AutoStart Implementation |
| Public Methods |
\*-----------------------------------------------------*/
#include "AutoStart-Linux.h"
#include "LogManager.h"
#include "filesystem.h"
AutoStart::AutoStart(std::string name)
{
@@ -121,7 +125,7 @@ std::string AutoStart::GetExePath()
char exepath[ PATH_MAX ];
ssize_t count = readlink("/proc/self/exe", exepath, PATH_MAX);
return(std::string(exepath, (count > 0) ? count : 0));
}
@@ -158,7 +162,7 @@ std::string AutoStart::GenerateDesktopFile(AutoStartInfo autostart_info)
}
fileContents << std::endl;
return(fileContents.str());
}
@@ -197,7 +201,7 @@ void AutoStart::InitAutoStart(std::string name)
std::error_code ec;
bool success = true;
if(!filesystem::exists(autostart_dir))
{
success = filesystem::create_directories(autostart_dir, ec);
+9
View File
@@ -1,3 +1,12 @@
/*---------------------------------------------------------*\
| AutoStart-Linux.h |
| |
| Autostart implementation for Linux |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
+15 -13
View File
@@ -1,18 +1,20 @@
#include "AutoStart-MacOS.h"
#include "LogManager.h"
#include "filesystem.h"
/*---------------------------------------------------------*\
| AutoStart-MacOS.cpp |
| |
| Autostart implementation for MacOS |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <fstream>
#include <sstream>
#include <iostream>
#include <unistd.h>
#include <mach-o/dyld.h>
/*-----------------------------------------------------*\
| MacOS AutoStart Implementation |
| Public Methods |
\*-----------------------------------------------------*/
#include "AutoStart-MacOS.h"
#include "LogManager.h"
#include "filesystem.h"
AutoStart::AutoStart(std::string name)
{
@@ -152,7 +154,7 @@ std::string AutoStart::GenerateLaunchAgentFile(AutoStartInfo autostart_info)
fileContents << " <key>ProgramArguments</key>" << std::endl;
fileContents << " <array>" << std::endl;
fileContents << " <string>" << autostart_info.path << "</string>" << std::endl;
if(autostart_info.args != "")
{
std::istringstream arg_parser(autostart_info.args);
@@ -163,12 +165,12 @@ std::string AutoStart::GenerateLaunchAgentFile(AutoStartInfo autostart_info)
fileContents << " <string>" << arg << "</string>" << std::endl;
}
}
fileContents << " </array>" << std::endl;
fileContents << " <key>RunAtLoad</key><true/>" << std::endl;
fileContents << "</dict>" << std::endl;
fileContents << "</plist>" << std::endl;
return(fileContents.str());
}
@@ -193,7 +195,7 @@ void AutoStart::InitAutoStart(std::string name)
std::error_code ec;
bool success = true;
if(!filesystem::exists(autostart_dir))
{
success = filesystem::create_directories(autostart_dir, ec);
+9
View File
@@ -1,3 +1,12 @@
/*---------------------------------------------------------*\
| AutoStart-MacOS.h |
| |
| Autostart implementation for MacOS |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
+19 -17
View File
@@ -1,17 +1,19 @@
#include "AutoStart-Windows.h"
#include "LogManager.h"
#include "filesystem.h"
/*---------------------------------------------------------*\
| AutoStart-Windows.cpp |
| |
| Autostart implementation for Windows |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <fstream>
#include <iostream>
#include "windows.h"
#include <shlobj.h>
/*-----------------------------------------------------*\
| Windows AutoStart Implementation |
| Public Methods |
\*-----------------------------------------------------*/
#include "AutoStart-Windows.h"
#include "LogManager.h"
#include "filesystem.h"
#include "windows.h"
AutoStart::AutoStart(std::string name)
{
@@ -41,7 +43,7 @@ bool AutoStart::DisableAutoStart()
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
if(!success)
{
LOG_ERROR("An error occurred removing the auto start file.");
@@ -97,11 +99,11 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
shellLink->SetArguments(argumentsw.c_str());
shellLink->SetDescription(descriptionw.c_str());
shellLink->SetIconLocation(iconw.c_str(), 0);
IPersistFile* persistFile;
result = shellLink->QueryInterface(IID_IPersistFile, (void**)&persistFile);
if(SUCCEEDED(result))
{
result = persistFile->Save(startupfilepathw.c_str(), TRUE);
@@ -151,7 +153,7 @@ std::string AutoStart::GetExePath()
char exepath[MAX_PATH] = "";
DWORD count = GetModuleFileNameA(NULL, exepath, MAX_PATH);
return(std::string(exepath, (count > 0) ? count : 0));
}
@@ -197,8 +199,8 @@ std::wstring AutoStart::utf8_decode(const std::string& str)
int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int) str.size(), nullptr, 0);
std::wstring wstrTo(size_needed, 0);
MultiByteToWideChar(CP_UTF8, 0, &str[0], (int) str.size(), &wstrTo[0], size_needed);
return(wstrTo);
}
+9
View File
@@ -1,3 +1,12 @@
/*---------------------------------------------------------*\
| AutoStart-Windows.h |
| |
| Autostart implementation for Windows |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
+9 -5
View File
@@ -1,9 +1,13 @@
#include "AutoStart.h"
/*---------------------------------------------------------*\
| AutoStart.cpp |
| |
| Autostart common implementation |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
/*-----------------------------------------------------*\
| Common AutoStart Implementation |
| Public Methods |
\*-----------------------------------------------------*/
#include "AutoStart.h"
std::string AutoStartInterface::GetAutoStartFile()
{
+9
View File
@@ -1,3 +1,12 @@
/*---------------------------------------------------------*\
| AutoStart.h |
| |
| Autostart common implementation |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
+1
View File
@@ -11,6 +11,7 @@ To create a merge request, log into GitLab and fork the OpenRGB project. Push y
* Mark your merge request as a draft (start title with "Draft:") until it has been tested and verified working.
* Follow the Style Guidelines below when making your code changes.
* Avoid using `git merge` when updating your fork. The OpenRGB project uses a linear git history, meaning all changes are rebased onto the tip of master. By using `git rebase` to update your fork, you will make it easier to accept merge requests.
* Do not submit a merge request using your fork's `master` branch as the source. The `master` branch is protected by default when creating a fork and I cannot manually rebase a protected branch before merging. If you submit a merge request with a protected `master` branch as the source, it may not get merged until you unprotect it.
### Pipelines, Shared Runners and Quotas
+9
View File
@@ -1,3 +1,12 @@
/*---------------------------------------------------------*\
| Colors.h |
| |
| List of named color constants |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#ifndef COLORS_H
#define COLORS_H
@@ -1,15 +1,27 @@
/*---------------------------------------------------------*\
| A4TechDetector.cpp |
| |
| Detector for A4Tech Devices |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
/*-----------------------------------------------------*\
| OpenRGB includes |
\*-----------------------------------------------------*/
#include <hidapi/hidapi.h>
#include "Detector.h"
#include "LogManager.h"
#include "RGBController.h"
/*-----------------------------------------------------*\
| A4 Tech specific includes |
\*-----------------------------------------------------*/
#include "RGBController_BloodyMouse.h"
#include "RGBController_BloodyB820R.h"
/*-----------------------------------------------------*\
| A4 Tech USB vendor ID |
@@ -30,5 +42,21 @@ void DetectA4TechMouseControllers(hid_device_info* info, const std::string& name
}
}
void DetectBloodyB820R(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
BloodyB820RController* controller = new BloodyB820RController(dev, info->path);
RGBController_BloodyB820R* rgb_controller = new RGBController_BloodyB820R(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
REGISTER_HID_DETECTOR_IPU("Bloody W60 Pro", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_W60_PRO_PID, 2, 0xFF33, 0x0529);
REGISTER_HID_DETECTOR_IPU("Bloody W90 Max", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_W90_MAX_PID, 2, 0xFF33, 0x053D);
REGISTER_HID_DETECTOR_IPU("Bloody MP 50RS", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_MP_50RS_PID, 2, 0xFFF2, 0x6009);
REGISTER_HID_DETECTOR_IPU("A4Tech Bloody B820R", DetectBloodyB820R, A4_TECH_VID, BLOODY_B820R_PID, 2, 0xFF52, 0x0210);
@@ -0,0 +1,102 @@
/*---------------------------------------------------------*\
| BloodyB820RController.cpp |
| |
| Driver for A4Tech Bloody B820R Keyboard |
| |
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "BloodyB820RController.h"
/*-------------------------------------------------------------------------------------*\
| The controller for this device should pass a packet of 64 bytes where the subsequent |
| two packets are for RED, GREEN, and BLUE respectively. The first 6 bytes are control |
| or information bytes and colors bytes starts from index 6. Moreover, the first pack- |
| et of each RGB contains color for 58 keys and the rest (104 - 58 == 46) are send on |
| the second packet. |
\*-------------------------------------------------------------------------------------*/
BloodyB820RController::BloodyB820RController(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
location = path;
SendControlPacket(BLOODY_B820R_GAIN_CONTROL);
}
BloodyB820RController::~BloodyB820RController()
{
SendControlPacket(BLOODY_B820R_RELEASE_CONTROL);
hid_close(dev);
}
std::string BloodyB820RController::GetSerial()
{
const int szTemp = HID_MAX_STR;
wchar_t tmpName[szTemp];
hid_get_serial_number_string(dev, tmpName, szTemp);
std::wstring wName = std::wstring(tmpName);
std::string serial = std::string(wName.begin(), wName.end());
return(serial);
}
std::string BloodyB820RController::GetLocation()
{
return("HID: " + location);
}
void BloodyB820RController::SendControlPacket(uint8_t data)
{
uint8_t buffer[BLOODY_B820R_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 };
hid_send_feature_report(dev, buffer, BLOODY_B820R_PACKET_SIZE);
buffer[BLOODY_B820R_MODE_BYTE] = 0;
buffer[BLOODY_B820R_DATA_BYTE] = data;
hid_send_feature_report(dev, buffer, BLOODY_B820R_PACKET_SIZE);
}
void BloodyB820RController::SetLEDDirect(std::vector<RGBColor> colors)
{
uint8_t r1_buffer[BLOODY_B820R_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x07, 0x00, 0x00 };
uint8_t r2_buffer[BLOODY_B820R_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x08, 0x00, 0x00 };
uint8_t g1_buffer[BLOODY_B820R_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x09, 0x00, 0x00 };
uint8_t g2_buffer[BLOODY_B820R_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x0A, 0x00, 0x00 };
uint8_t b1_buffer[BLOODY_B820R_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x0B, 0x00, 0x00 };
uint8_t b2_buffer[BLOODY_B820R_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x0C, 0x00, 0x00 };
/*-----------------------------------------------------------------*\
| Set up Direct packet |
| packet_map is the index of the Key from full_matrix_map and |
| the value is the position in the direct packet buffer |
\*-----------------------------------------------------------------*/
for(size_t i = 0; i < colors.size(); i++)
{
RGBColor color = colors[i];
uint8_t offset = BLOODY_B820R_RGB_OFFSET;
uint8_t buffer_idx = offset + i % BLOODY_B820R_RGB_BUFFER_SIZE;
uint8_t* buffers[2][3] =
{
{r1_buffer, g1_buffer, b1_buffer},
{r2_buffer, g2_buffer, b2_buffer}
};
buffers[i >= BLOODY_B820R_RGB_BUFFER_SIZE][0][buffer_idx] = RGBGetRValue(color);
buffers[i >= BLOODY_B820R_RGB_BUFFER_SIZE][1][buffer_idx] = RGBGetGValue(color);
buffers[i >= BLOODY_B820R_RGB_BUFFER_SIZE][2][buffer_idx] = RGBGetBValue(color);
}
hid_send_feature_report(dev, r1_buffer, BLOODY_B820R_PACKET_SIZE);
hid_send_feature_report(dev, r2_buffer, BLOODY_B820R_PACKET_SIZE);
hid_send_feature_report(dev, g1_buffer, BLOODY_B820R_PACKET_SIZE);
hid_send_feature_report(dev, g2_buffer, BLOODY_B820R_PACKET_SIZE);
hid_send_feature_report(dev, b1_buffer, BLOODY_B820R_PACKET_SIZE);
hid_send_feature_report(dev, b2_buffer, BLOODY_B820R_PACKET_SIZE);
}
@@ -0,0 +1,53 @@
/*---------------------------------------------------------*\
| BloodyB820RController.h |
| |
| Driver for A4Tech Bloody B820R Keyboard |
| |
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "RGBController.h"
#define HID_MAX_STR 255
#define BLOODY_B820R_RGB_BUFFER_SIZE 58
#define BLOODY_B820R_RGB_OFFSET 6
#define BLOODY_B820R_PACKET_SIZE 64
#define BLOODY_B820R_KEYCOUNT 104
#define BLOODY_B820R_MODE_BYTE 3
#define BLOODY_B820R_DATA_BYTE 8
#define BLOODY_B820R_GAIN_CONTROL 0x01
#define BLOODY_B820R_RELEASE_CONTROL 0x00
/*---------------------------------------------------------*\
| Bloody B820R product ID |
\*---------------------------------------------------------*/
#define BLOODY_B820R_PID 0xFA10
enum
{
BLOODY_B820R_MODE_DIRECT = 0x01, // Direct LED control - Independently set LEDs in zone
};
class BloodyB820RController
{
public:
BloodyB820RController(hid_device* dev_handle, const char* path);
~BloodyB820RController();
std::string GetSerial();
std::string GetLocation();
void SetLEDDirect(std::vector<RGBColor> colors);
void SendControlPacket(uint8_t data);
private:
std::string location;
hid_device* dev;
};
@@ -0,0 +1,253 @@
/*---------------------------------------------------------*\
| RGBController_BloodyB820R.cpp |
| |
| RGBController for A4Tech Bloody B820R Keyboard |
| |
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBControllerKeyNames.h"
#include "RGBController_BloodyB820R.h"
//0xFFFFFFFF indicates an unused entry in matrix
#define NA 0xFFFFFFFF
static unsigned int matrix_map[6][21] =
{
{0, NA, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, NA, NA, NA, NA, 13, 14, 15},
{16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36},
{37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57},
{58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, NA, NA, NA, NA, 71, 72, 73, NA},
{74, NA, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, NA, NA, 86, NA, 87, 88, 89, 90},
{91, 92, 93, 94, NA, NA, NA, NA, NA, NA, 95, 96, 97, 98, 99, 100, 101, 102, NA, 103, NA},
};
static const char *led_names[] =
{
KEY_EN_ESCAPE, //00
KEY_EN_F1,
KEY_EN_F2,
KEY_EN_F3,
KEY_EN_F4,
KEY_EN_F5,
KEY_EN_F6,
KEY_EN_F7,
KEY_EN_F8,
KEY_EN_F9,
KEY_EN_F10,
KEY_EN_F11,
KEY_EN_F12,
KEY_EN_PRINT_SCREEN,
KEY_EN_SCROLL_LOCK,
KEY_EN_PAUSE_BREAK,
KEY_EN_BACK_TICK, //10
KEY_EN_1,
KEY_EN_2,
KEY_EN_3,
KEY_EN_4,
KEY_EN_5,
KEY_EN_6,
KEY_EN_7,
KEY_EN_8,
KEY_EN_9,
KEY_EN_0,
KEY_EN_MINUS,
KEY_EN_EQUALS,
KEY_EN_BACKSPACE,
KEY_EN_INSERT,
KEY_EN_HOME,
KEY_EN_PAGE_UP,
KEY_EN_NUMPAD_LOCK,
KEY_EN_NUMPAD_DIVIDE,
KEY_EN_NUMPAD_TIMES,
KEY_EN_NUMPAD_MINUS,
KEY_EN_TAB, //20
KEY_EN_Q,
KEY_EN_W,
KEY_EN_E,
KEY_EN_R,
KEY_EN_T,
KEY_EN_Y,
KEY_EN_U,
KEY_EN_I,
KEY_EN_O,
KEY_EN_P,
KEY_EN_LEFT_BRACKET,
KEY_EN_RIGHT_BRACKET,
KEY_EN_ANSI_BACK_SLASH,
KEY_EN_DELETE,
KEY_EN_END,
KEY_EN_PAGE_DOWN,
KEY_EN_NUMPAD_7,
KEY_EN_NUMPAD_8,
KEY_EN_NUMPAD_9,
KEY_EN_NUMPAD_PLUS,
KEY_EN_CAPS_LOCK, //30
KEY_EN_A,
KEY_EN_S,
KEY_EN_D,
KEY_EN_F,
KEY_EN_G,
KEY_EN_H,
KEY_EN_J,
KEY_EN_K,
KEY_EN_L,
KEY_EN_SEMICOLON,
KEY_EN_QUOTE,
KEY_EN_ANSI_ENTER,
KEY_EN_NUMPAD_4,
KEY_EN_NUMPAD_5,
KEY_EN_NUMPAD_6,
KEY_EN_LEFT_SHIFT, //40
KEY_EN_Z,
KEY_EN_X,
KEY_EN_C,
KEY_EN_V,
KEY_EN_B,
KEY_EN_N,
KEY_EN_M,
KEY_EN_COMMA,
KEY_EN_PERIOD,
KEY_EN_FORWARD_SLASH,
KEY_EN_RIGHT_SHIFT,
KEY_EN_UP_ARROW,
KEY_EN_NUMPAD_1,
KEY_EN_NUMPAD_2,
KEY_EN_NUMPAD_3,
KEY_EN_NUMPAD_ENTER,
KEY_EN_LEFT_CONTROL, //50
KEY_EN_LEFT_WINDOWS,
KEY_EN_LEFT_ALT,
KEY_EN_SPACE,
KEY_EN_RIGHT_ALT,
KEY_EN_RIGHT_FUNCTION,
KEY_EN_MENU,
KEY_EN_RIGHT_CONTROL,
KEY_EN_LEFT_ARROW,
KEY_EN_DOWN_ARROW,
KEY_EN_RIGHT_ARROW,
KEY_EN_NUMPAD_0,
KEY_EN_NUMPAD_PERIOD
};
/**------------------------------------------------------------------*\
@name A4Tech Bloody B820R
@category Keyboard
@type USB
@save :x:
@direct :white_check_mark:
@effects :x:
@detectors A4TechDetector
@comment The A4Tech Bloody B820R keyboard controller currently
supports the full size (ANSI layout).
\*-------------------------------------------------------------------*/
RGBController_BloodyB820R::RGBController_BloodyB820R(BloodyB820RController *controller_ptr)
{
controller = controller_ptr;
name = "Bloody B820R";
vendor = "A4Tech";
type = DEVICE_TYPE_KEYBOARD;
description = "A4Tech Bloody Keyboard";
serial = controller->GetSerial();
location = controller->GetLocation();
mode Direct;
Direct.name = "Direct";
Direct.value = BLOODY_B820R_MODE_DIRECT;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
SetupZones();
}
RGBController_BloodyB820R::~RGBController_BloodyB820R()
{
delete controller;
}
void RGBController_BloodyB820R::SetupZones()
{
/*-------------------------------------------------*\
| Create the Keyboard zone and add the matrix map |
\*-------------------------------------------------*/
zone KB_zone;
KB_zone.name = ZONE_EN_KEYBOARD;
KB_zone.type = ZONE_TYPE_MATRIX;
KB_zone.leds_min = BLOODY_B820R_KEYCOUNT;
KB_zone.leds_max = BLOODY_B820R_KEYCOUNT;
KB_zone.leds_count = BLOODY_B820R_KEYCOUNT;
KB_zone.matrix_map = new matrix_map_type;
KB_zone.matrix_map->height = 6;
KB_zone.matrix_map->width = 21;
KB_zone.matrix_map->map = (unsigned int *)&matrix_map;
zones.push_back(KB_zone);
/*-------------------------------------------------*\
| Clear any existing color/LED configuration |
\*-------------------------------------------------*/
leds.clear();
colors.clear();
/*---------------------------------------------------------*\
| Set up zones |
\*---------------------------------------------------------*/
for(unsigned int led_index = 0; led_index < BLOODY_B820R_KEYCOUNT; led_index++)
{
led new_led;
new_led.name = led_names[led_index];
new_led.value = led_index;
leds.push_back(new_led);
}
SetupColors();
}
void RGBController_BloodyB820R::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_BloodyB820R::DeviceUpdateLEDs()
{
controller->SetLEDDirect(colors);
}
void RGBController_BloodyB820R::UpdateZoneLEDs(int zone)
{
std::vector<RGBColor> colour;
for(size_t i = 0; i < zones[zone].leds_count; i++)
{
colour.push_back(zones[zone].colors[i]);
}
controller->SetLEDDirect(colour);
}
void RGBController_BloodyB820R::UpdateSingleLED(int led)
{
std::vector<RGBColor> colour;
colour.push_back(colors[led]);
controller->SetLEDDirect(colour);
}
void RGBController_BloodyB820R::DeviceUpdateMode()
{
/* This device does not support modes yet */
}
@@ -0,0 +1,35 @@
/*---------------------------------------------------------*\
| RGBController_BloodyB820R.h |
| |
| RGBController for A4Tech Bloody B820R Keyboard |
| |
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <vector>
#include "RGBController.h"
#include "BloodyB820RController.h"
class RGBController_BloodyB820R : public RGBController
{
public:
RGBController_BloodyB820R(BloodyB820RController* controller_ptr);
~RGBController_BloodyB820R();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
BloodyB820RController* controller;
};
@@ -1,13 +1,16 @@
/*---------------------------------------------------------------------*\
| BloodyMouseController.cpp |
| |
| Driver for BloodyMouse USB Controller |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| BloodyMouseController.cpp |
| |
| Driver for A4Tech Bloody Mouse |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "BloodyMouseController.h"
#include "LogManager.h"
BloodyMouseController::BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id)
{
@@ -25,7 +28,7 @@ BloodyMouseController::~BloodyMouseController()
uint16_t BloodyMouseController::GetPid()
{
return pid;
return(pid);
}
std::string BloodyMouseController::GetSerial()
@@ -44,7 +47,7 @@ std::string BloodyMouseController::GetSerial()
std::wstring w_tmp = std::wstring(tmp);
std::string serial = std::string(w_tmp.begin(), w_tmp.end());
return serial;
return(serial);
}
std::string BloodyMouseController::GetLocation()
@@ -52,7 +55,7 @@ std::string BloodyMouseController::GetLocation()
return("HID: " + location);
}
void BloodyMouseController::InitDevice()
void BloodyMouseController::InitDevice()
{
uint8_t buffer[BLOODYMOUSE_WRITE_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 };
@@ -64,7 +67,7 @@ void BloodyMouseController::InitDevice()
hid_send_feature_report(dev, buffer, BLOODYMOUSE_WRITE_PACKET_SIZE);
}
void BloodyMouseController::SetLedsDirect(std::vector<RGBColor> colors)
void BloodyMouseController::SetLedsDirect(std::vector<RGBColor> colors)
{
uint8_t buffer[BLOODYMOUSE_WRITE_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 };
@@ -1,30 +1,32 @@
/*---------------------------------------------------------------------*\
| BloodyMouseController.h |
| |
| Driver for BloodyMouse USB Controller |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| BloodyMouseController.h |
| |
| Driver for A4Tech Bloody Mouse |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "LogManager.h"
#include "RGBController.h"
#pragma once
/*-----------------------------------------------------*\
| Mouse product IDs |
\*-----------------------------------------------------*/
#define BLOODY_W60_PRO_PID 0x37EA
#define BLOODY_W90_MAX_PID 0x3666
/*-----------------------------------------------------*\
| Mousemat product IDs |
\*-----------------------------------------------------*/
#define BLOODY_MP_50RS_PID 0xFA60
#define HID_MAX_STR 255
#define HID_MAX_STR 255
#define BLOODYMOUSE_WRITE_PACKET_SIZE 64
#define BLOODYMOUSE_BRIGHTNESS_MIN 0
@@ -54,6 +56,7 @@ public:
std::string GetLocation();
void SetLedsDirect(std::vector<RGBColor> colors);
private:
uint16_t pid;
std::string location;
@@ -1,11 +1,13 @@
/*---------------------------------------------------------------------*\
| RGBController_BloodyMouse.cpp |
| |
| Driver for BloodyMouse USB Controller |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_BloodyMouse.cpp |
| |
| RGBController for A4Tech Bloody Mouse |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_BloodyMouse.h"
@@ -25,6 +27,19 @@ static const mouse_layout w60_pro
}
};
static const mouse_layout w90_max
{
{
"Scroll Wheel", { 14 }
},
{
"Logo", { 7 }
},
{
"Rear", { 13, 12, 11, 10, 9, 8, 6, 5, 4, 3, 2, 1, 0 }
}
};
static const mouse_layout mp_50rs
{
{
@@ -56,7 +71,6 @@ RGBController_BloodyMouse::RGBController_BloodyMouse(BloodyMouseController *cont
type = DEVICE_TYPE_MOUSE;
}
name = "BloodyMouse";
vendor = "Bloody";
description = "Controller compatible with the Bloody W60 Pro and MP 50RS";
serial = controller->GetSerial();
@@ -89,11 +103,15 @@ void RGBController_BloodyMouse::SetupZones()
| Select layout from PID |
\*-------------------------------------------------*/
mouse_layout layout;
switch(controller->GetPid())
{
case BLOODY_W60_PRO_PID:
layout = w60_pro;
break;
case BLOODY_W90_MAX_PID:
layout = w90_max;
break;
case BLOODY_MP_50RS_PID:
layout = mp_50rs;
break;
@@ -109,7 +127,7 @@ void RGBController_BloodyMouse::SetupZones()
zone new_zone;
new_zone.name = mz.name;
new_zone.leds_min = mz.zone_leds.size();
new_zone.leds_min = (unsigned int)mz.zone_leds.size();
new_zone.leds_max = new_zone.leds_min;
new_zone.leds_count = new_zone.leds_min;
new_zone.type = bool_single ? ZONE_TYPE_SINGLE : ZONE_TYPE_LINEAR;
@@ -1,15 +1,17 @@
/*---------------------------------------------------------------------*\
| RGBController_BloodyMouse.h |
| |
| Driver for BloodyMouse USB Controller |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_BloodyMouse.h |
| |
| RGBController for A4Tech Bloody Mouse |
| |
| Chris M (Dr_No) 30 Jun 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <vector>
#include "LogManager.h"
#include "RGBController.h"
#include "BloodyMouseController.h"
@@ -1,21 +1,23 @@
/*-----------------------------------------*\
| AMDWraithPrismController.h |
| |
| Driver for AMD Wraith Prism RGB lighting |
| controller |
| |
| Adam Honse (CalcProgrammer1) 12/6/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AMDWraithPrismController.cpp |
| |
| Driver for AMD Wraith Prism |
| |
| Adam Honse (CalcProgrammer1) 06 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "AMDWraithPrismController.h"
#include <cstring>
#include <stdio.h>
#include <stdlib.h>
#include "AMDWraithPrismController.h"
AMDWraithPrismController::AMDWraithPrismController(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
location = path;
dev = dev_handle;
location = path;
current_fan_mode = AMD_WRAITH_PRISM_FAN_LOGO_MODE_STATIC;
current_fan_speed = 0xFF;
@@ -1,19 +1,20 @@
/*-----------------------------------------*\
| AMDWraithPrismController.h |
| |
| Definitions and types for AMD Wraith |
| Prism lighting controller |
| |
| Adam Honse (CalcProgrammer1) 12/6/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AMDWraithPrismController.h |
| |
| Driver for AMD Wraith Prism |
| |
| Adam Honse (CalcProgrammer1) 06 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "RGBController.h"
#pragma once
#define AMD_WRAITH_PRISM_FAN_BRIGHTNESS_DEFAULT_MAX 0xFF
#define AMD_WRAITH_PRISM_FAN_BRIGHTNESS_CYCLE_MAX 0x7F
@@ -1,11 +1,29 @@
/*---------------------------------------------------------*\
| AMDWraithPrismControllerDetect.cpp |
| |
| Detector for AMD Wraith Prism |
| |
| Adam Honse (CalcProgrammer1) 06 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <hidapi/hidapi.h>
#include "Detector.h"
#include "AMDWraithPrismController.h"
#include "RGBController.h"
#include "RGBController_AMDWraithPrism.h"
#include <hidapi/hidapi.h>
#define AMD_WRAITH_PRISM_VID 0x2516
#define AMD_WRAITH_PRISM_PID 0x0051
/*---------------------------------------------------------*\
| AMD Wraith Prism vendor ID |
\*---------------------------------------------------------*/
#define AMD_WRAITH_PRISM_VID 0x2516
/*---------------------------------------------------------*\
| AMD Wraith Prism product ID |
\*---------------------------------------------------------*/
#define AMD_WRAITH_PRISM_PID 0x0051
/******************************************************************************************\
* *
@@ -1,11 +1,13 @@
/*-----------------------------------------*\
| RGBController_AMDWraithPrism.cpp |
| |
| Generic RGB Interface for AMD Wraith |
| Prism |
| |
| Adam Honse (CalcProgrammer1) 12/25/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_AMDWraithPrism.cpp |
| |
| RGBController for AMD Wraith Prism |
| |
| Adam Honse (CalcProgrammer1) 25 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AMDWraithPrism.h"
@@ -25,14 +27,14 @@
RGBController_AMDWraithPrism::RGBController_AMDWraithPrism(AMDWraithPrismController* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "AMD Wraith Prism";
vendor = "Cooler Master";
type = DEVICE_TYPE_COOLER;
description = "AMD Wraith Prism Device";
version = controller->GetFirmwareVersionString();
location = controller->GetLocationString();
name = "AMD Wraith Prism";
vendor = "Cooler Master";
type = DEVICE_TYPE_COOLER;
description = "AMD Wraith Prism Device";
version = controller->GetFirmwareVersionString();
location = controller->GetLocationString();
mode Direct;
Direct.name = "Direct";
@@ -138,8 +140,8 @@ void RGBController_AMDWraithPrism::SetupZones()
/*---------------------------------------------------------*\
| LED maps |
\*---------------------------------------------------------*/
const unsigned int logo_leds[1] = { 0x00 };
const unsigned int fan_leds[1] = { 0x01 };
const unsigned int logo_leds[1] = { 0x00 };
const unsigned int fan_leds[1] = { 0x01 };
const unsigned int ring_leds[14] = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x10, 0x0F,
0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09 };
@@ -179,24 +181,24 @@ void RGBController_AMDWraithPrism::SetupZones()
for(unsigned int led_idx = 0; led_idx < 1; led_idx++)
{
led logo_led;
logo_led.name = "Logo LED";
logo_led.value = logo_leds[led_idx];
logo_led.name = "Logo LED";
logo_led.value = logo_leds[led_idx];
leds.push_back(logo_led);
}
for(unsigned int led_idx = 0; led_idx < 1; led_idx++)
{
led fan_led;
fan_led.name = "Fan LED";
fan_led.value = fan_leds[led_idx];
fan_led.name = "Fan LED";
fan_led.value = fan_leds[led_idx];
leds.push_back(fan_led);
}
for(unsigned int led_idx = 0; led_idx < 14; led_idx++)
{
led ring_led;
ring_led.name = "Ring LED";
ring_led.value = ring_leds[led_idx];
ring_led.name = "Ring LED";
ring_led.value = ring_leds[led_idx];
leds.push_back(ring_led);
}
@@ -1,13 +1,16 @@
/*-----------------------------------------*\
| RGBController_AMDWraithPrism.h |
| |
| Generic RGB Interface for AMD Wraith |
| Prism |
| |
| Adam Honse (CalcProgrammer1) 12/25/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_AMDWraithPrism.h |
| |
| RGBController for AMD Wraith Prism |
| |
| Adam Honse (CalcProgrammer1) 25 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AMDWraithPrismController.h"
@@ -0,0 +1,212 @@
/*---------------------------------------------------------*\
| AOCKeyboardController.cpp |
| |
| Driver for AOC keyboard |
| |
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <chrono>
#include <cstring>
#include <thread>
#include "AOCKeyboardController.h"
using namespace std::chrono_literals;
AOCKeyboardController::AOCKeyboardController(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
location = path;
}
AOCKeyboardController::~AOCKeyboardController()
{
hid_close(dev);
}
std::string AOCKeyboardController::GetDeviceLocation()
{
return("HID " + location);
}
std::string AOCKeyboardController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
std::wstring return_wstring = serial_string;
std::string return_string(return_wstring.begin(), return_wstring.end());
return(return_string);
}
void AOCKeyboardController::SetLightingConfig
(
unsigned char mode,
unsigned char random,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
)
{
SendStartPacket();
std::this_thread::sleep_for(5ms);
SendLightingConfigPacket(mode, random, brightness, speed, direction, color_data);
std::this_thread::sleep_for(5ms);
SendEndPacket();
std::this_thread::sleep_for(10ms);
}
void AOCKeyboardController::SetCustom
(
RGBColor* color_data
)
{
SendStartPacket();
std::this_thread::sleep_for(5ms);
SendCustomPacket(color_data);
std::this_thread::sleep_for(5ms);
SendEndPacket();
std::this_thread::sleep_for(5ms);
}
/*-------------------------------------------------------------------------------------------------*\
| Private packet sending functions. |
\*-------------------------------------------------------------------------------------------------*/
void AOCKeyboardController::SendStartPacket()
{
unsigned char buf[64];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(buf, 0x00, sizeof(buf));
/*-----------------------------------------------------*\
| Set up start packet |
\*-----------------------------------------------------*/
buf[0x00] = 0x09;
buf[0x01] = 0x21;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, buf, sizeof(buf));
}
void AOCKeyboardController::SendEndPacket()
{
unsigned char buf[64];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(buf, 0x00, sizeof(buf));
/*-----------------------------------------------------*\
| Set up end packet |
\*-----------------------------------------------------*/
buf[0x00] = 0x09;
buf[0x01] = 0x22;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, buf, sizeof(buf));
}
void AOCKeyboardController::SendCustomPacket
(
RGBColor* color_data
)
{
unsigned char buf[361];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(buf, 0x00, sizeof(buf));
/*-----------------------------------------------------*\
| Set up custom lighting packet |
\*-----------------------------------------------------*/
buf[0x00] = 0x20;
/*-----------------------------------------------------*\
| Copy in color data |
\*-----------------------------------------------------*/
for(unsigned int color_idx = 0; color_idx < 120; color_idx++)
{
buf[color_idx + 1] = RGBGetRValue(color_data[color_idx]);
buf[color_idx + 121] = RGBGetGValue(color_data[color_idx]);
buf[color_idx + 241] = RGBGetBValue(color_data[color_idx]);
}
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_send_feature_report(dev, buf, sizeof(buf));
}
void AOCKeyboardController::SendLightingConfigPacket
(
unsigned char mode,
unsigned char random,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
)
{
unsigned char buf[117];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(buf, 0x00, sizeof(buf));
/*-----------------------------------------------------*\
| Set up lighting configuration packet |
\*-----------------------------------------------------*/
buf[0x00] = 0x14;
buf[0x01] = 0x01;
buf[0x06] = mode;
buf[0x07 + (9 * mode) + 0] = RGBGetRValue(color_data[0]);
buf[0x07 + (9 * mode) + 1] = RGBGetGValue(color_data[0]);
buf[0x07 + (9 * mode) + 2] = RGBGetBValue(color_data[0]);
buf[0x07 + (9 * mode) + 3] = random;
buf[0x07 + (9 * mode) + 4] = direction;
buf[0x07 + (9 * mode) + 5] = speed;
buf[0x07 + (9 * mode) + 6] = brightness;
unsigned short checksum = 0x4A9E;
for(unsigned int buf_idx = 0; buf_idx < 115; buf_idx++)
{
checksum += buf[buf_idx];
}
buf[115] = checksum & 0xFF;
buf[116] = checksum >> 8;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_send_feature_report(dev, buf, 117);
}
@@ -0,0 +1,109 @@
/*---------------------------------------------------------*\
| AOCKeyboardController.h |
| |
| Driver for AOC keyboard |
| |
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "RGBController.h"
/*-----------------------------------------*\
| AOC Keyboard Modes |
\*-----------------------------------------*/
enum
{
AOC_KEYBOARD_MODE_STATIC = 0x00, /* Static mode */
AOC_KEYBOARD_MODE_BREATHING = 0x01, /* Breathing mode */
AOC_KEYBOARD_MODE_REACT = 0x02, /* React mode */
AOC_KEYBOARD_MODE_RIPPLE = 0x04, /* Ripple mode */
AOC_KEYBOARD_MODE_RADAR = 0x05, /* Radar mode */
AOC_KEYBOARD_MODE_FIREWORKS = 0x06, /* Fireworks mode */
AOC_KEYBOARD_MODE_BLINK = 0x07, /* Blink mode */
AOC_KEYBOARD_MODE_WAVE = 0x08, /* Wave mode */
AOC_KEYBOARD_MODE_CUSTOM = 0x09, /* Custom mode */
AOC_KEYBOARD_MODE_CONCENTRIC_CIRCLES = 0x0A, /* Concentric Circles mode */
AOC_KEYBOARD_MODE_W_WAVE = 0x0B, /* W Wave mode */
};
enum
{
AOC_KEYBOARD_SPEED_SLOW = 0x03, /* Slowest speed */
AOC_KEYBOARD_SPEED_MEDIUM = 0x02, /* Medium speed */
AOC_KEYBOARD_SPEED_FAST = 0x01, /* Fastest speed */
};
enum
{
AOC_KEYBOARD_BRIGHTNESS_OFF = 0x00, /* Lowest brightness (off) */
AOC_KEYBOARD_BRIGHTNESS_LOW = 0x01, /* Low brightness */
AOC_KEYBOARD_BRIGHTNESS_MEDIUM = 0x02, /* Medium brightness */
AOC_KEYBOARD_BRIGHTNESS_HIGH = 0x03, /* Highest brightness */
};
enum
{
AOC_KEYBOARD_SINGLE_COLOR = 0x00, /* Single color mode */
AOC_KEYBOARD_RANDOM = 0x01, /* Random color mode */
};
enum
{
AOC_KEYBOARD_DIRECTION_CLOCKWISE = 0x00, /* Clockwise direction */
AOC_KEYBOARD_DIRECTION_COUNTERCLOCKWISE = 0x01, /* Counter-clockwise direction */
};
class AOCKeyboardController
{
public:
AOCKeyboardController(hid_device* dev_handle, const char* path);
~AOCKeyboardController();
std::string GetDeviceLocation();
std::string GetSerialString();
void SetLightingConfig
(
unsigned char mode,
unsigned char random,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
);
void SetCustom
(
RGBColor* color_data
);
private:
hid_device* dev;
std::string location;
void SendStartPacket();
void SendEndPacket();
void SendCustomPacket
(
RGBColor* color_data
);
void SendLightingConfigPacket
(
unsigned char mode,
unsigned char random,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
);
};
@@ -0,0 +1,47 @@
/*---------------------------------------------------------*\
| AOCKeyboardControllerDetect.cpp |
| |
| Detector for AOC keyboard |
| |
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AOCKeyboardController.h"
#include "RGBController.h"
#include "RGBController_AOCKeyboard.h"
/*-----------------------------------------------------*\
| AOC Keyboard IDs |
\*-----------------------------------------------------*/
#define AOC_VID 0x3938
#define AOC_GK500_PID 0x1178
#define AOC_GK500_PID_2 0x1229
/******************************************************************************************\
* *
* DetectAOCKeyboardControllers *
* *
* Tests the USB address to see if an AOC Keyboard controller exists there. *
* *
\******************************************************************************************/
void DetectAOCKeyboardControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
AOCKeyboardController* controller = new AOCKeyboardController(dev, info->path);
RGBController_AOCKeyboard* rgb_controller = new RGBController_AOCKeyboard(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
REGISTER_HID_DETECTOR_PU("AOC GK500", DetectAOCKeyboardControllers, AOC_VID, AOC_GK500_PID, 0xFF19, 0xFF19);
REGISTER_HID_DETECTOR_PU("AOC GK500", DetectAOCKeyboardControllers, AOC_VID, AOC_GK500_PID_2, 0xFF19, 0xFF19);
@@ -0,0 +1,371 @@
/*---------------------------------------------------------*\
| RGBController_AOCKeyboard.cpp |
| |
| RGBController for AOC keyboard |
| |
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AOCKeyboard.h"
#include "KeyboardLayoutManager.h"
/**--------------------------------------------------------------------*\
@name AOC Keyboard
@category Keyboard
@type USB
@save :x:
@direct :white_check_mark:
@effects :white_check_mark:
@detectors DetectAOCKeyboardControllers
@comment
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------------------*\
| AOC Keyboard KLM Layout |
\*---------------------------------------------------------------------*/
layout_values aoc_keyboard_offset_values =
{
{
/* ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 PRSC SCLK PSBK */
90, 92, 77, 63, 79, 94, 81, 96, 82, 83, 98, 40, 55, 85, 100, 104,
/* BKTK 1 2 3 4 5 6 7 8 9 0 - = BSPC INS HOME PGUP NLCK NP/ NP* NP- */
75, 76, 91, 62, 48, 64, 50, 65, 66, 67, 97, 68, 84, 70, 59, 74, 89, 58, 73, 88, 103,
/* TAB Q W E R T Y U I O P [ ] \ DEL END PGDN NP7 NP8 NP9 NP+ */
60, 61, 47, 78, 33, 49, 35, 80, 51, 52, 53, 69, 99, 25, 44, 29, 14, 43, 28, 13, 102,
/* CPLK A S D F G H J K L ; " ENTR NP4 NP5 NP6 */
45, 46, 32, 93, 18, 34, 20, 95, 36, 37, 38, 54, 10, 57, 72, 87,
/* LSFT Z X C V B N M , . / RSFT ARWU NP1 NP2 NP3 NPEN */
30, 31, 17, 2, 3, 19, 5, 6, 21, 22, 23, 39, 11, 42, 27, 12, 101,
/* LCTL LWIN LALT SPC RALT RFNC RMNU RCTL ARWL ARWD ARWR NP0 NP. */
15, 0, 1, 4, 7, 8, 24, 9, 26, 41, 56, 71, 86
},
{
/* Add more regional layout fixes here */
}
};
RGBController_AOCKeyboard::RGBController_AOCKeyboard(AOCKeyboardController* controller_ptr)
{
controller = controller_ptr;
name = "AOC Keyboard Device";
vendor = "AOC";
type = DEVICE_TYPE_KEYBOARD;
description = "AOC Keyboard Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode Static;
Static.name = "Static";
Static.value = AOC_KEYBOARD_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
Static.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Static.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Static.colors_min = 1;
Static.colors_max = 1;
Static.colors.resize(1);
modes.push_back(Static);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = AOC_KEYBOARD_MODE_STATIC;
SpectrumCycle.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
SpectrumCycle.color_mode = MODE_COLORS_RANDOM;
SpectrumCycle.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
SpectrumCycle.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
SpectrumCycle.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
SpectrumCycle.speed_min = AOC_KEYBOARD_SPEED_SLOW;
SpectrumCycle.speed_max = AOC_KEYBOARD_SPEED_FAST;
SpectrumCycle.speed = AOC_KEYBOARD_SPEED_MEDIUM;
modes.push_back(SpectrumCycle);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = AOC_KEYBOARD_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
Breathing.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Breathing.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Breathing.speed_min = AOC_KEYBOARD_SPEED_SLOW;
Breathing.speed_max = AOC_KEYBOARD_SPEED_FAST;
Breathing.speed = AOC_KEYBOARD_SPEED_MEDIUM;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.colors.resize(1);
modes.push_back(Breathing);
mode React;
React.name = "React";
React.value = AOC_KEYBOARD_MODE_REACT;
React.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
React.color_mode = MODE_COLORS_MODE_SPECIFIC;
React.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
React.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
React.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
React.speed_min = AOC_KEYBOARD_SPEED_SLOW;
React.speed_max = AOC_KEYBOARD_SPEED_FAST;
React.speed = AOC_KEYBOARD_SPEED_MEDIUM;
React.colors_min = 1;
React.colors_max = 1;
React.colors.resize(1);
modes.push_back(React);
mode Ripple;
Ripple.name = "Ripple";
Ripple.value = AOC_KEYBOARD_MODE_RIPPLE;
Ripple.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Ripple.color_mode = MODE_COLORS_MODE_SPECIFIC;
Ripple.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
Ripple.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Ripple.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Ripple.speed_min = AOC_KEYBOARD_SPEED_SLOW;
Ripple.speed_max = AOC_KEYBOARD_SPEED_FAST;
Ripple.speed = AOC_KEYBOARD_SPEED_MEDIUM;
Ripple.colors_min = 1;
Ripple.colors_max = 1;
Ripple.colors.resize(1);
modes.push_back(Ripple);
mode Radar;
Radar.name = "Radar";
Radar.value = AOC_KEYBOARD_MODE_RADAR;
Radar.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
Radar.color_mode = MODE_COLORS_MODE_SPECIFIC;
Radar.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
Radar.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Radar.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Radar.speed_min = AOC_KEYBOARD_SPEED_SLOW;
Radar.speed_max = AOC_KEYBOARD_SPEED_FAST;
Radar.speed = AOC_KEYBOARD_SPEED_MEDIUM;
Radar.colors_min = 1;
Radar.colors_max = 1;
Radar.colors.resize(1);
modes.push_back(Radar);
mode Fireworks;
Fireworks.name = "Fireworks";
Fireworks.value = AOC_KEYBOARD_MODE_FIREWORKS;
Fireworks.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Fireworks.color_mode = MODE_COLORS_MODE_SPECIFIC;
Fireworks.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
Fireworks.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Fireworks.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Fireworks.speed_min = AOC_KEYBOARD_SPEED_SLOW;
Fireworks.speed_max = AOC_KEYBOARD_SPEED_FAST;
Fireworks.speed = AOC_KEYBOARD_SPEED_MEDIUM;
Fireworks.colors_min = 1;
Fireworks.colors_max = 1;
Fireworks.colors.resize(1);
modes.push_back(Fireworks);
mode Blink;
Blink.name = "Flashing";
Blink.value = AOC_KEYBOARD_MODE_BLINK;
Blink.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Blink.color_mode = MODE_COLORS_MODE_SPECIFIC;
Blink.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
Blink.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Blink.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Blink.speed_min = AOC_KEYBOARD_SPEED_SLOW;
Blink.speed_max = AOC_KEYBOARD_SPEED_FAST;
Blink.speed = AOC_KEYBOARD_SPEED_MEDIUM;
Blink.colors_min = 1;
Blink.colors_max = 1;
Blink.colors.resize(1);
modes.push_back(Blink);
mode Wave;
Wave.name = "Wave";
Wave.value = AOC_KEYBOARD_MODE_WAVE;
Wave.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
Wave.color_mode = MODE_COLORS_MODE_SPECIFIC;
Wave.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
Wave.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Wave.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Wave.speed_min = AOC_KEYBOARD_SPEED_SLOW;
Wave.speed_max = AOC_KEYBOARD_SPEED_FAST;
Wave.speed = AOC_KEYBOARD_SPEED_MEDIUM;
Wave.colors_min = 1;
Wave.colors_max = 1;
Wave.colors.resize(1);
modes.push_back(Wave);
mode RainbowWave;
RainbowWave.name = "Rainbow Wave";
RainbowWave.value = AOC_KEYBOARD_MODE_WAVE;
RainbowWave.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
RainbowWave.color_mode = MODE_COLORS_RANDOM;
RainbowWave.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
RainbowWave.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
RainbowWave.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
RainbowWave.speed_min = AOC_KEYBOARD_SPEED_SLOW;
RainbowWave.speed_max = AOC_KEYBOARD_SPEED_FAST;
RainbowWave.speed = AOC_KEYBOARD_SPEED_MEDIUM;
modes.push_back(RainbowWave);
mode ConcentricCircles;
ConcentricCircles.name = "Concentric Circles";
ConcentricCircles.value = AOC_KEYBOARD_MODE_CONCENTRIC_CIRCLES;
ConcentricCircles.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
ConcentricCircles.color_mode = MODE_COLORS_MODE_SPECIFIC;
ConcentricCircles.brightness_min= AOC_KEYBOARD_BRIGHTNESS_OFF;
ConcentricCircles.brightness_max= AOC_KEYBOARD_BRIGHTNESS_HIGH;
ConcentricCircles.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
ConcentricCircles.speed_min = AOC_KEYBOARD_SPEED_SLOW;
ConcentricCircles.speed_max = AOC_KEYBOARD_SPEED_FAST;
ConcentricCircles.speed = AOC_KEYBOARD_SPEED_MEDIUM;
ConcentricCircles.colors_min = 1;
ConcentricCircles.colors_max = 1;
ConcentricCircles.colors.resize(1);
modes.push_back(ConcentricCircles);
mode WWave;
WWave.name = "W Wave";
WWave.value = AOC_KEYBOARD_MODE_W_WAVE;
WWave.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
WWave.color_mode = MODE_COLORS_MODE_SPECIFIC;
WWave.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
WWave.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
WWave.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
WWave.speed_min = AOC_KEYBOARD_SPEED_SLOW;
WWave.speed_max = AOC_KEYBOARD_SPEED_FAST;
WWave.speed = AOC_KEYBOARD_SPEED_MEDIUM;
WWave.colors_min = 1;
WWave.colors_max = 1;
WWave.colors.resize(1);
modes.push_back(WWave);
mode Direct;
Direct.name = "Direct";
Direct.value = AOC_KEYBOARD_MODE_CUSTOM;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Direct.color_mode = MODE_COLORS_PER_LED;
Direct.brightness_min = AOC_KEYBOARD_BRIGHTNESS_OFF;
Direct.brightness_max = AOC_KEYBOARD_BRIGHTNESS_HIGH;
Direct.brightness = AOC_KEYBOARD_BRIGHTNESS_HIGH;
modes.push_back(Direct);
SetupZones();
};
RGBController_AOCKeyboard::~RGBController_AOCKeyboard()
{
delete controller;
}
void RGBController_AOCKeyboard::SetupZones()
{
/*---------------------------------------------------------*\
| Create the keyboard zone usiung Keyboard Layout Manager |
\*---------------------------------------------------------*/
zone new_zone;
new_zone.name = ZONE_EN_KEYBOARD;
new_zone.type = ZONE_TYPE_MATRIX;
KeyboardLayoutManager new_kb(KEYBOARD_LAYOUT_ANSI_QWERTY, KEYBOARD_SIZE_FULL, aoc_keyboard_offset_values);
matrix_map_type * new_map = new matrix_map_type;
new_zone.matrix_map = new_map;
new_zone.matrix_map->height = new_kb.GetRowCount();
new_zone.matrix_map->width = new_kb.GetColumnCount();
new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width];
new_zone.leds_count = new_kb.GetKeyCount();
new_zone.leds_min = new_zone.leds_count;
new_zone.leds_max = new_zone.leds_count;
/*---------------------------------------------------------*\
| Matrix map still uses declared zone rows and columns |
| as the packet structure depends on the matrix map |
\*---------------------------------------------------------*/
new_kb.GetKeyMap(new_map->map, KEYBOARD_MAP_FILL_TYPE_COUNT, new_map->height, new_map->width);
/*---------------------------------------------------------*\
| Create LEDs for the Matrix zone |
| Place keys in the layout to populate the matrix |
\*---------------------------------------------------------*/
for(unsigned int led_idx = 0; led_idx < new_zone.leds_count; led_idx++)
{
led new_led;
new_led.name = new_kb.GetKeyNameAt(led_idx);
new_led.value = new_kb.GetKeyValueAt(led_idx);
leds.push_back(new_led);
}
zones.push_back(new_zone);
SetupColors();
}
void RGBController_AOCKeyboard::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AOCKeyboard::DeviceUpdateLEDs()
{
if(modes[active_mode].value == AOC_KEYBOARD_MODE_CUSTOM)
{
RGBColor color_buf[120];
for(unsigned int led_idx = 0; led_idx < leds.size(); led_idx++)
{
color_buf[leds[led_idx].value] = colors[led_idx];
}
controller->SetCustom(&color_buf[0]);
}
else
{
DeviceUpdateMode();
}
}
void RGBController_AOCKeyboard::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCKeyboard::UpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCKeyboard::DeviceUpdateMode()
{
unsigned char aoc_direction = AOC_KEYBOARD_DIRECTION_CLOCKWISE;
unsigned char aoc_random = AOC_KEYBOARD_SINGLE_COLOR;
RGBColor* aoc_colors = &colors[0];
if(modes[active_mode].direction == MODE_DIRECTION_LEFT)
{
aoc_direction = AOC_KEYBOARD_DIRECTION_COUNTERCLOCKWISE;
}
if(modes[active_mode].color_mode == MODE_COLORS_RANDOM)
{
aoc_random = AOC_KEYBOARD_RANDOM;
}
if(modes[active_mode].color_mode == MODE_COLORS_MODE_SPECIFIC)
{
aoc_colors = &modes[active_mode].colors[0];
}
controller->SetLightingConfig(modes[active_mode].value,
aoc_random,
modes[active_mode].brightness,
modes[active_mode].speed,
aoc_direction,
aoc_colors);
}
@@ -0,0 +1,35 @@
/*---------------------------------------------------------*\
| RGBController_AOCKeyboard.h |
| |
| RGBController for AOC keyboard |
| |
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AOCKeyboardController.h"
class RGBController_AOCKeyboard : public RGBController
{
public:
RGBController_AOCKeyboard(AOCKeyboardController* controller_ptr);
~RGBController_AOCKeyboard();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AOCKeyboardController* controller;
};
@@ -0,0 +1,132 @@
/*---------------------------------------------------------*\
| AOCMouseController.cpp |
| |
| Driver for AOC mouse |
| |
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <cstring>
#include "AOCMouseController.h"
AOCMouseController::AOCMouseController(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
location = path;
}
AOCMouseController::~AOCMouseController()
{
hid_close(dev);
}
std::string AOCMouseController::GetDeviceLocation()
{
return("HID " + location);
}
std::string AOCMouseController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
std::wstring return_wstring = serial_string;
std::string return_string(return_wstring.begin(), return_wstring.end());
return(return_string);
}
/*-------------------------------------------------------------------------------------------------*\
| Private packet sending functions. |
\*-------------------------------------------------------------------------------------------------*/
void AOCMouseController::SendDirect
(
RGBColor* color_data
)
{
SendPacket(AOC_MOUSE_MODE_STATIC_SINGLE_COLOR,
AOC_MOUSE_BRIGHTNESS_HIGH,
AOC_MOUSE_SPEED_MEDIUM,
AOC_MOUSE_DIRECTION_CLOCKWISE,
color_data);
}
void AOCMouseController::SendPacket
(
unsigned char mode,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
)
{
unsigned char buf[60];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(buf, 0x00, sizeof(buf));
/*-----------------------------------------------------*\
| Set up packet |
\*-----------------------------------------------------*/
buf[0x00] = 0x20;
buf[0x01] = 0x03;
buf[0x02] = 0x01;
buf[0x03] = mode;
buf[0x04] = speed;
buf[0x05] = brightness;
buf[0x06] = direction;
buf[0x07] = 0x01;
buf[0x08] = 0x02;
buf[0x09] = 0xFF;
buf[0x0D] = 0x01;
buf[0x0E] = 0x03;
buf[0x0F] = 0xFF;
buf[0x10] = 0x7F;
buf[0x13] = 0x01;
buf[0x14] = 0x04;
buf[0x17] = 0xFF;
buf[0x19] = 0x01;
buf[0x1A] = 0x05;
buf[0x1C] = 0xFF;
buf[0x1F] = 0x01;
buf[0x20] = 0x06;
buf[0x21] = 0xFF;
buf[0x23] = 0xFF;
buf[0x25] = 0x01;
buf[0x26] = 0x07;
buf[0x27] = 0xFF;
buf[0x28] = 0xFF;
buf[0x2C] = 0x0A;
buf[0x2D] = 0x0A;
buf[0x30] = 0x14;
buf[0x31] = 0x08;
buf[0x3A] = 0x32;
buf[0x3B] = 0x32;
/*-----------------------------------------------------*\
| Copy in color |
\*-----------------------------------------------------*/
buf[0x33] = RGBGetRValue(color_data[0]);
buf[0x34] = RGBGetGValue(color_data[0]);
buf[0x35] = RGBGetBValue(color_data[0]);
buf[0x36] = RGBGetRValue(color_data[1]);
buf[0x37] = RGBGetGValue(color_data[1]);
buf[0x38] = RGBGetBValue(color_data[1]);
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_send_feature_report(dev, buf, 60);
}
@@ -0,0 +1,82 @@
/*---------------------------------------------------------*\
| AOCMouseController.h |
| |
| Driver for AOC mouse |
| |
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "RGBController.h"
/*-----------------------------------------*\
| AOC Mousemat Modes |
| Note: The 0x80 bit is the random flag |
\*-----------------------------------------*/
enum
{
AOC_MOUSE_MODE_STATIC_SINGLE_COLOR = 0x00, /* Static single color mode */
AOC_MOUSE_MODE_STATIC_RANDOM = 0x80, /* Static random color mode */
AOC_MOUSE_MODE_BREATHING_SINGLE_COLOR = 0x01, /* Breathing single color mode */
AOC_MOUSE_MODE_BREATHING_RANDOM = 0x81, /* Breathing random color mode */
AOC_MOUSE_MODE_BLINK_SINGLE_COLOR = 0x02, /* Blink single color mode */
AOC_MOUSE_MODE_BLINK_RANDOM = 0x82, /* Blink random color mode */
AOC_MOUSE_MODE_WAVE_SINGLE_COLOR = 0x03, /* Wave single color mode */
AOC_MOUSE_MODE_WAVE_RANDOM = 0x83, /* Wave random color mode */
AOC_MOUSE_MODE_DPI = 0x04, /* DPI mode */
};
enum
{
AOC_MOUSE_SPEED_SLOW = 0x03, /* Slowest speed */
AOC_MOUSE_SPEED_MEDIUM = 0x02, /* Medium speed */
AOC_MOUSE_SPEED_FAST = 0x01, /* Fastest speed */
};
enum
{
AOC_MOUSE_BRIGHTNESS_OFF = 0x00, /* Lowest brightness (off) */
AOC_MOUSE_BRIGHTNESS_LOW = 0x01, /* Low brightness */
AOC_MOUSE_BRIGHTNESS_MEDIUM = 0x02, /* Medium brightness */
AOC_MOUSE_BRIGHTNESS_HIGH = 0x03, /* Highest brightness */
};
enum
{
AOC_MOUSE_DIRECTION_CLOCKWISE = 0x00, /* Clockwise direction */
AOC_MOUSE_DIRECTION_COUNTERCLOCKWISE = 0x01, /* Counter-clockwise direction */
};
class AOCMouseController
{
public:
AOCMouseController(hid_device* dev_handle, const char* path);
~AOCMouseController();
std::string GetDeviceLocation();
std::string GetSerialString();
void SendDirect
(
RGBColor* color_data
);
void SendPacket
(
unsigned char mode,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
);
private:
hid_device* dev;
std::string location;
};
@@ -0,0 +1,45 @@
/*---------------------------------------------------------*\
| AOCMouseControllerDetect.cpp |
| |
| Detector for AOC mouse |
| |
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AOCMouseController.h"
#include "RGBController.h"
#include "RGBController_AOCMouse.h"
/*-----------------------------------------------------*\
| AOC Mouse IDs |
\*-----------------------------------------------------*/
#define AOC_VID 0x3938
#define AOC_GM500_PID 0x1179
/******************************************************************************************\
* *
* DetectAOCMouseControllers *
* *
* Tests the USB address to see if an AOC Mouse controller exists there. *
* *
\******************************************************************************************/
void DetectAOCMouseControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
AOCMouseController* controller = new AOCMouseController(dev, info->path);
RGBController_AOCMouse* rgb_controller = new RGBController_AOCMouse(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
REGISTER_HID_DETECTOR_IPU("AOC GM500", DetectAOCMouseControllers, AOC_VID, AOC_GM500_PID, 1, 0xFF19, 0xFF19);
@@ -0,0 +1,218 @@
/*---------------------------------------------------------*\
| RGBController_AOCMouse.cpp |
| |
| RGBController for AOC mouse |
| |
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AOCMouse.h"
/**------------------------------------------------------------------*\
@name AOC Mouse
@category Mouse
@type USB
@save :x:
@direct :white_check_mark:
@effects :white_check_mark:
@detectors DetectAOCMouseControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_AOCMouse::RGBController_AOCMouse(AOCMouseController* controller_ptr)
{
controller = controller_ptr;
name = "AOC Mouse Device";
vendor = "AOC";
type = DEVICE_TYPE_MOUSE;
description = "AOC Mouse Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.name = "Direct";
Direct.value = AOC_MOUSE_MODE_STATIC_SINGLE_COLOR;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Direct.color_mode = MODE_COLORS_PER_LED;
Direct.brightness_min = AOC_MOUSE_BRIGHTNESS_OFF;
Direct.brightness_max = AOC_MOUSE_BRIGHTNESS_HIGH;
Direct.brightness = AOC_MOUSE_BRIGHTNESS_HIGH;
modes.push_back(Direct);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = AOC_MOUSE_MODE_STATIC_RANDOM;
SpectrumCycle.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
SpectrumCycle.color_mode = MODE_COLORS_RANDOM;
SpectrumCycle.brightness_min = AOC_MOUSE_BRIGHTNESS_OFF;
SpectrumCycle.brightness_max = AOC_MOUSE_BRIGHTNESS_HIGH;
SpectrumCycle.brightness = AOC_MOUSE_BRIGHTNESS_HIGH;
SpectrumCycle.speed_min = AOC_MOUSE_SPEED_SLOW;
SpectrumCycle.speed_max = AOC_MOUSE_SPEED_FAST;
SpectrumCycle.speed = AOC_MOUSE_SPEED_MEDIUM;
modes.push_back(SpectrumCycle);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = AOC_MOUSE_MODE_BREATHING_SINGLE_COLOR;
Breathing.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Breathing.color_mode = MODE_COLORS_PER_LED;
Breathing.brightness_min = AOC_MOUSE_BRIGHTNESS_OFF;
Breathing.brightness_max = AOC_MOUSE_BRIGHTNESS_HIGH;
Breathing.brightness = AOC_MOUSE_BRIGHTNESS_HIGH;
Breathing.speed_min = AOC_MOUSE_SPEED_SLOW;
Breathing.speed_max = AOC_MOUSE_SPEED_FAST;
Breathing.speed = AOC_MOUSE_SPEED_MEDIUM;
modes.push_back(Breathing);
mode Blink;
Blink.name = "Flashing";
Blink.value = AOC_MOUSE_MODE_BLINK_SINGLE_COLOR;
Blink.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Blink.color_mode = MODE_COLORS_PER_LED;
Blink.brightness_min = AOC_MOUSE_BRIGHTNESS_OFF;
Blink.brightness_max = AOC_MOUSE_BRIGHTNESS_HIGH;
Blink.brightness = AOC_MOUSE_BRIGHTNESS_HIGH;
Blink.speed_min = AOC_MOUSE_SPEED_SLOW;
Blink.speed_max = AOC_MOUSE_SPEED_FAST;
Blink.speed = AOC_MOUSE_SPEED_MEDIUM;
modes.push_back(Blink);
mode Wave;
Wave.name = "Wave";
Wave.value = AOC_MOUSE_MODE_WAVE_SINGLE_COLOR;
Wave.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
Wave.color_mode = MODE_COLORS_PER_LED;
Wave.brightness_min = AOC_MOUSE_BRIGHTNESS_OFF;
Wave.brightness_max = AOC_MOUSE_BRIGHTNESS_HIGH;
Wave.brightness = AOC_MOUSE_BRIGHTNESS_HIGH;
Wave.speed_min = AOC_MOUSE_SPEED_SLOW;
Wave.speed_max = AOC_MOUSE_SPEED_FAST;
Wave.speed = AOC_MOUSE_SPEED_MEDIUM;
modes.push_back(Wave);
mode RainbowWave;
RainbowWave.name = "Rainbow Wave";
RainbowWave.value = AOC_MOUSE_MODE_WAVE_RANDOM;
RainbowWave.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
RainbowWave.color_mode = MODE_COLORS_RANDOM;
RainbowWave.brightness_min = AOC_MOUSE_BRIGHTNESS_OFF;
RainbowWave.brightness_max = AOC_MOUSE_BRIGHTNESS_HIGH;
RainbowWave.brightness = AOC_MOUSE_BRIGHTNESS_HIGH;
RainbowWave.speed_min = AOC_MOUSE_SPEED_SLOW;
RainbowWave.speed_max = AOC_MOUSE_SPEED_FAST;
RainbowWave.speed = AOC_MOUSE_SPEED_MEDIUM;
modes.push_back(RainbowWave);
mode DPI;
DPI.name = "DPI";
DPI.value = AOC_MOUSE_MODE_DPI;
DPI.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
DPI.color_mode = MODE_COLORS_RANDOM;
DPI.brightness_min = AOC_MOUSE_BRIGHTNESS_OFF;
DPI.brightness_max = AOC_MOUSE_BRIGHTNESS_HIGH;
DPI.brightness = AOC_MOUSE_BRIGHTNESS_HIGH;
modes.push_back(DPI);
SetupZones();
};
RGBController_AOCMouse::~RGBController_AOCMouse()
{
delete controller;
}
void RGBController_AOCMouse::SetupZones()
{
zone logo_zone;
logo_zone.name = "Logo";
logo_zone.type = ZONE_TYPE_SINGLE;
logo_zone.leds_min = 1;
logo_zone.leds_max = 1;
logo_zone.leds_count = 1;
logo_zone.matrix_map = NULL;
zones.push_back(logo_zone);
led logo_led;
logo_led.name = "Logo";
leds.push_back(logo_led);
zone scroll_wheel_zone;
scroll_wheel_zone.name = "Scroll Wheel";
scroll_wheel_zone.type = ZONE_TYPE_SINGLE;
scroll_wheel_zone.leds_min = 1;
scroll_wheel_zone.leds_max = 1;
scroll_wheel_zone.leds_count = 1;
scroll_wheel_zone.matrix_map = NULL;
zones.push_back(scroll_wheel_zone);
led scroll_wheel_led;
scroll_wheel_led.name = "Scroll Wheel";
leds.push_back(scroll_wheel_led);
SetupColors();
}
void RGBController_AOCMouse::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AOCMouse::DeviceUpdateLEDs()
{
DeviceUpdateMode();
}
void RGBController_AOCMouse::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCMouse::UpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCMouse::DeviceUpdateMode()
{
if(modes[active_mode].value == AOC_MOUSE_MODE_STATIC_SINGLE_COLOR)
{
controller->SendDirect(&colors[0]);
}
else
{
unsigned char aoc_direction = AOC_MOUSE_DIRECTION_CLOCKWISE;
unsigned int aoc_mode = modes[active_mode].value;
if(modes[active_mode].direction == MODE_DIRECTION_LEFT)
{
aoc_direction = AOC_MOUSE_DIRECTION_COUNTERCLOCKWISE;
}
if(modes[active_mode].color_mode == MODE_COLORS_RANDOM)
{
switch(modes[active_mode].value)
{
case AOC_MOUSE_MODE_BREATHING_SINGLE_COLOR:
aoc_mode = AOC_MOUSE_MODE_BREATHING_RANDOM;
break;
case AOC_MOUSE_MODE_BLINK_SINGLE_COLOR:
aoc_mode = AOC_MOUSE_MODE_BLINK_RANDOM;
break;
}
}
controller->SendPacket(aoc_mode,
modes[active_mode].brightness,
modes[active_mode].speed,
aoc_direction,
&colors[0]);
}
}
@@ -0,0 +1,35 @@
/*---------------------------------------------------------*\
| RGBController_AOCMouse.h |
| |
| RGBController for AOC mouse |
| |
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AOCMouseController.h"
class RGBController_AOCMouse : public RGBController
{
public:
RGBController_AOCMouse(AOCMouseController* controller_ptr);
~RGBController_AOCMouse();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AOCMouseController* controller;
};
@@ -0,0 +1,113 @@
/*---------------------------------------------------------*\
| AOCMousematController.cpp |
| |
| Driver for AOC mousemat |
| |
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <cstring>
#include "AOCMousematController.h"
AOCMousematController::AOCMousematController(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
location = path;
}
AOCMousematController::~AOCMousematController()
{
hid_close(dev);
}
std::string AOCMousematController::GetDeviceLocation()
{
return("HID " + location);
}
std::string AOCMousematController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
std::wstring return_wstring = serial_string;
std::string return_string(return_wstring.begin(), return_wstring.end());
return(return_string);
}
/*-------------------------------------------------------------------------------------------------*\
| Private packet sending functions. |
\*-------------------------------------------------------------------------------------------------*/
void AOCMousematController::SendDirect
(
RGBColor* color_data
)
{
SendPacket(AOC_MOUSEMAT_MODE_STATIC_SINGLE_COLOR,
AOC_MOUSEMAT_BRIGHTNESS_HIGH,
AOC_MOUSEMAT_SPEED_MEDIUM,
AOC_MOUSEMAT_DIRECTION_CLOCKWISE,
color_data);
}
void AOCMousematController::SendPacket
(
unsigned char mode,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
)
{
unsigned char buf[32];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(buf, 0x00, sizeof(buf));
/*-----------------------------------------------------*\
| Set up packet |
\*-----------------------------------------------------*/
buf[0x00] = 0x20;
buf[0x01] = brightness;
buf[0x02] = speed;
buf[0x03] = direction;
buf[0x04] = 0x01;
buf[0x05] = mode;
buf[0x09] = 0xFF;
buf[0x0C] = 0xFF;
buf[0x0D] = 0x3F;
buf[0x0F] = 0xFF;
buf[0x10] = 0xFF;
buf[0x13] = 0xFF;
buf[0x17] = 0xFF;
buf[0x19] = 0xFF;
buf[0x1A] = 0xFF;
buf[0x1B] = 0xFF;
buf[0x1D] = 0xFF;
buf[0x1E] = 0x32;
buf[0x1F] = 0x32;
/*-----------------------------------------------------*\
| Copy in color |
\*-----------------------------------------------------*/
buf[0x06] = RGBGetRValue(color_data[0]);
buf[0x07] = RGBGetGValue(color_data[0]);
buf[0x08] = RGBGetBValue(color_data[0]);
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_send_feature_report(dev, buf, 32);
}
@@ -0,0 +1,81 @@
/*---------------------------------------------------------*\
| AOCMousematController.h |
| |
| Driver for AOC mousemat |
| |
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "RGBController.h"
/*-----------------------------------------*\
| AOC Mousemat Modes |
| Note: The 0x80 bit is the random flag |
\*-----------------------------------------*/
enum
{
AOC_MOUSEMAT_MODE_STATIC_SINGLE_COLOR = 0x00, /* Static single color mode */
AOC_MOUSEMAT_MODE_STATIC_RANDOM = 0x80, /* Static random color mode */
AOC_MOUSEMAT_MODE_BREATHING_SINGLE_COLOR = 0x01, /* Breathing single color mode */
AOC_MOUSEMAT_MODE_BREATHING_RANDOM = 0x81, /* Breathing random color mode */
AOC_MOUSEMAT_MODE_BLINK_SINGLE_COLOR = 0x02, /* Blink single color mode */
AOC_MOUSEMAT_MODE_BLINK_RANDOM = 0x82, /* Blink random color mode */
AOC_MOUSEMAT_MODE_WAVE_SINGLE_COLOR = 0x03, /* Wave single color mode */
AOC_MOUSEMAT_MODE_WAVE_RANDOM = 0x83, /* Wave random color mode */
};
enum
{
AOC_MOUSEMAT_SPEED_SLOW = 0x03, /* Slowest speed */
AOC_MOUSEMAT_SPEED_MEDIUM = 0x02, /* Medium speed */
AOC_MOUSEMAT_SPEED_FAST = 0x01, /* Fastest speed */
};
enum
{
AOC_MOUSEMAT_BRIGHTNESS_OFF = 0x00, /* Lowest brightness (off) */
AOC_MOUSEMAT_BRIGHTNESS_LOW = 0x01, /* Low brightness */
AOC_MOUSEMAT_BRIGHTNESS_MEDIUM = 0x02, /* Medium brightness */
AOC_MOUSEMAT_BRIGHTNESS_HIGH = 0x03, /* Highest brightness */
};
enum
{
AOC_MOUSEMAT_DIRECTION_CLOCKWISE = 0x00, /* Clockwise direction */
AOC_MOUSEMAT_DIRECTION_COUNTERCLOCKWISE = 0x01, /* Counter-clockwise direction */
};
class AOCMousematController
{
public:
AOCMousematController(hid_device* dev_handle, const char* path);
~AOCMousematController();
std::string GetDeviceLocation();
std::string GetSerialString();
void SendDirect
(
RGBColor* color_data
);
void SendPacket
(
unsigned char mode,
unsigned char brightness,
unsigned char speed,
unsigned char direction,
RGBColor* color_data
);
private:
hid_device* dev;
std::string location;
};
@@ -0,0 +1,45 @@
/*---------------------------------------------------------*\
| AOCMousematControllerDetect.cpp |
| |
| Detector for AOC mousemat |
| |
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AOCMousematController.h"
#include "RGBController.h"
#include "RGBController_AOCMousemat.h"
/*-----------------------------------------------------*\
| AOC Mousemat IDs |
\*-----------------------------------------------------*/
#define AOC_VID 0x3938
#define AOC_AMM700_PID 0x1162
/******************************************************************************************\
* *
* DetectAOCMousematControllers *
* *
* Tests the USB address to see if an AOC Mousemat controller exists there. *
* *
\******************************************************************************************/
void DetectAOCMousematControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
AOCMousematController* controller = new AOCMousematController(dev, info->path);
RGBController_AOCMousemat* rgb_controller = new RGBController_AOCMousemat(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
REGISTER_HID_DETECTOR_IPU("AOC AGON AMM700", DetectAOCMousematControllers, AOC_VID, AOC_AMM700_PID, 1, 0xFF19, 0xFF19);
@@ -0,0 +1,195 @@
/*---------------------------------------------------------*\
| RGBController_AOCMousemat.cpp |
| |
| RGBController for AOC mousemat |
| |
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AOCMousemat.h"
/**------------------------------------------------------------------*\
@name AOC Mousemat
@category Mousemat
@type USB
@save :x:
@direct :white_check_mark:
@effects :white_check_mark:
@detectors DetectAOCMousematControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_AOCMousemat::RGBController_AOCMousemat(AOCMousematController* controller_ptr)
{
controller = controller_ptr;
name = "AOC Mousemat Device";
vendor = "AOC";
type = DEVICE_TYPE_MOUSEMAT;
description = "AOC Mousemat Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.name = "Direct";
Direct.value = AOC_MOUSEMAT_MODE_STATIC_SINGLE_COLOR;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Direct.color_mode = MODE_COLORS_PER_LED;
Direct.brightness_min = AOC_MOUSEMAT_BRIGHTNESS_OFF;
Direct.brightness_max = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
Direct.brightness = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
modes.push_back(Direct);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = AOC_MOUSEMAT_MODE_STATIC_RANDOM;
SpectrumCycle.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
SpectrumCycle.color_mode = MODE_COLORS_RANDOM;
SpectrumCycle.brightness_min = AOC_MOUSEMAT_BRIGHTNESS_OFF;
SpectrumCycle.brightness_max = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
SpectrumCycle.brightness = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
SpectrumCycle.speed_min = AOC_MOUSEMAT_SPEED_SLOW;
SpectrumCycle.speed_max = AOC_MOUSEMAT_SPEED_FAST;
SpectrumCycle.speed = AOC_MOUSEMAT_SPEED_MEDIUM;
modes.push_back(SpectrumCycle);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = AOC_MOUSEMAT_MODE_BREATHING_SINGLE_COLOR;
Breathing.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Breathing.color_mode = MODE_COLORS_PER_LED;
Breathing.brightness_min = AOC_MOUSEMAT_BRIGHTNESS_OFF;
Breathing.brightness_max = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
Breathing.brightness = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
Breathing.speed_min = AOC_MOUSEMAT_SPEED_SLOW;
Breathing.speed_max = AOC_MOUSEMAT_SPEED_FAST;
Breathing.speed = AOC_MOUSEMAT_SPEED_MEDIUM;
modes.push_back(Breathing);
mode Blink;
Blink.name = "Flashing";
Blink.value = AOC_MOUSEMAT_MODE_BLINK_SINGLE_COLOR;
Blink.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED;
Blink.color_mode = MODE_COLORS_PER_LED;
Blink.brightness_min = AOC_MOUSEMAT_BRIGHTNESS_OFF;
Blink.brightness_max = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
Blink.brightness = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
Blink.speed_min = AOC_MOUSEMAT_SPEED_SLOW;
Blink.speed_max = AOC_MOUSEMAT_SPEED_FAST;
Blink.speed = AOC_MOUSEMAT_SPEED_MEDIUM;
modes.push_back(Blink);
mode Wave;
Wave.name = "Wave";
Wave.value = AOC_MOUSEMAT_MODE_WAVE_SINGLE_COLOR;
Wave.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
Wave.color_mode = MODE_COLORS_PER_LED;
Wave.brightness_min = AOC_MOUSEMAT_BRIGHTNESS_OFF;
Wave.brightness_max = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
Wave.brightness = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
Wave.speed_min = AOC_MOUSEMAT_SPEED_SLOW;
Wave.speed_max = AOC_MOUSEMAT_SPEED_FAST;
Wave.speed = AOC_MOUSEMAT_SPEED_MEDIUM;
modes.push_back(Wave);
mode RainbowWave;
RainbowWave.name = "Rainbow Wave";
RainbowWave.value = AOC_MOUSEMAT_MODE_WAVE_RANDOM;
RainbowWave.flags = MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR;
RainbowWave.color_mode = MODE_COLORS_RANDOM;
RainbowWave.brightness_min = AOC_MOUSEMAT_BRIGHTNESS_OFF;
RainbowWave.brightness_max = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
RainbowWave.brightness = AOC_MOUSEMAT_BRIGHTNESS_HIGH;
RainbowWave.speed_min = AOC_MOUSEMAT_SPEED_SLOW;
RainbowWave.speed_max = AOC_MOUSEMAT_SPEED_FAST;
RainbowWave.speed = AOC_MOUSEMAT_SPEED_MEDIUM;
modes.push_back(RainbowWave);
SetupZones();
};
RGBController_AOCMousemat::~RGBController_AOCMousemat()
{
delete controller;
}
void RGBController_AOCMousemat::SetupZones()
{
zone mousemat_zone;
mousemat_zone.name = "Mousemat";
mousemat_zone.type = ZONE_TYPE_SINGLE;
mousemat_zone.leds_min = 1;
mousemat_zone.leds_max = 1;
mousemat_zone.leds_count = 1;
mousemat_zone.matrix_map = NULL;
zones.push_back(mousemat_zone);
led mousemat_led;
mousemat_led.name = "Mousemat";
leds.push_back(mousemat_led);
SetupColors();
}
void RGBController_AOCMousemat::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AOCMousemat::DeviceUpdateLEDs()
{
DeviceUpdateMode();
}
void RGBController_AOCMousemat::UpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCMousemat::UpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCMousemat::DeviceUpdateMode()
{
if(modes[active_mode].value == AOC_MOUSEMAT_MODE_STATIC_SINGLE_COLOR)
{
controller->SendDirect(&colors[0]);
}
else
{
unsigned char aoc_direction = AOC_MOUSEMAT_DIRECTION_CLOCKWISE;
unsigned int aoc_mode = modes[active_mode].value;
if(modes[active_mode].direction == MODE_DIRECTION_LEFT)
{
aoc_direction = AOC_MOUSEMAT_DIRECTION_COUNTERCLOCKWISE;
}
if(modes[active_mode].color_mode == MODE_COLORS_RANDOM)
{
switch(modes[active_mode].value)
{
case AOC_MOUSEMAT_MODE_BREATHING_SINGLE_COLOR:
aoc_mode = AOC_MOUSEMAT_MODE_BREATHING_RANDOM;
break;
case AOC_MOUSEMAT_MODE_BLINK_SINGLE_COLOR:
aoc_mode = AOC_MOUSEMAT_MODE_BLINK_RANDOM;
break;
}
}
controller->SendPacket(aoc_mode,
modes[active_mode].brightness,
modes[active_mode].speed,
aoc_direction,
&colors[0]);
}
}
@@ -0,0 +1,35 @@
/*---------------------------------------------------------*\
| RGBController_AOCMousemat.h |
| |
| RGBController for AOC mousemat |
| |
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AOCMousematController.h"
class RGBController_AOCMousemat : public RGBController
{
public:
RGBController_AOCMousemat(AOCMousematController* controller_ptr);
~RGBController_AOCMousemat();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AOCMousematController* controller;
};
@@ -1,19 +1,22 @@
/*-----------------------------------------*\
| ASRockPolychromeUSBController.cpp |
| |
| Driver for ASRock Polychrome USB |
| lighting controller |
| |
| Ed Kambulow (dredvard) 12/20/2020 |
| Shady Nawara (ShadyNawara) 01/16/2023 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| ASRockPolychromeUSBController.cpp |
| |
| Driver for ASRock Polychrome USB motherboards |
| |
| Ed Kambulow (dredvard) 20 Dec 2020 |
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <cstring>
#include <stdio.h>
#include "RGBController.h"
#include "ResourceManager.h"
#include "SettingsManager.h"
#include "ASRockPolychromeUSBController.h"
#include "dependencies/dmiinfo.h"
#include "dmiinfo.h"
#define POLYCHROME_USB_READ_ZONE_CONFIG 0x11
#define POLYCHROME_USB_READ_HEADER 0x14
@@ -54,7 +57,7 @@ PolychromeUSBController::~PolychromeUSBController()
unsigned int PolychromeUSBController::GetChannelCount()
{
return(device_info.size());
return((unsigned int)device_info.size());
}
std::string PolychromeUSBController::GetDeviceLocation()
@@ -76,7 +79,7 @@ std::string PolychromeUSBController::GetSerialString()
{
return("");
}
std::wstring return_wstring = serial_string;
std::string return_string(return_wstring.begin(), return_wstring.end());
@@ -213,13 +216,13 @@ void PolychromeUSBController::WriteZone
unsigned char zone,
unsigned char mode,
unsigned char speed,
RGBColor rgb,
RGBColor rgb,
bool allzone = false
)
{
/*----------------------------------------------------*\
| Get the device info so we can look up the zone type. |
| Get the device info so we can look up the zone type. |
\*----------------------------------------------------*/
PolychromeDeviceInfo device_info = GetPolychromeDevices()[zone];
@@ -234,7 +237,7 @@ void PolychromeUSBController::WriteZone
| Set up message packet with leading 00 |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_SET_ZONE;
usb_buf[0x03] = device_info.zone_type;
usb_buf[0x03] = device_info.zone_type;
usb_buf[0x04] = mode;
if(device_info.rgswap)
@@ -262,7 +265,7 @@ void PolychromeUSBController::WriteZone
void PolychromeUSBController::WriteAllZones
(
const std::vector<PolychromeZoneInfo>& zones_info,
const std::vector<PolychromeZoneInfo>& /*zones_info*/,
const std::vector<zone>& zones
)
{
@@ -380,7 +383,7 @@ void PolychromeUSBController::WriteRGSwap
bool chnl8
)
{
unsigned char rgconfig[1] = {static_cast<unsigned char>(((chnl8 << 7) | (pcb << 6) | (io << 5) | (pch << 4) | (ahdr1 << 3) | (ahdr0 << 2) | (hdr1 << 1) | hdr0))};
unsigned char rgconfig[1] = {static_cast<unsigned char>((((unsigned char)chnl8 << 7) | ((unsigned char)pcb << 6) | ((unsigned char)io << 5) | ((unsigned char)pch << 4) | ((unsigned char)ahdr1 << 3) | ((unsigned char)ahdr0 << 2) | ((unsigned char)hdr1 << 1) | (unsigned char)hdr0))};
WriteHeader(POLYCHROME_USB_RGSWAP_CFG, rgconfig, 1);
}
@@ -434,7 +437,7 @@ PolychromeZoneInfo PolychromeUSBController::GetZoneConfig(unsigned char zone)
| Set up config table request packet |
\*-----------------------------------------------------*/
usb_buf[0x01] = POLYCHROME_USB_READ_ZONE_CONFIG;
usb_buf[0x03] = device_info.zone_type;
usb_buf[0x03] = device_info.zone_type;
/*-----------------------------------------------------*\
| Send packet |
@@ -446,7 +449,7 @@ PolychromeZoneInfo PolychromeUSBController::GetZoneConfig(unsigned char zone)
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
hid_read(dev, usb_buf, 64);
r = usb_buf[0x05];
g = usb_buf[0x06];
b = usb_buf[0x07];
@@ -1,19 +1,21 @@
/*-----------------------------------------*\
| ASRockPolychromeUSBController.h |
| |
| Driver for ASRock Polychrome USB |
| lighting controller |
| |
| Ed Kambulow (dredvard) 12/20/2020 |
| Shady Nawara (ShadyNawara) 01/16/2023 |
\*-----------------------------------------*/
#include "RGBController.h"
#include <hidapi/hidapi.h>
#include <string>
/*---------------------------------------------------------*\
| ASRockPolychromeUSBController.h |
| |
| Driver for ASRock Polychrome USB motherboards |
| |
| Ed Kambulow (dredvard) 20 Dec 2020 |
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "RGBController.h"
/*----------------------------------------------------------------------------------------------*\
| Definitions for Polychrome USB |
\*----------------------------------------------------------------------------------------------*/
@@ -159,7 +161,7 @@ private:
unsigned char configtable[12];
bool rgswapconfig[8] = { 0 };
void SetDeviceInfo();
void SetDeviceInfo();
void ReadConfigTables();
void Commit();
};
@@ -1,13 +1,25 @@
/*---------------------------------------------------------*\
| ASRockPolychromeUSBControllerDetect.cpp |
| |
| Detector for ASRock Polychrome USB motherboards |
| |
| Ed Kambulow (dredvard) 20 Dec 2020 |
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <hidapi/hidapi.h>
#include "Detector.h"
#include "ASRockPolychromeUSBController.h"
#include "RGBController.h"
#include "RGBController_ASRockPolychromeUSB.h"
#include "i2c_smbus.h"
#include "pci_ids.h"
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#include <hidapi/hidapi.h>
/*---------------------------------------------------------*\
| ASRock vendor ID |
@@ -32,5 +44,5 @@ void DetectPolychromeUSBControllers(hid_device_info* info, const std::string& /*
}
}
REGISTER_HID_DETECTOR("ASRock Polychrome USB", DetectPolychromeUSBControllers, ASROCK_VID, ASROCK_MOTHERBOARD_1_PID);
REGISTER_HID_DETECTOR("ASRock Deskmini Addressable LED Strip", DetectPolychromeUSBControllers, ASROCK_VID, ASROCK_DESKMINI_ADDRESSABLE_LED_STRIP_PID);
REGISTER_HID_DETECTOR("ASRock Polychrome USB", DetectPolychromeUSBControllers, ASROCK_VID, ASROCK_MOTHERBOARD_1_PID);
REGISTER_HID_DETECTOR("ASRock Deskmini Addressable LED Strip", DetectPolychromeUSBControllers, ASROCK_VID, ASROCK_DESKMINI_ADDRESSABLE_LED_STRIP_PID);
@@ -1,15 +1,17 @@
/*-----------------------------------------*\
| RGBController_ASRockPolychromeUSB.cpp |
| |
| Generic RGB Interface for OpenRGB |
| ASRock Polychrome USB Driver |
| |
| Ed Kambulow (Dredvard) 12/26/2020 |
| Shady Nawara (ShadyNawara) 01/16/2023 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_ASRockPolychromeUSB.cpp |
| |
| RGBController for ASRock Polychrome USB motherboards |
| |
| Ed Kambulow (dredvard) 20 Dec 2020 |
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_ASRockPolychromeUSB.h"
#include <string.h>
#include "RGBController_ASRockPolychromeUSB.h"
#define ASROCK_USB_MAX_ZONES 8
#define ASROCK_ADDRESSABLE_MAX_LEDS 100
@@ -293,7 +295,7 @@ void RGBController_PolychromeUSB::DeviceUpdateLEDs()
set_mode = active_mode;
}
controller->WriteZone(zone_idx, set_mode, zones_info[zone_idx].speed, zones[zone_idx].colors[0], false);
controller->WriteZone((unsigned char)zone_idx, set_mode, zones_info[zone_idx].speed, zones[zone_idx].colors[0], false);
}
}
@@ -1,12 +1,14 @@
/*-----------------------------------------*\
| RGBController_ASRockPolychromeUSB.h |
| |
| Generic RGB Interface for OpenRGB |
| ASRock Polychrome USB Driver |
| |
| Ed Kambulow (Dredvard) 12/26/2020 |
| Shady Nawara (ShadyNawara) 01/16/2023 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_ASRockPolychromeUSB.h |
| |
| RGBController for ASRock Polychrome USB motherboards |
| |
| Ed Kambulow (dredvard) 20 Dec 2020 |
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
@@ -1,15 +1,17 @@
/*-----------------------------------------*\
| ASRockPolychromeSMBusController.cpp |
| |
| Driver for for ASRock ASR LED and |
| Polychrome RGB lighting controller |
| |
| Adam Honse (CalcProgrammer1) 12/14/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| ASRockASRRGBSMBusController.cpp |
| |
| Driver for SMBus ASRock ASR RGB motherboards |
| |
| Adam Honse (CalcProgrammer1) 14 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "ASRockASRRGBSMBusController.h"
#include <cstring>
#include "dependencies/dmiinfo.h"
#include "dmiinfo.h"
#include "LogManager.h"
#define ASROCK_ZONE_LED_COUNT_MESSAGE_EN "[%s] Zone %i LED count: %02d"
@@ -64,7 +66,7 @@ void ASRockASRRGBSMBusController::SetColorsAndSpeed(uint8_t led, uint8_t red, ui
{
uint8_t color_speed_pkt[4] = { red, green, blue, active_speed };
uint8_t select_led_pkt[1] = { led };
/*-----------------------------------------------------*\
| Select LED |
\*-----------------------------------------------------*/
@@ -1,18 +1,19 @@
/*-----------------------------------------*\
| ASRockASRRGBSMBusController.h |
| |
| Definitions and types for ASRock |
| ASR LED and Polychrome RGB lighting |
| controller |
| |
| Adam Honse (CalcProgrammer1) 12/13/2019 |
\*-----------------------------------------*/
#include "i2c_smbus.h"
#include <string>
/*---------------------------------------------------------*\
| ASRockASRRGBSMBusController.h |
| |
| Driver for SMBus ASRock ASR RGB motherboards |
| |
| Adam Honse (CalcProgrammer1) 13 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include "i2c_smbus.h"
typedef uint8_t polychrome_dev_id;
#define ASROCK_ASR_CONTROLLER_NAME "ASRock ASR RGB SMBus Controller"
@@ -63,7 +64,7 @@ public:
uint8_t GetMode();
void SetColorsAndSpeed(uint8_t led, uint8_t red, uint8_t green, uint8_t blue);
void SetMode(uint8_t zone, uint8_t mode, uint8_t speed);
uint16_t fw_version;
private:
@@ -1,11 +1,13 @@
/*-----------------------------------------*\
| RGBController_ASRockPolychromeSMBus.cpp |
| |
| Generic RGB Interface for OpenRGB |
| ASRock ASR LED and Polychrome RGB Driver |
| |
| Adam Honse (CalcProgrammer1) 12/15/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_ASRRGBSMBus.cpp |
| |
| RGBController for SMBus ASRock ASR LED motherboards |
| |
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_ASRockASRRGBSMBus.h"
@@ -167,7 +169,7 @@ void RGBController_ASRockASRRGBSMBus::ResizeZone(int /*zone*/, int /*new_size*/)
void RGBController_ASRockASRRGBSMBus::DeviceUpdateLEDs()
{
for (std::size_t led = 0; led < colors.size(); led++)
for(int led = 0; led < colors.size(); led++)
{
UpdateSingleLED(led);
}
@@ -0,0 +1,35 @@
/*---------------------------------------------------------*\
| RGBController_ASRRGBSMBus.h |
| |
| RGBController for SMBus ASRock ASR RGB motherboards |
| |
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "ASRockASRRGBSMBusController.h"
class RGBController_ASRockASRRGBSMBus : public RGBController
{
public:
RGBController_ASRockASRRGBSMBus(ASRockASRRGBSMBusController* controller_ptr);
~RGBController_ASRockASRRGBSMBus();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
ASRockASRRGBSMBusController* controller;
};
@@ -1,15 +1,17 @@
/*-----------------------------------------*\
| ASRockPolychromeV1SMBusController.cpp |
| |
| Driver for for ASRock ASR LED and |
| Polychrome RGB lighting controller |
| |
| Adam Honse (CalcProgrammer1) 12/14/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| ASRockPolychromeV1SMBusController.cpp |
| |
| Driver for SMBus ASRock Polychrome V1 motherboards |
| |
| Adam Honse (CalcProgrammer1) 14 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "ASRockPolychromeV1SMBusController.h"
#include <cstring>
#include "dependencies/dmiinfo.h"
#include "ASRockPolychromeV1SMBusController.h"
#include "dmiinfo.h"
#include "LogManager.h"
#define ASROCK_ZONE_LED_COUNT_MESSAGE_EN "[%s] Zone %i LED count: %02d"
@@ -1,19 +1,20 @@
/*-----------------------------------------*\
| ASRockPolychromeV1SMBusController.h |
| |
| Definitions and types for ASRock |
| ASR LED and Polychrome RGB lighting |
| controller |
| |
| Adam Honse (CalcProgrammer1) 12/13/2019 |
\*-----------------------------------------*/
#include "i2c_smbus.h"
#include "RGBController.h"
#include <string>
/*---------------------------------------------------------*\
| ASRockPolychromeV1SMBusController.h |
| |
| Driver for SMBus ASRock Polychrome V1 motherboards |
| |
| Adam Honse (CalcProgrammer1) 13 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include "i2c_smbus.h"
#include "RGBController.h"
typedef uint8_t polychrome_dev_id;
#define ASROCK_V1_CONTROLLER_NAME "ASRock Polychrome v1 SMBus Controller"
@@ -1,11 +1,14 @@
/*-----------------------------------------*\
| RGBController_ASRockPolychromeSMBus.cpp |
| |
| Generic RGB Interface for OpenRGB |
| ASRock ASR LED and Polychrome RGB Driver |
| |
| Adam Honse (CalcProgrammer1) 12/15/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_ASRockPolychromeV1SMBus.cpp |
| |
| RGBController for SMBus ASRock Polychrome V1 |
| motherboards |
| |
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "LogManager.h"
#include "RGBController_ASRockPolychromeV1SMBus.h"
@@ -105,7 +108,7 @@ RGBController_ASRockPolychromeV1SMBus::RGBController_ASRockPolychromeV1SMBus(ASR
mode Music;
Music.name = "Music";
Music.value = POLYCHROME_V1_MODE_MUSIC;
Music.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Music.flags = MODE_FLAG_AUTOMATIC_SAVE;
Music.color_mode = MODE_COLORS_NONE;
modes.push_back(Music);
@@ -122,7 +125,6 @@ RGBController_ASRockPolychromeV1SMBus::RGBController_ASRockPolychromeV1SMBus(ASR
/*---------------------------------------------------------------------*\
| Comment out until per zone modes are working. These are only for ARGB |
\*---------------------------------------------------------------------*/
/*
mode Spring;
Spring.name = "Spring";
Spring.value = POLYCHROME_V1_MODE_SPRING;
@@ -192,7 +194,6 @@ RGBController_ASRockPolychromeV1SMBus::RGBController_ASRockPolychromeV1SMBus(ASR
Rainbow.speed = POLYCHROME_V1_SPEED_DEFAULT_RAINBOW;
Rainbow.color_mode = MODE_COLORS_NONE;
modes.push_back(Rainbow);
*/
/*---------------------------------------------------------------------*\
| This ARGB_Config section is a hack to allow users to configure the |
@@ -0,0 +1,38 @@
/*---------------------------------------------------------*\
| RGBController_ASRockPolychromeV1SMBus.h |
| |
| RGBController for SMBus ASRock Polychrome V1 |
| motherboards |
| |
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "ASRockPolychromeV1SMBusController.h"
class RGBController_ASRockPolychromeV1SMBus : public RGBController
{
public:
RGBController_ASRockPolychromeV1SMBus(ASRockPolychromeV1SMBusController* controller_ptr);
~RGBController_ASRockPolychromeV1SMBus();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
ASRockPolychromeV1SMBusController* controller;
uint8_t getModeIndex(uint8_t mode_value);
std::vector<uint8_t> zoneIndexMap;
};
@@ -1,15 +1,17 @@
/*-----------------------------------------*\
| ASRockPolychromeV2SMBusController.cpp |
| |
| Driver for for ASRock ASR LED and |
| Polychrome RGB lighting controller |
| |
| Adam Honse (CalcProgrammer1) 12/14/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| ASRockPolychromeV2SMBusController.cpp |
| |
| Driver for SMBus ASRock Polychrome V2 motherboards |
| |
| Adam Honse (CalcProgrammer1) 14 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "ASRockPolychromeV2SMBusController.h"
#include <cstring>
#include "dependencies/dmiinfo.h"
#include "ASRockPolychromeV2SMBusController.h"
#include "dmiinfo.h"
#include "LogManager.h"
#define ASROCK_ZONE_LED_COUNT_MESSAGE_EN "[%s] Zone %i LED count: %02d"
@@ -1,18 +1,19 @@
/*-----------------------------------------*\
| ASRockPolychromeSMBusController.h |
| |
| Definitions and types for ASRock |
| ASR LED and Polychrome RGB lighting |
| controller |
| |
| Adam Honse (CalcProgrammer1) 12/13/2019 |
\*-----------------------------------------*/
#include "i2c_smbus.h"
#include <string>
/*---------------------------------------------------------*\
| ASRockPolychromeV2SMBusController.h |
| |
| Driver for SMBus ASRock Polychrome V2 motherboards |
| |
| Adam Honse (CalcProgrammer1) 13 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include "i2c_smbus.h"
typedef uint8_t polychrome_dev_id;
#define ASROCK_V2_CONTROLLER_NAME "ASRock Polychrome v2 SMBus Controller"
@@ -132,7 +133,7 @@ public:
uint8_t zone_led_count[6];
uint16_t fw_version;
private:
std::string device_name;
uint8_t active_zone;
@@ -1,11 +1,14 @@
/*-----------------------------------------*\
| RGBController_ASRockPolychromeV2SMBus.cpp|
| |
| Generic RGB Interface for OpenRGB |
| ASRock ASR LED and Polychrome RGB Driver |
| |
| Adam Honse (CalcProgrammer1) 12/15/2019 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_ASRockPolychromeV2SMBus.cpp |
| |
| RGBController for SMBus ASRock Polychrome V2 |
| motherboards |
| |
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_ASRockPolychromeV2SMBus.h"
@@ -287,7 +290,7 @@ void RGBController_ASRockPolychromeV2SMBus::ResizeZone(int /*zone*/, int /*new_s
void RGBController_ASRockPolychromeV2SMBus::DeviceUpdateLEDs()
{
for (std::size_t led = 0; led < colors.size(); led++)
for(int led = 0; led < colors.size(); led++)
{
UpdateSingleLED(led);
}
@@ -0,0 +1,36 @@
/*---------------------------------------------------------*\
| RGBController_ASRockPolychromeV2SMBus.h |
| |
| RGBController for SMBus ASRock Polychrome V2 |
| motherboards |
| |
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "ASRockPolychromeV2SMBusController.h"
class RGBController_ASRockPolychromeV2SMBus : public RGBController
{
public:
RGBController_ASRockPolychromeV2SMBus(ASRockPolychromeV2SMBusController* controller_ptr);
~RGBController_ASRockPolychromeV2SMBus();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
ASRockPolychromeV2SMBusController* controller;
};
@@ -1,3 +1,18 @@
/*---------------------------------------------------------*\
| ASRockSMBusControllerDetect.cpp |
| |
| Detector for SMBus ASRock ASR RGB and Polychrome |
| motherboards |
| |
| Adam Honse (CalcProgrammer1) 14 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include "Detector.h"
#include "ASRockASRRGBSMBusController.h"
#include "ASRockPolychromeV1SMBusController.h"
@@ -9,9 +24,6 @@
#include "RGBController_ASRockPolychromeV2SMBus.h"
#include "i2c_smbus.h"
#include "pci_ids.h"
#include <vector>
#include <stdio.h>
#include <stdlib.h>
/*******************************************************************************************\
* *
@@ -1,35 +0,0 @@
/*-----------------------------------------*\
| RGBController_ASRockPolychromeV1SMBus.h |
| |
| Generic RGB Interface for OpenRGB |
| ASRock ASR LED and Polychrome RGB Driver |
| |
| Adam Honse (CalcProgrammer1) 12/15/2019 |
\*-----------------------------------------*/
#pragma once
#include "RGBController.h"
#include "ASRockPolychromeV1SMBusController.h"
class RGBController_ASRockPolychromeV1SMBus : public RGBController
{
public:
RGBController_ASRockPolychromeV1SMBus(ASRockPolychromeV1SMBusController* controller_ptr);
~RGBController_ASRockPolychromeV1SMBus();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
ASRockPolychromeV1SMBusController* controller;
uint8_t getModeIndex(uint8_t mode_value);
std::vector<uint8_t> zoneIndexMap;
};
@@ -1,13 +1,14 @@
/*-----------------------------------------*\
| AlienwareController.cpp |
| |
| Driver for Alienware lighting controller |
| |
| Gabriel Marcano (gemarcano) 4/21/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AlienwareController.cpp |
| |
| Driver for Dell Alienware RGB USB controller |
| |
| Gabriel Marcano (gemarcano) 21 Apr 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController.h"
#include "AlienwareController.h"
#include <cstring>
#include <cstdint>
#include <map>
@@ -15,6 +16,9 @@
#include <chrono>
#include <algorithm>
#include <sstream>
#include "RGBController.h"
#include "AlienwareController.h"
#include "LogManager.h"
typedef uint32_t alienware_platform_id;
@@ -24,8 +28,10 @@ typedef uint32_t alienware_platform_id;
\*---------------------------------------------------------*/
static const std::map<alienware_platform_id, uint8_t> zone_quirks_table =
{
{ 0x0C01, 4 }, // Dell G5 SE 5505
{ 0x0A01, 16 } // Dell G7 15 7500
{ 0x0C01, 4 }, // Dell G5 SE 5505
{ 0x0A01, 16 }, // Dell G7 15 7500
{ 0x0E03, 4 } // Dell G15 5511
};
/*---------------------------------------------------------*\
@@ -39,7 +45,8 @@ static const std::map<alienware_platform_id, std::vector<const char*>> zone_name
"Light Bar 1", "Light Bar 2", "Light Bar 3",
"Light Bar 4", "Light Bar 5", "Light Bar 6",
"Light Bar 7", "Light Bar 8", "Light Bar 9",
"Light Bar 10", "Light Bar 11", "Light Bar 12" } }
"Light Bar 10", "Light Bar 11", "Light Bar 12" } },
{ 0x0E03, { "Left", "Middle", "Right", "Numpad" } }
};
static void SendHIDReport(hid_device *dev, const unsigned char* usb_buf, size_t usb_buf_size)
@@ -113,10 +120,13 @@ AlienwareController::AlienwareController(hid_device* dev_handle, const hid_devic
if(zone_names_table.count(platform_id))
{
LOG_INFO("[%s] Known platform: %8X, Number of zones: %d", ALIENWARE_CONTROLLER_NAME, platform_id, number_of_zones);
zone_names = zone_names_table.at(platform_id);
}
else
{
LOG_WARNING("[%s] Unknown platform: %8X, Number of zones: %d", ALIENWARE_CONTROLLER_NAME, platform_id, number_of_zones);
/*-------------------------------------------------*\
| If this is an unknown controller, set the name of |
| all regions to "Unknown" |
@@ -160,7 +170,7 @@ AlienwareController::~AlienwareController()
unsigned int AlienwareController::GetZoneCount()
{
return(zones.size());
return((unsigned int)zones.size());
}
std::vector<const char*> AlienwareController::GetZoneNames()
@@ -265,7 +275,7 @@ bool AlienwareController::Dim(std::vector<uint8_t> zones, double percent)
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
uint16_t num_zones = zones.size();
uint16_t num_zones = (uint16_t)zones.size();
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
@@ -369,7 +379,7 @@ bool AlienwareController::SelectZones(const std::vector<uint8_t>& zones)
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
uint16_t num_zones = zones.size();
uint16_t num_zones = (uint16_t)zones.size();
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
@@ -508,7 +518,7 @@ bool AlienwareController::SetColorDirect(RGBColor color, std::vector<uint8_t> zo
/*-----------------------------------------------------*\
| Set up message packet with leading 00, per hidapi |
\*-----------------------------------------------------*/
uint16_t num_zones = zones.size();
uint16_t num_zones = (uint16_t)zones.size();
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x03;
@@ -1,25 +1,27 @@
/*-----------------------------------------*\
| AlienwareController.h |
| |
| Driver for Dell Alienware RGB USB |
| controller |
| |
| Gabriel Marcano (gemarcano) 4/19/2021 |
\*-----------------------------------------*/
#include "RGBController.h"
#include <hidapi/hidapi.h>
#include <string>
/*---------------------------------------------------------*\
| AlienwareController.h |
| |
| Driver for Dell Alienware RGB USB controller |
| |
| Gabriel Marcano (gemarcano) 19 Apr 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "RGBController.h"
/*----------------------------------------------------------------------------------------------*\
| Definitions for Alienware Controller |
\*----------------------------------------------------------------------------------------------*/
#define ALIENWARE_REPORT_SIZE 33
#define HIDAPI_ALIENWARE_REPORT_SIZE (ALIENWARE_REPORT_SIZE + 1)
#define ALIENWARE_CONTROLLER_NAME "AlienWare Controller"
enum
{
ALIENWARE_COMMAND_REPORT = 0x20, /* Set report type to get */
@@ -1,3 +1,12 @@
/*---------------------------------------------------------*\
| AlienwareControllerDetect.cpp |
| |
| Detector for Dell Alienware RGB USB controller |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AlienwareController.h"
#include "RGBController.h"
@@ -11,7 +20,7 @@
/*---------------------------------------------------------*\
| Alienware product ID |
\*---------------------------------------------------------*/
#define ALIENWARE_G_SERIES_PID 0x0550
#define ALIENWARE_G_SERIES_PID 0x0550
void DetectAlienwareControllers(hid_device_info* info, const std::string& name)
{
@@ -1,16 +1,17 @@
/*-----------------------------------------*\
| RGBController_Alienware.cpp |
| |
| Generic RGB Interface for OpenRGB |
| Alienware USB Driver |
| |
| Gabriel Marcano (gemarcano) 4/19/2021 |
\*-----------------------------------------*/
#include "RGBController_Alienware.h"
/*---------------------------------------------------------*\
| RGBController_Alienware.cpp |
| |
| RGBController for Dell Alienware RGB USB controller |
| |
| Gabriel Marcano (gemarcano) 19 Apr 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <thread>
#include <chrono>
#include "RGBController_Alienware.h"
/**------------------------------------------------------------------*\
@name Alienware
@@ -213,7 +214,7 @@ void RGBController_Alienware::DeviceUpdateMode()
/*-----------------------------------------------------*\
| Setup state per zone |
\*-----------------------------------------------------*/
for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
for(uint8_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
{
zone current_zone = zones[zone_idx];
@@ -1,19 +1,20 @@
/*-----------------------------------------*\
| RGBController_Alienware.h |
| |
| Generic RGB Interface for OpenRGB |
| Alienware RGB USB Driver |
| |
| Gabriel Marcano (gemarcano) 4/19/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_Alienware.h |
| |
| RGBController for Dell Alienware RGB USB controller |
| |
| Gabriel Marcano (gemarcano) 19 Apr 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <chrono>
#include "RGBController.h"
#include "AlienwareController.h"
#include <chrono>
class RGBController_Alienware : public RGBController
{
public:
@@ -0,0 +1,448 @@
/*---------------------------------------------------------*\
| AlienwareAW410KController.cpp |
| |
| Driver for Alienware AW410K keyboard |
| |
| based on AW510K controller by Mohamad Sallal (msallal) |
| Dominik Mikolajczyk (dmiko) 23 Oct 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <cstring>
#include "AlienwareAW410KController.h"
AlienwareAW410KController::AlienwareAW410KController(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
location = path;
SendCommit();
}
AlienwareAW410KController::~AlienwareAW410KController()
{
hid_close(dev);
}
std::string AlienwareAW410KController::GetDeviceLocation()
{
return("HID: " + location);
}
std::string AlienwareAW410KController::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
if(ret != 0)
{
return("");
}
std::wstring return_wstring = serial_string;
std::string return_string(return_wstring.begin(), return_wstring.end());
return(return_string);
}
void AlienwareAW410KController::SendCommit()
{
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Commit packet |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x05;
usb_buf[0x02] = 0x01;
usb_buf[0x0A] = 0x10;
usb_buf[0x0B] = 0x0A;
usb_buf[0x0C] = 0x01;
usb_buf[0x0D] = 0x02;
usb_buf[0x0E] = 0x01;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 20 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(20));
}
void AlienwareAW410KController::SendfeatureReport
(
unsigned char first_byte,
unsigned char second_byte,
unsigned char third_byte,
unsigned char forth_byte
)
{
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Feature report packet |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = first_byte;
usb_buf[0x02] = second_byte;
usb_buf[0x03] = third_byte;
usb_buf[0x04] = forth_byte;
/*-----------------------------------------------------*\
| Send Feature report packet |
\*-----------------------------------------------------*/
hid_send_feature_report(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 10 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
void AlienwareAW410KController::SendEdit()
{
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Edit packet |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x01;
usb_buf[0x02] = 0x00;
usb_buf[0x03] = 0x01;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 2 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(2));
}
void AlienwareAW410KController::SendInitialize()
{
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Commit packet |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x0E;
usb_buf[0x02] = 0x01;
usb_buf[0x03] = 0x00;
usb_buf[0x04] = 0x01;
usb_buf[0x05] = 0xAD;
usb_buf[0x06] = 0x80;
usb_buf[0x07] = 0x10;
usb_buf[0x08] = 0xA5;
usb_buf[0x0A] = 0x0A;
usb_buf[0x12] = 0x01;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 2 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(2));
}
void AlienwareAW410KController::SetDirect
(
unsigned char /*zone*/,
unsigned char r,
unsigned char g,
unsigned char b
)
{
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Lighting Control packet |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x05;
usb_buf[0x02] = 0x01;
usb_buf[0x03] = 0x01;
usb_buf[0x04] = r;
usb_buf[0x05] = g;
usb_buf[0x06] = b;
usb_buf[0x0B] = 0x0A;
usb_buf[0x0D] = 0x01;
usb_buf[0x0E] = 0x01;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, (unsigned char *)usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 2 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(2));
}
void AlienwareAW410KController::SendDirectOn
(
std::vector<SelectedButtons> &frame_data
)
{
SendfeatureReport(0x0E, (unsigned char)frame_data.size(), 0x00, 0x01);
/*-----------------------------------------------*\
| To Guarantee the data are always %4 =0 append |
| zeros at end of last packet |
\*-----------------------------------------------*/
for(unsigned int i = 0; i < (frame_data.size() % 4); i++)
{
SelectedButtons key;
key.idx = 0x00;
key.red = 0x00;
key.green = 0x00;
key.blue = 0x00;
frame_data.push_back(key);
}
unsigned char usb_buf[65];
unsigned int frame_idx = 0;
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, 65);
for(unsigned int packet_idx = 0; packet_idx < frame_data.size(); packet_idx++)
{
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x0E;
usb_buf[0x02] = 0x01;
usb_buf[0x03] = 0x00;
usb_buf[0x04] = ++frame_idx;
usb_buf[0x05] = frame_data[packet_idx].idx;
usb_buf[0x06] = 0x81;
usb_buf[0x07] = 0x00;
usb_buf[0x08] = 0xA5;
usb_buf[0x0A] = 0x0A;
usb_buf[0x0B] = frame_data[packet_idx].red;
usb_buf[0x0C] = frame_data[packet_idx].green;
usb_buf[0x0D] = frame_data[packet_idx].blue;
usb_buf[0x12] = 0x01;
usb_buf[0x14] = frame_data[++packet_idx].idx;
usb_buf[0x15] = 0x81;
usb_buf[0x16] = 0x00;
usb_buf[0x17] = 0xA5;
usb_buf[0x19] = 0x0A;
usb_buf[0x1A] = frame_data[packet_idx].red;
usb_buf[0x1B] = frame_data[packet_idx].green;
usb_buf[0x1C] = frame_data[packet_idx].blue;
usb_buf[0x21] = 0x01;
usb_buf[0x23] = frame_data[++packet_idx].idx;
usb_buf[0x24] = 0x81;
usb_buf[0x25] = 0x00;
usb_buf[0x26] = 0xA5;
usb_buf[0x28] = 0x0A;
usb_buf[0x29] = frame_data[packet_idx].red;
usb_buf[0x2A] = frame_data[packet_idx].green;
usb_buf[0x2B] = frame_data[packet_idx].blue;
usb_buf[0x30] = 0x01;
usb_buf[0x32] = frame_data[++packet_idx].idx;
usb_buf[0x33] = 0x81;
usb_buf[0x34] = 0x00;
usb_buf[0x35] = 0xA5;
usb_buf[0x37] = 0x0A;
usb_buf[0x38] = frame_data[packet_idx].red;
usb_buf[0x39] = frame_data[packet_idx].green;
usb_buf[0x3A] = frame_data[packet_idx].blue;
usb_buf[0x3F] = 0x01;
hid_write(dev, (unsigned char *)usb_buf, 65);
}
}
void AlienwareAW410KController::SetMode
(
unsigned char mode,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
unsigned char green,
unsigned char blue
)
{
SendMode(ALIENWARE_AW410K_ZONE_MODE_KEYBOARD, mode, speed, direction, colorMode, red, green, blue);
SendCommit();
}
void AlienwareAW410KController::UpdateSingleLED
(
unsigned char led,
unsigned char red,
unsigned char green,
unsigned char blue
)
{
SendfeatureReport(0x0E, 0x01, 0x00, 0x01);
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Single LED packet |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x0E;
usb_buf[0x02] = 0x01;
usb_buf[0x03] = 0x00;
usb_buf[0x04] = 0x01;
usb_buf[0x05] = led;
usb_buf[0x06] = 0x81;
usb_buf[0x07] = 0x00;
usb_buf[0x08] = 0xA5;
usb_buf[0x09] = 0x00;
usb_buf[0x0A] = 0x0A;
usb_buf[0x0B] = red;
usb_buf[0x0C] = green;
usb_buf[0x0D] = blue;
usb_buf[0x12] = 0x01;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 20 milliseconds |
\*-----------------------------------------------------*/
std::this_thread::sleep_for(std::chrono::milliseconds(20));
}
void AlienwareAW410KController::SendMode
(
unsigned char /*zone*/,
unsigned char mode,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
unsigned char green,
unsigned char blue
)
{
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Mode Control packet |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x05;
usb_buf[0x02] = 0x01;
usb_buf[0x03] = mode;
usb_buf[0x04] = red;
usb_buf[0x05] = green;
usb_buf[0x06] = blue;
usb_buf[0x0A] = speed;
usb_buf[0x0B] = 0x0A;
usb_buf[0x0D] = 0x01;
usb_buf[0x0E] = colorMode;
usb_buf[0x0F] = direction;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
}
void AlienwareAW410KController::SetMorphMode
(
unsigned char mode,
unsigned char speed,
unsigned char red1,
unsigned char green1,
unsigned char blue1,
unsigned char red2,
unsigned char green2,
unsigned char blue2
)
{
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
\*-----------------------------------------------------*/
memset(usb_buf, 0x00, sizeof(usb_buf));
/*-----------------------------------------------------*\
| Set up Morph Mode packet |
\*-----------------------------------------------------*/
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x05;
usb_buf[0x02] = 0x01;
usb_buf[0x03] = mode;
usb_buf[0x04] = red1;
usb_buf[0x05] = green1;
usb_buf[0x06] = blue1;
usb_buf[0x07] = red2;
usb_buf[0x08] = green2;
usb_buf[0x09] = blue2;
usb_buf[0x0E] = 0x02;
usb_buf[0x0A] = speed;
usb_buf[0x0B] = 0x0A;
usb_buf[0x0D] = 0x01;
usb_buf[0x0E] = ALIENWARE_AW410K_TWO_USER_DEFINED_COLOR_MODE;
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
}
@@ -0,0 +1,155 @@
/*---------------------------------------------------------*\
| AlienwareAW410KController.h |
| |
| Driver for Alienware AW410K keyboard |
| |
| based on AW510K controller by Mohamad Sallal (msallal) |
| Dominik Mikolajczyk (dmiko) 23 Oct 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#include "RGBController.h"
enum
{
ALIENWARE_AW410K_ZONE_MODE_KEYBOARD = 0x01,
};
enum
{
ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD = 0x01,
ALIENWARE_AW410K_ZONE_DIRECT_MEDIA = 0x02,
ALIENWARE_AW410K_ZONE_DIRECT_INDICATORS = 0x40,
};
enum
{
ALIENWARE_AW410K_MODE_OFF = 0x00,
ALIENWARE_AW410K_MODE_DIRECT = 0x01,
ALIENWARE_AW410K_MODE_PULSE = 0x02,
ALIENWARE_AW410K_MODE_MORPH = 0x03,
ALIENWARE_AW410K_MODE_BREATHING = 0x07,
ALIENWARE_AW410K_MODE_SPECTRUM = 0x08,
ALIENWARE_AW410K_MODE_SINGLE_WAVE = 0x0F,
ALIENWARE_AW410K_MODE_RAINBOW_WAVE = 0x10,
ALIENWARE_AW410K_MODE_SCANNER = 0x11,
ALIENWARE_AW410K_MODE_STATIC = 0x13,
};
enum
{
ALIENWARE_AW410K_SPEED_SLOWEST = 0x2D, /* Slowest speed */
ALIENWARE_AW410K_SPEED_NORMAL = 0x19, /* Normal speed */
ALIENWARE_AW410K_SPEED_FASTEST = 0x0A, /* Fastest speed */
};
enum
{
ALIENWARE_AW410K_DIRECTION_LEFT_TO_RIGHT = 0x01,
ALIENWARE_AW410K_DIRECTION_RIGHT_TO_LEFT = 0x02,
ALIENWARE_AW410K_DIRECTION_TOP_TO_BOTTOM = 0x03,
ALIENWARE_AW410K_DIRECTION_BOTTOM_TO_TOP = 0x04,
};
enum
{
ALIENWARE_AW410K_SINGLE_COLOR_MODE = 0x01,
ALIENWARE_AW410K_TWO_USER_DEFINED_COLOR_MODE= 0x02,
ALIENWARE_AW410K_RANBOW_COLOR_MODE = 0x03,
};
struct SelectedButtons
{
unsigned char idx;
unsigned char red;
unsigned char green;
unsigned char blue;
};
class AlienwareAW410KController
{
public:
AlienwareAW410KController(hid_device* dev_handle, const char* path);
~AlienwareAW410KController();
std::string GetDeviceLocation();
std::string GetSerialString();
void SendInitialize();
void SendCommit();
void SendfeatureReport
(
unsigned char first_byte,
unsigned char second_byte,
unsigned char third_byte,
unsigned char forth_byte
);
void SendEdit();
void SetDirect
(
unsigned char zone,
unsigned char r,
unsigned char g,
unsigned char b
);
void SendDirectOn
(
std::vector<SelectedButtons> &frame_data
);
void SetMode
(
unsigned char mode,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
unsigned char green,
unsigned char blue
);
void SetMorphMode
(
unsigned char mode,
unsigned char speed,
unsigned char red1,
unsigned char green1,
unsigned char blue1,
unsigned char red2,
unsigned char green2,
unsigned char blue2
);
void UpdateSingleLED
(
unsigned char led,
unsigned char red,
unsigned char green,
unsigned char blue
);
private:
hid_device* dev;
std::string location;
void SendMode
(
unsigned char zone,
unsigned char mode,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
unsigned char green,
unsigned char blue
);
};
@@ -0,0 +1,482 @@
/*---------------------------------------------------------*\
| RGBController_AlienwareAW410K.cpp |
| |
| RGBController for Alienware AW410K keyboard |
| |
| based on AW510K controller by Mohamad Sallal (msallal) |
| Dominik Mikolajczyk (dmiko) 23 Oct 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <iterator>
#include "RGBControllerKeyNames.h"
#include "RGBController_AlienwareAW410K.h"
//0xFFFFFFFF indicates an unused entry in matrix
#define NA 0xFFFFFFFF
int GetAW410K_WaveDirection(int input);
static unsigned int matrix_map[6][24] =
{ { 0, NA, 1, 2, 3, 4, NA, 5, 6, 7, 8, 9, 10, 11, 12, NA, 13, 14, 15, NA, NA, 16, 17, 18 },
{ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, NA, NA, 33, 34, 35, NA, 36, 37, 38, 39 },
{ 40, NA, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, NA, 54, 55, 56, NA, 57, 58, 59, 60 },
{ 61, NA, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, NA, 73, NA, NA, NA, NA, NA, 74, 75, 76, NA },
{ 77, NA, NA, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, NA, NA, NA, 89, NA, NA, 90, 91, 92, 93 },
{ 94, NA, 95, 96, NA, NA, NA, 97, NA, NA, NA, 98, 99, 100, 101, NA, 102, 103, 104, NA, 105, NA, 106, NA }};
static const char* zone_names[] =
{
"AW410K",
};
static zone_type zone_types[] =
{
ZONE_TYPE_MATRIX,
};
static const unsigned int zone_sizes[] =
{
107,
};
typedef struct
{
const char * name;
const unsigned char zone;
const unsigned char idx;
} aw410k_led_type;
static const aw410k_led_type led_names[] =
{
/* Key Label Zone, Index */
{ KEY_EN_ESCAPE, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xB0 },
{ KEY_EN_F1, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x98 },
{ KEY_EN_F2, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x90 },
{ KEY_EN_F3, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x88 },
{ KEY_EN_F4, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x80 },
{ KEY_EN_F5, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x70 },
{ KEY_EN_F6, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x68 },
{ KEY_EN_F7, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x60 },
{ KEY_EN_F8, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x58 },
{ KEY_EN_F9, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x50 },
{ KEY_EN_F10, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x48 },
{ KEY_EN_F11, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x40 },
{ KEY_EN_F12, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x38 },
{ KEY_EN_PRINT_SCREEN, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x30 },
{ KEY_EN_SCROLL_LOCK, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x28 },
{ KEY_EN_PAUSE_BREAK, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x20 },
{ KEY_EN_MEDIA_MUTE, ALIENWARE_AW410K_ZONE_DIRECT_MEDIA, 0x18 },
{ KEY_EN_MEDIA_VOLUME_DOWN, ALIENWARE_AW410K_ZONE_DIRECT_MEDIA, 0x10 },
{ KEY_EN_MEDIA_VOLUME_UP, ALIENWARE_AW410K_ZONE_DIRECT_MEDIA, 0x08 },
{ KEY_EN_BACK_TICK, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xB1 },
{ KEY_EN_1, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xA1 },
{ KEY_EN_2, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x99 },
{ KEY_EN_3, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x91 },
{ KEY_EN_4, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x89 },
{ KEY_EN_5, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x81 },
{ KEY_EN_6, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x79 },
{ KEY_EN_7, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x71 },
{ KEY_EN_8, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x69 },
{ KEY_EN_9, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x61 },
{ KEY_EN_0, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x59 },
{ KEY_EN_MINUS, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x51 },
{ KEY_EN_EQUALS, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x49 },
{ KEY_EN_BACKSPACE, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x39 },
{ KEY_EN_INSERT, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x31 },
{ KEY_EN_HOME, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x29 },
{ KEY_EN_PAGE_UP, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x21 },
{ KEY_EN_NUMPAD_LOCK, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x19 },
{ KEY_EN_NUMPAD_DIVIDE, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x11 },
{ KEY_EN_NUMPAD_TIMES, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x09 },
{ KEY_EN_NUMPAD_MINUS, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x01 },
{ KEY_EN_TAB, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xB2 },
{ KEY_EN_Q, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xA2 },
{ KEY_EN_W, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x9A },
{ KEY_EN_E, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x92 },
{ KEY_EN_R, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x8A },
{ KEY_EN_T, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x82 },
{ KEY_EN_Y, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x7A },
{ KEY_EN_U, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x72 },
{ KEY_EN_I, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x6A },
{ KEY_EN_O, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x62 },
{ KEY_EN_P, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x5A },
{ KEY_EN_LEFT_BRACKET, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x52 },
{ KEY_EN_RIGHT_BRACKET, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x4A },
{ KEY_EN_ANSI_BACK_SLASH, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x42 },
{ KEY_EN_DELETE, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x32 },
{ KEY_EN_END, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x2A },
{ KEY_EN_PAGE_DOWN, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x22 },
{ KEY_EN_NUMPAD_7, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x1A },
{ KEY_EN_NUMPAD_8, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x12 },
{ KEY_EN_NUMPAD_9, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x0A },
{ KEY_EN_NUMPAD_PLUS, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x03 },
{ KEY_EN_CAPS_LOCK, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xB3 },
{ KEY_EN_A, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xA3 },
{ KEY_EN_S, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x9B },
{ KEY_EN_D, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x93 },
{ KEY_EN_F, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x8B },
{ KEY_EN_G, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x83 },
{ KEY_EN_H, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x7B },
{ KEY_EN_J, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x73 },
{ KEY_EN_K, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x6B },
{ KEY_EN_L, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x63 },
{ KEY_EN_SEMICOLON, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x5B },
{ KEY_EN_QUOTE, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x53 },
{ KEY_EN_ANSI_ENTER, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x43 },
{ KEY_EN_NUMPAD_4, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x1B },
{ KEY_EN_NUMPAD_5, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x13 },
{ KEY_EN_NUMPAD_6, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x0B },
{ KEY_EN_LEFT_SHIFT, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xB4 },
{ KEY_EN_Z, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xA4 },
{ KEY_EN_X, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x9C },
{ KEY_EN_C, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x94 },
{ KEY_EN_V, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x8C },
{ KEY_EN_B, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x84 },
{ KEY_EN_N, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x7C },
{ KEY_EN_M, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x74 },
{ KEY_EN_COMMA, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x6C },
{ KEY_EN_PERIOD, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x64 },
{ KEY_EN_FORWARD_SLASH, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x5C },
{ KEY_EN_RIGHT_SHIFT, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x4C },
{ KEY_EN_UP_ARROW, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x2C },
{ KEY_EN_NUMPAD_1, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x1C },
{ KEY_EN_NUMPAD_2, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x14 },
{ KEY_EN_NUMPAD_3, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x0C },
{ KEY_EN_NUMPAD_ENTER, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x05 },
{ KEY_EN_LEFT_CONTROL, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xB5 },
{ KEY_EN_LEFT_WINDOWS, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xAD },
{ KEY_EN_LEFT_ALT, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0xA5 },
{ KEY_EN_SPACE, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x85 },
{ KEY_EN_RIGHT_ALT, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x65 },
{ KEY_EN_RIGHT_FUNCTION, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x5D },
{ KEY_EN_MENU, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x55 },
{ KEY_EN_RIGHT_CONTROL, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x4D },
{ KEY_EN_LEFT_ARROW, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x35 },
{ KEY_EN_DOWN_ARROW, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x2D },
{ KEY_EN_RIGHT_ARROW, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x25 },
{ KEY_EN_NUMPAD_0, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x1D },
{ KEY_EN_NUMPAD_PERIOD, ALIENWARE_AW410K_ZONE_DIRECT_KEYBOARD, 0x0D }
};
/**------------------------------------------------------------------*\
@name Alienware AW410 Keyboard
@category Keyboard
@type USB
@save :x:
@direct :white_check_mark:
@effects :white_check_mark:
@detectors DetectAlienwareAW410KControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_AlienwareAW410K::RGBController_AlienwareAW410K(AlienwareAW410KController* controller_ptr)
{
controller = controller_ptr;
name = "Alienware AW410K Keyboard Device";
vendor = "Alienware";
type = DEVICE_TYPE_KEYBOARD;
description = "Alienware AW410K Keyboard Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.name = "Direct";
Direct.value = ALIENWARE_AW410K_MODE_DIRECT;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
mode Static;
Static.name = "Static";
Static.value = ALIENWARE_AW410K_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
Static.colors_min = 1;
Static.colors_max = 1;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.colors.resize(1);
modes.push_back(Static);
mode Pulse;
Pulse.name = "Pulse";
Pulse.value = ALIENWARE_AW410K_MODE_PULSE;
Pulse.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
Pulse.color_mode = MODE_COLORS_MODE_SPECIFIC;
Pulse.speed_min = ALIENWARE_AW410K_SPEED_SLOWEST;
Pulse.speed_max = ALIENWARE_AW410K_SPEED_NORMAL;
Pulse.speed = ALIENWARE_AW410K_SPEED_NORMAL;
Pulse.colors_min = 1;
Pulse.colors_max = 1;
Pulse.colors.resize(1);
modes.push_back(Pulse);
mode Morph;
Morph.name = "Morph";
Morph.value = ALIENWARE_AW410K_MODE_MORPH;
Morph.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR;
Morph.color_mode = MODE_COLORS_MODE_SPECIFIC;
Morph.speed_min = ALIENWARE_AW410K_SPEED_SLOWEST;
Morph.speed_max = ALIENWARE_AW410K_SPEED_NORMAL;
Morph.speed = ALIENWARE_AW410K_SPEED_NORMAL;
Morph.colors_min = 2;
Morph.colors_max = 2;
Morph.colors.resize(2);
modes.push_back(Morph);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = ALIENWARE_AW410K_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_SPEED;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.colors.resize(1);
Breathing.speed_min = ALIENWARE_AW410K_SPEED_SLOWEST;
Breathing.speed_max = ALIENWARE_AW410K_SPEED_FASTEST;
Breathing.speed = ALIENWARE_AW410K_SPEED_NORMAL;
modes.push_back(Breathing);
mode SingleWave;
SingleWave.name = "Single Wave";
SingleWave.value = ALIENWARE_AW410K_MODE_SINGLE_WAVE;
SingleWave.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_DIRECTION_UD;
SingleWave.speed_min = ALIENWARE_AW410K_SPEED_SLOWEST;
SingleWave.speed_max = ALIENWARE_AW410K_SPEED_FASTEST;
SingleWave.speed = ALIENWARE_AW410K_SPEED_NORMAL;
SingleWave.color_mode = MODE_COLORS_MODE_SPECIFIC;
SingleWave.colors_min = 1;
SingleWave.colors_max = 1;
SingleWave.colors.resize(1);
modes.push_back(SingleWave);
mode RainbowWave;
RainbowWave.name = "Rainbow Wave";
RainbowWave.value = ALIENWARE_AW410K_MODE_RAINBOW_WAVE;
RainbowWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_DIRECTION_UD;
RainbowWave.speed_min = ALIENWARE_AW410K_SPEED_SLOWEST;
RainbowWave.speed_max = ALIENWARE_AW410K_SPEED_FASTEST;
RainbowWave.speed = ALIENWARE_AW410K_SPEED_NORMAL;
RainbowWave.colors_min = 1;
RainbowWave.colors_max = 1;
RainbowWave.color_mode = MODE_COLORS_MODE_SPECIFIC;
RainbowWave.colors.resize(1);
modes.push_back(RainbowWave);
mode Off;
Off.name = "Off";
Off.value = ALIENWARE_AW410K_MODE_OFF;
Off.flags = 0;
Off.color_mode = MODE_COLORS_NONE;
modes.push_back(Off);
SetupZones();
std::copy(colors.begin(), colors.end(),std::back_inserter(current_colors));
}
RGBController_AlienwareAW410K::~RGBController_AlienwareAW410K()
{
/*---------------------------------------------------------*\
| Delete the matrix map |
\*---------------------------------------------------------*/
for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++)
{
if(zones[zone_index].matrix_map != NULL)
{
delete zones[zone_index].matrix_map;
}
}
delete controller;
}
void RGBController_AlienwareAW410K::SetupZones()
{
/*---------------------------------------------------------*\
| Set up zones |
\*---------------------------------------------------------*/
unsigned int total_led_count = 0;
for(unsigned int zone_idx = 0; zone_idx < 1; zone_idx++)
{
zone new_zone;
new_zone.name = zone_names[zone_idx];
new_zone.type = zone_types[zone_idx];
new_zone.leds_min = zone_sizes[zone_idx];
new_zone.leds_max = zone_sizes[zone_idx];
new_zone.leds_count = zone_sizes[zone_idx];
if(zone_types[zone_idx] == ZONE_TYPE_MATRIX)
{
new_zone.matrix_map = new matrix_map_type;
new_zone.matrix_map->height = 6;
new_zone.matrix_map->width = 24;
new_zone.matrix_map->map = (unsigned int *)&matrix_map;
}
else
{
new_zone.matrix_map = NULL;
}
zones.push_back(new_zone);
total_led_count += zone_sizes[zone_idx];
}
for(unsigned int led_idx = 0; led_idx < total_led_count; led_idx++)
{
led new_led;
new_led.name = led_names[led_idx].name;
new_led.value = led_names[led_idx].idx;
leds.push_back(new_led);
}
SetupColors();
}
void RGBController_AlienwareAW410K::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AlienwareAW410K::DeviceUpdateLEDs()
{
std::vector<SelectedButtons> frame_buf_keys;
std::vector<RGBColor> new_colors;
std::copy(colors.begin(), colors.end(),std::back_inserter(new_colors));
for(std::size_t led_idx = 0; led_idx < leds.size(); led_idx++)
{
SelectedButtons key;
key.idx = (unsigned char)leds[led_idx].value;
key.red = RGBGetRValue(colors[led_idx]);
key.green = RGBGetGValue(colors[led_idx]);
key.blue = RGBGetBValue(colors[led_idx]);
frame_buf_keys.push_back(key);
}
controller->SendInitialize();
controller->SendfeatureReport(0x05, 0x01, 0x51, 0x00);
controller->SendCommit();
if(frame_buf_keys.size() > 0)
{
controller->SendDirectOn(frame_buf_keys);
}
std::copy(new_colors.begin(), new_colors.end(),current_colors.begin());
}
void RGBController_AlienwareAW410K::UpdateZoneLEDs(int zone)
{
controller->SetDirect((unsigned char) zone, RGBGetRValue(zones[zone].colors[0]), RGBGetGValue(zones[zone].colors[0]), RGBGetBValue(zones[zone].colors[0]));
}
void RGBController_AlienwareAW410K::UpdateSingleLED(int led)
{
controller->UpdateSingleLED(leds[led].value, RGBGetRValue(colors[led]), RGBGetGValue(colors[led]), RGBGetBValue(colors[led]));
}
void RGBController_AlienwareAW410K::DeviceUpdateMode()
{
if(active_mode == 0xFFFF)
{
UpdateLEDs();
return;
}
controller->SendfeatureReport(0x05, 0x01, 0x51, 0x00);
unsigned char red = 0;
unsigned char grn = 0;
unsigned char blu = 0;
if(modes[active_mode].color_mode == MODE_COLORS_MODE_SPECIFIC)
{
red = RGBGetRValue(modes[active_mode].colors[0]);
grn = RGBGetGValue(modes[active_mode].colors[0]);
blu = RGBGetBValue(modes[active_mode].colors[0]);
}
switch(modes[active_mode].value)
{
case ALIENWARE_AW410K_MODE_DIRECT:
/*-------------------------------------------------------------*\
| Load LEDs again in case of profile load etc. |
\*-------------------------------------------------------------*/
DeviceUpdateLEDs();
break;
case ALIENWARE_AW410K_MODE_MORPH:
/*-------------------------------------------------------------*\
| In case of morph it requires two colors (color1 and color2) |
\*-------------------------------------------------------------*/
{
unsigned char red2 = RGBGetRValue(modes[active_mode].colors[1]);
unsigned char grn2 = RGBGetGValue(modes[active_mode].colors[1]);
unsigned char blu2 = RGBGetBValue(modes[active_mode].colors[1]);
controller->SetMorphMode(modes[active_mode].value, modes[active_mode].speed, red, grn, blu, red2, grn2, blu2);
}
break;
case ALIENWARE_AW410K_MODE_SPECTRUM:
/*-------------------------------------------------------------*\
| Spectrum only set mode, speed and colorMode |
\*-------------------------------------------------------------*/
controller->SetMode(modes[active_mode].value, modes[active_mode].speed, 0x00, ALIENWARE_AW410K_RANBOW_COLOR_MODE, 0x00, 0x00, 0x00);
break;
case ALIENWARE_AW410K_MODE_SINGLE_WAVE:
/*-------------------------------------------------------------*\
| Wave only set mode, speed, direction and colorMode |
\*-------------------------------------------------------------*/
{
int waveDirection = GetAW410K_WaveDirection(modes[active_mode].direction);
controller->SetMode(modes[active_mode].value, modes[active_mode].speed, waveDirection, ALIENWARE_AW410K_SINGLE_COLOR_MODE, red, grn, blu);
}
break;
case ALIENWARE_AW410K_MODE_RAINBOW_WAVE:
/*-------------------------------------------------------------*\
| Wave only set mode, speed, direction and colorMode |
\*-------------------------------------------------------------*/
{
int waveDirection = GetAW410K_WaveDirection(modes[active_mode].direction);
controller->SetMode(modes[active_mode].value, modes[active_mode].speed, waveDirection, ALIENWARE_AW410K_RANBOW_COLOR_MODE, 0x00, 0x00, 0x00);
}
break;
default:
controller->SetMode(modes[active_mode].value, modes[active_mode].speed, 0x00, ALIENWARE_AW410K_SINGLE_COLOR_MODE, red, grn, blu);
break;
}
}
int GetAW410K_WaveDirection(int input)
{
switch(input)
{
case MODE_DIRECTION_LEFT:
return(ALIENWARE_AW410K_DIRECTION_RIGHT_TO_LEFT);
case MODE_DIRECTION_RIGHT:
return(ALIENWARE_AW410K_DIRECTION_LEFT_TO_RIGHT);
case MODE_DIRECTION_UP:
return(ALIENWARE_AW410K_DIRECTION_BOTTOM_TO_TOP);
case MODE_DIRECTION_DOWN:
return(ALIENWARE_AW410K_DIRECTION_TOP_TO_BOTTOM);
default:
return(ALIENWARE_AW410K_DIRECTION_RIGHT_TO_LEFT);
}
}
@@ -0,0 +1,37 @@
/*---------------------------------------------------------*\
| RGBController_AlienwareAW410K.h |
| |
| RGBController for Alienware AW410K keyboard |
| |
| based on AW510K controller by Mohamad Sallal (msallal) |
| Dominik Mikolajczyk (dmiko) 23 Oct 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AlienwareAW410KController.h"
class RGBController_AlienwareAW410K : public RGBController
{
public:
RGBController_AlienwareAW410K(AlienwareAW410KController* controller_ptr);
~RGBController_AlienwareAW410K();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AlienwareAW410KController* controller;
std::vector<RGBColor> current_colors;
};
@@ -1,14 +1,16 @@
/*-----------------------------------------*\
| AlienwareAW510KController.cpp |
| |
| Driver for Alienware AW510K |
| keyboard light controller |
| |
| Mohamad Sallal - msallal 05/22/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AlienwareAW510KController.cpp |
| |
| Driver for Alienware AW510K keyboard |
| |
| Mohamad Sallal (msallal) 22 May 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "AlienwareAW510KController.h"
#include <cstring>
#include "AlienwareAW510KController.h"
AlienwareAW510KController::AlienwareAW510KController(hid_device* dev_handle, const char* path)
{
@@ -41,7 +43,7 @@ std::string AlienwareAW510KController::GetSerialString()
void AlienwareAW510KController::SendCommit()
{
char usb_buf[65];
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
@@ -63,7 +65,7 @@ void AlienwareAW510KController::SendCommit()
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, (unsigned char *)usb_buf, 65);
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 20 milliseconds |
@@ -71,7 +73,6 @@ void AlienwareAW510KController::SendCommit()
std::this_thread::sleep_for(std::chrono::milliseconds(20));
}
void AlienwareAW510KController::SendfeatureReport
(
unsigned char first_byte,
@@ -80,7 +81,7 @@ void AlienwareAW510KController::SendfeatureReport
unsigned char forth_byte
)
{
char usb_buf[65];
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
@@ -99,7 +100,7 @@ void AlienwareAW510KController::SendfeatureReport
/*-----------------------------------------------------*\
| Send Feature report packet |
\*-----------------------------------------------------*/
hid_send_feature_report(dev, (unsigned char *)usb_buf, 65);
hid_send_feature_report(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 10 milliseconds |
@@ -109,7 +110,7 @@ void AlienwareAW510KController::SendfeatureReport
void AlienwareAW510KController::SendEdit()
{
char usb_buf[65];
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
@@ -127,7 +128,7 @@ void AlienwareAW510KController::SendEdit()
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, (unsigned char *)usb_buf, 65);
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 2 milliseconds |
@@ -137,7 +138,7 @@ void AlienwareAW510KController::SendEdit()
void AlienwareAW510KController::SendInitialize()
{
char usb_buf[65];
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
@@ -162,7 +163,7 @@ void AlienwareAW510KController::SendInitialize()
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, (unsigned char *)usb_buf, 65);
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 2 milliseconds |
@@ -216,7 +217,7 @@ void AlienwareAW510KController::SendDirectOn
std::vector<SelectedKeys> &frame_data
)
{
SendfeatureReport(0x0E, frame_data.size(), 0x00, 0x01);
SendfeatureReport(0x0E, (unsigned char)frame_data.size(), 0x00, 0x01);
/*-----------------------------------------------*\
| To Guarantee the data are always %4 =0 append |
@@ -296,7 +297,7 @@ void AlienwareAW510KController::SendDirectOn
void AlienwareAW510KController::SetMode
(
unsigned char mode,
unsigned short speed,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
@@ -318,7 +319,7 @@ void AlienwareAW510KController::UpdateSingleLED
{
SendfeatureReport(0x0E, 0x01, 0x00, 0x01);
char usb_buf[65];
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
@@ -348,7 +349,7 @@ void AlienwareAW510KController::UpdateSingleLED
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, (unsigned char *)usb_buf, 65);
hid_write(dev, usb_buf, 65);
/*-----------------------------------------------------*\
| Delay 20 milliseconds |
@@ -360,7 +361,7 @@ void AlienwareAW510KController::SendMode
(
unsigned char /*zone*/,
unsigned char mode,
unsigned short speed,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
@@ -368,7 +369,7 @@ void AlienwareAW510KController::SendMode
unsigned char blue
)
{
char usb_buf[65];
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
@@ -394,13 +395,13 @@ void AlienwareAW510KController::SendMode
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, (unsigned char *)usb_buf, 65);
hid_write(dev, usb_buf, 65);
}
void AlienwareAW510KController::SetMorphMode
(
unsigned char mode,
unsigned short speed,
unsigned char speed,
unsigned char red1,
unsigned char green1,
unsigned char blue1,
@@ -409,7 +410,7 @@ void AlienwareAW510KController::SetMorphMode
unsigned char blue2
)
{
char usb_buf[65];
unsigned char usb_buf[65];
/*-----------------------------------------------------*\
| Zero out buffer |
@@ -438,5 +439,5 @@ void AlienwareAW510KController::SetMorphMode
/*-----------------------------------------------------*\
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, (unsigned char *)usb_buf, 65);
hid_write(dev, usb_buf, 65);
}
@@ -1,18 +1,19 @@
/*-----------------------------------------*\
| AlienwareAW510KController.h |
| |
| Definitions and types for alienware |
| AW510K Keyboard |
| |
| Mohamad Sallal - msallal 05/22/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AlienwareAW510KController.h |
| |
| Driver for Alienware AW510K keyboard |
| |
| Mohamad Sallal (msallal) 22 May 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController.h"
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#pragma once
#include "RGBController.h"
enum
{
@@ -110,7 +111,7 @@ public:
void SetMode
(
unsigned char mode,
unsigned short speed,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
@@ -121,7 +122,7 @@ public:
void SetMorphMode
(
unsigned char mode,
unsigned short speed,
unsigned char speed,
unsigned char red1,
unsigned char green1,
unsigned char blue1,
@@ -146,7 +147,7 @@ private:
(
unsigned char zone,
unsigned char mode,
unsigned short speed,
unsigned char speed,
unsigned char direction,
unsigned char colorMode,
unsigned char red,
@@ -1,15 +1,17 @@
/*-----------------------------------------*\
| RGBController_AlienwareAW510K.cpp |
| |
| Generic RGB Interface for alienware |
| AW510K Keyboard |
| |
| Mohamad Sallal - msallal 05/22/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_AlienwareAW510K.cpp |
| |
| RGBController for Alienware AW510K keyboard |
| |
| Mohamad Sallal (msallal) 22 May 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <iterator>
#include "RGBControllerKeyNames.h"
#include "RGBController_AlienwareAW510K.h"
#include <iterator>
//0xFFFFFFFF indicates an unused entry in matrix
#define NA 0xFFFFFFFF
@@ -45,9 +47,9 @@ typedef struct
const char * name;
const unsigned char zone;
const unsigned char idx;
} led_type;
} aw510k_led_type;
static const led_type led_names[] =
static const aw510k_led_type led_names[] =
{
/* Key Label Zone, Index */
{ KEY_EN_ESCAPE, ALIENWARE_AW510K_ZONE_DIRECT_KEYBOARD, 0xB0 },
@@ -0,0 +1,36 @@
/*---------------------------------------------------------*\
| RGBController_AlienwareAW510K.h |
| |
| RGBController for Alienware AW510K keyboard |
| |
| Mohamad Sallal (msallal) 22 May 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AlienwareAW510KController.h"
class RGBController_AlienwareAW510K : public RGBController
{
public:
RGBController_AlienwareAW510K(AlienwareAW510KController* controller_ptr);
~RGBController_AlienwareAW510K();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AlienwareAW510KController* controller;
std::vector<RGBColor> current_colors;
};
@@ -1,18 +1,30 @@
/*---------------------------------------------------------*\
| AlienwareKeyboardControllerDetect.cpp |
| |
| Detector for Alienware Keyboard |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <hidapi/hidapi.h>
#include "Detector.h"
#include "AlienwareAW510KController.h"
#include "AlienwareAW410KController.h"
#include "RGBController.h"
#include "RGBController_AlienwareAW510K.h"
#include <hidapi/hidapi.h>
#include "RGBController_AlienwareAW410K.h"
/*-----------------------------------------------------*\
| Alienware vendor ID |
\*-----------------------------------------------------*/
#define ALIENWARE_VID 0x04F2
#define ALIENWARE_VID 0x04F2
/*-----------------------------------------------------*\
| Keyboard product IDs |
\*-----------------------------------------------------*/
#define ALIENWARE_AW510K_PID 0x1830
#define ALIENWARE_AW510K_PID 0x1830
#define ALIENWARE_AW410K_PID 0x1968
/******************************************************************************************\
* *
@@ -32,7 +44,20 @@ void DetectAlienwareAW510KControllers(hid_device_info* info, const std::string&
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
} /* DetectAlienwareKeyboardControllers() */
}
void DetectAlienwareAW410KControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if( dev )
{
AlienwareAW410KController* controller = new AlienwareAW410KController(dev, info->path);
RGBController_AlienwareAW410K* rgb_controller = new RGBController_AlienwareAW410K(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}/* DetectAlienwareKeyboardControllers() */
REGISTER_HID_DETECTOR_IPU("Alienware AW510K", DetectAlienwareAW510KControllers, ALIENWARE_VID, ALIENWARE_AW510K_PID, 0x02, 0xFF00, 0x01);
REGISTER_HID_DETECTOR_IPU("Alienware AW410K", DetectAlienwareAW410KControllers, ALIENWARE_VID, ALIENWARE_AW410K_PID, 0x02, 0xFF00, 0x01);
@@ -1,32 +1,35 @@
/*-----------------------------------------*\
| AnnePro2Controller.cpp |
| |
| Driver for Obins Lab AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06/06/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AnnePro2Controller.cpp |
| |
| Driver for Obins Lab AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "AnnePro2Controller.h"
using namespace std::chrono_literals;
AnnePro2Controller::AnnePro2Controller(hid_device* dev_handle, const char* path)
AnnePro2Controller::AnnePro2Controller(hid_device* dev_handle, const char* path)
{
dev = dev_handle;
location = path;
}
AnnePro2Controller::~AnnePro2Controller()
AnnePro2Controller::~AnnePro2Controller()
{
hid_close(dev);
}
std::string AnnePro2Controller::GetDeviceLocation()
std::string AnnePro2Controller::GetDeviceLocation()
{
return("HID: " + location);
}
std::string AnnePro2Controller::GetSerialString()
std::string AnnePro2Controller::GetSerialString()
{
wchar_t serial_string[128];
int ret = hid_get_serial_number_string(dev, serial_string, 128);
@@ -42,7 +45,7 @@ std::string AnnePro2Controller::GetSerialString()
return(return_string);
}
void AnnePro2Controller::SendDirect(unsigned char frame_count, unsigned char * frame_data)
void AnnePro2Controller::SendDirect(unsigned char frame_count, unsigned char * frame_data)
{
/*-------------------------------------------------------------*\
| Reverse engineered by https://github.com/manualmanul/Annemone |
@@ -74,7 +77,7 @@ void AnnePro2Controller::SendDirect(unsigned char frame_count, unsigned char * f
{
const unsigned char e = (messages_to_send_amount << 4) + p;
const unsigned char a = ((messages_to_send_amount - 1) == p) ? val_2 + real_command_info_length : max_message_length + real_command_info_length;
/*---------------------------------------------------------*\
| Service data |
\*---------------------------------------------------------*/
@@ -1,19 +1,20 @@
/*-----------------------------------------*\
| AnnePro2Controller.h |
| |
| Driver for Obins Lab AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06/06/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AnnePro2Controller.h |
| |
| Driver for Obins Lab AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include <string>
#include <vector>
#include <hidapi/hidapi.h>
#pragma once
#include "RGBController.h"
class AnnePro2Controller
{
@@ -33,4 +34,4 @@ public:
private:
hid_device* dev;
std::string location;
};
};
@@ -1,14 +1,34 @@
/*---------------------------------------------------------*\
| AnnePro2ControllerDetect.cpp |
| |
| Detector for Obins Lab AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AnnePro2Controller.h"
#include "RGBController.h"
#include "RGBController_AnnePro2.h"
#include <hidapi/hidapi.h>
#define ANNE_PRO_2_VID 0x04D9
#define ANNE_PRO_2_PID_1 0x8008
#define ANNE_PRO_2_PID_2 0x8009
#define ANNE_PRO_2_PID_3 0xA292
#define ANNE_PRO_2_PID_4 0xA293
/*---------------------------------------------------------*\
| Anne Pro 2 vendor IDs |
\*---------------------------------------------------------*/
#define ANNE_PRO_2_VID_1 0x04D9
#define ANNE_PRO_2_VID_2 0x3311
/*---------------------------------------------------------*\
| Anne Pro 2 product IDs |
\*---------------------------------------------------------*/
#define ANNE_PRO_2_PID_1 0x8008
#define ANNE_PRO_2_PID_2 0x8009
#define ANNE_PRO_2_PID_3 0xA292
#define ANNE_PRO_2_PID_4 0xA293
#define ANNE_PRO_2_PID_5 0xA297
/******************************************************************************************\
* *
@@ -30,7 +50,8 @@ void DetectAnnePro2Controllers(hid_device_info* info, const std::string&)
}
}
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID, ANNE_PRO_2_PID_1, 1);
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID, ANNE_PRO_2_PID_2, 1);
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID, ANNE_PRO_2_PID_3, 1);
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID, ANNE_PRO_2_PID_4, 1);
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID_1, ANNE_PRO_2_PID_1, 1);
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID_1, ANNE_PRO_2_PID_2, 1);
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID_1, ANNE_PRO_2_PID_3, 1);
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID_1, ANNE_PRO_2_PID_4, 1);
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID_2, ANNE_PRO_2_PID_5, 1);
@@ -1,11 +1,13 @@
/*-----------------------------------------*\
| RGBController_AnnePro2.cpp |
| |
| Generic RGB Interface for Obins Lab |
| AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06/06/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_AnnePro2.cpp |
| |
| RGBController for Obins Lab AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBControllerKeyNames.h"
#include "RGBController_AnnePro2.h"
@@ -40,9 +42,9 @@ typedef struct
{
const char * name;
const unsigned char idx;
} led_type;
} annepro2_led_type;
static const led_type led_names[] =
static const annepro2_led_type led_names[] =
{
/* Key Label Index */
{ KEY_EN_ESCAPE, 0 },
@@ -1,13 +1,16 @@
/*-----------------------------------------*\
| RGBController_AnnePro2.h |
| |
| Generic RGB Interface for Obins Lab |
| AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06/06/2021 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_AnnePro2.h |
| |
| RGBController for Obins Lab AnnePro2 keyboard |
| |
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AnnePro2Controller.h"
@@ -0,0 +1,158 @@
/*---------------------------------------------------------*\
| ArcticController.cpp |
| |
| Driver for Arctic devices |
| |
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <cstring>
#include "ArcticController.h"
using namespace std::chrono_literals;
#define ARCTIC_COMMAND_SET_RGB 0x00
#define ARCTIC_COMMAND_IDENTIFY 0x5C
#define ARCTIC_RESPONSE_BUFFER_LENGTH 15
#define ARCTIC_RESPONSE_COMMAND_OFFSET 0
#define ARCTIC_RESPONSE_DATA_OFFSET 1
#define ARCTIC_RESPONSE_DATA_LENGTH 12
#define ARCTIC_RESPONSE_XOR_CSUM_OFFSET 13
#define ARCTIC_RESPONSE_ADD_CSUM_OFFSET 14
#define ARCTIC_COMMAND_BUFFER_LENGTH(payload_size) (sizeof(header) + 1 + payload_size)
#define ARCTIC_COMMAND_COMMAND_OFFSET (sizeof(header))
#define ARCTIC_COMMAND_PAYLOAD_OFFSET (sizeof(header) + 1)
const unsigned char header[] =
{
0x01,
0x02,
0x03,
0xFF,
0x05,
0xFF,
0x02,
0x03
};
const unsigned char identify_payload[] =
{
0x01,
0xFE,
0x01,
0xFE
};
ArcticController::ArcticController(const std::string &portname)
: serialport(portname.c_str(), 250000, SERIAL_PORT_PARITY_NONE, SERIAL_PORT_SIZE_8, SERIAL_PORT_STOP_BITS_2, false)
{
port_name = portname;
serialport.serial_set_dtr(true);
}
ArcticController::~ArcticController()
{
serialport.serial_set_dtr(false);
}
static void FormatCommandBuffer(char *buffer, char command)
{
std::memcpy(buffer, header, sizeof(header));
buffer[ARCTIC_COMMAND_COMMAND_OFFSET] = command;
}
void ArcticController::SetChannels(std::vector<RGBColor> colors)
{
char* buffer = new char[ARCTIC_COMMAND_BUFFER_LENGTH(colors.size() * 3)];
FormatCommandBuffer(buffer, ARCTIC_COMMAND_SET_RGB);
for(unsigned int channel = 0; channel < colors.size(); channel++)
{
const unsigned int offset = ARCTIC_COMMAND_PAYLOAD_OFFSET + channel * 3;
buffer[offset + 0x00] = std::min<unsigned int>(254, RGBGetRValue(colors[channel]));
buffer[offset + 0x01] = std::min<unsigned int>(254, RGBGetGValue(colors[channel]));
buffer[offset + 0x02] = std::min<unsigned int>(254, RGBGetBValue(colors[channel]));
}
serialport.serial_write(buffer, sizeof(buffer));
delete[] buffer;
}
static char XORChecksum(char *data, int length)
{
char sum = 0;
for(int i = 0; i < length; i++)
{
sum ^= data[i];
}
return sum;
}
static char AddChecksum(char *data, int length)
{
char sum = 0;
for(int i = 0; i < length; i++)
{
sum = (char)(sum + data[i]);
}
return sum;
}
bool ArcticController::IsPresent()
{
char buffer[ARCTIC_COMMAND_BUFFER_LENGTH(sizeof(identify_payload))];
char response[ARCTIC_RESPONSE_BUFFER_LENGTH];
int ret;
FormatCommandBuffer(buffer, ARCTIC_COMMAND_IDENTIFY);
std::memcpy(buffer + ARCTIC_COMMAND_PAYLOAD_OFFSET, identify_payload, sizeof(identify_payload));
serialport.serial_flush_rx();
ret = serialport.serial_write(buffer, sizeof(buffer));
if(ret != sizeof(buffer))
{
return false;
}
std::this_thread::sleep_for(100ms);
ret = serialport.serial_read(response, sizeof(response));
if(ret != sizeof(response))
{
return false;
}
if(response[ARCTIC_RESPONSE_COMMAND_OFFSET] != ARCTIC_COMMAND_IDENTIFY)
{
return false;
}
if(response[ARCTIC_RESPONSE_XOR_CSUM_OFFSET] != XORChecksum(&response[ARCTIC_RESPONSE_DATA_OFFSET], ARCTIC_RESPONSE_DATA_LENGTH))
{
return false;
}
if(response[ARCTIC_RESPONSE_ADD_CSUM_OFFSET] != AddChecksum(&response[ARCTIC_RESPONSE_DATA_OFFSET], ARCTIC_RESPONSE_DATA_LENGTH))
{
return false;
}
return true;
}
std::string ArcticController::GetLocation()
{
return port_name;
}
@@ -0,0 +1,32 @@
/*---------------------------------------------------------*\
| ArcticController.h |
| |
| Driver for Arctic devices |
| |
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <algorithm>
#include "RGBController.h"
#include "serial_port.h"
class ArcticController
{
public:
ArcticController(const std::string &portname);
~ArcticController();
void SetChannels(std::vector<RGBColor> colors);
bool IsPresent();
std::string GetLocation();
private:
std::string port_name;
serial_port serialport;
};
@@ -0,0 +1,51 @@
/*---------------------------------------------------------*\
| ArcticControllerDetect.cpp |
| |
| Detector for Arctic devices |
| |
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include "Detector.h"
#include "ArcticController.h"
#include "RGBController.h"
#include "RGBController_Arctic.h"
#include "find_usb_serial_port.h"
#define CH341_VID 0x1A86
#define CH341_PID 0x7523
void DetectArcticControllers()
{
std::vector<std::string *> ports = find_usb_serial_port(CH341_VID, CH341_PID);
for(unsigned int device = 0; device < ports.size(); device++)
{
ArcticController *controller = new ArcticController(*ports[device]);
if(controller->IsPresent())
{
RGBController_Arctic *rgb_controller = new RGBController_Arctic(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
else
{
delete controller;
}
delete ports[device];
}
}
REGISTER_DETECTOR("Arctic RGB controller", DetectArcticControllers);
/*---------------------------------------------------------------------------------------------------------*\
| Entries for dynamic UDEV rules |
| |
| DUMMY_DEVICE_DETECTOR("Arctic RGB controller", DetectArcticControllers, 0x1a86, 0x7523 ) |
\*---------------------------------------------------------------------------------------------------------*/
@@ -0,0 +1,134 @@
/*---------------------------------------------------------*\
| RGBController_Arctic.cpp |
| |
| RGBController for Arctic devices |
| |
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <math.h>
#include "RGBController_Arctic.h"
using namespace std::chrono_literals;
#define ARCTIC_NUM_CHANNELS 4
#define ARCTIC_SLEEP_THRESHOLD 100ms
#define ARCTIC_KEEPALIVE_PERIOD 500ms /* Device requires at least 1s */
/**------------------------------------------------------------------*\
@name Arctic RGB Controller Devices
@category LEDStrip
@type Serial
@save :x:
@direct :white_check_mark:
@effects :x:
@detectors DetectArcticControllers
@comment
\*-------------------------------------------------------------------*/
RGBController_Arctic::RGBController_Arctic(ArcticController* controller_ptr)
{
controller = controller_ptr;
name = "Arctic RGB Controller";
vendor = "Arctic";
description = "Arctic 4-Channel RGB Controller";
location = controller->GetLocation();
type = DEVICE_TYPE_LEDSTRIP;
mode DirectMode;
DirectMode.name = "Direct";
DirectMode.value = 0;
DirectMode.flags = MODE_FLAG_HAS_PER_LED_COLOR;
DirectMode.color_mode = MODE_COLORS_PER_LED;
modes.push_back(DirectMode);
SetupZones();
keepalive_thread_run = true;
keepalive_thread = std::thread(&RGBController_Arctic::KeepaliveThreadFunction, this);
}
RGBController_Arctic::~RGBController_Arctic()
{
keepalive_thread_run = false;
keepalive_thread.join();
delete controller;
}
void RGBController_Arctic::SetupZones()
{
for(int channel = 0; channel < ARCTIC_NUM_CHANNELS; channel++)
{
zone LedZone;
LedZone.name = "LED Strip " + std::to_string(channel);
LedZone.type = ZONE_TYPE_SINGLE;
LedZone.leds_count = 1;
LedZone.leds_min = 1;
LedZone.leds_max = 1;
LedZone.matrix_map = nullptr;
led Led;
Led.name = LedZone.name + " LED";
Led.value = channel;
zones.push_back(LedZone);
leds.push_back(Led);
}
SetupColors();
}
void RGBController_Arctic::ResizeZone(int /* zone */, int /* new_size */)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_Arctic::DeviceUpdateLEDs()
{
last_update_time = std::chrono::steady_clock::now();
controller->SetChannels(colors);
}
void RGBController_Arctic::UpdateZoneLEDs(int /* zone */)
{
DeviceUpdateLEDs();
}
void RGBController_Arctic::UpdateSingleLED(int /* led */)
{
DeviceUpdateLEDs();
}
void RGBController_Arctic::DeviceUpdateMode()
{
/*---------------------------------------------------------*\
| This device does not support mode updates |
\*---------------------------------------------------------*/
}
void RGBController_Arctic::KeepaliveThreadFunction()
{
std::chrono::nanoseconds sleep_time;
while(keepalive_thread_run.load())
{
sleep_time = ARCTIC_KEEPALIVE_PERIOD - (std::chrono::steady_clock::now() - last_update_time);
if(sleep_time <= ARCTIC_SLEEP_THRESHOLD)
{
UpdateLEDs(); // Already protected thru a device update thread
std::this_thread::sleep_for(ARCTIC_KEEPALIVE_PERIOD);
}
else
{
std::this_thread::sleep_for(sleep_time);
}
}
}
@@ -0,0 +1,44 @@
/*---------------------------------------------------------*\
| RGBController_Arctic.h |
| |
| RGBController for Arctic devices |
| |
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <chrono>
#include <thread>
#include "ArcticController.h"
#include "RGBController.h"
#include "serial_port.h"
class RGBController_Arctic : public RGBController
{
public:
RGBController_Arctic(ArcticController* controller_ptr);
~RGBController_Arctic();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
void KeepaliveThreadFunction();
private:
ArcticController* controller;
std::chrono::time_point<std::chrono::steady_clock> last_update_time;
std::atomic<bool> keepalive_thread_run;
std::thread keepalive_thread;
};
@@ -1,14 +1,16 @@
/*-----------------------------------------*\
| AsusAuraCoreController.cpp |
| |
| Driver for ASUS ROG Aura Core RGB |
| lighting controller |
| |
| Adam Honse (CalcProgrammer1) 4/13/2020 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AsusAuraCoreController.cpp |
| |
| Driver for ASUS ROG Aura Core |
| |
| Adam Honse (CalcProgrammer1) 13 Apr 2020 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "AsusAuraCoreController.h"
#include <cstring>
#include "AsusAuraCoreController.h"
#define AURA_CORE_MAX_MESSAGE_SIZE 64
@@ -1,18 +1,19 @@
/*-----------------------------------------*\
| AsusAuraCoreController.h |
| |
| Definitions and types for ASUS ROG Aura |
| Core RGB lighting controller |
| |
| Adam Honse (CalcProgrammer1) 4/13/2020 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AsusAuraCoreController.h |
| |
| Driver for ASUS ROG Aura Core |
| |
| Adam Honse (CalcProgrammer1) 13 Apr 2020 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController.h"
#pragma once
#include <string>
#include <hidapi/hidapi.h>
#pragma once
#include "RGBController.h"
enum AuraCoreDeviceType
{
@@ -119,5 +120,4 @@ private:
void Handshake();
void SendIdString();
void SendQuery();
};
@@ -1,10 +1,13 @@
/*-----------------------------------------*\
| RGBController_AsusAuraCore.cpp |
| |
| Generic RGB Interface for ROG Aura Core |
| |
| Adam Honse (CalcProgrammer1) 4/17/2020 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_AsusAuraCore.cpp |
| |
| RGBController for ASUS ROG Aura Core |
| |
| Adam Honse (CalcProgrammer1) 13 Apr 2020 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AsusAuraCore.h"
@@ -0,0 +1,37 @@
/*---------------------------------------------------------*\
| RGBController_AsusAuraCore.h |
| |
| RGBController for ASUS ROG Aura Core |
| |
| Adam Honse (CalcProgrammer1) 13 Apr 2020 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AsusAuraCoreController.h"
class RGBController_AuraCore : public RGBController
{
public:
RGBController_AuraCore(AuraCoreController* controller_ptr);
~RGBController_AuraCore();
void SetupKeyboard();
void SetupGA15DH();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AuraCoreController* controller;
};
@@ -1,3 +1,15 @@
/*---------------------------------------------------------*\
| AsusAuraCoreControllerDetect.cpp |
| |
| Detector for ASUS ROG Aura Core |
| |
| Adam Honse (CalcProgrammer1) 13 Apr 2020 |
| Chris M (Dr_No) 28 Jul 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AsusAuraCoreController.h"
#include "RGBController.h"
@@ -55,3 +67,4 @@ REGISTER_HID_DETECTOR ("ASUS Aura Core", DetectAsusAuraCoreContro
REGISTER_HID_DETECTOR ("ASUS Aura Core", DetectAsusAuraCoreControllers, AURA_CORE_VID, 0x1866);
REGISTER_HID_DETECTOR ("ASUS Aura Core", DetectAsusAuraCoreControllers, AURA_CORE_VID, 0x1869);
REGISTER_HID_DETECTOR_PU("ASUS ROG Strix SCAR 15", DetectAsusAuraCoreLaptopControllers, AURA_CORE_VID, AURA_STRIX_SCAR_15_PID, 0xFF31, 0x79);
REGISTER_HID_DETECTOR_PU("ASUS ROG Strix SCAR 17", DetectAsusAuraCoreLaptopControllers, AURA_CORE_VID, 0x1866, 0xFF31, 0x79);
@@ -1,13 +1,16 @@
/*---------------------------------------------------------------------*\
| AsusAuraCoreLaptopController.cpp |
| |
| Driver for Asus Aura Core Laptop USB Controller |
| |
| Chris M (Dr_No) 28 Jul 2022 |
| |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| AsusAuraCoreLaptopController.cpp |
| |
| Driver for ASUS ROG Aura Core Laptop |
| |
| Chris M (Dr_No) 28 Jul 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "AsusAuraCoreLaptopController.h"
#include "SettingsManager.h"
static uint8_t packet_map[ASUSAURACORELAPTOP_KEYCOUNT +
ASUSAURACORELAPTOP_LIGHTBARCOUNT +
@@ -167,14 +170,14 @@ void AsusAuraCoreLaptopController::SetLedsDirect(std::vector<RGBColor> colors)
for(size_t i = 0; i < key_set; i+=leds_per_packet)
{
uint8_t leds_remaining = key_set - i;
uint8_t leds_remaining = key_set - (uint8_t)i;
if(leds_remaining < leds_per_packet)
{
buffer[07] = leds_remaining;
}
buffer[06] = i;
buffer[06] = (uint8_t)i;
memcpy(&buffer[ASUSAURACORELAPTOP_DATA_BYTE], &key_buf[3 * i], (3 * buffer[07]));
hid_send_feature_report(dev, buffer, ASUSAURACORELAPTOP_WRITE_PACKET_SIZE);
@@ -1,11 +1,15 @@
/*---------------------------------------------------------------------*\
| AsusAuraCoreLaptopController.h |
| |
| Driver for AsusAuraCoreLaptop USB Controller |
| |
| Chris M (Dr_No) 28 Jul 2022 |
| |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| AsusAuraCoreLaptopController.h |
| |
| Driver for ASUS ROG Aura Core Laptop |
| |
| Chris M (Dr_No) 28 Jul 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include <vector>
@@ -13,11 +17,8 @@
#include "LogManager.h"
#include "RGBController.h"
#include "ResourceManager.h"
#include "SettingsManager.h"
#include "RGBControllerKeyNames.h"
#pragma once
#define NA 0xFFFFFFFF
#define HID_MAX_STR 255
#define ASUSAURACORELAPTOP_TIMEOUT 250
@@ -1,11 +1,13 @@
/*---------------------------------------------------------------------*\
| RGBController_AsusAuraCoreLaptop.cpp |
| |
| Driver for AsusAuraCoreLaptop USB Controller |
| |
| Chris M (Dr_No) 28 Jul 2022 |
| |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_AsusAuraCoreLaptop.cpp |
| |
| RGBController for ASUS ROG Aura Core Laptop |
| |
| Chris M (Dr_No) 28 Jul 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "RGBController_AsusAuraCoreLaptop.h"
@@ -406,6 +408,8 @@ void RGBController_AsusAuraCoreLaptop::Init_Controller()
lightbar.leds_min = ASUSAURACORELAPTOP_LIGHTBARCOUNT;
lightbar.leds_max = ASUSAURACORELAPTOP_LIGHTBARCOUNT;
lightbar.leds_count = ASUSAURACORELAPTOP_LIGHTBARCOUNT;
lightbar.matrix_map = NULL;
zones.push_back(lightbar);
zone lid;
@@ -414,6 +418,8 @@ void RGBController_AsusAuraCoreLaptop::Init_Controller()
lid.leds_min = ASUSAURACORELAPTOP_LIDCOUNT;
lid.leds_max = ASUSAURACORELAPTOP_LIDCOUNT;
lid.leds_count = ASUSAURACORELAPTOP_LIDCOUNT;
lid.matrix_map = NULL;
zones.push_back(lid);
}
@@ -430,7 +436,7 @@ void RGBController_AsusAuraCoreLaptop::SetupZones()
\*---------------------------------------------------------*/
for(std::size_t zone_index = 0; zone_index < zones.size(); zone_index++)
{
int zone_offset = leds.size();
int zone_offset = (int)leds.size();
for(unsigned int led_index = 0; led_index < zones[zone_index].leds_count; led_index++)
{
@@ -1,11 +1,13 @@
/*---------------------------------------------------------------------*\
| RGBController_AsusAuraCoreLaptop.h |
| |
| Driver for AsusAuraCoreLaptop USB Controller |
| |
| Chris M (Dr_No) 28 Jul 2022 |
| |
\*---------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| RGBController_AsusAuraCoreLaptop.h |
| |
| RGBController for ASUS ROG Aura Core Laptop |
| |
| Chris M (Dr_No) 28 Jul 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
@@ -1,13 +1,17 @@
/*-----------------------------------------*\
| AsusAuraGPUController.cpp |
| |
| Driver for ASUS Aura RGB on GPUs |
| |
| Jan Rettig (Klapstuhl) 14.02.2020 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AsusAuraGPUController.cpp |
| |
| Driver for ASUS Aura GPU |
| |
| Jan Rettig (Klapstuhl) 14 Feb 2020 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include "AsusAuraGPUController.h"
#include <cstring>
#include "AsusAuraGPUController.h"
#include "pci_ids.h"
AuraGPUController::AuraGPUController(i2c_smbus_interface* bus, aura_gpu_dev_id dev)
{
@@ -52,25 +56,16 @@ unsigned char AuraGPUController::GetLEDBlue()
return(AuraGPURegisterRead(AURA_GPU_REG_BLUE));
}
void AuraGPUController::SetLEDColorsDirect(unsigned char red, unsigned char green, unsigned char blue) // Direct Mode is just Static Mode without applying color changes
void AuraGPUController::SetLEDColors(unsigned char red, unsigned char green, unsigned char blue)
{
AuraGPURegisterWrite(AURA_GPU_REG_RED, red);
AuraGPURegisterWrite(AURA_GPU_REG_GREEN, green);
AuraGPURegisterWrite(AURA_GPU_REG_BLUE, blue);
}
void AuraGPUController::SetLEDColorsEffect(unsigned char red, unsigned char green, unsigned char blue)
{
AuraGPURegisterWrite(AURA_GPU_REG_RED, red);
AuraGPURegisterWrite(AURA_GPU_REG_GREEN, green);
AuraGPURegisterWrite(AURA_GPU_REG_BLUE, blue);
AuraGPURegisterWrite(AURA_GPU_REG_APPLY, AURA_GPU_APPLY_VAL);
}
void AuraGPUController::SetMode(unsigned char mode)
{
AuraGPURegisterWrite(AURA_GPU_REG_MODE, mode);
AuraGPURegisterWrite(AURA_GPU_REG_APPLY, AURA_GPU_APPLY_VAL);
}
unsigned char AuraGPUController::AuraGPURegisterRead(unsigned char reg)
@@ -81,4 +76,21 @@ unsigned char AuraGPUController::AuraGPURegisterRead(unsigned char reg)
void AuraGPUController::AuraGPURegisterWrite(unsigned char reg, unsigned char val)
{
bus->i2c_smbus_write_byte_data(dev, reg, val);
}
}
bool AuraGPUController::SaveOnlyApplies()
{
switch (bus->pci_subsystem_device)
{
case ASUS_VEGA64_STRIX:
return false;
}
// Behavior on other GPU models is unknown and needs to be tested.
// Assume the safest option to prevent damaage from excessive writes.
return false;
}
void AuraGPUController::Save()
{
AuraGPURegisterWrite(AURA_GPU_REG_APPLY, AURA_GPU_APPLY_VAL);
}
@@ -1,16 +1,19 @@
/*-----------------------------------------*\
| AsusAuraGPUController.h |
| |
| Definitions for ASUS Aura RGB on GPUs |
| |
| Jan Rettig (Klapstuhl) 14.02.2020 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AsusAuraGPUController.h |
| |
| Driver for ASUS Aura GPU |
| |
| Jan Rettig (Klapstuhl) 14 Feb 2020 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include "i2c_smbus.h"
#pragma once
typedef unsigned char aura_gpu_dev_id;
#define AURA_GPU_MAGIC_VAL 0x1589 /* This magic value is present in all Aura GPU controllers */
@@ -23,7 +26,7 @@ enum
AURA_GPU_REG_BLUE = 0x06, /* AURA GPU BLUE Register */
AURA_GPU_REG_MODE = 0x07, /* AURA GPU Mode Selection Register */
AURA_GPU_REG_SYNC = 0x0C, /* AURA GPU "Sync" Register */
AURA_GPU_REG_APPLY = 0x0E, /* AURA GPU Apply Chnages Register */
AURA_GPU_REG_APPLY = 0x0E, /* AURA GPU Save or Apply Register */
};
enum
@@ -48,17 +51,18 @@ public:
unsigned char GetLEDRed();
unsigned char GetLEDGreen();
unsigned char GetLEDBlue();
void SetLEDColorsDirect(unsigned char red, unsigned char green, unsigned char blue);
void SetLEDColorsEffect(unsigned char red, unsigned char green, unsigned char blue);
void SetLEDColors(unsigned char red, unsigned char green, unsigned char blue);
void SetMode(unsigned char mode);
void Save();
unsigned char AuraGPURegisterRead(unsigned char reg);
void AuraGPURegisterWrite(unsigned char reg, unsigned char val);
bool SaveOnlyApplies();
bool direct = false; // Temporary solution to check if we are in "Direct" mode
private:
char device_name[16];
i2c_smbus_interface * bus;
aura_gpu_dev_id dev;
};
};
@@ -1,11 +1,17 @@
/*-----------------------------------------*\
| AsusAuraGPUControllerDetect.cpp |
| |
| Driver for ASUS Aura RGB on GPUs |
| |
| Jan Rettig (Klapstuhl) 14.02.2020 |
\*-----------------------------------------*/
/*---------------------------------------------------------*\
| AsusAuraGPUControllerDetect.cpp |
| |
| Detector for ASUS Aura GPU |
| |
| Jan Rettig (Klapstuhl) 14 Feb 2020 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
\*---------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include "Detector.h"
#include "AsusAuraGPUController.h"
#include "LogManager.h"
@@ -13,9 +19,6 @@
#include "RGBController_AsusAuraGPU.h"
#include "i2c_smbus.h"
#include "pci_ids.h"
#include <vector>
#include <stdio.h>
#include <stdlib.h>
#define ASUSGPU_CONTROLLER_NAME "ASUS Aura GPU"
@@ -69,67 +72,69 @@ void DetectAsusAuraGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, co
| NVidia GPUs |
\*-----------------------------------------*/
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1050 O2G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1050_DEV, ASUS_SUB_VEN, ASUS_GTX1050_STRIX_O2G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1050 TI 4G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1050TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1050TI_4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1050 TI O4G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1050TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1050TI_O4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1050 TI O4G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1050TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1050TI_O4G_GAMING_2, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS GTX 1060 Strix 6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1060_DEV, ASUS_SUB_VEN, ASUS_GTX1060_STRIX_6G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS GTX 1060 Strix" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1060_DEV, ASUS_SUB_VEN, ASUS_GTX1060_STRIX, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS GTX 1070 Strix Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070_DEV, ASUS_SUB_VEN, ASUS_GTX1070_STRIX_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS GTX 1070 Strix OC" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070_DEV, ASUS_SUB_VEN, ASUS_GTX1070_STRIX_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1070 Ti 8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1070TI_8G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1070 Ti A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1070TI_A8G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS GTX 1080 Strix OC" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, ASUS_SUB_VEN, ASUS_GTX1080_STRIX, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1080 A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080_A8G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1080 O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080_O8G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1080 O8G 11Gbps" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080_O8G_11GBPS, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1080 Ti Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1080 Ti 11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_11G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1080 Ti O11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_O11G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX1080 Ti O11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_O11G_GAMING_A02, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1650S OC 4G" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1650S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1650S_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1660S O6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1660S_O6G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG GTX 1660 Ti OC 6G" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660TI_DEV, ASUS_SUB_VEN, ASUS_ROG_GTX1660TI_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 EVO Gaming 6G" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060_EVO_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 O6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060_O6G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 O6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060_O6G_GAMING_86D2, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 O6G EVO Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU104_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060_O6G_EVO_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060S 8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060S_8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060S A8G EVO Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060S_A8G_EVO_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060S O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060S_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060S A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060S_A8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070_A8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070S A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_A8G_GAMING_86FF, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070S A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_A8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070S A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_A8G_GAMING_8706, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070S O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_O8G_GAMING_8729, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070S 8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_8G_GAMING_8707, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070S O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080_8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 O8G V2 Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080_O8G_V2_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080S A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080S_A8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080S O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080S_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080S O8G White" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080S_O8G_WHITE, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 Ti 11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_11G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 Ti 11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_11G_GAMING_866C, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 Ti A11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_A11G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 Ti O11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_O11G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3060 Ti 8G Gaming OC" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060_TI_O8G_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1050 O2G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1050_DEV, ASUS_SUB_VEN, ASUS_GTX1050_STRIX_O2G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1050 Ti 4G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1050TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1050TI_4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1050 Ti O4G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1050TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1050TI_O4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1050 Ti O4G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1050TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1050TI_O4G_GAMING_2, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG GTX 1060 Strix 6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1060_DEV, ASUS_SUB_VEN, ASUS_GTX1060_STRIX_6G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG GTX 1060 Strix" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1060_DEV, ASUS_SUB_VEN, ASUS_GTX1060_STRIX, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG GTX 1070 Strix Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070_DEV, ASUS_SUB_VEN, ASUS_GTX1070_STRIX_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG GTX 1070 Strix OC" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070_DEV, ASUS_SUB_VEN, ASUS_GTX1070_STRIX_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1070 Ti 8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1070TI_8G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1070 Ti A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1070TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1070TI_A8G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG GTX 1080 Strix OC" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, ASUS_SUB_VEN, ASUS_GTX1080_STRIX, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1080 A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080_A8G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1080 O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080_O8G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1080 O8G 11Gbps" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080_O8G_11GBPS, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1080 Ti Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1080 Ti 11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_11G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1080 Ti O11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_O11G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1080 Ti O11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1080TI_O11G_GAMING_A02, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1650 SUPER OC 4G" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1650S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1650S_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1660 SUPER O6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1660S_O6G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1660 SUPER 6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_GTX1660S_6G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Strix GTX 1660 Ti OC 6G" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_GTX1660TI_DEV, ASUS_SUB_VEN, ASUS_ROG_GTX1660TI_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 EVO Gaming 6G" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060_EVO_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 O6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060_O6G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 O6G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU106_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060_O6G_GAMING_86D2, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 O6G EVO Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060_TU104_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060_O6G_EVO_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 SUPER 8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060S_8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 SUPER A8G EVO Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060S_A8G_EVO_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 SUPER O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060S_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2060 SUPER A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2060S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2060S_A8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070_A8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 SUPER A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_A8G_GAMING_86FF, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 SUPER A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_A8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 SUPER A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_A8G_GAMING_8706, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 SUPER O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_O8G_GAMING_8729, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 SUPER 8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_8G_GAMING_8707, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2070 SUPER O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2070S_OC_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2070S_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080_8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 O8G V2 Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080_O8G_V2_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 SUPER A8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080S_A8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 SUPER O8G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080S_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 SUPER O8G White" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080S_O8G_WHITE, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 Ti 11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_11G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 Ti 11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_11G_GAMING_866C, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 Ti A11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_A11G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 2080 Ti O11G Gaming" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX2080TI_O11G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3060 Ti 8G Gaming OC" , DetectAsusAuraGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3060_TI_O8G_OC, 0x2A);
/*-----------------------------------------*\
| AMD GPUs |
\*-----------------------------------------*/
REGISTER_I2C_PCI_DETECTOR("ASUS AREZ Strix RX Vega 56 O8G" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_VEGA10_DEV, ASUS_SUB_VEN, ASUS_AREZ_STRIX_VEGA56_08G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS Vega 64 Strix" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_VEGA10_DEV, ASUS_SUB_VEN, ASUS_VEGA64_STRIX, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS RX 5600XT Strix O6G Gaming" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5600XT_STRIX_O6G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS RX 5700XT Strix Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5700XT_STRIX_GAMING_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS RX 5700XT Strix 08G Gaming" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5700XT_STRIX_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RX470 O4G Gaming" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX470_STRIX_O4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RX480 Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX480_STRIX_GAMING_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RX560 Gaming" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS11, ASUS_SUB_VEN, ASUS_RX560_STRIX_4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS RX 570 Strix O4G Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX570_STRIX_O4G_GAMING_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS RX 580 Strix Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX580_STRIX_GAMING_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS RX 580 Strix Gaming TOP" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX580_STRIX_GAMING_TOP, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS AREZ Strix RX Vega 56 O8G" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_VEGA10_DEV, ASUS_SUB_VEN, ASUS_AREZ_STRIX_VEGA56_08G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG Vega 64 Strix" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_VEGA10_DEV, ASUS_SUB_VEN, ASUS_VEGA64_STRIX, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG RX 5600 XT Strix O6G Gaming" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5600XT_STRIX_O6G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG RX 5700 XT Strix Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5700XT_STRIX_GAMING_OC, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG RX 5700 XT Strix 08G Gaming" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_NAVI10_DEV, ASUS_SUB_VEN, ASUS_RX5700XT_STRIX_O8G_GAMING, 0x2A);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RX 470 O4G Gaming" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX470_STRIX_O4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RX 480 Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX480_STRIX_GAMING_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RX 560 Gaming" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS11, ASUS_SUB_VEN, ASUS_RX560_STRIX_4G_GAMING, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG RX 570 Strix O4G Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX570_STRIX_O4G_GAMING_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG RX 570 Strix O8G Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX570_STRIX_O8G_GAMING_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG RX 580 Strix Gaming OC" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX580_STRIX_GAMING_OC, 0x29);
REGISTER_I2C_PCI_DETECTOR("ASUS ROG RX 580 Strix Gaming TOP" , DetectAsusAuraGPUControllers, AMD_GPU_VEN, AMD_POLARIS_DEV, ASUS_SUB_VEN, ASUS_RX580_STRIX_GAMING_TOP, 0x29);

Some files were not shown because too many files have changed in this diff Show More